Checked .inl files back into the repo
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Mon, 13 Dec 2021 14:08:09 +0000 (15:08 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Fri, 7 Jan 2022 19:07:39 +0000 (19:07 +0000)
By default .inl files won't be generated at build time but
this functionality is still present and to activate it
value of DEQP_VULKAN_INL_GEN_OUTPUTS_DIR should be changed
to point to PROJECT_BINARY_DIR.

VK-GL-CTS issue: 3197

Components: Framework, Vulkan

Affects:
dEQP-VK.*

Change-Id: I6ba5932aa51740048c8dcc0c0222e8f7553ac4b3

50 files changed:
external/vulkancts/framework/vulkan/CMakeLists.txt
external/vulkancts/framework/vulkan/vkApiExtensionDependencyInfo.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkBasicTypes.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkConcretePlatformInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkCoreFunctionalities.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceExtensions.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFeatures.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFeatures2.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDecl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceProperties.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkExtensionFunctions.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkHandleType.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInstanceExtensions.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkKnownDriverIds.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkObjTypeImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkPlatformDriverImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkPlatformFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkRefUtil.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkRefUtilImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkStrUtil.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkStructTypes.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkSupportedExtensions.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkTypeUtil.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkVirtualPlatformInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkVulkan_c.inl [new file with mode: 0644]
external/vulkancts/scripts/gen_ext_deps.py
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/gen_framework_c.py
scripts/check_build_sanity.py

index 6ffc17d..44a8f11 100644 (file)
@@ -14,7 +14,7 @@ endif(HAVE_RENDERDOC_APP_H)
 
 # Build inl files
 set(DEQP_VULKAN_INL_GEN_INPUT ${PROJECT_SOURCE_DIR}/external/vulkan-docs/src/xml/vk.xml)
-set(DEQP_VULKAN_INL_GEN_OUTPUTS_DIR ${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
+set(DEQP_VULKAN_INL_GEN_OUTPUTS_DIR ${PROJECT_SOURCE_DIR}/external/vulkancts/framework/vulkan)
 set(DEQP_VULKAN_INL_GEN_OUTPUTS
        ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkApiExtensionDependencyInfo.inl
        ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkBasicTypes.inl
@@ -63,24 +63,29 @@ set(DEQP_VULKAN_INL_GEN_OUTPUTS
        # NOTE: when new file is generated by gen_framework it should be added to this list.
        ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}/vkVulkan_c.inl)
 
-add_custom_command(
-       # Remove all outputs to help detect missing outputs.
-       COMMAND cmake -E remove ${DEQP_VULKAN_INL_GEN_OUTPUTS}
+# If .inl files are generated to build directory add custom command that will build them.
+if (DEQP_VULKAN_INL_GEN_OUTPUTS_DIR MATCHES ^${PROJECT_BINARY_DIR})
+       add_custom_command(
+               # Remove all outputs to help detect missing outputs.
+               COMMAND cmake -E remove ${DEQP_VULKAN_INL_GEN_OUTPUTS}
 
-       # Generate all inl files.
-       COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_ext_deps.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
-       COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
-       COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework_c.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
+               # Generate all inl files.
+               COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_ext_deps.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
+               COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
+               COMMAND ${PYTHON_EXECUTABLE} ARGS ${PROJECT_SOURCE_DIR}/external/vulkancts/scripts/gen_framework_c.py ${DEQP_VULKAN_INL_GEN_OUTPUTS_DIR}
 
-       # Check all outputs exist, as CMake does not do this.
-       COMMAND cmake -E md5sum ${DEQP_VULKAN_INL_GEN_OUTPUTS}
+               # Check all outputs exist, as CMake does not do this.
+               COMMAND cmake -E md5sum ${DEQP_VULKAN_INL_GEN_OUTPUTS}
 
-       DEPENDS ${DEQP_VULKAN_INL_GEN_INPUT}
-       OUTPUT ${DEQP_VULKAN_INL_GEN_OUTPUTS})
+               DEPENDS ${DEQP_VULKAN_INL_GEN_INPUT}
+               OUTPUT ${DEQP_VULKAN_INL_GEN_OUTPUTS})
 
-add_custom_target(
-       deqp-vk-inl ALL
-       DEPENDS ${DEQP_VULKAN_INL_GEN_OUTPUTS})
+       add_custom_target(
+               deqp-vk-inl ALL
+               DEPENDS ${DEQP_VULKAN_INL_GEN_OUTPUTS})
+else()
+       add_custom_target(deqp-vk-inl)
+endif()
 
 set(VKUTILNOSHADER_SRCS
        vkApiVersion.cpp
diff --git a/external/vulkancts/framework/vulkan/vkApiExtensionDependencyInfo.inl b/external/vulkancts/framework/vulkan/vkApiExtensionDependencyInfo.inl
new file mode 100644 (file)
index 0000000..ea223f5
--- /dev/null
@@ -0,0 +1,382 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+
+static const std::tuple<deUint32, deUint32, const char*, const char*>  instanceExtensionDependencies[] =
+{
+       std::make_tuple(1, 0, "VK_EXT_acquire_drm_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 1, "VK_EXT_acquire_drm_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 2, "VK_EXT_acquire_drm_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 0, "VK_EXT_acquire_xlib_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 1, "VK_EXT_acquire_xlib_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 2, "VK_EXT_acquire_xlib_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 0, "VK_EXT_direct_mode_display", "VK_KHR_display"),
+       std::make_tuple(1, 1, "VK_EXT_direct_mode_display", "VK_KHR_display"),
+       std::make_tuple(1, 2, "VK_EXT_direct_mode_display", "VK_KHR_display"),
+       std::make_tuple(1, 0, "VK_EXT_directfb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_EXT_directfb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_EXT_directfb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_EXT_display_surface_counter", "VK_KHR_display"),
+       std::make_tuple(1, 1, "VK_EXT_display_surface_counter", "VK_KHR_display"),
+       std::make_tuple(1, 2, "VK_EXT_display_surface_counter", "VK_KHR_display"),
+       std::make_tuple(1, 0, "VK_EXT_headless_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_EXT_headless_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_EXT_headless_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_EXT_metal_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_EXT_metal_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_EXT_metal_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_EXT_swapchain_colorspace", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_EXT_swapchain_colorspace", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_EXT_swapchain_colorspace", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_FUCHSIA_imagepipe_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_FUCHSIA_imagepipe_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_FUCHSIA_imagepipe_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_GGP_stream_descriptor_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_GGP_stream_descriptor_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_GGP_stream_descriptor_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_android_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_android_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_android_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_display", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_display", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_display", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_external_fence_capabilities", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_external_memory_capabilities", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_external_semaphore_capabilities", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_get_display_properties2", "VK_KHR_display"),
+       std::make_tuple(1, 1, "VK_KHR_get_display_properties2", "VK_KHR_display"),
+       std::make_tuple(1, 2, "VK_KHR_get_display_properties2", "VK_KHR_display"),
+       std::make_tuple(1, 0, "VK_KHR_get_surface_capabilities2", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_get_surface_capabilities2", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_get_surface_capabilities2", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_surface_protected_capabilities", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 2, "VK_KHR_surface_protected_capabilities", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 0, "VK_KHR_wayland_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_wayland_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_wayland_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_win32_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_win32_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_win32_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_xcb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_xcb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_xcb_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_xlib_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_xlib_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_xlib_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_MVK_ios_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_MVK_ios_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_MVK_ios_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_MVK_macos_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_MVK_macos_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_MVK_macos_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_NN_vi_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_NN_vi_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_NN_vi_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_QNX_screen_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_QNX_screen_surface", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_QNX_screen_surface", "VK_KHR_surface"),
+};
+static const std::tuple<deUint32, deUint32, const char*, const char*>  deviceExtensionDependencies[]   =
+{
+       std::make_tuple(1, 0, "VK_AMD_display_native_hdr", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_AMD_display_native_hdr", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 0, "VK_AMD_display_native_hdr", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_AMD_display_native_hdr", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 1, "VK_AMD_display_native_hdr", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_AMD_display_native_hdr", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 2, "VK_AMD_display_native_hdr", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_AMD_shader_core_properties", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_AMD_shader_core_properties2", "VK_AMD_shader_core_properties"),
+       std::make_tuple(1, 1, "VK_AMD_shader_core_properties2", "VK_AMD_shader_core_properties"),
+       std::make_tuple(1, 2, "VK_AMD_shader_core_properties2", "VK_AMD_shader_core_properties"),
+       std::make_tuple(1, 0, "VK_AMD_texture_gather_bias_lod", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_KHR_sampler_ycbcr_conversion"),
+       std::make_tuple(1, 0, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_EXT_queue_family_foreign"),
+       std::make_tuple(1, 0, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_KHR_dedicated_allocation"),
+       std::make_tuple(1, 1, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_EXT_queue_family_foreign"),
+       std::make_tuple(1, 2, "VK_ANDROID_external_memory_android_hardware_buffer", "VK_EXT_queue_family_foreign"),
+       std::make_tuple(1, 0, "VK_EXT_4444_formats", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_astc_decode_mode", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_buffer_device_address", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_calibrated_timestamps", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_color_write_enable", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_conservative_rasterization", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_debug_marker", "VK_EXT_debug_report"),
+       std::make_tuple(1, 1, "VK_EXT_debug_marker", "VK_EXT_debug_report"),
+       std::make_tuple(1, 2, "VK_EXT_debug_marker", "VK_EXT_debug_report"),
+       std::make_tuple(1, 0, "VK_EXT_descriptor_indexing", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_descriptor_indexing", "VK_KHR_maintenance3"),
+       std::make_tuple(1, 0, "VK_EXT_device_memory_report", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_discard_rectangles", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_display_control", "VK_EXT_display_surface_counter"),
+       std::make_tuple(1, 0, "VK_EXT_display_control", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_EXT_display_control", "VK_EXT_display_surface_counter"),
+       std::make_tuple(1, 1, "VK_EXT_display_control", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_EXT_display_control", "VK_EXT_display_surface_counter"),
+       std::make_tuple(1, 2, "VK_EXT_display_control", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_EXT_extended_dynamic_state", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_extended_dynamic_state2", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_external_memory_dma_buf", "VK_KHR_external_memory_fd"),
+       std::make_tuple(1, 1, "VK_EXT_external_memory_dma_buf", "VK_KHR_external_memory_fd"),
+       std::make_tuple(1, 2, "VK_EXT_external_memory_dma_buf", "VK_KHR_external_memory_fd"),
+       std::make_tuple(1, 0, "VK_EXT_external_memory_host", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_EXT_fragment_density_map", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_fragment_density_map2", "VK_EXT_fragment_density_map"),
+       std::make_tuple(1, 1, "VK_EXT_fragment_density_map2", "VK_EXT_fragment_density_map"),
+       std::make_tuple(1, 2, "VK_EXT_fragment_density_map2", "VK_EXT_fragment_density_map"),
+       std::make_tuple(1, 0, "VK_EXT_fragment_shader_interlock", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_full_screen_exclusive", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_full_screen_exclusive", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_EXT_full_screen_exclusive", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 0, "VK_EXT_full_screen_exclusive", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_EXT_full_screen_exclusive", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_EXT_full_screen_exclusive", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 1, "VK_EXT_full_screen_exclusive", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_EXT_full_screen_exclusive", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_EXT_full_screen_exclusive", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 2, "VK_EXT_full_screen_exclusive", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_EXT_global_priority_query", "VK_EXT_global_priority"),
+       std::make_tuple(1, 0, "VK_EXT_global_priority_query", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 1, "VK_EXT_global_priority_query", "VK_EXT_global_priority"),
+       std::make_tuple(1, 2, "VK_EXT_global_priority_query", "VK_EXT_global_priority"),
+       std::make_tuple(1, 0, "VK_EXT_hdr_metadata", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_EXT_hdr_metadata", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_EXT_hdr_metadata", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_EXT_host_query_reset", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_bind_memory2"),
+       std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 0, "VK_EXT_image_drm_format_modifier", "VK_KHR_sampler_ycbcr_conversion"),
+       std::make_tuple(1, 1, "VK_EXT_image_drm_format_modifier", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 0, "VK_EXT_image_robustness", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_inline_uniform_block", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_inline_uniform_block", "VK_KHR_maintenance1"),
+       std::make_tuple(1, 0, "VK_EXT_line_rasterization", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_memory_budget", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_memory_priority", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_pci_bus_info", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_physical_device_drm", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_provoking_vertex", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_queue_family_foreign", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_EXT_sample_locations", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_sampler_filter_minmax", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_scalar_block_layout", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_shader_atomic_float", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_shader_atomic_float2", "VK_EXT_shader_atomic_float"),
+       std::make_tuple(1, 1, "VK_EXT_shader_atomic_float2", "VK_EXT_shader_atomic_float"),
+       std::make_tuple(1, 2, "VK_EXT_shader_atomic_float2", "VK_EXT_shader_atomic_float"),
+       std::make_tuple(1, 0, "VK_EXT_shader_demote_to_helper_invocation", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_shader_image_atomic_int64", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_texel_buffer_alignment", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_texture_compression_astc_hdr", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_transform_feedback", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_vertex_attribute_divisor", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_vertex_input_dynamic_state", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_EXT_video_decode_h264", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 1, "VK_EXT_video_decode_h264", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 2, "VK_EXT_video_decode_h264", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 0, "VK_EXT_video_decode_h265", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 1, "VK_EXT_video_decode_h265", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 2, "VK_EXT_video_decode_h265", "VK_KHR_video_decode_queue"),
+       std::make_tuple(1, 0, "VK_EXT_video_encode_h264", "VK_KHR_video_encode_queue"),
+       std::make_tuple(1, 1, "VK_EXT_video_encode_h264", "VK_KHR_video_encode_queue"),
+       std::make_tuple(1, 2, "VK_EXT_video_encode_h264", "VK_KHR_video_encode_queue"),
+       std::make_tuple(1, 0, "VK_EXT_ycbcr_2plane_444_formats", "VK_KHR_sampler_ycbcr_conversion"),
+       std::make_tuple(1, 0, "VK_EXT_ycbcr_image_arrays", "VK_KHR_sampler_ycbcr_conversion"),
+       std::make_tuple(1, 0, "VK_FUCHSIA_external_memory", "VK_KHR_external_memory_capabilities"),
+       std::make_tuple(1, 0, "VK_FUCHSIA_external_memory", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_FUCHSIA_external_semaphore", "VK_KHR_external_semaphore_capabilities"),
+       std::make_tuple(1, 0, "VK_FUCHSIA_external_semaphore", "VK_KHR_external_semaphore"),
+       std::make_tuple(1, 0, "VK_GGP_frame_token", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_GGP_frame_token", "VK_GGP_stream_descriptor_surface"),
+       std::make_tuple(1, 1, "VK_GGP_frame_token", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_GGP_frame_token", "VK_GGP_stream_descriptor_surface"),
+       std::make_tuple(1, 2, "VK_GGP_frame_token", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_GGP_frame_token", "VK_GGP_stream_descriptor_surface"),
+       std::make_tuple(1, 0, "VK_GOOGLE_display_timing", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_GOOGLE_display_timing", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_GOOGLE_display_timing", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_HUAWEI_invocation_mask", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 0, "VK_HUAWEI_invocation_mask", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 1, "VK_HUAWEI_invocation_mask", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 1, "VK_HUAWEI_invocation_mask", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 2, "VK_HUAWEI_invocation_mask", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 2, "VK_HUAWEI_invocation_mask", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 0, "VK_HUAWEI_subpass_shading", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 0, "VK_HUAWEI_subpass_shading", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 1, "VK_HUAWEI_subpass_shading", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 1, "VK_HUAWEI_subpass_shading", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 2, "VK_HUAWEI_subpass_shading", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 0, "VK_INTEL_shader_integer_functions2", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_16bit_storage", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_16bit_storage", "VK_KHR_storage_buffer_storage_class"),
+       std::make_tuple(1, 0, "VK_KHR_8bit_storage", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_8bit_storage", "VK_KHR_storage_buffer_storage_class"),
+       std::make_tuple(1, 1, "VK_KHR_acceleration_structure", "VK_EXT_descriptor_indexing"),
+       std::make_tuple(1, 1, "VK_KHR_acceleration_structure", "VK_KHR_buffer_device_address"),
+       std::make_tuple(1, 1, "VK_KHR_acceleration_structure", "VK_KHR_deferred_host_operations"),
+       std::make_tuple(1, 2, "VK_KHR_acceleration_structure", "VK_KHR_deferred_host_operations"),
+       std::make_tuple(1, 0, "VK_KHR_buffer_device_address", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_create_renderpass2", "VK_KHR_multiview"),
+       std::make_tuple(1, 0, "VK_KHR_create_renderpass2", "VK_KHR_maintenance2"),
+       std::make_tuple(1, 0, "VK_KHR_dedicated_allocation", "VK_KHR_get_memory_requirements2"),
+       std::make_tuple(1, 0, "VK_KHR_depth_stencil_resolve", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 1, "VK_KHR_depth_stencil_resolve", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 0, "VK_KHR_device_group", "VK_KHR_device_group_creation"),
+       std::make_tuple(1, 0, "VK_KHR_display_swapchain", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_display_swapchain", "VK_KHR_display"),
+       std::make_tuple(1, 1, "VK_KHR_display_swapchain", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_display_swapchain", "VK_KHR_display"),
+       std::make_tuple(1, 2, "VK_KHR_display_swapchain", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_KHR_display_swapchain", "VK_KHR_display"),
+       std::make_tuple(1, 0, "VK_KHR_driver_properties", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_external_fence", "VK_KHR_external_fence_capabilities"),
+       std::make_tuple(1, 0, "VK_KHR_external_fence_fd", "VK_KHR_external_fence"),
+       std::make_tuple(1, 0, "VK_KHR_external_fence_win32", "VK_KHR_external_fence"),
+       std::make_tuple(1, 0, "VK_KHR_external_memory", "VK_KHR_external_memory_capabilities"),
+       std::make_tuple(1, 0, "VK_KHR_external_memory_fd", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_KHR_external_memory_win32", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_KHR_external_semaphore", "VK_KHR_external_semaphore_capabilities"),
+       std::make_tuple(1, 0, "VK_KHR_external_semaphore_fd", "VK_KHR_external_semaphore"),
+       std::make_tuple(1, 0, "VK_KHR_external_semaphore_win32", "VK_KHR_external_semaphore"),
+       std::make_tuple(1, 0, "VK_KHR_fragment_shading_rate", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 0, "VK_KHR_fragment_shading_rate", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 1, "VK_KHR_fragment_shading_rate", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 0, "VK_KHR_imageless_framebuffer", "VK_KHR_maintenance2"),
+       std::make_tuple(1, 0, "VK_KHR_imageless_framebuffer", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 1, "VK_KHR_imageless_framebuffer", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 0, "VK_KHR_incremental_present", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_incremental_present", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_KHR_incremental_present", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_maintenance3", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_multiview", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_performance_query", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_pipeline_executable_properties", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_portability_subset", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_present_id", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_present_id", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_KHR_present_id", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_present_wait", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_present_wait", "VK_KHR_present_id"),
+       std::make_tuple(1, 1, "VK_KHR_present_wait", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_present_wait", "VK_KHR_present_id"),
+       std::make_tuple(1, 2, "VK_KHR_present_wait", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_KHR_present_wait", "VK_KHR_present_id"),
+       std::make_tuple(1, 0, "VK_KHR_push_descriptor", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 1, "VK_KHR_ray_query", "VK_KHR_spirv_1_4"),
+       std::make_tuple(1, 1, "VK_KHR_ray_query", "VK_KHR_acceleration_structure"),
+       std::make_tuple(1, 2, "VK_KHR_ray_query", "VK_KHR_acceleration_structure"),
+       std::make_tuple(1, 1, "VK_KHR_ray_tracing_pipeline", "VK_KHR_spirv_1_4"),
+       std::make_tuple(1, 1, "VK_KHR_ray_tracing_pipeline", "VK_KHR_acceleration_structure"),
+       std::make_tuple(1, 2, "VK_KHR_ray_tracing_pipeline", "VK_KHR_acceleration_structure"),
+       std::make_tuple(1, 0, "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_maintenance1"),
+       std::make_tuple(1, 0, "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_bind_memory2"),
+       std::make_tuple(1, 0, "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_get_memory_requirements2"),
+       std::make_tuple(1, 0, "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_separate_depth_stencil_layouts", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_separate_depth_stencil_layouts", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 1, "VK_KHR_separate_depth_stencil_layouts", "VK_KHR_create_renderpass2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_atomic_int64", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_clock", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_float16_int8", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_float_controls", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_integer_dot_product", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shader_terminate_invocation", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shared_presentable_image", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_shared_presentable_image", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_shared_presentable_image", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 1, "VK_KHR_shared_presentable_image", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_shared_presentable_image", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 2, "VK_KHR_shared_presentable_image", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_KHR_shared_presentable_image", "VK_KHR_get_surface_capabilities2"),
+       std::make_tuple(1, 1, "VK_KHR_spirv_1_4", "VK_KHR_shader_float_controls"),
+       std::make_tuple(1, 0, "VK_KHR_swapchain", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_KHR_swapchain", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_KHR_swapchain", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_KHR_swapchain_mutable_format", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_swapchain_mutable_format", "VK_KHR_maintenance2"),
+       std::make_tuple(1, 0, "VK_KHR_swapchain_mutable_format", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 1, "VK_KHR_swapchain_mutable_format", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_KHR_swapchain_mutable_format", "VK_KHR_image_format_list"),
+       std::make_tuple(1, 2, "VK_KHR_swapchain_mutable_format", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_KHR_synchronization2", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_timeline_semaphore", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_uniform_buffer_standard_layout", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_variable_pointers", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_variable_pointers", "VK_KHR_storage_buffer_storage_class"),
+       std::make_tuple(1, 0, "VK_KHR_video_decode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 0, "VK_KHR_video_decode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 1, "VK_KHR_video_decode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 1, "VK_KHR_video_decode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 2, "VK_KHR_video_decode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 2, "VK_KHR_video_decode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 0, "VK_KHR_video_encode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 0, "VK_KHR_video_encode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 1, "VK_KHR_video_encode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 1, "VK_KHR_video_encode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 2, "VK_KHR_video_encode_queue", "VK_KHR_video_queue"),
+       std::make_tuple(1, 2, "VK_KHR_video_encode_queue", "VK_KHR_synchronization2"),
+       std::make_tuple(1, 0, "VK_KHR_video_queue", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_video_queue", "VK_KHR_sampler_ycbcr_conversion"),
+       std::make_tuple(1, 0, "VK_KHR_win32_keyed_mutex", "VK_KHR_external_memory_win32"),
+       std::make_tuple(1, 1, "VK_KHR_win32_keyed_mutex", "VK_KHR_external_memory_win32"),
+       std::make_tuple(1, 2, "VK_KHR_win32_keyed_mutex", "VK_KHR_external_memory_win32"),
+       std::make_tuple(1, 0, "VK_KHR_workgroup_memory_explicit_layout", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_KHR_zero_initialize_workgroup_memory", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NVX_multiview_per_view_attributes", "VK_KHR_multiview"),
+       std::make_tuple(1, 0, "VK_NV_acquire_winrt_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 1, "VK_NV_acquire_winrt_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 2, "VK_NV_acquire_winrt_display", "VK_EXT_direct_mode_display"),
+       std::make_tuple(1, 0, "VK_NV_compute_shader_derivatives", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_cooperative_matrix", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_corner_sampled_image", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_coverage_reduction_mode", "VK_NV_framebuffer_mixed_samples"),
+       std::make_tuple(1, 1, "VK_NV_coverage_reduction_mode", "VK_NV_framebuffer_mixed_samples"),
+       std::make_tuple(1, 2, "VK_NV_coverage_reduction_mode", "VK_NV_framebuffer_mixed_samples"),
+       std::make_tuple(1, 0, "VK_NV_dedicated_allocation_image_aliasing", "VK_KHR_dedicated_allocation"),
+       std::make_tuple(1, 0, "VK_NV_device_diagnostic_checkpoints", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_device_diagnostics_config", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_external_memory", "VK_NV_external_memory_capabilities"),
+       std::make_tuple(1, 1, "VK_NV_external_memory", "VK_NV_external_memory_capabilities"),
+       std::make_tuple(1, 2, "VK_NV_external_memory", "VK_NV_external_memory_capabilities"),
+       std::make_tuple(1, 0, "VK_NV_external_memory_rdma", "VK_KHR_external_memory"),
+       std::make_tuple(1, 0, "VK_NV_external_memory_win32", "VK_NV_external_memory"),
+       std::make_tuple(1, 1, "VK_NV_external_memory_win32", "VK_NV_external_memory"),
+       std::make_tuple(1, 2, "VK_NV_external_memory_win32", "VK_NV_external_memory"),
+       std::make_tuple(1, 0, "VK_NV_fragment_shader_barycentric", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_fragment_shading_rate_enums", "VK_KHR_fragment_shading_rate"),
+       std::make_tuple(1, 1, "VK_NV_fragment_shading_rate_enums", "VK_KHR_fragment_shading_rate"),
+       std::make_tuple(1, 2, "VK_NV_fragment_shading_rate_enums", "VK_KHR_fragment_shading_rate"),
+       std::make_tuple(1, 0, "VK_NV_mesh_shader", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_ray_tracing", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_ray_tracing", "VK_KHR_get_memory_requirements2"),
+       std::make_tuple(1, 0, "VK_NV_ray_tracing_motion_blur", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 1, "VK_NV_ray_tracing_motion_blur", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 2, "VK_NV_ray_tracing_motion_blur", "VK_KHR_ray_tracing_pipeline"),
+       std::make_tuple(1, 0, "VK_NV_scissor_exclusive", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_shader_image_footprint", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_shading_rate_image", "VK_KHR_get_physical_device_properties2"),
+       std::make_tuple(1, 0, "VK_NV_win32_keyed_mutex", "VK_NV_external_memory_win32"),
+       std::make_tuple(1, 1, "VK_NV_win32_keyed_mutex", "VK_NV_external_memory_win32"),
+       std::make_tuple(1, 2, "VK_NV_win32_keyed_mutex", "VK_NV_external_memory_win32"),
+       std::make_tuple(1, 0, "VK_QCOM_render_pass_transform", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_QCOM_render_pass_transform", "VK_KHR_surface"),
+       std::make_tuple(1, 1, "VK_QCOM_render_pass_transform", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_QCOM_render_pass_transform", "VK_KHR_surface"),
+       std::make_tuple(1, 2, "VK_QCOM_render_pass_transform", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_QCOM_render_pass_transform", "VK_KHR_surface"),
+       std::make_tuple(1, 0, "VK_QCOM_rotated_copy_commands", "VK_KHR_swapchain"),
+       std::make_tuple(1, 0, "VK_QCOM_rotated_copy_commands", "VK_KHR_copy_commands2"),
+       std::make_tuple(1, 1, "VK_QCOM_rotated_copy_commands", "VK_KHR_swapchain"),
+       std::make_tuple(1, 1, "VK_QCOM_rotated_copy_commands", "VK_KHR_copy_commands2"),
+       std::make_tuple(1, 2, "VK_QCOM_rotated_copy_commands", "VK_KHR_swapchain"),
+       std::make_tuple(1, 2, "VK_QCOM_rotated_copy_commands", "VK_KHR_copy_commands2"),
+       std::make_tuple(1, 0, "VK_VALVE_mutable_descriptor_type", "VK_KHR_maintenance3"),
+};
+static const std::tuple<deUint32, deUint32, deUint32>  releasedApiVersions[]   =
+{
+       std::make_tuple(4202496, 1, 2),
+       std::make_tuple(4198400, 1, 1),
+       std::make_tuple(4194304, 1, 0),
+};
diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl
new file mode 100644 (file)
index 0000000..fce23f5
--- /dev/null
@@ -0,0 +1,4260 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+#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 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_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)))
+#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      (VkDescriptorUpdateTemplate,            HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
+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      (VkDeferredOperationKHR,                        HANDLE_TYPE_DEFERRED_OPERATION_KHR);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkDebugReportCallbackEXT,                      HANDLE_TYPE_DEBUG_REPORT_CALLBACK_EXT);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkCuModuleNVX,                                         HANDLE_TYPE_CU_MODULE_NVX);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkCuFunctionNVX,                                       HANDLE_TYPE_CU_FUNCTION_NVX);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkDebugUtilsMessengerEXT,                      HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkValidationCacheEXT,                          HANDLE_TYPE_VALIDATION_CACHE_EXT);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkAccelerationStructureNV,                     HANDLE_TYPE_ACCELERATION_STRUCTURE_NV);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkPerformanceConfigurationINTEL,       HANDLE_TYPE_PERFORMANCE_CONFIGURATION_INTEL);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkIndirectCommandsLayoutNV,            HANDLE_TYPE_INDIRECT_COMMANDS_LAYOUT_NV);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkPrivateDataSlotEXT,                          HANDLE_TYPE_PRIVATE_DATA_SLOT_EXT);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkAccelerationStructureKHR,            HANDLE_TYPE_ACCELERATION_STRUCTURE_KHR);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkVideoSessionKHR,                                     HANDLE_TYPE_VIDEO_SESSION_KHR);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkVideoSessionParametersKHR,           HANDLE_TYPE_VIDEO_SESSION_PARAMETERS_KHR);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkSamplerYcbcrConversionKHR,           HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION);
+VK_DEFINE_NON_DISPATCHABLE_HANDLE      (VkDescriptorUpdateTemplateKHR,         HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
+
+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_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_VALIDATION_FAILED_EXT                                                  = -1000011001,
+       VK_ERROR_INVALID_SHADER_NV                                                              = -1000012000,
+       VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT   = -1000158000,
+       VK_ERROR_NOT_PERMITTED_EXT                                                              = -1000174001,
+       VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT                    = -1000255000,
+       VK_THREAD_IDLE_KHR                                                                              = 1000268000,
+       VK_THREAD_DONE_KHR                                                                              = 1000268001,
+       VK_OPERATION_DEFERRED_KHR                                                               = 1000268002,
+       VK_OPERATION_NOT_DEFERRED_KHR                                                   = 1000268003,
+       VK_PIPELINE_COMPILE_REQUIRED_EXT                                                = 1000297000,
+       VK_ERROR_OUT_OF_POOL_MEMORY_KHR                                                 = VK_ERROR_OUT_OF_POOL_MEMORY,
+       VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR                                    = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+       VK_ERROR_FRAGMENTATION_EXT                                                              = VK_ERROR_FRAGMENTATION,
+       VK_ERROR_INVALID_DEVICE_ADDRESS_EXT                                             = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+       VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR                             = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+       VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT                                  = VK_PIPELINE_COMPILE_REQUIRED_EXT,
+       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_DEVICE_GROUP_BIND_SPARSE_INFO                                                                         = 1000060006,
+       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_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2                                                       = 1000146002,
+       VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2                                                                                         = 1000146003,
+       VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2                                                            = 1000146004,
+       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_SPARSE_IMAGE_FORMAT_PROPERTIES_2                                                                      = 1000059007,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2                                            = 1000059008,
+       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_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO                                                        = 1000085000,
+       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_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_XLIB_SURFACE_CREATE_INFO_KHR                                                                          = 1000004000,
+       VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR                                                                           = 1000005000,
+       VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR                                                                       = 1000006000,
+       VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR                                                                       = 1000008000,
+       VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR                                                                         = 1000009000,
+       VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT                                                         = 1000011000,
+       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD                          = 1000018000,
+       VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT                                                                     = 1000022000,
+       VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT                                                                      = 1000022001,
+       VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT                                                                          = 1000022002,
+       VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR                                                                                                     = 1000023000,
+       VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR                                                                                        = 1000023001,
+       VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR                                                                            = 1000023002,
+       VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR                                                                       = 1000023003,
+       VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR                                                                                         = 1000023004,
+       VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR                                                                         = 1000023005,
+       VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR                                                      = 1000023006,
+       VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR                                                      = 1000023007,
+       VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR                                                                           = 1000023008,
+       VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR                                                                                     = 1000023009,
+       VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR                                                                         = 1000023010,
+       VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR                                                                                      = 1000023011,
+       VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR                                                           = 1000023012,
+       VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR                                                                                            = 1000023013,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR                                                         = 1000023014,
+       VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR                                                                           = 1000023015,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR                                                                                         = 1000024000,
+       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV                                                     = 1000026000,
+       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV                                            = 1000026001,
+       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV                                          = 1000026002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT                                       = 1000028000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT                                     = 1000028001,
+       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT                           = 1000028002,
+       VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                                                                                     = 1000029000,
+       VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX                                                                           = 1000029001,
+       VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                                                                                            = 1000029002,
+       VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                                                                            = 1000030000,
+       VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX                                                                     = 1000030001,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT                                                            = 1000038000,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT                                                     = 1000038001,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT                          = 1000038002,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT                                     = 1000038003,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT                                                          = 1000038004,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT                                                           = 1000038005,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT                                                                      = 1000038006,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT                                         = 1000038007,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT                                                                         = 1000038008,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT                                                            = 1000040000,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT                                                     = 1000040001,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT                                                            = 1000040002,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT                                                                                     = 1000040003,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT                                                                         = 1000040004,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT                          = 1000040005,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT                                     = 1000040006,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT                                                           = 1000040007,
+       VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD                                                      = 1000041000,
+       VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP                                                     = 1000049000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV                                      = 1000050000,
+       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV                                                          = 1000056000,
+       VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV                                                                        = 1000056001,
+       VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV                                                            = 1000057000,
+       VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV                                                            = 1000057001,
+       VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV                                                     = 1000058000,
+       VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                                                                                          = 1000061000,
+       VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                                                                                     = 1000062000,
+       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_WIN32_HANDLE_INFO_KHR                                                           = 1000073000,
+       VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR                                                           = 1000073001,
+       VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR                                                            = 1000073002,
+       VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR                                                                      = 1000073003,
+       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_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR                                            = 1000075000,
+       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR                                                        = 1000078000,
+       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR                                                        = 1000078001,
+       VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR                                                                           = 1000078002,
+       VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR                                                           = 1000078003,
+       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR                                                                          = 1000079000,
+       VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR                                                                                     = 1000079001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR                                        = 1000080000,
+       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT                     = 1000081000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT                            = 1000081001,
+       VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT                                                          = 1000081002,
+       VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR                                                                                           = 1000084000,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV                                      = 1000087000,
+       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_PRESENT_TIMES_INFO_GOOGLE                                                                                     = 1000092000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX          = 1000097000,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV                                        = 1000098000,
+       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_WIN32_HANDLE_INFO_KHR                                                            = 1000114000,
+       VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR                                                            = 1000114001,
+       VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR                                                                       = 1000114002,
+       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_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_IOS_SURFACE_CREATE_INFO_MVK                                                                           = 1000122000,
+       VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK                                                                         = 1000123000,
+       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_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID                                                         = 1000129000,
+       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID                                            = 1000129001,
+       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID                                     = 1000129002,
+       VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID                                           = 1000129003,
+       VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID                                       = 1000129004,
+       VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID                                                                                       = 1000129005,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT                                     = 1000138000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT                           = 1000138001,
+       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT                                         = 1000138002,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT                          = 1000138003,
+       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_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV                                       = 1000149000,
+       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR                                       = 1000150007,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR                                        = 1000150000,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR                                        = 1000150002,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR                                        = 1000150003,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR                            = 1000150004,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR                            = 1000150005,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR                                                           = 1000150006,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR                                                       = 1000150009,
+       VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR                                                          = 1000150010,
+       VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR                                        = 1000150011,
+       VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR                                        = 1000150012,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR                           = 1000150013,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR                         = 1000150014,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR                                                        = 1000150017,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR                                           = 1000150020,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR                                     = 1000347000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR                           = 1000347001,
+       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR                                                          = 1000150015,
+       VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR                                                      = 1000150016,
+       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR                                        = 1000150018,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR                                                        = 1000348013,
+       VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV                                     = 1000152000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV                                        = 1000154000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV                                      = 1000154001,
+       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_VALIDATION_CACHE_CREATE_INFO_EXT                                                                      = 1000160000,
+       VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT                                        = 1000160001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR                                       = 1000163000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR                                     = 1000163001,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV                     = 1000164000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV                                        = 1000164001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV                                      = 1000164002,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV            = 1000164005,
+       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV                                                           = 1000165000,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV                                                         = 1000165001,
+       VK_STRUCTURE_TYPE_GEOMETRY_NV                                                                                                           = 1000165003,
+       VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV                                                                                         = 1000165004,
+       VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV                                                                                                      = 1000165005,
+       VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV                                            = 1000165006,
+       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV                                        = 1000165007,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV                            = 1000165008,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV                                                     = 1000165009,
+       VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV                                                       = 1000165011,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV                                                                        = 1000165012,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV                      = 1000166000,
+       VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV            = 1000166001,
+       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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD                                                     = 1000183000,
+       VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT                                                                         = 1000184000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD                                            = 1000185000,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT                                                            = 1000187000,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT                                                     = 1000187001,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT                          = 1000187002,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT                                     = 1000187003,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT                                                                         = 1000187004,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT                                                            = 1000187005,
+       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT                                                           = 1000187006,
+       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD                                          = 1000189000,
+       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_PRESENT_FRAME_TOKEN_GGP                                                                                       = 1000191000,
+       VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT                                            = 1000192000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV                        = 1000201000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV                                                       = 1000202000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV                                                     = 1000202001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV                       = 1000203000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV                            = 1000204000,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV                      = 1000205000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV                                         = 1000205002,
+       VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV                                                                                            = 1000206000,
+       VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV                                                         = 1000206001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL                     = 1000209000,
+       VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL                                        = 1000210000,
+       VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL                                                         = 1000210001,
+       VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL                                                                         = 1000210002,
+       VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL                                                          = 1000210003,
+       VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL                                                                       = 1000210004,
+       VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL                                          = 1000210005,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT                                           = 1000212000,
+       VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD                                           = 1000213000,
+       VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD                                          = 1000213001,
+       VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA                                                         = 1000214000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR                      = 1000215000,
+       VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT                                                                         = 1000217000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT                                     = 1000218000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT                           = 1000218001,
+       VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT                                      = 1000218002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_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_CORE_PROPERTIES_2_AMD                                          = 1000227000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD                                          = 1000229000,
+       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_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT                                          = 1000238000,
+       VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT                                                                     = 1000238001,
+       VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR                                                            = 1000239000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV       = 1000240000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT                            = 1000244000,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT                                                         = 1000244002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT                                                           = 1000245000,
+       VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                                                                                       = 1000247000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR                                                     = 1000248000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV                                        = 1000249000,
+       VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV                                                                      = 1000249001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV                                      = 1000249002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV                           = 1000250000,
+       VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV                                      = 1000250001,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV                                                      = 1000250002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT                        = 1000251000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT                                       = 1000252000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT                                         = 1000254000,
+       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT         = 1000254001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT                                       = 1000254002,
+       VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT                                                        = 1000255000,
+       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT                                        = 1000255002,
+       VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT                                          = 1000255001,
+       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_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR           = 1000269000,
+       VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR                                                                                                     = 1000269001,
+       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR                                                            = 1000269002,
+       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR                                                                          = 1000269003,
+       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR                                                                     = 1000269004,
+       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR                                       = 1000269005,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT                            = 1000273000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT       = 1000276000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV                       = 1000277000,
+       VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV                                                          = 1000277001,
+       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV                                        = 1000277002,
+       VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV                                                                     = 1000277003,
+       VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV                                                       = 1000277004,
+       VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV                                                                            = 1000277005,
+       VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV                                        = 1000277006,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV                         = 1000277007,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV                        = 1000278000,
+       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV                           = 1000278001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR                       = 1000280000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR                     = 1000280001,
+       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_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM            = 1000282000,
+       VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM                                                         = 1000282001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT                                     = 1000284000,
+       VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT                                           = 1000284001,
+       VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT                                                        = 1000284002,
+       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_PIPELINE_LIBRARY_CREATE_INFO_KHR                                                                      = 1000290000,
+       VK_STRUCTURE_TYPE_PRESENT_ID_KHR                                                                                                        = 1000294000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR                                                       = 1000294001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT                                                     = 1000295000,
+       VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT                                                           = 1000295001,
+       VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT                                                                     = 1000295002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT          = 1000297000,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR                                                                                         = 1000299000,
+       VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR                                                            = 1000299001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV                                        = 1000300000,
+       VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV                                                      = 1000300001,
+       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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR     = 1000323000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR         = 1000325000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV                     = 1000326000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV                       = 1000326001,
+       VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV                      = 1000326002,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV                      = 1000327000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV                           = 1000327001,
+       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV                                                         = 1000327002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT                        = 1000330000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT                           = 1000332000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT                         = 1000332001,
+       VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM                                                                      = 1000333000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT                                         = 1000335000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR         = 1000336000,
+       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_DIRECTFB_SURFACE_CREATE_INFO_EXT                                                                      = 1000346000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE                        = 1000351000,
+       VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE                                                     = 1000351002,
+       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_DRM_PROPERTIES_EXT                                                            = 1000353000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT          = 1000356000,
+       VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA                                                      = 1000364000,
+       VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA                                                       = 1000364001,
+       VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA                                                         = 1000364002,
+       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA                                           = 1000365000,
+       VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA                                                      = 1000365001,
+       VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI                                           = 1000369000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI                                       = 1000369001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI                                     = 1000369002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI                                       = 1000370000,
+       VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV                                                                     = 1000371000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV                                      = 1000371001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT                         = 1000377000,
+       VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX                                                                        = 1000378000,
+       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_GLOBAL_PRIORITY_QUERY_FEATURES_EXT                            = 1000388000,
+       VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT                                           = 1000388001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT                                                       = 1000392000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT                                                     = 1000392001,
+       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_DEBUG_REPORT_CREATE_INFO_EXT                                                                          = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
+       VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR                                                         = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR                                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR                                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR                                                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR                                                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR                                                                                       = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR                                                                         = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR                                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+       VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR                                                                         = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR                                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR                                                          = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+       VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR                                                                        = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR                                                       = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR                                            = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR                                                                          = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR                                                                     = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR                                                      = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR                                                       = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR                                                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
+       VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR                                                           = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+       VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR                                                          = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR                                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+       VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR                                                                        = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR                                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
+       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR                                                        = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
+       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR                                                         = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR                                                                       = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR                                           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+       VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR                                                                     = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR                                                                      = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR                                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR                                            = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT                                                                                     = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR                                                       = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR                                                         = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR                                                         = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR                                                                          = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR                                                                            = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR                                                                                     = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR                                                                                      = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR                                                                         = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR                                                                                        = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR                                                                                          = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR                                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+       VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR                                                                         = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+       VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR                                                                          = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+       VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR                           = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
+       VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR                                                                      = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR                     = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,
+       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR                                                                     = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
+       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR                                                            = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT                                                        = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR                                                         = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+       VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR                                                          = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+       VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR                                           = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
+       VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR                                                                                     = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+       VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR                                                        = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR                                                                     = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
+       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR                                                      = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
+       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR                                                                     = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
+       VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR                                                                      = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
+       VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR                                                      = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR                          = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
+       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR                                                                           = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR                                                                            = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT                           = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT            = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT           = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR                                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR                                                                     = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR                                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR                                         = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR                                                                        = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR                                                            = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR                                                                                       = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR                                                                                     = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+       VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL                                                                          = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR                                                       = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR                                                     = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT                                           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT                                                                        = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT                                                           = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR                                                                        = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR                                         = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR                                       = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR                                         = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
+       VK_STRUCTURE_TYPE_MAX_ENUM                                                                                                                      = 0x7FFFFFFF,
+};
+
+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_VIDEO_DECODE_DST_KHR                                                    = 1000024000,
+       VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR                                                    = 1000024001,
+       VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR                                                    = 1000024002,
+       VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR                                                              = 1000111000,
+       VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT                                = 1000218000,
+       VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR    = 1000164003,
+       VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR                                                    = 1000299000,
+       VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR                                                    = 1000299001,
+       VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR                                                    = 1000299002,
+       VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR                                                   = 1000314000,
+       VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR                                                  = 1000314001,
+       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR  = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR  = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+       VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV                                                 = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
+       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR                                    = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR                                             = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR                                  = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR                                   = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
+       VK_IMAGE_LAYOUT_MAX_ENUM                                                                                = 0x7FFFFFFF,
+};
+
+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_DESCRIPTOR_UPDATE_TEMPLATE               = 1000085000,
+       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_REPORT_CALLBACK_EXT                = 1000011000,
+       VK_OBJECT_TYPE_VIDEO_SESSION_KHR                                = 1000023000,
+       VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR             = 1000023001,
+       VK_OBJECT_TYPE_CU_MODULE_NVX                                    = 1000029000,
+       VK_OBJECT_TYPE_CU_FUNCTION_NVX                                  = 1000029001,
+       VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT                = 1000128000,
+       VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR               = 1000150000,
+       VK_OBJECT_TYPE_VALIDATION_CACHE_EXT                             = 1000160000,
+       VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV                = 1000165000,
+       VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL  = 1000210000,
+       VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR                   = 1000268000,
+       VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV              = 1000277000,
+       VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT                    = 1000295000,
+       VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR   = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+       VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR             = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+       VK_OBJECT_TYPE_MAX_ENUM                                                 = 0x7FFFFFFF,
+};
+
+enum VkPipelineCacheHeaderVersion
+{
+       VK_PIPELINE_CACHE_HEADER_VERSION_ONE            = 1,
+       VK_PIPELINE_CACHE_HEADER_VERSION_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 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_PVRTC1_2BPP_UNORM_BLOCK_IMG                                           = 1000054000,
+       VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG                                           = 1000054001,
+       VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG                                           = 1000054002,
+       VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG                                           = 1000054003,
+       VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG                                            = 1000054004,
+       VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG                                            = 1000054005,
+       VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG                                            = 1000054006,
+       VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG                                            = 1000054007,
+       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_G8B8G8R8_422_UNORM_KHR                                                        = VK_FORMAT_G8B8G8R8_422_UNORM,
+       VK_FORMAT_B8G8R8G8_422_UNORM_KHR                                                        = VK_FORMAT_B8G8R8G8_422_UNORM,
+       VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR                                         = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+       VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR                                          = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+       VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR                                         = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+       VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR                                          = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+       VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR                                         = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+       VK_FORMAT_R10X6_UNORM_PACK16_KHR                                                        = VK_FORMAT_R10X6_UNORM_PACK16,
+       VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR                                          = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+       VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR                        = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+       VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR            = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+       VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR            = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR        = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR         = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR        = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR         = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR        = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+       VK_FORMAT_R12X4_UNORM_PACK16_KHR                                                        = VK_FORMAT_R12X4_UNORM_PACK16,
+       VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR                                          = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+       VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR                        = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+       VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR            = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+       VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR            = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR        = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR         = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR        = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR         = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR        = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+       VK_FORMAT_G16B16G16R16_422_UNORM_KHR                                            = VK_FORMAT_G16B16G16R16_422_UNORM,
+       VK_FORMAT_B16G16R16G16_422_UNORM_KHR                                            = VK_FORMAT_B16G16R16G16_422_UNORM,
+       VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR                                      = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+       VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR                                       = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+       VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR                                      = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+       VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR                                       = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+       VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR                                      = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+       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,
+       VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR                                            = 1000023000,
+       VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT                                     = 1000028004,
+       VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR                                                     = 1000116000,
+       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR         = 1000150000,
+       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR     = 1000150001,
+       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV          = 1000165000,
+       VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL                                           = 1000210000,
+       VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR           = 1000299000,
+       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_VIEWPORT_W_SCALING_NV                                  = 1000087000,
+       VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT                                  = 1000099000,
+       VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT                                   = 1000143000,
+       VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR    = 1000347000,
+       VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV               = 1000164004,
+       VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV                = 1000164006,
+       VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV                                   = 1000205001,
+       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_FILL_RECTANGLE_NV       = 1000153000,
+       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_MIRROR_CLAMP_TO_EDGE_KHR        = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
+       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_INLINE_UNIFORM_BLOCK_EXT             = 1000138000,
+       VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR   = 1000150000,
+       VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV    = 1000165000,
+       VK_DESCRIPTOR_TYPE_MUTABLE_VALVE                                = 1000351000,
+       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_NONE_EXT  = 1000400000,
+       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_NONE_EXT         = 1000301000,
+       VK_ATTACHMENT_STORE_OP_NONE_QCOM        = VK_ATTACHMENT_STORE_OP_NONE_EXT,
+       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_RAY_TRACING_KHR                  = 1000165000,
+       VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI   = 1000369003,
+       VK_PIPELINE_BIND_POINT_RAY_TRACING_NV                   = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
+       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_NONE_KHR  = 1000165000,
+       VK_INDEX_TYPE_UINT8_EXT = 1000265000,
+       VK_INDEX_TYPE_NONE_NV   = VK_INDEX_TYPE_NONE_KHR,
+       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,
+};
+
+enum VkPointClippingBehavior
+{
+       VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES                              = 0,
+       VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY                = 1,
+       VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR                  = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
+       VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR    = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
+       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_UPPER_LEFT_KHR    = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
+       VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR    = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
+       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_RGB_IDENTITY_KHR              = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
+       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR    = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
+       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR                 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
+       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR                 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
+       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR                = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
+       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_ITU_FULL_KHR             = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
+       VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR   = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
+       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_COSITED_EVEN_KHR     = VK_CHROMA_LOCATION_COSITED_EVEN,
+       VK_CHROMA_LOCATION_MIDPOINT_KHR         = VK_CHROMA_LOCATION_MIDPOINT,
+       VK_CHROMA_LOCATION_LAST,
+       VK_CHROMA_LOCATION_MAX_ENUM                     = 0x7FFFFFFF,
+};
+
+enum VkDescriptorUpdateTemplateType
+{
+       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET               = 0,
+       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
+       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR   = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
+       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_LAST,
+       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM                             = 0x7FFFFFFF,
+};
+
+enum VkDriverId
+{
+       VK_DRIVER_ID_AMD_PROPRIETARY                            = 1,
+       VK_DRIVER_ID_AMD_OPEN_SOURCE                            = 2,
+       VK_DRIVER_ID_MESA_RADV                                          = 3,
+       VK_DRIVER_ID_NVIDIA_PROPRIETARY                         = 4,
+       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS          = 5,
+       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA                     = 6,
+       VK_DRIVER_ID_IMAGINATION_PROPRIETARY            = 7,
+       VK_DRIVER_ID_QUALCOMM_PROPRIETARY                       = 8,
+       VK_DRIVER_ID_ARM_PROPRIETARY                            = 9,
+       VK_DRIVER_ID_GOOGLE_SWIFTSHADER                         = 10,
+       VK_DRIVER_ID_GGP_PROPRIETARY                            = 11,
+       VK_DRIVER_ID_BROADCOM_PROPRIETARY                       = 12,
+       VK_DRIVER_ID_MESA_LLVMPIPE                                      = 13,
+       VK_DRIVER_ID_MOLTENVK                                           = 14,
+       VK_DRIVER_ID_COREAVI_PROPRIETARY                        = 15,
+       VK_DRIVER_ID_JUICE_PROPRIETARY                          = 16,
+       VK_DRIVER_ID_VERISILICON_PROPRIETARY            = 17,
+       VK_DRIVER_ID_AMD_PROPRIETARY_KHR                        = VK_DRIVER_ID_AMD_PROPRIETARY,
+       VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR                        = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+       VK_DRIVER_ID_MESA_RADV_KHR                                      = VK_DRIVER_ID_MESA_RADV,
+       VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR                     = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR      = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR         = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+       VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR        = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+       VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR           = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+       VK_DRIVER_ID_ARM_PROPRIETARY_KHR                        = VK_DRIVER_ID_ARM_PROPRIETARY,
+       VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR                     = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+       VK_DRIVER_ID_GGP_PROPRIETARY_KHR                        = VK_DRIVER_ID_GGP_PROPRIETARY,
+       VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR           = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+       VK_DRIVER_ID_MAX_ENUM                                           = 0x7FFFFFFF,
+};
+
+enum VkShaderFloatControlsIndependence
+{
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY               = 0,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL                               = 1,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE                              = 2,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR   = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR                   = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR                  = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_LAST,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM                  = 0x7FFFFFFF,
+};
+
+enum VkSamplerReductionMode
+{
+       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE              = 0,
+       VK_SAMPLER_REDUCTION_MODE_MIN                                   = 1,
+       VK_SAMPLER_REDUCTION_MODE_MAX                                   = 2,
+       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT  = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+       VK_SAMPLER_REDUCTION_MODE_MIN_EXT                               = VK_SAMPLER_REDUCTION_MODE_MIN,
+       VK_SAMPLER_REDUCTION_MODE_MAX_EXT                               = VK_SAMPLER_REDUCTION_MODE_MAX,
+       VK_SAMPLER_REDUCTION_MODE_LAST,
+       VK_SAMPLER_REDUCTION_MODE_MAX_ENUM                              = 0x7FFFFFFF,
+};
+
+enum VkSemaphoreType
+{
+       VK_SEMAPHORE_TYPE_BINARY                = 0,
+       VK_SEMAPHORE_TYPE_TIMELINE              = 1,
+       VK_SEMAPHORE_TYPE_BINARY_KHR    = VK_SEMAPHORE_TYPE_BINARY,
+       VK_SEMAPHORE_TYPE_TIMELINE_KHR  = VK_SEMAPHORE_TYPE_TIMELINE,
+       VK_SEMAPHORE_TYPE_LAST,
+       VK_SEMAPHORE_TYPE_MAX_ENUM              = 0x7FFFFFFF,
+};
+
+enum 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_COLOR_SPACE_DISPLAY_NATIVE_AMD                       = 1000213000,
+       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 VkPipelineExecutableStatisticFormatKHR
+{
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR              = 0,
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR               = 1,
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR              = 2,
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR             = 3,
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_KHR_LAST,
+       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR    = 0x7FFFFFFF,
+};
+
+enum VkDebugReportObjectTypeEXT
+{
+       VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                                                 = 0,
+       VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT                                                = 1,
+       VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT                                 = 2,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT                                                  = 3,
+       VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT                                                   = 4,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT                                               = 5,
+       VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT                                  = 6,
+       VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT                                                   = 7,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT                                   = 8,
+       VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT                                                  = 9,
+       VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT                                                   = 10,
+       VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT                                                   = 11,
+       VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT                                              = 12,
+       VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT                                             = 13,
+       VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT                                              = 14,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT                                   = 15,
+       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT                                  = 16,
+       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT                                 = 17,
+       VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT                                             = 18,
+       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT                                                = 19,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT                   = 20,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT                                                 = 21,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT                                 = 22,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT                                  = 23,
+       VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT                                             = 24,
+       VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT                                    = 25,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT                                             = 26,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT                                   = 27,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT               = 28,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT                                             = 29,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT                                = 30,
+       VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT                    = 33,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT                = 1000156000,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT              = 1000085000,
+       VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT                                   = 1000029000,
+       VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT                                 = 1000029001,
+       VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT              = 1000150000,
+       VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT               = 1000165000,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT                                    = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
+       VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT                                = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
+       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT  = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
+       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT    = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
+       VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT                                                = 0x7FFFFFFF,
+};
+
+enum VkRasterizationOrderAMD
+{
+       VK_RASTERIZATION_ORDER_STRICT_AMD       = 0,
+       VK_RASTERIZATION_ORDER_RELAXED_AMD      = 1,
+       VK_RASTERIZATION_ORDER_AMD_LAST,
+       VK_RASTERIZATION_ORDER_MAX_ENUM_AMD     = 0x7FFFFFFF,
+};
+
+enum VkShaderInfoTypeAMD
+{
+       VK_SHADER_INFO_TYPE_STATISTICS_AMD      = 0,
+       VK_SHADER_INFO_TYPE_BINARY_AMD          = 1,
+       VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD     = 2,
+       VK_SHADER_INFO_TYPE_AMD_LAST,
+       VK_SHADER_INFO_TYPE_MAX_ENUM_AMD        = 0x7FFFFFFF,
+};
+
+enum VkValidationCheckEXT
+{
+       VK_VALIDATION_CHECK_ALL_EXT                     = 0,
+       VK_VALIDATION_CHECK_SHADERS_EXT         = 1,
+       VK_VALIDATION_CHECK_EXT_LAST,
+       VK_VALIDATION_CHECK_MAX_ENUM_EXT        = 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 VkViewportCoordinateSwizzleNV
+{
+       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV    = 0,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV    = 1,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV    = 2,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV    = 3,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV    = 4,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV    = 5,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV    = 6,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV    = 7,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_NV_LAST,
+       VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV              = 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 VkCoverageModulationModeNV
+{
+       VK_COVERAGE_MODULATION_MODE_NONE_NV             = 0,
+       VK_COVERAGE_MODULATION_MODE_RGB_NV              = 1,
+       VK_COVERAGE_MODULATION_MODE_ALPHA_NV    = 2,
+       VK_COVERAGE_MODULATION_MODE_RGBA_NV             = 3,
+       VK_COVERAGE_MODULATION_MODE_NV_LAST,
+       VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF,
+};
+
+enum VkValidationCacheHeaderVersionEXT
+{
+       VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT              = 1,
+       VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+
+enum VkShadingRatePaletteEntryNV
+{
+       VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV                                 = 0,
+       VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV               = 1,
+       VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV                = 2,
+       VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV                = 3,
+       VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV                = 4,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV                 = 5,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV    = 6,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV    = 7,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV    = 8,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV    = 9,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV    = 10,
+       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV    = 11,
+       VK_SHADING_RATE_PALETTE_ENTRY_NV_LAST,
+       VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV                                               = 0x7FFFFFFF,
+};
+
+enum VkCoarseSampleOrderTypeNV
+{
+       VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV          = 0,
+       VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV           = 1,
+       VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV      = 2,
+       VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV     = 3,
+       VK_COARSE_SAMPLE_ORDER_TYPE_NV_LAST,
+       VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV         = 0x7FFFFFFF,
+};
+
+enum VkRayTracingShaderGroupTypeKHR
+{
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR                            = 0,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR        = 1,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR       = 2,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV                                     = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV         = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV        = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_KHR_LAST,
+       VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR                           = 0x7FFFFFFF,
+};
+
+enum VkGeometryTypeKHR
+{
+       VK_GEOMETRY_TYPE_TRIANGLES_KHR  = 0,
+       VK_GEOMETRY_TYPE_AABBS_KHR              = 1,
+       VK_GEOMETRY_TYPE_INSTANCES_KHR  = 2,
+       VK_GEOMETRY_TYPE_TRIANGLES_NV   = VK_GEOMETRY_TYPE_TRIANGLES_KHR,
+       VK_GEOMETRY_TYPE_AABBS_NV               = VK_GEOMETRY_TYPE_AABBS_KHR,
+       VK_GEOMETRY_TYPE_KHR_LAST,
+       VK_GEOMETRY_TYPE_MAX_ENUM_KHR   = 0x7FFFFFFF,
+};
+
+enum VkAccelerationStructureTypeKHR
+{
+       VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR    = 0,
+       VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
+       VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR              = 2,
+       VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV             = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,
+       VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV  = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,
+       VK_ACCELERATION_STRUCTURE_TYPE_KHR_LAST,
+       VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR             = 0x7FFFFFFF,
+};
+
+enum VkCopyAccelerationStructureModeKHR
+{
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR           = 0,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR         = 1,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR       = 2,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR     = 3,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV            = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV          = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_KHR_LAST,
+       VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR        = 0x7FFFFFFF,
+};
+
+enum VkAccelerationStructureMemoryRequirementsTypeNV
+{
+       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV                    = 0,
+       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV             = 1,
+       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV    = 2,
+       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_NV_LAST,
+       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV                  = 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 VkMemoryOverallocationBehaviorAMD
+{
+       VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD           = 0,
+       VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD           = 1,
+       VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD        = 2,
+       VK_MEMORY_OVERALLOCATION_BEHAVIOR_AMD_LAST,
+       VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD          = 0x7FFFFFFF,
+};
+
+enum VkPerformanceConfigurationTypeINTEL
+{
+       VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL       = 0,
+       VK_PERFORMANCE_CONFIGURATION_TYPE_INTEL_LAST,
+       VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL                                                                        = 0x7FFFFFFF,
+};
+
+enum VkQueryPoolSamplingModeINTEL
+{
+       VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL        = 0,
+       VK_QUERY_POOL_SAMPLING_MODE_INTEL_LAST,
+       VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL      = 0x7FFFFFFF,
+};
+
+enum VkPerformanceOverrideTypeINTEL
+{
+       VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL        = 0,
+       VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL     = 1,
+       VK_PERFORMANCE_OVERRIDE_TYPE_INTEL_LAST,
+       VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL                     = 0x7FFFFFFF,
+};
+
+enum VkPerformanceParameterTypeINTEL
+{
+       VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL               = 0,
+       VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL    = 1,
+       VK_PERFORMANCE_PARAMETER_TYPE_INTEL_LAST,
+       VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL                                    = 0x7FFFFFFF,
+};
+
+enum VkPerformanceValueTypeINTEL
+{
+       VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL          = 0,
+       VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL          = 1,
+       VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL           = 2,
+       VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL            = 3,
+       VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL          = 4,
+       VK_PERFORMANCE_VALUE_TYPE_INTEL_LAST,
+       VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL        = 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_SHADER_VALIDATION_CACHE_EXT       = 7,
+       VK_VALIDATION_FEATURE_DISABLE_EXT_LAST,
+       VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT                                      = 0x7FFFFFFF,
+};
+
+enum VkComponentTypeNV
+{
+       VK_COMPONENT_TYPE_FLOAT16_NV    = 0,
+       VK_COMPONENT_TYPE_FLOAT32_NV    = 1,
+       VK_COMPONENT_TYPE_FLOAT64_NV    = 2,
+       VK_COMPONENT_TYPE_SINT8_NV              = 3,
+       VK_COMPONENT_TYPE_SINT16_NV             = 4,
+       VK_COMPONENT_TYPE_SINT32_NV             = 5,
+       VK_COMPONENT_TYPE_SINT64_NV             = 6,
+       VK_COMPONENT_TYPE_UINT8_NV              = 7,
+       VK_COMPONENT_TYPE_UINT16_NV             = 8,
+       VK_COMPONENT_TYPE_UINT32_NV             = 9,
+       VK_COMPONENT_TYPE_UINT64_NV             = 10,
+       VK_COMPONENT_TYPE_NV_LAST,
+       VK_COMPONENT_TYPE_MAX_ENUM_NV   = 0x7FFFFFFF,
+};
+
+enum VkScopeNV
+{
+       VK_SCOPE_DEVICE_NV                      = 1,
+       VK_SCOPE_WORKGROUP_NV           = 2,
+       VK_SCOPE_SUBGROUP_NV            = 3,
+       VK_SCOPE_QUEUE_FAMILY_NV        = 5,
+       VK_SCOPE_MAX_ENUM_NV            = 0x7FFFFFFF,
+};
+
+enum VkCoverageReductionModeNV
+{
+       VK_COVERAGE_REDUCTION_MODE_MERGE_NV             = 0,
+       VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV  = 1,
+       VK_COVERAGE_REDUCTION_MODE_NV_LAST,
+       VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV  = 0x7FFFFFFF,
+};
+
+enum VkProvokingVertexModeEXT
+{
+       VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT       = 0,
+       VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT        = 1,
+       VK_PROVOKING_VERTEX_MODE_EXT_LAST,
+       VK_PROVOKING_VERTEX_MODE_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,
+};
+
+enum VkIndirectCommandsTokenTypeNV
+{
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV         = 0,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV          = 1,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV         = 2,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV        = 3,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV        = 4,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV         = 5,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV                         = 6,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV           = 7,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_NV_LAST,
+       VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV                     = 0x7FFFFFFF,
+};
+
+enum VkDeviceMemoryReportEventTypeEXT
+{
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT                         = 0,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT                                     = 1,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT                           = 2,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT                         = 3,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT        = 4,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_EXT_LAST,
+       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT                         = 0x7FFFFFFF,
+};
+
+enum VkFragmentShadingRateTypeNV
+{
+       VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV  = 0,
+       VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV                  = 1,
+       VK_FRAGMENT_SHADING_RATE_TYPE_NV_LAST,
+       VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV               = 0x7FFFFFFF,
+};
+
+enum VkFragmentShadingRateNV
+{
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV              = 0,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
+       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10,
+       VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV             = 11,
+       VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV             = 12,
+       VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV             = 13,
+       VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV    = 14,
+       VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV                              = 15,
+       VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV                                    = 0x7FFFFFFF,
+};
+
+enum VkAccelerationStructureMotionInstanceTypeNV
+{
+       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV                = 0,
+       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1,
+       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV    = 2,
+       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_NV_LAST,
+       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV              = 0x7FFFFFFF,
+};
+
+enum VkBuildAccelerationStructureModeKHR
+{
+       VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR          = 0,
+       VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR         = 1,
+       VK_BUILD_ACCELERATION_STRUCTURE_MODE_KHR_LAST,
+       VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR       = 0x7FFFFFFF,
+};
+
+enum VkAccelerationStructureBuildTypeKHR
+{
+       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR                   = 0,
+       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR                 = 1,
+       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
+       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_KHR_LAST,
+       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR               = 0x7FFFFFFF,
+};
+
+enum VkAccelerationStructureCompatibilityKHR
+{
+       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR          = 0,
+       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR        = 1,
+       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_KHR_LAST,
+       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR            = 0x7FFFFFFF,
+};
+
+enum VkShaderGroupShaderKHR
+{
+       VK_SHADER_GROUP_SHADER_GENERAL_KHR              = 0,
+       VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR  = 1,
+       VK_SHADER_GROUP_SHADER_ANY_HIT_KHR              = 2,
+       VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3,
+       VK_SHADER_GROUP_SHADER_KHR_LAST,
+       VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR             = 0x7FFFFFFF,
+};
+
+enum VkQueryResultStatusKHR
+{
+       VK_QUERY_RESULT_STATUS_ERROR_KHR                = -1,
+       VK_QUERY_RESULT_STATUS_NOT_READY_KHR    = 0,
+       VK_QUERY_RESULT_STATUS_COMPLETE_KHR             = 1,
+       VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR             = 0x7FFFFFFF,
+};
+
+enum StdVideoH264ChromaFormatIdc
+{
+       std_video_h264_chroma_format_idc_monochrome     = 0,
+       std_video_h264_chroma_format_idc_420            = 1,
+       std_video_h264_chroma_format_idc_422            = 2,
+       std_video_h264_chroma_format_idc_444            = 3,
+       STD_VIDEO_H264_CHROMA_FORMAT_IDC_LAST,
+};
+
+enum StdVideoH264ProfileIdc
+{
+       std_video_h264_profile_idc_baseline                             = 66,
+       std_video_h264_profile_idc_main                                 = 77,
+       std_video_h264_profile_idc_high                                 = 100,
+       std_video_h264_profile_idc_high_444_predictive  = 244,
+       std_video_h264_profile_idc_invalid                              = 0x7FFFFFFF,
+};
+
+enum StdVideoH264Level
+{
+       std_video_h264_level_1_0                = 0,
+       std_video_h264_level_1_1                = 1,
+       std_video_h264_level_1_2                = 2,
+       std_video_h264_level_1_3                = 3,
+       std_video_h264_level_2_0                = 4,
+       std_video_h264_level_2_1                = 5,
+       std_video_h264_level_2_2                = 6,
+       std_video_h264_level_3_0                = 7,
+       std_video_h264_level_3_1                = 8,
+       std_video_h264_level_3_2                = 9,
+       std_video_h264_level_4_0                = 10,
+       std_video_h264_level_4_1                = 11,
+       std_video_h264_level_4_2                = 12,
+       std_video_h264_level_5_0                = 13,
+       std_video_h264_level_5_1                = 14,
+       std_video_h264_level_5_2                = 15,
+       std_video_h264_level_6_0                = 16,
+       std_video_h264_level_6_1                = 17,
+       std_video_h264_level_6_2                = 18,
+       STD_VIDEO_H264_LEVEL_LAST,
+       std_video_h264_level_invalid    = 0x7FFFFFFF,
+};
+
+enum StdVideoH264PocType
+{
+       std_video_h264_poc_type_0               = 0,
+       std_video_h264_poc_type_1               = 1,
+       std_video_h264_poc_type_2               = 2,
+       STD_VIDEO_H264_POC_TYPE_LAST,
+       std_video_h264_poc_type_invalid = 0x7FFFFFFF,
+};
+
+enum StdVideoH264AspectRatioIdc
+{
+       std_video_h264_aspect_ratio_idc_unspecified             = 0,
+       std_video_h264_aspect_ratio_idc_square                  = 1,
+       std_video_h264_aspect_ratio_idc_12_11                   = 2,
+       std_video_h264_aspect_ratio_idc_10_11                   = 3,
+       std_video_h264_aspect_ratio_idc_16_11                   = 4,
+       std_video_h264_aspect_ratio_idc_40_33                   = 5,
+       std_video_h264_aspect_ratio_idc_24_11                   = 6,
+       std_video_h264_aspect_ratio_idc_20_11                   = 7,
+       std_video_h264_aspect_ratio_idc_32_11                   = 8,
+       std_video_h264_aspect_ratio_idc_80_33                   = 9,
+       std_video_h264_aspect_ratio_idc_18_11                   = 10,
+       std_video_h264_aspect_ratio_idc_15_11                   = 11,
+       std_video_h264_aspect_ratio_idc_64_33                   = 12,
+       std_video_h264_aspect_ratio_idc_160_99                  = 13,
+       std_video_h264_aspect_ratio_idc_4_3                             = 14,
+       std_video_h264_aspect_ratio_idc_3_2                             = 15,
+       std_video_h264_aspect_ratio_idc_2_1                             = 16,
+       std_video_h264_aspect_ratio_idc_extended_sar    = 255,
+       std_video_h264_aspect_ratio_idc_invalid                 = 0x7FFFFFFF,
+};
+
+enum StdVideoH264WeightedBiPredIdc
+{
+       std_video_h264_default_weighted_b_slices_prediction_idc         = 0,
+       std_video_h264_explicit_weighted_b_slices_prediction_idc        = 1,
+       std_video_h264_implicit_weighted_b_slices_prediction_idc        = 2,
+       STD_VIDEO_H264_WEIGHTED_BI_PRED_IDC_LAST,
+       std_video_h264_invalid_weighted_b_slices_prediction_idc         = 0x7FFFFFFF,
+};
+
+enum StdVideoH264ModificationOfPicNumsIdc
+{
+       std_video_h264_modification_of_pic_nums_idc_short_term_subtract = 0,
+       std_video_h264_modification_of_pic_nums_idc_short_term_add              = 1,
+       std_video_h264_modification_of_pic_nums_idc_long_term                   = 2,
+       std_video_h264_modification_of_pic_nums_idc_end                                 = 3,
+       STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LAST,
+       std_video_h264_modification_of_pic_nums_idc_invalid                             = 0x7FFFFFFF,
+};
+
+enum StdVideoH264MemMgmtControlOp
+{
+       std_video_h264_mem_mgmt_control_op_end                                                  = 0,
+       std_video_h264_mem_mgmt_control_op_unmark_short_term                    = 1,
+       std_video_h264_mem_mgmt_control_op_unmark_long_term                             = 2,
+       std_video_h264_mem_mgmt_control_op_mark_long_term                               = 3,
+       std_video_h264_mem_mgmt_control_op_set_max_long_term_index              = 4,
+       std_video_h264_mem_mgmt_control_op_unmark_all                                   = 5,
+       std_video_h264_mem_mgmt_control_op_mark_current_as_long_term    = 6,
+       STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_LAST,
+       std_video_h264_mem_mgmt_control_op_invalid                                              = 0x7FFFFFFF,
+};
+
+enum StdVideoH264CabacInitIdc
+{
+       std_video_h264_cabac_init_idc_0                 = 0,
+       std_video_h264_cabac_init_idc_1                 = 1,
+       std_video_h264_cabac_init_idc_2                 = 2,
+       STD_VIDEO_H264_CABAC_INIT_IDC_LAST,
+       std_video_h264_cabac_init_idc_invalid   = 0x7FFFFFFF,
+};
+
+enum StdVideoH264DisableDeblockingFilterIdc
+{
+       std_video_h264_disable_deblocking_filter_idc_disabled   = 0,
+       std_video_h264_disable_deblocking_filter_idc_enabled    = 1,
+       std_video_h264_disable_deblocking_filter_idc_partial    = 2,
+       STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_LAST,
+       std_video_h264_disable_deblocking_filter_idc_invalid    = 0x7FFFFFFF,
+};
+
+enum StdVideoH264PictureType
+{
+       std_video_h264_picture_type_i           = 0,
+       std_video_h264_picture_type_p           = 1,
+       std_video_h264_picture_type_b           = 2,
+       STD_VIDEO_H264_PICTURE_TYPE_LAST,
+       std_video_h264_picture_type_invalid     = 0x7FFFFFFF,
+};
+
+enum StdVideoH264SliceType
+{
+       std_video_h264_slice_type_i                     = 0,
+       std_video_h264_slice_type_p                     = 1,
+       std_video_h264_slice_type_b                     = 2,
+       STD_VIDEO_H264_SLICE_TYPE_LAST,
+       std_video_h264_slice_type_invalid       = 0x7FFFFFFF,
+};
+
+enum StdVideoH264NonVclNaluType
+{
+       std_video_h264_non_vcl_nalu_type_sps                            = 0,
+       std_video_h264_non_vcl_nalu_type_pps                            = 1,
+       std_video_h264_non_vcl_nalu_type_aud                            = 2,
+       std_video_h264_non_vcl_nalu_type_prefix                         = 3,
+       std_video_h264_non_vcl_nalu_type_end_of_sequence        = 4,
+       std_video_h264_non_vcl_nalu_type_end_of_stream          = 5,
+       std_video_h264_non_vcl_nalu_type_precoded                       = 6,
+       STD_VIDEO_H264_NON_VCL_NALU_TYPE_LAST,
+       std_video_h264_non_vcl_nalu_type_invalid                        = 0x7FFFFFFF,
+};
+
+enum StdVideoH265ChromaFormatIdc
+{
+       std_video_h265_chroma_format_idc_monochrome     = 0,
+       std_video_h265_chroma_format_idc_420            = 1,
+       std_video_h265_chroma_format_idc_422            = 2,
+       std_video_h265_chroma_format_idc_444            = 3,
+       STD_VIDEO_H265_CHROMA_FORMAT_IDC_LAST,
+};
+
+enum StdVideoH265ProfileIdc
+{
+       std_video_h265_profile_idc_main                                         = 1,
+       std_video_h265_profile_idc_main_10                                      = 2,
+       std_video_h265_profile_idc_main_still_picture           = 3,
+       std_video_h265_profile_idc_format_range_extensions      = 4,
+       std_video_h265_profile_idc_scc_extensions                       = 9,
+       std_video_h265_profile_idc_invalid                                      = 0x7FFFFFFF,
+};
+
+enum StdVideoH265Level
+{
+       std_video_h265_level_1_0                = 0,
+       std_video_h265_level_2_0                = 1,
+       std_video_h265_level_2_1                = 2,
+       std_video_h265_level_3_0                = 3,
+       std_video_h265_level_3_1                = 4,
+       std_video_h265_level_4_0                = 5,
+       std_video_h265_level_4_1                = 6,
+       std_video_h265_level_5_0                = 7,
+       std_video_h265_level_5_1                = 8,
+       std_video_h265_level_5_2                = 9,
+       std_video_h265_level_6_0                = 10,
+       std_video_h265_level_6_1                = 11,
+       std_video_h265_level_6_2                = 12,
+       STD_VIDEO_H265_LEVEL_LAST,
+       std_video_h265_level_invalid    = 0x7FFFFFFF,
+};
+
+enum VkFullScreenExclusiveEXT
+{
+       VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT                            = 0,
+       VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT                            = 1,
+       VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT                         = 2,
+       VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT     = 3,
+       VK_FULL_SCREEN_EXCLUSIVE_EXT_LAST,
+       VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT                           = 0x7FFFFFFF,
+};
+
+typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
+
+typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
+
+typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
+
+typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
+
+typedef VkChromaLocation VkChromaLocationKHR;
+
+typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
+
+typedef VkDriverId VkDriverIdKHR;
+
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
+
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
+
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
+
+typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV;
+
+typedef VkGeometryTypeKHR VkGeometryTypeNV;
+
+typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV;
+
+typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;
+
+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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT                              = 0x02000000,
+       VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT               = 0x04000000,
+       VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT              = 0x08000000,
+       VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT                    = 0x00100000,
+       VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT             = 0x00080000,
+       VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR                   = 0x00200000,
+       VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR                  = 0x00400000,
+       VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT                             = 0x01000000,
+       VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
+       VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV                                = 0x00020000,
+       VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV                               = 0x00040000,
+       VK_ACCESS_NONE_KHR                                                                              = 0,
+       VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV                                = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
+       VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV                    = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
+       VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV                   = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
+       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_PLANE_0_BIT_KHR                 = VK_IMAGE_ASPECT_PLANE_0_BIT,
+       VK_IMAGE_ASPECT_PLANE_1_BIT_KHR                 = VK_IMAGE_ASPECT_PLANE_1_BIT,
+       VK_IMAGE_ASPECT_PLANE_2_BIT_KHR                 = VK_IMAGE_ASPECT_PLANE_2_BIT,
+       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_VIDEO_DECODE_OUTPUT_BIT_KHR                                                                                                           = 0x02000000,
+       VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR                                                                                                                      = 0x04000000,
+       VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR                                                                          = 0x20000000,
+       VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT                                                                                                          = 0x01000000,
+       VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR                                                                                      = 0x40000000,
+       VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR                                                                                                            = 0x08000000,
+       VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR                                                                                                                      = 0x10000000,
+       VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR                                                                                                                          = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+       VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR                                                                                                                          = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT                                                                                           = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
+       VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR                                                                                                       = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR                                                          = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR                         = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR                         = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR       = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
+       VK_FORMAT_FEATURE_DISJOINT_BIT_KHR                                                                                                                                      = VK_FORMAT_FEATURE_DISJOINT_BIT,
+       VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR                                                                                                        = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+       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_CORNER_SAMPLED_BIT_NV                                           = 0x00002000,
+       VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT       = 0x00001000,
+       VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT                                                      = 0x00004000,
+       VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR                     = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+       VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR                                     = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
+       VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR                     = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+       VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR                                          = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+       VK_IMAGE_CREATE_DISJOINT_BIT_KHR                                                        = VK_IMAGE_CREATE_DISJOINT_BIT,
+       VK_IMAGE_CREATE_ALIAS_BIT_KHR                                                           = VK_IMAGE_CREATE_ALIAS_BIT,
+       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_VIDEO_DECODE_DST_BIT_KHR                                 = 0x00000400,
+       VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR                                 = 0x00000800,
+       VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR                                 = 0x00001000,
+       VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT                             = 0x00000200,
+       VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
+       VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR                                 = 0x00002000,
+       VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR                                 = 0x00004000,
+       VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR                                 = 0x00008000,
+       VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI                               = 0x00040000,
+       VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV                                = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
+       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,
+       VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR   = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+       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_DEVICE_COHERENT_BIT_AMD      = 0x00000040,
+       VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD      = 0x00000080,
+       VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV          = 0x00000100,
+       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_VIDEO_DECODE_BIT_KHR   = 0x00000020,
+       VK_QUEUE_VIDEO_ENCODE_BIT_KHR   = 0x00000040,
+       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_TRANSFORM_FEEDBACK_BIT_EXT                            = 0x01000000,
+       VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT                         = 0x00040000,
+       VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR          = 0x02000000,
+       VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR                            = 0x00200000,
+       VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV                                            = 0x00080000,
+       VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV                                            = 0x00100000,
+       VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT                      = 0x00800000,
+       VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR      = 0x00400000,
+       VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV                                     = 0x00020000,
+       VK_PIPELINE_STAGE_NONE_KHR                                                                      = 0,
+       VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV                                     = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
+       VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV                                     = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
+       VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV           = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+       VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM                                            = 0x7FFFFFFF,
+};
+typedef deUint32 VkPipelineStageFlags;
+
+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;
+
+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_WITH_STATUS_BIT_KHR             = 0x00000010,
+       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_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT  = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR  = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+       VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM                                             = 0x7FFFFFFF,
+};
+typedef deUint32 VkBufferCreateFlags;
+
+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_VIDEO_DECODE_SRC_BIT_KHR                                                                = 0x00002000,
+       VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR                                                                = 0x00004000,
+       VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT                                               = 0x00000800,
+       VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT                               = 0x00001000,
+       VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT                                                   = 0x00000200,
+       VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR    = 0x00080000,
+       VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR                                  = 0x00100000,
+       VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR                                                    = 0x00000400,
+       VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR                                                                = 0x00008000,
+       VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR                                                                = 0x00010000,
+       VK_BUFFER_USAGE_RAY_TRACING_BIT_NV                                                                              = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,
+       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT                                                   = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR                                                   = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+       VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM                                                                              = 0x7FFFFFFF,
+};
+typedef deUint32 VkBufferUsageFlags;
+
+enum VkImageViewCreateFlagBits
+{
+       VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT       = 0x00000001,
+       VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT      = 0x00000002,
+       VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM                                         = 0x7FFFFFFF,
+};
+typedef deUint32 VkImageViewCreateFlags;
+
+enum VkPipelineCacheCreateFlagBits
+{
+       VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT        = 0x00000001,
+       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_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR                          = 0x00004000,
+       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR                      = 0x00008000,
+       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR                                     = 0x00010000,
+       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR                     = 0x00020000,
+       VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR                                           = 0x00001000,
+       VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR                                                       = 0x00002000,
+       VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR       = 0x00080000,
+       VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                                                                         = 0x00000020,
+       VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR                                                           = 0x00000040,
+       VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR                                     = 0x00000080,
+       VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                                                                     = 0x00040000,
+       VK_PIPELINE_CREATE_LIBRARY_BIT_KHR                                                                                      = 0x00000800,
+       VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT                            = 0x00000100,
+       VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT                                                      = 0x00000200,
+       VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV                                                      = 0x00100000,
+       VK_PIPELINE_CREATE_DISPATCH_BASE                                                                                        = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
+       VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR                                         = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+       VK_PIPELINE_CREATE_DISPATCH_BASE_KHR                                                                            = VK_PIPELINE_CREATE_DISPATCH_BASE,
+       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_RAYGEN_BIT_KHR                          = 0x00000100,
+       VK_SHADER_STAGE_ANY_HIT_BIT_KHR                         = 0x00000200,
+       VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR                     = 0x00000400,
+       VK_SHADER_STAGE_MISS_BIT_KHR                            = 0x00000800,
+       VK_SHADER_STAGE_INTERSECTION_BIT_KHR            = 0x00001000,
+       VK_SHADER_STAGE_CALLABLE_BIT_KHR                        = 0x00002000,
+       VK_SHADER_STAGE_TASK_BIT_NV                                     = 0x00000040,
+       VK_SHADER_STAGE_MESH_BIT_NV                                     = 0x00000080,
+       VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI      = 0x00004000,
+       VK_SHADER_STAGE_RAYGEN_BIT_NV                           = VK_SHADER_STAGE_RAYGEN_BIT_KHR,
+       VK_SHADER_STAGE_ANY_HIT_BIT_NV                          = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
+       VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV                      = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
+       VK_SHADER_STAGE_MISS_BIT_NV                                     = VK_SHADER_STAGE_MISS_BIT_KHR,
+       VK_SHADER_STAGE_INTERSECTION_BIT_NV                     = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
+       VK_SHADER_STAGE_CALLABLE_BIT_NV                         = VK_SHADER_STAGE_CALLABLE_BIT_KHR,
+       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_SUBSAMPLED_BIT_EXT                                            = 0x00000001,
+       VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT      = 0x00000002,
+       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_HOST_ONLY_BIT_VALVE           = 0x00000004,
+       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT     = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
+       VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM            = 0x7FFFFFFF,
+};
+typedef deUint32 VkDescriptorPoolCreateFlags;
+
+enum VkDescriptorSetLayoutCreateFlagBits
+{
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT              = 0x00000002,
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR                 = 0x00000001,
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE                = 0x00000004,
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT  = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM                              = 0x7FFFFFFF,
+};
+typedef deUint32 VkDescriptorSetLayoutCreateFlags;
+
+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_VIEW_LOCAL_BIT_KHR        = VK_DEPENDENCY_VIEW_LOCAL_BIT,
+       VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR      = VK_DEPENDENCY_DEVICE_GROUP_BIT,
+       VK_DEPENDENCY_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
+};
+typedef deUint32 VkDependencyFlags;
+
+enum VkFramebufferCreateFlagBits
+{
+       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT                     = 0x00000001,
+       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR         = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
+       VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
+};
+typedef deUint32 VkFramebufferCreateFlags;
+
+enum VkRenderPassCreateFlagBits
+{
+       VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM        = 0x00000002,
+       VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
+};
+typedef deUint32 VkRenderPassCreateFlags;
+
+enum VkSubpassDescriptionFlagBits
+{
+       VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX              = 0x00000001,
+       VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
+       VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM                 = 0x00000004,
+       VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM                  = 0x00000008,
+       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_PARTITIONED_BIT_NV          = 0x00000100,
+       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_COPY_SRC_BIT_KHR         = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
+       VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR         = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
+       VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR      = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
+       VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR      = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
+       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_DEVICE_MASK_BIT_KHR                                          = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR                                       = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR        = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+       VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM                                           = 0x7FFFFFFF,
+};
+typedef deUint32 VkMemoryAllocateFlags;
+
+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_ANDROID_HARDWARE_BUFFER_BIT_ANDROID      = 0x00000400,
+       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_ZIRCON_VMO_BIT_FUCHSIA                           = 0x00000800,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV                                      = 0x00001000,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR                                        = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR                                     = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR                         = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR                            = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR                        = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR                                       = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR                           = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
+       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_DEDICATED_ONLY_BIT_KHR       = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
+       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR           = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
+       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR           = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
+       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_OPAQUE_FD_BIT_KHR                 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR              = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR  = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+       VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR                   = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
+       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_EXPORTABLE_BIT_KHR    = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
+       VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR    = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
+       VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
+};
+typedef deUint32 VkExternalFenceFeatureFlags;
+
+enum VkFenceImportFlagBits
+{
+       VK_FENCE_IMPORT_TEMPORARY_BIT           = 0x00000001,
+       VK_FENCE_IMPORT_TEMPORARY_BIT_KHR       = VK_FENCE_IMPORT_TEMPORARY_BIT,
+       VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
+};
+typedef deUint32 VkFenceImportFlags;
+
+enum VkSemaphoreImportFlagBits
+{
+       VK_SEMAPHORE_IMPORT_TEMPORARY_BIT               = 0x00000001,
+       VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR   = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
+       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_ZIRCON_EVENT_BIT_FUCHSIA      = 0x00000080,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT                       = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR                     = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR          = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR      = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR           = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR                       = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_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_EXPORTABLE_BIT_KHR        = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
+       VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR        = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
+       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_NONE_KHR                        = VK_RESOLVE_MODE_NONE,
+       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR     = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+       VK_RESOLVE_MODE_AVERAGE_BIT_KHR         = VK_RESOLVE_MODE_AVERAGE_BIT,
+       VK_RESOLVE_MODE_MIN_BIT_KHR                     = VK_RESOLVE_MODE_MIN_BIT,
+       VK_RESOLVE_MODE_MAX_BIT_KHR                     = VK_RESOLVE_MODE_MAX_BIT,
+       VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
+};
+typedef deUint32 VkResolveModeFlags;
+
+enum VkDescriptorBindingFlagBits
+{
+       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT                                     = 0x00000001,
+       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT           = 0x00000002,
+       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT                                       = 0x00000004,
+       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT                     = 0x00000008,
+       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT                         = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT       = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT                           = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT         = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+       VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM                                        = 0x7FFFFFFF,
+};
+typedef deUint32 VkDescriptorBindingFlags;
+
+enum VkSemaphoreWaitFlagBits
+{
+       VK_SEMAPHORE_WAIT_ANY_BIT                               = 0x00000001,
+       VK_SEMAPHORE_WAIT_ANY_BIT_KHR                   = VK_SEMAPHORE_WAIT_ANY_BIT,
+       VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
+};
+typedef deUint32 VkSemaphoreWaitFlags;
+
+enum VkSurfaceTransformFlagBitsKHR
+{
+       VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR                                           = 0x00000001,
+       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 VkSubmitFlagBitsKHR
+{
+       VK_SUBMIT_PROTECTED_BIT_KHR                     = 0x00000001,
+       VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
+};
+typedef deUint32 VkSubmitFlagsKHR;
+
+enum VkDebugReportFlagBitsEXT
+{
+       VK_DEBUG_REPORT_INFORMATION_BIT_EXT                     = 0x00000001,
+       VK_DEBUG_REPORT_WARNING_BIT_EXT                         = 0x00000002,
+       VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT     = 0x00000004,
+       VK_DEBUG_REPORT_ERROR_BIT_EXT                           = 0x00000008,
+       VK_DEBUG_REPORT_DEBUG_BIT_EXT                           = 0x00000010,
+       VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT          = 0x7FFFFFFF,
+};
+typedef deUint32 VkDebugReportFlagsEXT;
+
+enum VkExternalMemoryHandleTypeFlagBitsNV
+{
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV              = 0x00000001,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV  = 0x00000002,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV               = 0x00000004,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV   = 0x00000008,
+       VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV    = 0x7FFFFFFF,
+};
+typedef deUint32 VkExternalMemoryHandleTypeFlagsNV;
+
+enum VkExternalMemoryFeatureFlagBitsNV
+{
+       VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV        = 0x00000001,
+       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV            = 0x00000002,
+       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV            = 0x00000004,
+       VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV        = 0x7FFFFFFF,
+};
+typedef deUint32 VkExternalMemoryFeatureFlagsNV;
+
+enum VkConditionalRenderingFlagBitsEXT
+{
+       VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT               = 0x00000001,
+       VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+typedef deUint32 VkConditionalRenderingFlagsEXT;
+
+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;
+
+enum VkGeometryFlagBitsKHR
+{
+       VK_GEOMETRY_OPAQUE_BIT_KHR                                                      = 0x00000001,
+       VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR     = 0x00000002,
+       VK_GEOMETRY_OPAQUE_BIT_NV                                                       = VK_GEOMETRY_OPAQUE_BIT_KHR,
+       VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV      = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,
+       VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR                                      = 0x7FFFFFFF,
+};
+typedef deUint32 VkGeometryFlagsKHR;
+
+enum VkGeometryInstanceFlagBitsKHR
+{
+       VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR               = 0x00000001,
+       VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR                               = 0x00000002,
+       VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR                                               = 0x00000004,
+       VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR                                    = 0x00000008,
+       VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR    = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,
+       VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV                               = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,
+       VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV             = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,
+       VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV                                                = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,
+       VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV                                             = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,
+       VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR                                             = 0x7FFFFFFF,
+};
+typedef deUint32 VkGeometryInstanceFlagsKHR;
+
+enum VkBuildAccelerationStructureFlagBitsKHR
+{
+       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR            = 0x00000001,
+       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR        = 0x00000002,
+       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR       = 0x00000004,
+       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR       = 0x00000008,
+       VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR                      = 0x00000010,
+       VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV                           = 0x00000020,
+       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV                     = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,
+       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV         = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,
+       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV        = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,
+       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV        = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,
+       VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV                       = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,
+       VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR          = 0x7FFFFFFF,
+};
+typedef deUint32 VkBuildAccelerationStructureFlagsKHR;
+
+enum VkPipelineCompilerControlFlagBitsAMD
+{
+       VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD     = 0x7FFFFFFF,
+};
+typedef deUint32 VkPipelineCompilerControlFlagsAMD;
+
+enum VkPipelineCreationFeedbackFlagBitsEXT
+{
+       VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT                                                             = 0x00000001,
+       VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT    = 0x00000002,
+       VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT                = 0x00000004,
+       VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT                                    = 0x7FFFFFFF,
+};
+typedef deUint32 VkPipelineCreationFeedbackFlagsEXT;
+
+enum VkShaderCorePropertiesFlagBitsAMD
+{
+       VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD        = 0x7FFFFFFF,
+};
+typedef deUint32 VkShaderCorePropertiesFlagsAMD;
+
+enum VkToolPurposeFlagBitsEXT
+{
+       VK_TOOL_PURPOSE_VALIDATION_BIT_EXT                      = 0x00000001,
+       VK_TOOL_PURPOSE_PROFILING_BIT_EXT                       = 0x00000002,
+       VK_TOOL_PURPOSE_TRACING_BIT_EXT                         = 0x00000004,
+       VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT     = 0x00000008,
+       VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT      = 0x00000010,
+       VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT         = 0x00000020,
+       VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT           = 0x00000040,
+       VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT          = 0x7FFFFFFF,
+};
+typedef deUint32 VkToolPurposeFlagsEXT;
+
+enum VkIndirectStateFlagBitsNV
+{
+       VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001,
+       VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF,
+};
+typedef deUint32 VkIndirectStateFlagsNV;
+
+enum VkIndirectCommandsLayoutUsageFlagBitsNV
+{
+       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV    = 0x00000001,
+       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV              = 0x00000002,
+       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV    = 0x00000004,
+       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV                 = 0x7FFFFFFF,
+};
+typedef deUint32 VkIndirectCommandsLayoutUsageFlagsNV;
+
+enum VkPrivateDataSlotCreateFlagBitsEXT
+{
+       VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT      = 0x7FFFFFFF,
+};
+typedef deUint32 VkPrivateDataSlotCreateFlagsEXT;
+
+enum VkDeviceDiagnosticsConfigFlagBitsNV
+{
+       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV            = 0x00000001,
+       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV            = 0x00000002,
+       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV        = 0x00000004,
+       VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV                                      = 0x7FFFFFFF,
+};
+typedef deUint32 VkDeviceDiagnosticsConfigFlagsNV;
+
+enum VkAccelerationStructureCreateFlagBitsKHR
+{
+       VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR  = 0x00000001,
+       VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV                                                  = 0x00000004,
+       VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR                                 = 0x7FFFFFFF,
+};
+typedef deUint32 VkAccelerationStructureCreateFlagsKHR;
+
+enum VkVideoCodecOperationFlagBitsKHR
+{
+       VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR                = 0,
+       VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT    = 0x00010000,
+       VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT    = 0x00000001,
+       VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT    = 0x00000002,
+       VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoCodecOperationFlagsKHR;
+
+enum VkVideoChromaSubsamplingFlagBitsKHR
+{
+       VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR                     = 0,
+       VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR          = 0x00000001,
+       VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR                         = 0x00000002,
+       VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR                         = 0x00000004,
+       VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR                         = 0x00000008,
+       VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR      = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoChromaSubsamplingFlagsKHR;
+
+enum VkVideoComponentBitDepthFlagBitsKHR
+{
+       VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR                        = 0,
+       VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR                          = 0x00000001,
+       VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR                         = 0x00000004,
+       VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR                         = 0x00000010,
+       VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR     = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoComponentBitDepthFlagsKHR;
+
+enum VkVideoCapabilityFlagBitsKHR
+{
+       VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR                   = 0x00000001,
+       VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR   = 0x00000002,
+       VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR                              = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoCapabilityFlagsKHR;
+
+enum VkVideoSessionCreateFlagBitsKHR
+{
+       VK_VIDEO_SESSION_CREATE_DEFAULT_KHR                                     = 0,
+       VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR       = 0x00000001,
+       VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR          = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoSessionCreateFlagsKHR;
+
+enum VkVideoCodingControlFlagBitsKHR
+{
+       VK_VIDEO_CODING_CONTROL_DEFAULT_KHR                             = 0,
+       VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR                   = 0x00000001,
+       VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR  = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoCodingControlFlagsKHR;
+
+enum VkVideoCodingQualityPresetFlagBitsKHR
+{
+       VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR                  = 0,
+       VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR                   = 0x00000001,
+       VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR                    = 0x00000002,
+       VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR                  = 0x00000004,
+       VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR   = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoCodingQualityPresetFlagsKHR;
+
+enum VkVideoDecodeFlagBitsKHR
+{
+       VK_VIDEO_DECODE_DEFAULT_KHR                             = 0,
+       VK_VIDEO_DECODE_RESERVED_0_BIT_KHR              = 0x00000001,
+       VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR  = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoDecodeFlagsKHR;
+
+enum VkVideoEncodeFlagBitsKHR
+{
+       VK_VIDEO_ENCODE_DEFAULT_KHR                             = 0,
+       VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR              = 0x00000001,
+       VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR  = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeFlagsKHR;
+
+enum VkVideoEncodeRateControlFlagBitsKHR
+{
+       VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR                        = 0,
+       VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR                      = 0x00000001,
+       VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR     = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeRateControlFlagsKHR;
+
+enum VkVideoEncodeRateControlModeFlagBitsKHR
+{
+       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR                          = 0,
+       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR                           = 1,
+       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR                           = 2,
+       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeRateControlModeFlagsKHR;
+
+enum VkVideoEncodeH264CapabilityFlagBitsEXT
+{
+       VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT                                                   = 0x00000001,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT                                                   = 0x00000002,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT               = 0x00000004,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT                                   = 0x00000008,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT                                = 0x00000010,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT                 = 0x00000020,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT              = 0x00000040,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT               = 0x00000080,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT               = 0x00000100,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT                = 0x00000200,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT   = 0x00000400,
+       VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT                                  = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeH264CapabilityFlagsEXT;
+
+enum VkVideoEncodeH264InputModeFlagBitsEXT
+{
+       VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT                   = 0x00000001,
+       VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT                   = 0x00000002,
+       VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT                 = 0x00000004,
+       VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT  = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeH264InputModeFlagsEXT;
+
+enum VkVideoEncodeH264OutputModeFlagBitsEXT
+{
+       VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT                  = 0x00000001,
+       VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT                  = 0x00000002,
+       VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT                = 0x00000004,
+       VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeH264OutputModeFlagsEXT;
+
+enum VkVideoEncodeH264CreateFlagBitsEXT
+{
+       VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT                         = 0,
+       VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT          = 0x00000001,
+       VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT      = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoEncodeH264CreateFlagsEXT;
+
+enum VkVideoDecodeH264PictureLayoutFlagBitsEXT
+{
+       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT                                                     = 0,
+       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT        = 0x00000001,
+       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT          = 0x00000002,
+       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT                                      = 0x7FFFFFFF,
+};
+typedef deUint32 VkVideoDecodeH264PictureLayoutFlagsEXT;
+
+typedef deUint32 VkInstanceCreateFlags;
+
+typedef deUint32 VkDeviceCreateFlags;
+
+typedef deUint32 VkMemoryMapFlags;
+
+typedef deUint32 VkSemaphoreCreateFlags;
+
+typedef deUint32 VkQueryPoolCreateFlags;
+
+typedef deUint32 VkBufferViewCreateFlags;
+
+typedef deUint32 VkShaderModuleCreateFlags;
+
+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 VkCommandPoolTrimFlags;
+
+typedef deUint32 VkDescriptorUpdateTemplateCreateFlags;
+
+typedef deUint32 VkDisplayModeCreateFlagsKHR;
+
+typedef deUint32 VkDisplaySurfaceCreateFlagsKHR;
+
+typedef deUint32 VkPipelineRasterizationStateStreamCreateFlagsEXT;
+
+typedef deUint32 VkPipelineViewportSwizzleStateCreateFlagsNV;
+
+typedef deUint32 VkPipelineDiscardRectangleStateCreateFlagsEXT;
+
+typedef deUint32 VkPipelineRasterizationConservativeStateCreateFlagsEXT;
+
+typedef deUint32 VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
+
+typedef deUint32 VkDebugUtilsMessengerCallbackDataFlagsEXT;
+
+typedef deUint32 VkDebugUtilsMessengerCreateFlagsEXT;
+
+typedef deUint32 VkPipelineCoverageToColorStateCreateFlagsNV;
+
+typedef deUint32 VkPipelineCoverageModulationStateCreateFlagsNV;
+
+typedef deUint32 VkValidationCacheCreateFlagsEXT;
+
+typedef deUint32 VkPipelineCoverageReductionStateCreateFlagsNV;
+
+typedef deUint32 VkHeadlessSurfaceCreateFlagsEXT;
+
+typedef deUint32 VkDeviceMemoryReportFlagsEXT;
+
+typedef deUint32 VkAccelerationStructureMotionInfoFlagsNV;
+
+typedef deUint32 VkAccelerationStructureMotionInstanceFlagsNV;
+
+typedef deUint32 VkAndroidSurfaceCreateFlagsKHR;
+
+typedef deUint32 VkVideoBeginCodingFlagsKHR;
+
+typedef deUint32 VkVideoEndCodingFlagsKHR;
+
+typedef deUint32 VkVideoDecodeH264CreateFlagsEXT;
+
+typedef deUint32 VkVideoDecodeH265CreateFlagsEXT;
+
+typedef deUint32 VkImagePipeSurfaceCreateFlagsFUCHSIA;
+
+typedef deUint32 VkStreamDescriptorSurfaceCreateFlagsGGP;
+
+typedef deUint32 VkIOSSurfaceCreateFlagsMVK;
+
+typedef deUint32 VkMacOSSurfaceCreateFlagsMVK;
+
+typedef deUint32 VkMetalSurfaceCreateFlagsEXT;
+
+typedef deUint32 VkViSurfaceCreateFlagsNN;
+
+typedef deUint32 VkWaylandSurfaceCreateFlagsKHR;
+
+typedef deUint32 VkWin32SurfaceCreateFlagsKHR;
+
+typedef deUint32 VkXcbSurfaceCreateFlagsKHR;
+
+typedef deUint32 VkXlibSurfaceCreateFlagsKHR;
+
+typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
+
+typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
+
+typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
+
+typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
+
+typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
+
+typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
+
+typedef VkFenceImportFlags VkFenceImportFlagsKHR;
+
+typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
+
+typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
+
+typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
+
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
+
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
+
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
+
+typedef VkGeometryFlagsKHR VkGeometryFlagsNV;
+
+typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV;
+
+typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV;
+
+typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
+
+typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
+
+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                                                  = 0x00001000ULL;
+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_VIDEO_DECODE_BIT_KHR                                              = 0x04000000ULL;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR                                              = 0x08000000ULL;
+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                                 = 0x00400000ULL;
+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                                 = 0x00200000ULL;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV               = 0x02000000ULL;
+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;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI                                        = 0x8000000000ULL;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI                                        = 0x10000000000ULL;
+
+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_VIDEO_DECODE_READ_BIT_KHR                                                = 0x800000000ULL;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR                                       = 0x1000000000ULL;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR                                                = 0x2000000000ULL;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR                                       = 0x4000000000ULL;
+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                           = 0x00800000ULL;
+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                       = 0x00200000ULL;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV                      = 0x00400000ULL;
+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;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI                          = 0x8000000000ULL;
+
+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,                           deUint32);
+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_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3
+#define VK_KHR_MULTIVIEW_SPEC_VERSION 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
+#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4
+#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
+#define VK_KHR_MAINTENANCE1_SPEC_VERSION 2
+#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
+#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE
+#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_LUID_SIZE_KHR VK_LUID_SIZE
+#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL
+#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
+#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
+#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
+#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
+#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
+#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
+#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
+#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
+#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
+#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
+#define VK_KHR_MAINTENANCE2_SPEC_VERSION 1
+#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
+#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
+#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
+#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
+#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
+#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
+#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14
+#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
+#define VK_KHR_MAINTENANCE3_SPEC_VERSION 1
+#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
+#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
+#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
+#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
+#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
+#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
+#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
+#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
+#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
+#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
+#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
+#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
+#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 1
+#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1
+#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
+#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1
+#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4
+#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
+#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
+#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
+#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1
+#define VK_KHR_PRESENT_ID_SPEC_VERSION 1
+#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
+#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1
+#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1
+#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
+#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10
+#define VK_NV_GLSL_SHADER_SPEC_VERSION 1
+#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
+#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
+#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
+#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
+#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
+#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
+#define VK_AMD_GCN_SHADER_SPEC_VERSION 1
+#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
+#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
+#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1
+#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2
+#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2
+#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
+#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2
+#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
+#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
+#define VK_AMD_SHADER_INFO_SPEC_VERSION 1
+#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
+#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2
+#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2
+#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
+#define VK_EXT_SHADER_SUBGROUP_VOTE_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_CONDITIONAL_RENDERING_SPEC_VERSION 2
+#define VK_NV_CLIP_SPACE_W_SCALING_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_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
+#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
+#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_SWIZZLE_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_QUEUE_FAMILY_FOREIGN_EXT (~2U)
+#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2
+#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
+#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2
+#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
+#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1
+#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_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
+#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
+#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
+#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
+#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
+#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
+#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
+#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
+#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3
+#define VK_NV_RAY_TRACING_SPEC_VERSION 3
+#define VK_SHADER_UNUSED_KHR (~0U)
+#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR
+#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2
+#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3
+#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4
+#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
+#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
+#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
+#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1
+#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
+#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2
+#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
+#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1
+#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
+#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1
+#define VK_NV_MESH_SHADER_SPEC_VERSION 1
+#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
+#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2
+#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1
+#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2
+#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1
+#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2
+#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2
+#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1
+#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
+#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1
+#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
+#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
+#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1
+#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1
+#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
+#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
+#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1
+#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
+#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
+#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1
+#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5
+#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1
+#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1
+#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
+#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
+#define VK_EXT_PROVOKING_VERTEX_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_HOST_QUERY_RESET_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_ATOMIC_FLOAT_2_SPEC_VERSION 1
+#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
+#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
+#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
+#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2
+#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2
+#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1
+#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1
+#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
+#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1
+#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1
+#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3
+#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 1
+#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2
+#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1
+#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1
+#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
+#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1
+#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
+#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
+#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
+#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1
+#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
+#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1
+#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1
+#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2
+#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1
+#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
+#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
+#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT 16U
+#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1
+#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1
+#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1
+#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 12
+#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
+#define VK_KHR_RAY_QUERY_SPEC_VERSION 1
+#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
+#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3
+#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2
+#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 1
+#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
+#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 2
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 0)
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264"
+#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2
+#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 VK_MAKE_VIDEO_STD_VERSION(0, 5, 0)
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265"
+#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
+#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
+#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
+#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1
+#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1
+#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3
+#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3
+#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
+#define VK_NN_VI_SURFACE_SPEC_VERSION 1
+#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
+#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
+#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
+#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
+#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
+#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
+#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
+#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
+#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
diff --git a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
new file mode 100644 (file)
index 0000000..f5942d9
--- /dev/null
@@ -0,0 +1,366 @@
+/* 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 void                           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) 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                           getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const;
+virtual VkResult                       queueBindSparse                                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) 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 void                           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) 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                       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const;
+virtual void                           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, 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                       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const;
+virtual VkResult                       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) 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 void                           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) 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 void                           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) 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 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 void                           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const;
+virtual void                           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) 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 VkResult                       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const;
+virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const;
+virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const;
+virtual void                           cmdDrawIndirectCount                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void                           cmdDrawIndexedIndirectCount                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual VkResult                       createRenderPass2                                                               (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
+virtual void                           cmdBeginRenderPass2                                                             (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const;
+virtual void                           cmdNextSubpass2                                                                 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void                           cmdEndRenderPass2                                                               (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void                           resetQueryPool                                                                  (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
+virtual VkResult                       getSemaphoreCounterValue                                                (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const;
+virtual VkResult                       waitSemaphores                                                                  (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const;
+virtual VkResult                       signalSemaphore                                                                 (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const;
+virtual VkDeviceAddress                getBufferDeviceAddress                                                  (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t                       getBufferOpaqueCaptureAddress                                   (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t                       getDeviceMemoryOpaqueCaptureAddress                             (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const;
+virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
+virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
+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 void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const;
+virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const;
+virtual VkResult                       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 VkResult                       waitForPresentKHR                                                               (VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout) const;
+virtual VkResult                       createDeferredOperationKHR                                              (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation) const;
+virtual void                           destroyDeferredOperationKHR                                             (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator) const;
+virtual uint32_t                       getDeferredOperationMaxConcurrencyKHR                   (VkDevice device, VkDeferredOperationKHR operation) const;
+virtual VkResult                       getDeferredOperationResultKHR                                   (VkDevice device, VkDeferredOperationKHR operation) const;
+virtual VkResult                       deferredOperationJoinKHR                                                (VkDevice device, VkDeferredOperationKHR operation) const;
+virtual VkResult                       getPipelineExecutablePropertiesKHR                              (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const;
+virtual VkResult                       getPipelineExecutableStatisticsKHR                              (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const;
+virtual VkResult                       getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const;
+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                       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
+virtual VkResult                       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
+virtual void                           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
+virtual void                           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const;
+virtual void                           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
+virtual void                           cmdBindTransformFeedbackBuffersEXT                              (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const;
+virtual void                           cmdBeginTransformFeedbackEXT                                    (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const;
+virtual void                           cmdEndTransformFeedbackEXT                                              (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const;
+virtual void                           cmdBeginQueryIndexedEXT                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const;
+virtual void                           cmdEndQueryIndexedEXT                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const;
+virtual void                           cmdDrawIndirectByteCountEXT                                             (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const;
+virtual VkResult                       createCuModuleNVX                                                               (VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule) const;
+virtual VkResult                       createCuFunctionNVX                                                             (VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction) const;
+virtual void                           destroyCuModuleNVX                                                              (VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           destroyCuFunctionNVX                                                    (VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           cmdCuLaunchKernelNVX                                                    (VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) const;
+virtual uint32_t                       getImageViewHandleNVX                                                   (VkDevice device, const VkImageViewHandleInfoNVX* pInfo) const;
+virtual VkResult                       getImageViewAddressNVX                                                  (VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) const;
+virtual void                           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void                           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual VkResult                       getShaderInfoAMD                                                                (VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo) const;
+virtual void                           cmdBeginConditionalRenderingEXT                                 (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) const;
+virtual void                           cmdEndConditionalRenderingEXT                                   (VkCommandBuffer commandBuffer) const;
+virtual void                           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) 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 VkResult                       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const;
+virtual VkResult                       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) 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                       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const;
+virtual void                           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const;
+virtual VkResult                       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const;
+virtual void                           cmdBindShadingRateImageNV                                               (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const;
+virtual void                           cmdSetViewportShadingRatePaletteNV                              (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes) const;
+virtual void                           cmdSetCoarseSampleOrderNV                                               (VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) const;
+virtual VkResult                       createAccelerationStructureNV                                   (VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) const;
+virtual void                           destroyAccelerationStructureNV                                  (VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           getAccelerationStructureMemoryRequirementsNV    (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const;
+virtual VkResult                       bindAccelerationStructureMemoryNV                               (VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) const;
+virtual void                           cmdBuildAccelerationStructureNV                                 (VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset) const;
+virtual void                           cmdCopyAccelerationStructureNV                                  (VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode) const;
+virtual void                           cmdTraceRaysNV                                                                  (VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth) const;
+virtual VkResult                       createRayTracingPipelinesNV                                             (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
+virtual VkResult                       getRayTracingShaderGroupHandlesKHR                              (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const;
+virtual VkResult                       getRayTracingShaderGroupHandlesNV                               (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const;
+virtual VkResult                       getAccelerationStructureHandleNV                                (VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData) const;
+virtual void                           cmdWriteAccelerationStructuresPropertiesNV              (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const;
+virtual VkResult                       compileDeferredNV                                                               (VkDevice device, VkPipeline pipeline, deUint32 shader) const;
+virtual VkResult                       getMemoryHostPointerPropertiesEXT                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const;
+virtual void                           cmdWriteBufferMarkerAMD                                                 (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const;
+virtual VkResult                       getCalibratedTimestampsEXT                                              (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation) const;
+virtual void                           cmdDrawMeshTasksNV                                                              (VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask) const;
+virtual void                           cmdDrawMeshTasksIndirectNV                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
+virtual void                           cmdDrawMeshTasksIndirectCountNV                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void                           cmdSetExclusiveScissorNV                                                (VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors) const;
+virtual void                           cmdSetCheckpointNV                                                              (VkCommandBuffer commandBuffer, const void* pCheckpointMarker) const;
+virtual void                           getQueueCheckpointDataNV                                                (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) const;
+virtual VkResult                       initializePerformanceApiINTEL                                   (VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) const;
+virtual void                           uninitializePerformanceApiINTEL                                 (VkDevice device) const;
+virtual VkResult                       cmdSetPerformanceMarkerINTEL                                    (VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) const;
+virtual VkResult                       cmdSetPerformanceStreamMarkerINTEL                              (VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) const;
+virtual VkResult                       cmdSetPerformanceOverrideINTEL                                  (VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) const;
+virtual VkResult                       acquirePerformanceConfigurationINTEL                    (VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration) const;
+virtual VkResult                       releasePerformanceConfigurationINTEL                    (VkDevice device, VkPerformanceConfigurationINTEL configuration) const;
+virtual VkResult                       queueSetPerformanceConfigurationINTEL                   (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const;
+virtual VkResult                       getPerformanceParameterINTEL                                    (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const;
+virtual void                           setLocalDimmingAMD                                                              (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const;
+virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) 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                           getGeneratedCommandsMemoryRequirementsNV                (VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
+virtual void                           cmdPreprocessGeneratedCommandsNV                                (VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const;
+virtual void                           cmdExecuteGeneratedCommandsNV                                   (VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const;
+virtual void                           cmdBindPipelineShaderGroupNV                                    (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex) const;
+virtual VkResult                       createIndirectCommandsLayoutNV                                  (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) const;
+virtual void                           destroyIndirectCommandsLayoutNV                                 (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createPrivateDataSlotEXT                                                (VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot) const;
+virtual void                           destroyPrivateDataSlotEXT                                               (VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       setPrivateDataEXT                                                               (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data) const;
+virtual void                           getPrivateDataEXT                                                               (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData) const;
+virtual void                           cmdSetFragmentShadingRateEnumNV                                 (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const;
+virtual void                           cmdSetVertexInputEXT                                                    (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const;
+virtual VkResult                       getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) const;
+virtual void                           cmdSubpassShadingHUAWEI                                                 (VkCommandBuffer commandBuffer) const;
+virtual void                           cmdBindInvocationMaskHUAWEI                                             (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const;
+virtual VkResult                       getMemoryRemoteAddressNV                                                (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress) 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;
+virtual void                           cmdDrawMultiEXT                                                                 (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride) const;
+virtual void                           cmdDrawMultiIndexedEXT                                                  (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset) const;
+virtual VkResult                       createAccelerationStructureKHR                                  (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const;
+virtual void                           destroyAccelerationStructureKHR                                 (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           cmdBuildAccelerationStructuresKHR                               (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const;
+virtual void                           cmdBuildAccelerationStructuresIndirectKHR               (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts) const;
+virtual VkResult                       buildAccelerationStructuresKHR                                  (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const;
+virtual VkResult                       copyAccelerationStructureKHR                                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo) const;
+virtual VkResult                       copyAccelerationStructureToMemoryKHR                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const;
+virtual VkResult                       copyMemoryToAccelerationStructureKHR                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const;
+virtual VkResult                       writeAccelerationStructuresPropertiesKHR                (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride) const;
+virtual void                           cmdCopyAccelerationStructureKHR                                 (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) const;
+virtual void                           cmdCopyAccelerationStructureToMemoryKHR                 (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const;
+virtual void                           cmdCopyMemoryToAccelerationStructureKHR                 (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const;
+virtual VkDeviceAddress                getAccelerationStructureDeviceAddressKHR                (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) const;
+virtual void                           cmdWriteAccelerationStructuresPropertiesKHR             (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const;
+virtual void                           getDeviceAccelerationStructureCompatibilityKHR  (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility) const;
+virtual void                           getAccelerationStructureBuildSizesKHR                   (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) const;
+virtual void                           cmdTraceRaysKHR                                                                 (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth) const;
+virtual VkResult                       createRayTracingPipelinesKHR                                    (VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
+virtual VkResult                       getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const;
+virtual void                           cmdTraceRaysIndirectKHR                                                 (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) const;
+virtual VkDeviceSize           getRayTracingShaderGroupStackSizeKHR                    (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader) const;
+virtual void                           cmdSetRayTracingPipelineStackSizeKHR                    (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize) const;
+virtual VkResult                       getAndroidHardwareBufferPropertiesANDROID               (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const;
+virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const;
+virtual VkResult                       createVideoSessionKHR                                                   (VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) const;
+virtual void                           destroyVideoSessionKHR                                                  (VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getVideoSessionMemoryRequirementsKHR                    (VkDevice device, VkVideoSessionKHR videoSession, deUint32* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements) const;
+virtual VkResult                       bindVideoSessionMemoryKHR                                               (VkDevice device, VkVideoSessionKHR videoSession, deUint32 videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories) const;
+virtual VkResult                       createVideoSessionParametersKHR                                 (VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters) const;
+virtual VkResult                       updateVideoSessionParametersKHR                                 (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) const;
+virtual void                           destroyVideoSessionParametersKHR                                (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           cmdBeginVideoCodingKHR                                                  (VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) const;
+virtual void                           cmdEndVideoCodingKHR                                                    (VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) const;
+virtual void                           cmdControlVideoCodingKHR                                                (VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) const;
+virtual void                           cmdDecodeVideoKHR                                                               (VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo) const;
+virtual void                           cmdEncodeVideoKHR                                                               (VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) const;
+virtual VkResult                       getMemoryZirconHandleFUCHSIA                                    (VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const;
+virtual VkResult                       getMemoryZirconHandlePropertiesFUCHSIA                  (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) const;
+virtual VkResult                       importSemaphoreZirconHandleFUCHSIA                              (VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) const;
+virtual VkResult                       getSemaphoreZirconHandleFUCHSIA                                 (VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const;
+virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const;
+virtual VkResult                       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const;
+virtual VkResult                       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const;
+virtual VkResult                       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const;
+virtual VkResult                       acquireFullScreenExclusiveModeEXT                               (VkDevice device, VkSwapchainKHR swapchain) const;
+virtual VkResult                       releaseFullScreenExclusiveModeEXT                               (VkDevice device, VkSwapchainKHR swapchain) const;
+virtual VkResult                       getDeviceGroupSurfacePresentModes2EXT                   (VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) const;
diff --git a/external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl
new file mode 100644 (file)
index 0000000..be58cf7
--- /dev/null
@@ -0,0 +1,87 @@
+/* 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 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       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       createDebugReportCallbackEXT                                                                    (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
+virtual void           destroyDebugReportCallbackEXT                                                                   (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
+virtual void           debugReportMessageEXT                                                                                   (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) 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       getPhysicalDeviceToolPropertiesEXT                                                              (VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties) const;
+virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const;
+virtual VkResult       getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations) const;
+virtual VkResult       createHeadlessSurfaceEXT                                                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       acquireDrmDisplayEXT                                                                                    (VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display) const;
+virtual VkResult       getDrmDisplayEXT                                                                                                (VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display) const;
+virtual VkResult       acquireWinrtDisplayNV                                                                                   (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
+virtual VkResult       getWinrtDisplayNV                                                                                               (VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay) const;
+virtual VkResult       createAndroidSurfaceKHR                                                                                 (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       getPhysicalDeviceVideoCapabilitiesKHR                                                   (VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities) const;
+virtual VkResult       getPhysicalDeviceVideoFormatPropertiesKHR                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, deUint32* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties) const;
+virtual VkResult       createImagePipeSurfaceFUCHSIA                                                                   (VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createStreamDescriptorSurfaceGGP                                                                (VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createIOSSurfaceMVK                                                                                             (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createMacOSSurfaceMVK                                                                                   (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createMetalSurfaceEXT                                                                                   (VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createViSurfaceNN                                                                                               (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createWaylandSurfaceKHR                                                                                 (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR                                  (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const;
+virtual VkResult       createWin32SurfaceKHR                                                                                   (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
+virtual VkResult       getPhysicalDeviceSurfacePresentModes2EXT                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
+virtual VkResult       createXcbSurfaceKHR                                                                                             (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const;
+virtual VkResult       createXlibSurfaceKHR                                                                                    (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                                             (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const;
+virtual VkResult       acquireXlibDisplayEXT                                                                                   (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const;
+virtual VkResult       getRandROutputDisplayEXT                                                                                (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const;
diff --git a/external/vulkancts/framework/vulkan/vkConcretePlatformInterface.inl b/external/vulkancts/framework/vulkan/vkConcretePlatformInterface.inl
new file mode 100644 (file)
index 0000000..d68dc22
--- /dev/null
@@ -0,0 +1,8 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+virtual VkResult                       createInstance                                                  (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) const;
+virtual PFN_vkVoidFunction     getInstanceProcAddr                                             (VkInstance instance, const char* pName) const;
+virtual VkResult                       enumerateInstanceExtensionProperties    (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
+virtual VkResult                       enumerateInstanceLayerProperties                (deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
+virtual VkResult                       enumerateInstanceVersion                                (deUint32* pApiVersion) const;
diff --git a/external/vulkancts/framework/vulkan/vkCoreFunctionalities.inl b/external/vulkancts/framework/vulkan/vkCoreFunctionalities.inl
new file mode 100644 (file)
index 0000000..3d19478
--- /dev/null
@@ -0,0 +1,507 @@
+/* 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.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_1, FunctionInfosList()));
+       apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_2, FunctionInfosList()));
+
+       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance",                                                                     FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance",                                                            FUNCTIONORIGIN_INSTANCE));
+       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("vkFreeMemory",                                                                         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("vkDestroyQueryPool",                                                           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("vkCreateShaderModule",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyShaderModule",                                                        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("vkGetPipelineCacheData",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkMergePipelineCaches",                                                        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("vkDestroyDescriptorPool",                                                      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("vkDestroyCommandPool",                                                         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("vkFreeMemory",                                                                         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("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_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("vkDestroyQueryPool",                                                           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("vkCreateShaderModule",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyShaderModule",                                                        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("vkGetPipelineCacheData",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkMergePipelineCaches",                                                        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("vkDestroyDescriptorPool",                                                      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("vkDestroyCommandPool",                                                         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("vkGetImageSparseMemoryRequirements2",                          FUNCTIONORIGIN_DEVICE));
+       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_1].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties2",      FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkTrimCommandPool",                                                            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("vkCreateDescriptorUpdateTemplate",                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyDescriptorUpdateTemplate",                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkUpdateDescriptorSetWithTemplate",                            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("vkFreeMemory",                                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMapMemory",                                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUnmapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements",                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties",       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueBindSparse",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFence",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFence",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetFences",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetFenceStatus",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitForFences",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySemaphore",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateEvent",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyEvent",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetEventStatus",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSetEvent",                                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateQueryPool",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyQueryPool",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetQueryPoolResults",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBuffer",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBufferView",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBufferView",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImage",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImageView",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImageView",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateShaderModule",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyShaderModule",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineCache",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineCache",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPipelineCacheData",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMergePipelineCaches",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateComputePipelines",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipeline",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineLayout",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineLayout",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSampler",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySampler",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorPool",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorPool",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetDescriptorPool",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeDescriptorSets",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFramebuffer",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFramebuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyRenderPass",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateCommandPool",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyCommandPool",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandPool",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateCommandBuffers",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeCommandBuffers",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBeginCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEndCommandBuffer",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindPipeline",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetViewport",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetScissor",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetLineWidth",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBias",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilReference",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDraw",                                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexed",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirect",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatch",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBlitImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdFillBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearColorImage",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearAttachments",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResolveImage",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetEvent",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWaitEvents",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginQuery",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndQuery",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPushConstants",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdExecuteCommands",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceVersion",                                           FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory2",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceGroupPeerMemoryFeatures",                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDeviceMask",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchBase",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumeratePhysicalDeviceGroups",                                      FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements2",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements2",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements2",                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures2",                                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceProperties2",                                       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties2",                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties2",            FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties2",            FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties2",                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties2",      FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkTrimCommandPool",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceQueue2",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSamplerYcbcrConversion",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySamplerYcbcrConversion",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorUpdateTemplate",                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorUpdateTemplate",                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSetWithTemplate",                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalBufferProperties",          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties",           FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties",       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirectCount",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirectCount",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass2",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass2",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetQueryPool",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetSemaphoreCounterValue",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitSemaphores",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSignalSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferDeviceAddress",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferOpaqueCaptureAddress",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryOpaqueCaptureAddress",                        FUNCTIONORIGIN_DEVICE));
+
+}
+
diff --git a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
new file mode 100644 (file)
index 0000000..137c84b
--- /dev/null
@@ -0,0 +1,1818 @@
+/* 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);
+}
+
+void DeviceDriver::freeMemory (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.freeMemory(device, memory, pAllocator);
+}
+
+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::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);
+}
+
+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);
+}
+
+void DeviceDriver::destroyQueryPool (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyQueryPool(device, queryPool, pAllocator);
+}
+
+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::createShaderModule (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const
+{
+       return m_vk.createShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
+}
+
+void DeviceDriver::destroyShaderModule (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyShaderModule(device, shaderModule, 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::getPipelineCacheData (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const
+{
+       return m_vk.getPipelineCacheData(device, pipelineCache, pDataSize, pData);
+}
+
+VkResult DeviceDriver::mergePipelineCaches (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const
+{
+       return m_vk.mergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
+}
+
+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);
+}
+
+void DeviceDriver::destroyDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyDescriptorPool(device, descriptorPool, pAllocator);
+}
+
+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);
+}
+
+void DeviceDriver::destroyCommandPool (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyCommandPool(device, commandPool, pAllocator);
+}
+
+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);
+}
+
+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::getImageSparseMemoryRequirements2 (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const
+{
+       m_vk.getImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
+}
+
+void DeviceDriver::trimCommandPool (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) const
+{
+       m_vk.trimCommandPool(device, commandPool, flags);
+}
+
+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);
+}
+
+VkResult DeviceDriver::createDescriptorUpdateTemplate (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const
+{
+       return m_vk.createDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
+}
+
+void DeviceDriver::destroyDescriptorUpdateTemplate (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
+}
+
+void DeviceDriver::updateDescriptorSetWithTemplate (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const
+{
+       m_vk.updateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData);
+}
+
+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);
+}
+
+VkResult DeviceDriver::createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const
+{
+       return m_vk.createSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
+}
+
+void DeviceDriver::destroySwapchainKHR (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroySwapchainKHR(device, swapchain, pAllocator);
+}
+
+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);
+}
+
+void DeviceDriver::cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const
+{
+       m_vk.cmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
+}
+
+void DeviceDriver::cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const
+{
+       m_vk.cmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
+}
+
+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);
+}
+
+VkResult DeviceDriver::acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const
+{
+       return m_vk.acquireProfilingLockKHR(device, pInfo);
+}
+
+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);
+}
+
+VkResult DeviceDriver::waitForPresentKHR (VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout) const
+{
+       return m_vk.waitForPresentKHR(device, swapchain, presentId, timeout);
+}
+
+VkResult DeviceDriver::createDeferredOperationKHR (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation) const
+{
+       return m_vk.createDeferredOperationKHR(device, pAllocator, pDeferredOperation);
+}
+
+void DeviceDriver::destroyDeferredOperationKHR (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyDeferredOperationKHR(device, operation, pAllocator);
+}
+
+uint32_t DeviceDriver::getDeferredOperationMaxConcurrencyKHR (VkDevice device, VkDeferredOperationKHR operation) const
+{
+       return m_vk.getDeferredOperationMaxConcurrencyKHR(device, operation);
+}
+
+VkResult DeviceDriver::getDeferredOperationResultKHR (VkDevice device, VkDeferredOperationKHR operation) const
+{
+       return m_vk.getDeferredOperationResultKHR(device, operation);
+}
+
+VkResult DeviceDriver::deferredOperationJoinKHR (VkDevice device, VkDeferredOperationKHR operation) const
+{
+       return m_vk.deferredOperationJoinKHR(device, operation);
+}
+
+VkResult DeviceDriver::getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const
+{
+       return m_vk.getPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
+}
+
+VkResult DeviceDriver::getPipelineExecutableStatisticsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const
+{
+       return m_vk.getPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
+}
+
+VkResult DeviceDriver::getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const
+{
+       return m_vk.getPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
+}
+
+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::debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const
+{
+       return m_vk.debugMarkerSetObjectTagEXT(device, pTagInfo);
+}
+
+VkResult DeviceDriver::debugMarkerSetObjectNameEXT (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const
+{
+       return m_vk.debugMarkerSetObjectNameEXT(device, pNameInfo);
+}
+
+void DeviceDriver::cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const
+{
+       m_vk.cmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
+}
+
+void DeviceDriver::cmdDebugMarkerEndEXT (VkCommandBuffer commandBuffer) const
+{
+       m_vk.cmdDebugMarkerEndEXT(commandBuffer);
+}
+
+void DeviceDriver::cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const
+{
+       m_vk.cmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
+}
+
+void DeviceDriver::cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const
+{
+       m_vk.cmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
+}
+
+void DeviceDriver::cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const
+{
+       m_vk.cmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
+}
+
+void DeviceDriver::cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const
+{
+       m_vk.cmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
+}
+
+void DeviceDriver::cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const
+{
+       m_vk.cmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
+}
+
+void DeviceDriver::cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const
+{
+       m_vk.cmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
+}
+
+void DeviceDriver::cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const
+{
+       m_vk.cmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
+}
+
+VkResult DeviceDriver::createCuModuleNVX (VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule) const
+{
+       return m_vk.createCuModuleNVX(device, pCreateInfo, pAllocator, pModule);
+}
+
+VkResult DeviceDriver::createCuFunctionNVX (VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction) const
+{
+       return m_vk.createCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction);
+}
+
+void DeviceDriver::destroyCuModuleNVX (VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyCuModuleNVX(device, module, pAllocator);
+}
+
+void DeviceDriver::destroyCuFunctionNVX (VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyCuFunctionNVX(device, function, pAllocator);
+}
+
+void DeviceDriver::cmdCuLaunchKernelNVX (VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) const
+{
+       m_vk.cmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo);
+}
+
+uint32_t DeviceDriver::getImageViewHandleNVX (VkDevice device, const VkImageViewHandleInfoNVX* pInfo) const
+{
+       return m_vk.getImageViewHandleNVX(device, pInfo);
+}
+
+VkResult DeviceDriver::getImageViewAddressNVX (VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) const
+{
+       return m_vk.getImageViewAddressNVX(device, imageView, pProperties);
+}
+
+void DeviceDriver::cmdDrawIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+void DeviceDriver::cmdDrawIndexedIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+VkResult DeviceDriver::getShaderInfoAMD (VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo) const
+{
+       return m_vk.getShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
+}
+
+void DeviceDriver::cmdBeginConditionalRenderingEXT (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) const
+{
+       m_vk.cmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
+}
+
+void DeviceDriver::cmdEndConditionalRenderingEXT (VkCommandBuffer commandBuffer) const
+{
+       m_vk.cmdEndConditionalRenderingEXT(commandBuffer);
+}
+
+void DeviceDriver::cmdSetViewportWScalingNV (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) const
+{
+       m_vk.cmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
+}
+
+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);
+}
+
+VkResult DeviceDriver::getRefreshCycleDurationGOOGLE (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const
+{
+       return m_vk.getRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
+}
+
+VkResult DeviceDriver::getPastPresentationTimingGOOGLE (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const
+{
+       return m_vk.getPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
+}
+
+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::createValidationCacheEXT (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const
+{
+       return m_vk.createValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
+}
+
+void DeviceDriver::destroyValidationCacheEXT (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyValidationCacheEXT(device, validationCache, pAllocator);
+}
+
+VkResult DeviceDriver::mergeValidationCachesEXT (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const
+{
+       return m_vk.mergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
+}
+
+VkResult DeviceDriver::getValidationCacheDataEXT (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const
+{
+       return m_vk.getValidationCacheDataEXT(device, validationCache, pDataSize, pData);
+}
+
+void DeviceDriver::cmdBindShadingRateImageNV (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const
+{
+       m_vk.cmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
+}
+
+void DeviceDriver::cmdSetViewportShadingRatePaletteNV (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes) const
+{
+       m_vk.cmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
+}
+
+void DeviceDriver::cmdSetCoarseSampleOrderNV (VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) const
+{
+       m_vk.cmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
+}
+
+VkResult DeviceDriver::createAccelerationStructureNV (VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) const
+{
+       return m_vk.createAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
+}
+
+void DeviceDriver::destroyAccelerationStructureNV (VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
+}
+
+void DeviceDriver::getAccelerationStructureMemoryRequirementsNV (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const
+{
+       m_vk.getAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
+}
+
+VkResult DeviceDriver::bindAccelerationStructureMemoryNV (VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) const
+{
+       return m_vk.bindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
+}
+
+void DeviceDriver::cmdBuildAccelerationStructureNV (VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset) const
+{
+       m_vk.cmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
+}
+
+void DeviceDriver::cmdCopyAccelerationStructureNV (VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode) const
+{
+       m_vk.cmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
+}
+
+void DeviceDriver::cmdTraceRaysNV (VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth) const
+{
+       m_vk.cmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
+}
+
+VkResult DeviceDriver::createRayTracingPipelinesNV (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
+{
+       return m_vk.createRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
+}
+
+VkResult DeviceDriver::getRayTracingShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const
+{
+       return m_vk.getRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
+}
+
+VkResult DeviceDriver::getRayTracingShaderGroupHandlesNV (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const
+{
+       return m_vk.getRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
+}
+
+VkResult DeviceDriver::getAccelerationStructureHandleNV (VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData) const
+{
+       return m_vk.getAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
+}
+
+void DeviceDriver::cmdWriteAccelerationStructuresPropertiesNV (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const
+{
+       m_vk.cmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
+}
+
+VkResult DeviceDriver::compileDeferredNV (VkDevice device, VkPipeline pipeline, deUint32 shader) const
+{
+       return m_vk.compileDeferredNV(device, pipeline, shader);
+}
+
+VkResult DeviceDriver::getMemoryHostPointerPropertiesEXT (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const
+{
+       return m_vk.getMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
+}
+
+void DeviceDriver::cmdWriteBufferMarkerAMD (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const
+{
+       m_vk.cmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
+}
+
+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::cmdDrawMeshTasksNV (VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask) const
+{
+       m_vk.cmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
+}
+
+void DeviceDriver::cmdDrawMeshTasksIndirectNV (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
+}
+
+void DeviceDriver::cmdDrawMeshTasksIndirectCountNV (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+void DeviceDriver::cmdSetExclusiveScissorNV (VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors) const
+{
+       m_vk.cmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
+}
+
+void DeviceDriver::cmdSetCheckpointNV (VkCommandBuffer commandBuffer, const void* pCheckpointMarker) const
+{
+       m_vk.cmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
+}
+
+void DeviceDriver::getQueueCheckpointDataNV (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) const
+{
+       m_vk.getQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
+}
+
+VkResult DeviceDriver::initializePerformanceApiINTEL (VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) const
+{
+       return m_vk.initializePerformanceApiINTEL(device, pInitializeInfo);
+}
+
+void DeviceDriver::uninitializePerformanceApiINTEL (VkDevice device) const
+{
+       m_vk.uninitializePerformanceApiINTEL(device);
+}
+
+VkResult DeviceDriver::cmdSetPerformanceMarkerINTEL (VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) const
+{
+       return m_vk.cmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo);
+}
+
+VkResult DeviceDriver::cmdSetPerformanceStreamMarkerINTEL (VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) const
+{
+       return m_vk.cmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo);
+}
+
+VkResult DeviceDriver::cmdSetPerformanceOverrideINTEL (VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) const
+{
+       return m_vk.cmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo);
+}
+
+VkResult DeviceDriver::acquirePerformanceConfigurationINTEL (VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration) const
+{
+       return m_vk.acquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
+}
+
+VkResult DeviceDriver::releasePerformanceConfigurationINTEL (VkDevice device, VkPerformanceConfigurationINTEL configuration) const
+{
+       return m_vk.releasePerformanceConfigurationINTEL(device, configuration);
+}
+
+VkResult DeviceDriver::queueSetPerformanceConfigurationINTEL (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const
+{
+       return m_vk.queueSetPerformanceConfigurationINTEL(queue, configuration);
+}
+
+VkResult DeviceDriver::getPerformanceParameterINTEL (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const
+{
+       return m_vk.getPerformanceParameterINTEL(device, parameter, pValue);
+}
+
+void DeviceDriver::setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const
+{
+       m_vk.setLocalDimmingAMD(device, swapChain, localDimmingEnable);
+}
+
+VkDeviceAddress DeviceDriver::getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
+{
+       return m_vk.getBufferDeviceAddressEXT(device, pInfo);
+}
+
+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::getGeneratedCommandsMemoryRequirementsNV (VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) const
+{
+       m_vk.getGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
+}
+
+void DeviceDriver::cmdPreprocessGeneratedCommandsNV (VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const
+{
+       m_vk.cmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
+}
+
+void DeviceDriver::cmdExecuteGeneratedCommandsNV (VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const
+{
+       m_vk.cmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
+}
+
+void DeviceDriver::cmdBindPipelineShaderGroupNV (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex) const
+{
+       m_vk.cmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
+}
+
+VkResult DeviceDriver::createIndirectCommandsLayoutNV (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) const
+{
+       return m_vk.createIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
+}
+
+void DeviceDriver::destroyIndirectCommandsLayoutNV (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator);
+}
+
+VkResult DeviceDriver::createPrivateDataSlotEXT (VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot) const
+{
+       return m_vk.createPrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot);
+}
+
+void DeviceDriver::destroyPrivateDataSlotEXT (VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator);
+}
+
+VkResult DeviceDriver::setPrivateDataEXT (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data) const
+{
+       return m_vk.setPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data);
+}
+
+void DeviceDriver::getPrivateDataEXT (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData) const
+{
+       m_vk.getPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData);
+}
+
+void DeviceDriver::cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const
+{
+       m_vk.cmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
+}
+
+void DeviceDriver::cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const
+{
+       m_vk.cmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
+}
+
+VkResult DeviceDriver::getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) const
+{
+       return m_vk.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize);
+}
+
+void DeviceDriver::cmdSubpassShadingHUAWEI (VkCommandBuffer commandBuffer) const
+{
+       m_vk.cmdSubpassShadingHUAWEI(commandBuffer);
+}
+
+void DeviceDriver::cmdBindInvocationMaskHUAWEI (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const
+{
+       m_vk.cmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout);
+}
+
+VkResult DeviceDriver::getMemoryRemoteAddressNV (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress) const
+{
+       return m_vk.getMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress);
+}
+
+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);
+}
+
+void DeviceDriver::cmdDrawMultiEXT (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride) const
+{
+       m_vk.cmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride);
+}
+
+void DeviceDriver::cmdDrawMultiIndexedEXT (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset) const
+{
+       m_vk.cmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset);
+}
+
+VkResult DeviceDriver::createAccelerationStructureKHR (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const
+{
+       return m_vk.createAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
+}
+
+void DeviceDriver::destroyAccelerationStructureKHR (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
+}
+
+void DeviceDriver::cmdBuildAccelerationStructuresKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const
+{
+       m_vk.cmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos);
+}
+
+void DeviceDriver::cmdBuildAccelerationStructuresIndirectKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts) const
+{
+       m_vk.cmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts);
+}
+
+VkResult DeviceDriver::buildAccelerationStructuresKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const
+{
+       return m_vk.buildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos);
+}
+
+VkResult DeviceDriver::copyAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo) const
+{
+       return m_vk.copyAccelerationStructureKHR(device, deferredOperation, pInfo);
+}
+
+VkResult DeviceDriver::copyAccelerationStructureToMemoryKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
+{
+       return m_vk.copyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo);
+}
+
+VkResult DeviceDriver::copyMemoryToAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
+{
+       return m_vk.copyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo);
+}
+
+VkResult DeviceDriver::writeAccelerationStructuresPropertiesKHR (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride) const
+{
+       return m_vk.writeAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
+}
+
+void DeviceDriver::cmdCopyAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) const
+{
+       m_vk.cmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
+}
+
+void DeviceDriver::cmdCopyAccelerationStructureToMemoryKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
+{
+       m_vk.cmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
+}
+
+void DeviceDriver::cmdCopyMemoryToAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
+{
+       m_vk.cmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
+}
+
+VkDeviceAddress DeviceDriver::getAccelerationStructureDeviceAddressKHR (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) const
+{
+       return m_vk.getAccelerationStructureDeviceAddressKHR(device, pInfo);
+}
+
+void DeviceDriver::cmdWriteAccelerationStructuresPropertiesKHR (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const
+{
+       m_vk.cmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
+}
+
+void DeviceDriver::getDeviceAccelerationStructureCompatibilityKHR (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility) const
+{
+       m_vk.getDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility);
+}
+
+void DeviceDriver::getAccelerationStructureBuildSizesKHR (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) const
+{
+       m_vk.getAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo);
+}
+
+void DeviceDriver::cmdTraceRaysKHR (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth) const
+{
+       m_vk.cmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
+}
+
+VkResult DeviceDriver::createRayTracingPipelinesKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
+{
+       return m_vk.createRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
+}
+
+VkResult DeviceDriver::getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const
+{
+       return m_vk.getRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
+}
+
+void DeviceDriver::cmdTraceRaysIndirectKHR (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) const
+{
+       m_vk.cmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
+}
+
+VkDeviceSize DeviceDriver::getRayTracingShaderGroupStackSizeKHR (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader) const
+{
+       return m_vk.getRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader);
+}
+
+void DeviceDriver::cmdSetRayTracingPipelineStackSizeKHR (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize) const
+{
+       m_vk.cmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize);
+}
+
+VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
+{
+       return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
+}
+
+VkResult DeviceDriver::getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const
+{
+       return m_vk.getMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
+}
+
+VkResult DeviceDriver::createVideoSessionKHR (VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) const
+{
+       return m_vk.createVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession);
+}
+
+void DeviceDriver::destroyVideoSessionKHR (VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyVideoSessionKHR(device, videoSession, pAllocator);
+}
+
+VkResult DeviceDriver::getVideoSessionMemoryRequirementsKHR (VkDevice device, VkVideoSessionKHR videoSession, deUint32* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements) const
+{
+       return m_vk.getVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements);
+}
+
+VkResult DeviceDriver::bindVideoSessionMemoryKHR (VkDevice device, VkVideoSessionKHR videoSession, deUint32 videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories) const
+{
+       return m_vk.bindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories);
+}
+
+VkResult DeviceDriver::createVideoSessionParametersKHR (VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters) const
+{
+       return m_vk.createVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters);
+}
+
+VkResult DeviceDriver::updateVideoSessionParametersKHR (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) const
+{
+       return m_vk.updateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo);
+}
+
+void DeviceDriver::destroyVideoSessionParametersKHR (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator);
+}
+
+void DeviceDriver::cmdBeginVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) const
+{
+       m_vk.cmdBeginVideoCodingKHR(commandBuffer, pBeginInfo);
+}
+
+void DeviceDriver::cmdEndVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) const
+{
+       m_vk.cmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo);
+}
+
+void DeviceDriver::cmdControlVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) const
+{
+       m_vk.cmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo);
+}
+
+void DeviceDriver::cmdDecodeVideoKHR (VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo) const
+{
+       m_vk.cmdDecodeVideoKHR(commandBuffer, pFrameInfo);
+}
+
+void DeviceDriver::cmdEncodeVideoKHR (VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) const
+{
+       m_vk.cmdEncodeVideoKHR(commandBuffer, pEncodeInfo);
+}
+
+VkResult DeviceDriver::getMemoryZirconHandleFUCHSIA (VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const
+{
+       return m_vk.getMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
+}
+
+VkResult DeviceDriver::getMemoryZirconHandlePropertiesFUCHSIA (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) const
+{
+       return m_vk.getMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties);
+}
+
+VkResult DeviceDriver::importSemaphoreZirconHandleFUCHSIA (VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) const
+{
+       return m_vk.importSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo);
+}
+
+VkResult DeviceDriver::getSemaphoreZirconHandleFUCHSIA (VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const
+{
+       return m_vk.getSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
+}
+
+VkResult DeviceDriver::getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const
+{
+       return m_vk.getMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
+}
+
+VkResult DeviceDriver::getMemoryWin32HandlePropertiesKHR (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const
+{
+       return m_vk.getMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
+}
+
+VkResult DeviceDriver::importSemaphoreWin32HandleKHR (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const
+{
+       return m_vk.importSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
+}
+
+VkResult DeviceDriver::getSemaphoreWin32HandleKHR (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const
+{
+       return m_vk.getSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
+}
+
+VkResult DeviceDriver::importFenceWin32HandleKHR (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const
+{
+       return m_vk.importFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
+}
+
+VkResult DeviceDriver::getFenceWin32HandleKHR (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const
+{
+       return m_vk.getFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
+}
+
+VkResult DeviceDriver::getMemoryWin32HandleNV (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const
+{
+       return m_vk.getMemoryWin32HandleNV(device, memory, handleType, pHandle);
+}
+
+VkResult DeviceDriver::acquireFullScreenExclusiveModeEXT (VkDevice device, VkSwapchainKHR swapchain) const
+{
+       return m_vk.acquireFullScreenExclusiveModeEXT(device, swapchain);
+}
+
+VkResult DeviceDriver::releaseFullScreenExclusiveModeEXT (VkDevice device, VkSwapchainKHR swapchain) const
+{
+       return m_vk.releaseFullScreenExclusiveModeEXT(device, swapchain);
+}
+
+VkResult DeviceDriver::getDeviceGroupSurfacePresentModes2EXT (VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) const
+{
+       return m_vk.getDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes);
+}
diff --git a/external/vulkancts/framework/vulkan/vkDeviceExtensions.inl b/external/vulkancts/framework/vulkan/vkDeviceExtensions.inl
new file mode 100644 (file)
index 0000000..3d4ae5b
--- /dev/null
@@ -0,0 +1,84 @@
+/* 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",
+       "VK_VALVE_mutable_descriptor_type",
+       "VK_EXT_multi_draw",
+       "VK_KHR_shader_subgroup_uniform_control_flow",
+       "VK_KHR_present_id",
+       "VK_KHR_present_wait",
+       "VK_KHR_shader_integer_dot_product",
+};
+
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFeatures.inl b/external/vulkancts/framework/vulkan/vkDeviceFeatures.inl
new file mode 100644 (file)
index 0000000..d51f75d
--- /dev/null
@@ -0,0 +1,523 @@
+/* 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 VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
+#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
+#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
+#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
+#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 VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
+#define DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME "not_existent_feature"
+#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
+#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
+#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
+#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
+#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image"
+#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode"
+#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
+#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
+#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
+#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands"
+#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report"
+#define DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME "not_existent_feature"
+#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive"
+#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_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2"
+#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric"
+#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 VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums"
+#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query"
+#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
+#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
+#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_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor"
+#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
+#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask"
+#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
+#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority"
+#define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
+#define VK_EXT_MULTI_DRAW_EXTENSION_NAME  "VK_EXT_multi_draw"
+#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type"
+#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
+#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control"
+#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
+#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
+#define VK_KHR_PRESENT_ID_EXTENSION_NAME  "VK_KHR_present_id"
+#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait"
+#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart"
+#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data"
+#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "not_existent_feature"
+#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
+#define VK_KHR_RAY_QUERY_EXTENSION_NAME   "VK_KHR_ray_query"
+#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur"
+#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
+#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
+#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
+#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
+#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
+#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2"
+#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
+#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 VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
+#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
+#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
+#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
+#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
+#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
+#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
+#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
+#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow"
+#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
+#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
+#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
+#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
+#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 VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
+#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
+#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
+#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 VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
+#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout"
+#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"
+#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory"
+
+
+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<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<VkPhysicalDevicePresentWaitFeaturesKHR>(VkPhysicalDevicePresentWaitFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePresentIdFeaturesKHR>(VkPhysicalDevicePresentIdFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceSynchronization2FeaturesKHR>(VkPhysicalDeviceSynchronization2FeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(VkPhysicalDeviceTransformFeedbackFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceCornerSampledImageFeaturesNV>(VkPhysicalDeviceCornerSampledImageFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceASTCDecodeFeaturesEXT>(VkPhysicalDeviceASTCDecodeFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(VkPhysicalDeviceConditionalRenderingFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(VkPhysicalDeviceDepthClipEnableFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(VkPhysicalDeviceInlineUniformBlockFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShadingRateImageFeaturesNV>(VkPhysicalDeviceShadingRateImageFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceMeshShaderFeaturesNV>(VkPhysicalDeviceMeshShaderFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(VkPhysicalDeviceShaderImageFootprintFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceExclusiveScissorFeaturesNV>(VkPhysicalDeviceExclusiveScissorFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(VkPhysicalDeviceFragmentDensityMapFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(VkPhysicalDeviceCoherentMemoryFeaturesAMD&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(VkPhysicalDeviceMemoryPriorityFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(VkPhysicalDeviceCooperativeMatrixFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(VkPhysicalDeviceCoverageReductionModeFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceProvokingVertexFeaturesEXT>(VkPhysicalDeviceProvokingVertexFeaturesEXT&, 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<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(VkPhysicalDeviceInheritedViewportScissorFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRobustness2FeaturesEXT>(VkPhysicalDeviceRobustness2FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(VkPhysicalDeviceCustomBorderColorFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePrivateDataFeaturesEXT>(VkPhysicalDevicePrivateDataFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(VkPhysicalDeviceDiagnosticsConfigFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceImageRobustnessFeaturesEXT>(VkPhysicalDeviceImageRobustnessFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevice4444FormatsFeaturesEXT>(VkPhysicalDevice4444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(VkPhysicalDeviceColorWriteEnableFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT>(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceMultiDrawFeaturesEXT>(VkPhysicalDeviceMultiDrawFeaturesEXT&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(VkPhysicalDeviceAccelerationStructureFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(VkPhysicalDeviceRayTracingPipelineFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDeviceRayQueryFeaturesKHR>(VkPhysicalDeviceRayQueryFeaturesKHR&, const AllFeaturesBlobs&) {}
+template<> void initFeatureFromBlob<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(VkPhysicalDevicePortabilitySubsetFeaturesKHR&, const AllFeaturesBlobs&) {}
+
+
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 96}; }
+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, 95}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 94}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION, 93}; }
+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, 92}; }
+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, 91}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 90}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 89}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 88}; }
+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, 87}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 86}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 85}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 84}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 83}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 82}; }
+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, 81}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 80}; }
+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, 79}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 78}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, 77}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT, VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME, VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION, 76}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 75}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 74}; }
+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, 73}; }
+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, 72}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME, VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION, 71}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 70}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION, 69}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 68}; }
+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, 67}; }
+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, 66}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION, 65}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT, VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME, VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION, 64}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 63}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 62}; }
+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, 61}; }
+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, 60}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV, VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME, VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION, 59}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 58}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI, VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME, VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION, 57}; }
+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, 56}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 55}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 54}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 53}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiDrawFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION, 52}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION, 51}; }
+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, 50}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION, 49}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 48}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePortabilitySubsetFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION, 47}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentIdFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION, 46}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePresentWaitFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, VK_KHR_PRESENT_WAIT_EXTENSION_NAME, VK_KHR_PRESENT_WAIT_SPEC_VERSION, 45}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION, 44}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePrivateDataFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_EXT_PRIVATE_DATA_SPEC_VERSION, 43}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 42}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProvokingVertexFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION, 41}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, VK_KHR_RAY_QUERY_EXTENSION_NAME, VK_KHR_RAY_QUERY_SPEC_VERSION, 40}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV, VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME, VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION, 39}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION, 38}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 37}; }
+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, 36}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 35}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 34}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 33}; }
+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, 32}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION, 31}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 30}; }
+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, 29}; }
+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, 28}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 27}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 26}; }
+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, 25}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 24}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION, 23}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 22}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION, 21}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 20}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION, 19}; }
+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, 18}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 17}; }
+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, 16}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION, 15}; }
+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, 14}; }
+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, 13}; }
+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, 12}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 11}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 10}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION, 9}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION, 8}; }
+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, 7}; }
+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, 6}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION, 5}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION, 4}; }
+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, 3}; }
+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, 2}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR, VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME, VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION, 1}; }
+
+
+static const FeatureStructCreationData featureStructCreationArray[] =
+{
+       { createFeatureStructWrapper<VkPhysicalDevice16BitStorageFeatures>, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevice4444FormatsFeaturesEXT>, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeatures>, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceAccelerationStructureFeaturesKHR>, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION },
+       { 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>, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceCoherentMemoryFeaturesAMD>, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0 },
+       { createFeatureStructWrapper<VkPhysicalDeviceColorWriteEnableFeaturesEXT>, VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME, VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceConditionalRenderingFeaturesEXT>, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceCooperativeMatrixFeaturesNV>, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceCornerSampledImageFeaturesNV>, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceCoverageReductionModeFeaturesNV>, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceCustomBorderColorFeaturesEXT>, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDepthClipEnableFeaturesEXT>, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeatures>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>, VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME, VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0 },
+       { createFeatureStructWrapper<VkPhysicalDeviceExclusiveScissorFeaturesNV>, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION },
+       { 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<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>, VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME, VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT>, VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME, VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeatures>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeatures>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
+       { createFeatureStructWrapper<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<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>, VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME, VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>, VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME, VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceLineRasterizationFeaturesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceMemoryPriorityFeaturesEXT>, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceMeshShaderFeaturesNV>, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceMultiviewFeatures>, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceMultiDrawFeaturesEXT>, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME, VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePerformanceQueryFeaturesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME, VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePortabilitySubsetFeaturesKHR>, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePresentIdFeaturesKHR>, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePresentWaitFeaturesKHR>, VK_KHR_PRESENT_WAIT_EXTENSION_NAME, VK_KHR_PRESENT_WAIT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME, VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevicePrivateDataFeaturesEXT>, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_EXT_PRIVATE_DATA_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceProtectedMemoryFeatures>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
+       { createFeatureStructWrapper<VkPhysicalDeviceProvokingVertexFeaturesEXT>, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceRayQueryFeaturesKHR>, VK_KHR_RAY_QUERY_EXTENSION_NAME, VK_KHR_RAY_QUERY_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>, VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME, VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceRobustness2FeaturesEXT>, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceSamplerYcbcrConversionFeatures>, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeatures>, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>, VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64Features>, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderClockFeaturesKHR>, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderDrawParametersFeatures>, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8Features>, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderImageFootprintFeaturesNV>, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>, VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShadingRateImageFeaturesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_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>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceTransformFeedbackFeaturesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceVariablePointersFeatures>, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeatures>, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION },
+       { 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 },
+       { createFeatureStructWrapper<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>, VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME, VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_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
+
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFeatures2.inl b/external/vulkancts/framework/vulkan/vkDeviceFeatures2.inl
new file mode 100644 (file)
index 0000000..1fdba9d
--- /dev/null
@@ -0,0 +1,286 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+VkPhysicalDeviceConditionalRenderingFeaturesEXT                deviceConditionalRenderingFeaturesEXT[count];
+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];
+VkPhysicalDeviceBufferDeviceAddressFeaturesEXT         deviceBufferDeviceAddressFeaturesEXT[count];
+VkPhysicalDeviceBufferDeviceAddressFeatures                    deviceBufferDeviceAddressFeatures[count];
+VkPhysicalDeviceDescriptorIndexingFeatures                     deviceDescriptorIndexingFeatures[count];
+VkPhysicalDeviceTimelineSemaphoreFeatures                      deviceTimelineSemaphoreFeatures[count];
+VkPhysicalDeviceFragmentDensityMapFeaturesEXT          deviceFragmentDensityMapFeaturesEXT[count];
+VkPhysicalDeviceFragmentDensityMap2FeaturesEXT         deviceFragmentDensityMap2FeaturesEXT[count];
+VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR     deviceShaderIntegerDotProductFeaturesKHR[count];
+
+const bool isConditionalRenderingFeaturesEXT   = checkExtension(properties, "VK_EXT_conditional_rendering");
+const bool isScalarBlockLayoutFeatures                 = checkExtension(properties, "VK_EXT_scalar_block_layout")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isPerformanceQueryFeaturesKHR               = checkExtension(properties, "VK_KHR_performance_query");
+const bool is16BitStorageFeatures                              = checkExtension(properties, "VK_KHR_16bit_storage")                            || context.contextSupports(vk::ApiVersion(1, 1, 0));
+const bool isMultiviewFeatures                                 = checkExtension(properties, "VK_KHR_multiview")                                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
+const bool isProtectedMemoryFeatures                   =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
+const bool isSamplerYcbcrConversionFeatures            = checkExtension(properties, "VK_KHR_sampler_ycbcr_conversion")         || context.contextSupports(vk::ApiVersion(1, 1, 0));
+const bool isVariablePointersFeatures                  = checkExtension(properties, "VK_KHR_variable_pointers")                        || context.contextSupports(vk::ApiVersion(1, 1, 0));
+const bool is8BitStorageFeatures                               = checkExtension(properties, "VK_KHR_8bit_storage")                                     || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isShaderAtomicInt64Features                 = checkExtension(properties, "VK_KHR_shader_atomic_int64")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isShaderFloat16Int8Features                 = checkExtension(properties, "VK_KHR_shader_float16_int8")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isBufferDeviceAddressFeaturesEXT            = checkExtension(properties, "VK_EXT_buffer_device_address");
+const bool isBufferDeviceAddressFeatures               = checkExtension(properties, "VK_KHR_buffer_device_address")            || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isDescriptorIndexingFeatures                        = checkExtension(properties, "VK_EXT_descriptor_indexing")                      || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isTimelineSemaphoreFeatures                 = checkExtension(properties, "VK_KHR_timeline_semaphore")                       || context.contextSupports(vk::ApiVersion(1, 2, 0));
+const bool isFragmentDensityMapFeaturesEXT             = checkExtension(properties, "VK_EXT_fragment_density_map");
+const bool isFragmentDensityMap2FeaturesEXT            = checkExtension(properties, "VK_EXT_fragment_density_map2");
+const bool isShaderIntegerDotProductFeaturesKHR        = checkExtension(properties, "VK_KHR_shader_integer_dot_product");
+
+for (int ndx = 0; ndx < count; ++ndx)
+{
+       deMemset(&deviceConditionalRenderingFeaturesEXT[ndx],   0xFF * ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
+       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(&deviceBufferDeviceAddressFeaturesEXT[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT));
+       deMemset(&deviceBufferDeviceAddressFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
+       deMemset(&deviceDescriptorIndexingFeatures[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
+       deMemset(&deviceTimelineSemaphoreFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures));
+       deMemset(&deviceFragmentDensityMapFeaturesEXT[ndx],             0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT));
+       deMemset(&deviceFragmentDensityMap2FeaturesEXT[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT));
+       deMemset(&deviceShaderIntegerDotProductFeaturesKHR[ndx],0xFF * ndx, sizeof(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR));
+
+       deviceConditionalRenderingFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
+       deviceConditionalRenderingFeaturesEXT[ndx].pNext = &deviceScalarBlockLayoutFeatures[ndx];
+
+       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 = &deviceBufferDeviceAddressFeaturesEXT[ndx];
+
+       deviceBufferDeviceAddressFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
+       deviceBufferDeviceAddressFeaturesEXT[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 = &deviceFragmentDensityMapFeaturesEXT[ndx];
+
+       deviceFragmentDensityMapFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+       deviceFragmentDensityMapFeaturesEXT[ndx].pNext = &deviceFragmentDensityMap2FeaturesEXT[ndx];
+
+       deviceFragmentDensityMap2FeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
+       deviceFragmentDensityMap2FeaturesEXT[ndx].pNext = &deviceShaderIntegerDotProductFeaturesKHR[ndx];
+
+       deviceShaderIntegerDotProductFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR;
+       deviceShaderIntegerDotProductFeaturesKHR[ndx].pNext = DE_NULL;
+
+       deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
+       extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+       extFeatures.pNext = &deviceConditionalRenderingFeaturesEXT[ndx];
+       vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+}
+
+if (isConditionalRenderingFeaturesEXT)
+       log << TestLog::Message << deviceConditionalRenderingFeaturesEXT[0] << TestLog::EndMessage;
+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 (isBufferDeviceAddressFeaturesEXT)
+       log << TestLog::Message << deviceBufferDeviceAddressFeaturesEXT[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 (isFragmentDensityMapFeaturesEXT)
+       log << TestLog::Message << deviceFragmentDensityMapFeaturesEXT[0] << TestLog::EndMessage;
+if (isFragmentDensityMap2FeaturesEXT)
+       log << TestLog::Message << deviceFragmentDensityMap2FeaturesEXT[0] << TestLog::EndMessage;
+if (isShaderIntegerDotProductFeaturesKHR)
+       log << TestLog::Message << deviceShaderIntegerDotProductFeaturesKHR[0] << TestLog::EndMessage;
+
+if (isConditionalRenderingFeaturesEXT &&
+       (deviceConditionalRenderingFeaturesEXT[0].conditionalRendering != deviceConditionalRenderingFeaturesEXT[1].conditionalRendering ||
+        deviceConditionalRenderingFeaturesEXT[0].inheritedConditionalRendering != deviceConditionalRenderingFeaturesEXT[1].inheritedConditionalRendering))
+{
+               TCU_FAIL("Mismatch between VkPhysicalDeviceConditionalRenderingFeaturesEXT");
+}
+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 (isBufferDeviceAddressFeaturesEXT &&
+       (deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddress != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddress ||
+        deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressCaptureReplay ||
+        deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressMultiDevice))
+{
+               TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeaturesEXT");
+}
+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");
+}
+if (isFragmentDensityMapFeaturesEXT &&
+       (deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMap != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMap ||
+        deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMapDynamic != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMapDynamic ||
+        deviceFragmentDensityMapFeaturesEXT[0].fragmentDensityMapNonSubsampledImages != deviceFragmentDensityMapFeaturesEXT[1].fragmentDensityMapNonSubsampledImages))
+{
+               TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentDensityMapFeaturesEXT");
+}
+if (isFragmentDensityMap2FeaturesEXT &&
+       (deviceFragmentDensityMap2FeaturesEXT[0].fragmentDensityMapDeferred != deviceFragmentDensityMap2FeaturesEXT[1].fragmentDensityMapDeferred))
+{
+               TCU_FAIL("Mismatch between VkPhysicalDeviceFragmentDensityMap2FeaturesEXT");
+}
+if (isShaderIntegerDotProductFeaturesKHR &&
+       (deviceShaderIntegerDotProductFeaturesKHR[0].shaderIntegerDotProduct != deviceShaderIntegerDotProductFeaturesKHR[1].shaderIntegerDotProduct))
+{
+               TCU_FAIL("Mismatch between VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR");
+}
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDecl.inl b/external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDecl.inl
new file mode 100644 (file)
index 0000000..9f03629
--- /dev/null
@@ -0,0 +1,99 @@
+/* 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::VkPhysicalDeviceAccelerationStructureFeaturesKHR&                            getAccelerationStructureFeatures                                (void) const;
+const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT&                                               getASTCDecodeFeaturesEXT                                                (void) const;
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                   getBlendOperationAdvancedFeaturesEXT                    (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures&                                 getBufferDeviceAddressFeatures                                  (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              getBufferDeviceAddressFeaturesEXT                               (void) const;
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                   getCoherentMemoryFeaturesAMD                                    (void) const;
+const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                 getColorWriteEnableFeaturesEXT                                  (void) const;
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                  getComputeShaderDerivativesFeatures                             (void) const;
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             getConditionalRenderingFeaturesEXT                              (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                 getCooperativeMatrixFeatures                                    (void) const;
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV&                                        getCornerSampledImageFeatures                                   (void) const;
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV&                             getCoverageReductionModeFeatures                                (void) const;
+const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                        getCustomBorderColorFeaturesEXT                                 (void) const;
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&  getDedicatedAllocationImageAliasingFeatures             (void) const;
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  getDepthClipEnableFeaturesEXT                                   (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                  getDescriptorIndexingFeatures                                   (void) const;
+const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&                   getDeviceGeneratedCommandsFeatures                              (void) const;
+const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&                               getDeviceMemoryReportFeaturesEXT                                (void) const;
+const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV&                                 getDiagnosticsConfigFeatures                                    (void) const;
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV&                                  getExclusiveScissorFeatures                                             (void) const;
+const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                             getExtendedDynamicStateFeaturesEXT                              (void) const;
+const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                            getExtendedDynamicState2FeaturesEXT                             (void) const;
+const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&                                        getExternalMemoryRDMAFeatures                                   (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               getFragmentDensityMapFeaturesEXT                                (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&                              getFragmentDensityMap2FeaturesEXT                               (void) const;
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                 getFragmentShaderBarycentricFeatures                    (void) const;
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  getFragmentShaderInterlockFeaturesEXT                   (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                              getFragmentShadingRateFeatures                                  (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&                  getFragmentShadingRateEnumsFeatures                             (void) const;
+const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT&                              getGlobalPriorityQueryFeaturesEXT                               (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::VkPhysicalDeviceInheritedViewportScissorFeaturesNV&                  getInheritedViewportScissorFeatures                             (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               getInlineUniformBlockFeaturesEXT                                (void) const;
+const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&                                        getInvocationMaskFeaturesHUAWEI                                 (void) const;
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        getLineRasterizationFeaturesEXT                                 (void) const;
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   getMemoryPriorityFeaturesEXT                                    (void) const;
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV&                                                        getMeshShaderFeatures                                                   (void) const;
+const vk::VkPhysicalDeviceMultiviewFeatures&                                                   getMultiviewFeatures                                                    (void) const;
+const vk::VkPhysicalDeviceMultiDrawFeaturesEXT&                                                        getMultiDrawFeaturesEXT                                                 (void) const;
+const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE&                  getMutableDescriptorTypeFeaturesVALVE                   (void) const;
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                 getPerformanceQueryFeatures                                             (void) const;
+const vk::VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT&             getPipelineCreationCacheControlFeaturesEXT              (void) const;
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&             getPipelineExecutablePropertiesFeatures                 (void) const;
+const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR&                                        getPortabilitySubsetFeatures                                    (void) const;
+const vk::VkPhysicalDevicePresentIdFeaturesKHR&                                                        getPresentIdFeatures                                                    (void) const;
+const vk::VkPhysicalDevicePresentWaitFeaturesKHR&                                              getPresentWaitFeatures                                                  (void) const;
+const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&             getPrimitiveTopologyListRestartFeaturesEXT              (void) const;
+const vk::VkPhysicalDevicePrivateDataFeaturesEXT&                                              getPrivateDataFeaturesEXT                                               (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                             getProtectedMemoryFeatures                                              (void) const;
+const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT&                                  getProvokingVertexFeaturesEXT                                   (void) const;
+const vk::VkPhysicalDeviceRayQueryFeaturesKHR&                                                 getRayQueryFeatures                                                             (void) const;
+const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&                              getRayTracingMotionBlurFeatures                                 (void) const;
+const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR&                               getRayTracingPipelineFeatures                                   (void) const;
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                        getRepresentativeFragmentTestFeatures                   (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::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&                               getShaderAtomicFloat2FeaturesEXT                                (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::VkPhysicalDeviceShaderImageFootprintFeaturesNV&                              getShaderImageFootprintFeatures                                 (void) const;
+const vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR&                  getShaderIntegerDotProductFeatures                              (void) const;
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                        getShaderIntegerFunctions2FeaturesINTEL                 (void) const;
+const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&                                  getShaderSMBuiltinsFeatures                                             (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                 getShaderSubgroupExtendedTypesFeatures                  (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& getShaderSubgroupUniformControlFlowFeatures             (void) const;
+const vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                        getShaderTerminateInvocationFeatures                    (void) const;
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV&                                  getShadingRateImageFeatures                                             (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              getSubgroupSizeControlFeaturesEXT                               (void) const;
+const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&                                        getSubpassShadingFeaturesHUAWEI                                 (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::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        getTransformFeedbackFeaturesEXT                                 (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::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&            getWorkgroupMemoryExplicitLayoutFeatures                (void) const;
+const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                            getYcbcr2Plane444FormatsFeaturesEXT                             (void) const;
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 getYcbcrImageArraysFeaturesEXT                                  (void) const;
+const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR&            getZeroInitializeWorkgroupMemoryFeatures                (void) const;
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDefs.inl b/external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDefs.inl
new file mode 100644 (file)
index 0000000..8bda414
--- /dev/null
@@ -0,0 +1,99 @@
+/* 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::VkPhysicalDeviceAccelerationStructureFeaturesKHR&                            Context::getAccelerationStructureFeatures                               (void) const { return m_device->getAccelerationStructureFeatures();                             }
+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::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              Context::getBufferDeviceAddressFeaturesEXT                              (void) const { return m_device->getBufferDeviceAddressFeaturesEXT();                    }
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                   Context::getCoherentMemoryFeaturesAMD                                   (void) const { return m_device->getCoherentMemoryFeaturesAMD();                                 }
+const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                 Context::getColorWriteEnableFeaturesEXT                                 (void) const { return m_device->getColorWriteEnableFeaturesEXT();                               }
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                  Context::getComputeShaderDerivativesFeatures                    (void) const { return m_device->getComputeShaderDerivativesFeatures();                  }
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             Context::getConditionalRenderingFeaturesEXT                             (void) const { return m_device->getConditionalRenderingFeaturesEXT();                   }
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                 Context::getCooperativeMatrixFeatures                                   (void) const { return m_device->getCooperativeMatrixFeatures();                                 }
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV&                                        Context::getCornerSampledImageFeatures                                  (void) const { return m_device->getCornerSampledImageFeatures();                                }
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV&                             Context::getCoverageReductionModeFeatures                               (void) const { return m_device->getCoverageReductionModeFeatures();                             }
+const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                        Context::getCustomBorderColorFeaturesEXT                                (void) const { return m_device->getCustomBorderColorFeaturesEXT();                              }
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&  Context::getDedicatedAllocationImageAliasingFeatures    (void) const { return m_device->getDedicatedAllocationImageAliasingFeatures();  }
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  Context::getDepthClipEnableFeaturesEXT                                  (void) const { return m_device->getDepthClipEnableFeaturesEXT();                                }
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                  Context::getDescriptorIndexingFeatures                                  (void) const { return m_device->getDescriptorIndexingFeatures();                                }
+const vk::VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&                   Context::getDeviceGeneratedCommandsFeatures                             (void) const { return m_device->getDeviceGeneratedCommandsFeatures();                   }
+const vk::VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&                               Context::getDeviceMemoryReportFeaturesEXT                               (void) const { return m_device->getDeviceMemoryReportFeaturesEXT();                             }
+const vk::VkPhysicalDeviceDiagnosticsConfigFeaturesNV&                                 Context::getDiagnosticsConfigFeatures                                   (void) const { return m_device->getDiagnosticsConfigFeatures();                                 }
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV&                                  Context::getExclusiveScissorFeatures                                    (void) const { return m_device->getExclusiveScissorFeatures();                                  }
+const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                             Context::getExtendedDynamicStateFeaturesEXT                             (void) const { return m_device->getExtendedDynamicStateFeaturesEXT();                   }
+const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                            Context::getExtendedDynamicState2FeaturesEXT                    (void) const { return m_device->getExtendedDynamicState2FeaturesEXT();                  }
+const vk::VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&                                        Context::getExternalMemoryRDMAFeatures                                  (void) const { return m_device->getExternalMemoryRDMAFeatures();                                }
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               Context::getFragmentDensityMapFeaturesEXT                               (void) const { return m_device->getFragmentDensityMapFeaturesEXT();                             }
+const vk::VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&                              Context::getFragmentDensityMap2FeaturesEXT                              (void) const { return m_device->getFragmentDensityMap2FeaturesEXT();                    }
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                 Context::getFragmentShaderBarycentricFeatures                   (void) const { return m_device->getFragmentShaderBarycentricFeatures();                 }
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  Context::getFragmentShaderInterlockFeaturesEXT                  (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT();                }
+const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                              Context::getFragmentShadingRateFeatures                                 (void) const { return m_device->getFragmentShadingRateFeatures();                               }
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&                  Context::getFragmentShadingRateEnumsFeatures                    (void) const { return m_device->getFragmentShadingRateEnumsFeatures();                  }
+const vk::VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT&                              Context::getGlobalPriorityQueryFeaturesEXT                              (void) const { return m_device->getGlobalPriorityQueryFeaturesEXT();                    }
+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::VkPhysicalDeviceInheritedViewportScissorFeaturesNV&                  Context::getInheritedViewportScissorFeatures                    (void) const { return m_device->getInheritedViewportScissorFeatures();                  }
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               Context::getInlineUniformBlockFeaturesEXT                               (void) const { return m_device->getInlineUniformBlockFeaturesEXT();                             }
+const vk::VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&                                        Context::getInvocationMaskFeaturesHUAWEI                                (void) const { return m_device->getInvocationMaskFeaturesHUAWEI();                              }
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        Context::getLineRasterizationFeaturesEXT                                (void) const { return m_device->getLineRasterizationFeaturesEXT();                              }
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   Context::getMemoryPriorityFeaturesEXT                                   (void) const { return m_device->getMemoryPriorityFeaturesEXT();                                 }
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV&                                                        Context::getMeshShaderFeatures                                                  (void) const { return m_device->getMeshShaderFeatures();                                                }
+const vk::VkPhysicalDeviceMultiviewFeatures&                                                   Context::getMultiviewFeatures                                                   (void) const { return m_device->getMultiviewFeatures();                                                 }
+const vk::VkPhysicalDeviceMultiDrawFeaturesEXT&                                                        Context::getMultiDrawFeaturesEXT                                                (void) const { return m_device->getMultiDrawFeaturesEXT();                                              }
+const vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE&                  Context::getMutableDescriptorTypeFeaturesVALVE                  (void) const { return m_device->getMutableDescriptorTypeFeaturesVALVE();                }
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                 Context::getPerformanceQueryFeatures                                    (void) const { return m_device->getPerformanceQueryFeatures();                                  }
+const vk::VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT&             Context::getPipelineCreationCacheControlFeaturesEXT             (void) const { return m_device->getPipelineCreationCacheControlFeaturesEXT();   }
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&             Context::getPipelineExecutablePropertiesFeatures                (void) const { return m_device->getPipelineExecutablePropertiesFeatures();              }
+const vk::VkPhysicalDevicePortabilitySubsetFeaturesKHR&                                        Context::getPortabilitySubsetFeatures                                   (void) const { return m_device->getPortabilitySubsetFeatures();                                 }
+const vk::VkPhysicalDevicePresentIdFeaturesKHR&                                                        Context::getPresentIdFeatures                                                   (void) const { return m_device->getPresentIdFeatures();                                                 }
+const vk::VkPhysicalDevicePresentWaitFeaturesKHR&                                              Context::getPresentWaitFeatures                                                 (void) const { return m_device->getPresentWaitFeatures();                                               }
+const vk::VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&             Context::getPrimitiveTopologyListRestartFeaturesEXT             (void) const { return m_device->getPrimitiveTopologyListRestartFeaturesEXT();   }
+const vk::VkPhysicalDevicePrivateDataFeaturesEXT&                                              Context::getPrivateDataFeaturesEXT                                              (void) const { return m_device->getPrivateDataFeaturesEXT();                                    }
+const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                             Context::getProtectedMemoryFeatures                                             (void) const { return m_device->getProtectedMemoryFeatures();                                   }
+const vk::VkPhysicalDeviceProvokingVertexFeaturesEXT&                                  Context::getProvokingVertexFeaturesEXT                                  (void) const { return m_device->getProvokingVertexFeaturesEXT();                                }
+const vk::VkPhysicalDeviceRayQueryFeaturesKHR&                                                 Context::getRayQueryFeatures                                                    (void) const { return m_device->getRayQueryFeatures();                                                  }
+const vk::VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&                              Context::getRayTracingMotionBlurFeatures                                (void) const { return m_device->getRayTracingMotionBlurFeatures();                              }
+const vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR&                               Context::getRayTracingPipelineFeatures                                  (void) const { return m_device->getRayTracingPipelineFeatures();                                }
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                        Context::getRepresentativeFragmentTestFeatures                  (void) const { return m_device->getRepresentativeFragmentTestFeatures();                }
+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::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&                               Context::getShaderAtomicFloat2FeaturesEXT                               (void) const { return m_device->getShaderAtomicFloat2FeaturesEXT();                             }
+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::VkPhysicalDeviceShaderImageFootprintFeaturesNV&                              Context::getShaderImageFootprintFeatures                                (void) const { return m_device->getShaderImageFootprintFeatures();                              }
+const vk::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR&                  Context::getShaderIntegerDotProductFeatures                             (void) const { return m_device->getShaderIntegerDotProductFeatures();                   }
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                        Context::getShaderIntegerFunctions2FeaturesINTEL                (void) const { return m_device->getShaderIntegerFunctions2FeaturesINTEL();              }
+const vk::VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&                                  Context::getShaderSMBuiltinsFeatures                                    (void) const { return m_device->getShaderSMBuiltinsFeatures();                                  }
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                 Context::getShaderSubgroupExtendedTypesFeatures                 (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures();               }
+const vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& Context::getShaderSubgroupUniformControlFlowFeatures    (void) const { return m_device->getShaderSubgroupUniformControlFlowFeatures();  }
+const vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                        Context::getShaderTerminateInvocationFeatures                   (void) const { return m_device->getShaderTerminateInvocationFeatures();                 }
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV&                                  Context::getShadingRateImageFeatures                                    (void) const { return m_device->getShadingRateImageFeatures();                                  }
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              Context::getSubgroupSizeControlFeaturesEXT                              (void) const { return m_device->getSubgroupSizeControlFeaturesEXT();                    }
+const vk::VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&                                        Context::getSubpassShadingFeaturesHUAWEI                                (void) const { return m_device->getSubpassShadingFeaturesHUAWEI();                              }
+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::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        Context::getTransformFeedbackFeaturesEXT                                (void) const { return m_device->getTransformFeedbackFeaturesEXT();                              }
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                 Context::getUniformBufferStandardLayoutFeatures                 (void) const { return m_device->getUniformBufferStandardLayoutFeatures();               }
+const vk::VkPhysicalDeviceVariablePointersFeatures&                                            Context::getVariablePointersFeatures                                    (void) const { return m_device->getVariablePointersFeatures();                                  }
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                   Context::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::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&            Context::getWorkgroupMemoryExplicitLayoutFeatures               (void) const { return m_device->getWorkgroupMemoryExplicitLayoutFeatures();             }
+const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                            Context::getYcbcr2Plane444FormatsFeaturesEXT                    (void) const { return m_device->getYcbcr2Plane444FormatsFeaturesEXT();                  }
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 Context::getYcbcrImageArraysFeaturesEXT                                 (void) const { return m_device->getYcbcrImageArraysFeaturesEXT();                               }
+const vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR&            Context::getZeroInitializeWorkgroupMemoryFeatures               (void) const { return m_device->getZeroInitializeWorkgroupMemoryFeatures();             }
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl b/external/vulkancts/framework/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
new file mode 100644 (file)
index 0000000..96e98a5
--- /dev/null
@@ -0,0 +1,99 @@
+/* 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 VkPhysicalDeviceAccelerationStructureFeaturesKHR&                                getAccelerationStructureFeatures                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>();                              }
+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 VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                          getBufferDeviceAddressFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>();                                }
+const VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                       getCoherentMemoryFeaturesAMD                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>();                                             }
+const VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                     getColorWriteEnableFeaturesEXT                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>();                                   }
+const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                      getComputeShaderDerivativesFeatures                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>();                    }
+const VkPhysicalDeviceConditionalRenderingFeaturesEXT&                         getConditionalRenderingFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>();                               }
+const VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                     getCooperativeMatrixFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>();                                   }
+const VkPhysicalDeviceCornerSampledImageFeaturesNV&                                    getCornerSampledImageFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>();                                  }
+const VkPhysicalDeviceCoverageReductionModeFeaturesNV&                         getCoverageReductionModeFeatures                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>();                               }
+const VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                    getCustomBorderColorFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>();                                  }
+const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&      getDedicatedAllocationImageAliasingFeatures             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>();    }
+const VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                      getDepthClipEnableFeaturesEXT                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>();                                    }
+const VkPhysicalDeviceDescriptorIndexingFeatures&                                      getDescriptorIndexingFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>();                                    }
+const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&                       getDeviceGeneratedCommandsFeatures                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>();                             }
+const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&                           getDeviceMemoryReportFeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>();                                 }
+const VkPhysicalDeviceDiagnosticsConfigFeaturesNV&                                     getDiagnosticsConfigFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>();                                   }
+const VkPhysicalDeviceExclusiveScissorFeaturesNV&                                      getExclusiveScissorFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>();                                    }
+const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                         getExtendedDynamicStateFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>();                               }
+const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                                getExtendedDynamicState2FeaturesEXT                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>();                              }
+const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&                                    getExternalMemoryRDMAFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>();                                  }
+const VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                           getFragmentDensityMapFeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>();                                 }
+const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&                          getFragmentDensityMap2FeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>();                                }
+const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                     getFragmentShaderBarycentricFeatures                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>();                   }
+const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                      getFragmentShaderInterlockFeaturesEXT                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>();                    }
+const VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                          getFragmentShadingRateFeatures                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>();                                }
+const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&                      getFragmentShadingRateEnumsFeatures                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>();                    }
+const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT&                          getGlobalPriorityQueryFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT>();                                }
+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 VkPhysicalDeviceInheritedViewportScissorFeaturesNV&                      getInheritedViewportScissorFeatures                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>();                    }
+const VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                           getInlineUniformBlockFeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>();                                 }
+const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&                                    getInvocationMaskFeaturesHUAWEI                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>();                                  }
+const VkPhysicalDeviceLineRasterizationFeaturesEXT&                                    getLineRasterizationFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>();                                  }
+const VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                       getMemoryPriorityFeaturesEXT                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>();                                             }
+const VkPhysicalDeviceMeshShaderFeaturesNV&                                                    getMeshShaderFeatures                                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>();                                                  }
+const VkPhysicalDeviceMultiviewFeatures&                                                       getMultiviewFeatures                                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>();                                                             }
+const VkPhysicalDeviceMultiDrawFeaturesEXT&                                                    getMultiDrawFeaturesEXT                                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiDrawFeaturesEXT>();                                                  }
+const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE&                      getMutableDescriptorTypeFeaturesVALVE                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>();                    }
+const VkPhysicalDevicePerformanceQueryFeaturesKHR&                                     getPerformanceQueryFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();                                   }
+const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT&         getPipelineCreationCacheControlFeaturesEXT              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>();               }
+const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&         getPipelineExecutablePropertiesFeatures                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>();               }
+const VkPhysicalDevicePortabilitySubsetFeaturesKHR&                                    getPortabilitySubsetFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR>();                                  }
+const VkPhysicalDevicePresentIdFeaturesKHR&                                                    getPresentIdFeatures                                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentIdFeaturesKHR>();                                                  }
+const VkPhysicalDevicePresentWaitFeaturesKHR&                                          getPresentWaitFeatures                                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePresentWaitFeaturesKHR>();                                                }
+const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&         getPrimitiveTopologyListRestartFeaturesEXT              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>();               }
+const VkPhysicalDevicePrivateDataFeaturesEXT&                                          getPrivateDataFeaturesEXT                                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePrivateDataFeaturesEXT>();                                                }
+const VkPhysicalDeviceProtectedMemoryFeatures&                                         getProtectedMemoryFeatures                                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>();                                               }
+const VkPhysicalDeviceProvokingVertexFeaturesEXT&                                      getProvokingVertexFeaturesEXT                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>();                                    }
+const VkPhysicalDeviceRayQueryFeaturesKHR&                                                     getRayQueryFeatures                                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayQueryFeaturesKHR>();                                                   }
+const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&                          getRayTracingMotionBlurFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>();                                }
+const VkPhysicalDeviceRayTracingPipelineFeaturesKHR&                           getRayTracingPipelineFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>();                                 }
+const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                    getRepresentativeFragmentTestFeatures                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>();                  }
+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 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&                           getShaderAtomicFloat2FeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>();                                 }
+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 VkPhysicalDeviceShaderImageFootprintFeaturesNV&                          getShaderImageFootprintFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>();                                }
+const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR&                      getShaderIntegerDotProductFeatures                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>();                    }
+const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                    getShaderIntegerFunctions2FeaturesINTEL                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>();                  }
+const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&                                      getShaderSMBuiltinsFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>();                                    }
+const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                     getShaderSubgroupExtendedTypesFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>();                   }
+const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&     getShaderSubgroupUniformControlFlowFeatures             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>();   }
+const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                    getShaderTerminateInvocationFeatures                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>();                  }
+const VkPhysicalDeviceShadingRateImageFeaturesNV&                                      getShadingRateImageFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>();                                    }
+const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                          getSubgroupSizeControlFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();                                }
+const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&                                    getSubpassShadingFeaturesHUAWEI                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>();                                  }
+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 VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                    getTransformFeedbackFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>();                                  }
+const VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                     getUniformBufferStandardLayoutFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>();                   }
+const VkPhysicalDeviceVariablePointersFeatures&                                                getVariablePointersFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>();                                              }
+const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                       getVertexAttributeDivisorFeaturesEXT                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>();                             }
+const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&                      getVertexInputDynamicStateFeaturesEXT                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>();                    }
+const VkPhysicalDeviceVulkanMemoryModelFeatures&                                       getVulkanMemoryModelFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>();                                             }
+const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&                getWorkgroupMemoryExplicitLayoutFeatures                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>();              }
+const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                                getYcbcr2Plane444FormatsFeaturesEXT                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>();                              }
+const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                     getYcbcrImageArraysFeaturesEXT                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();                                   }
+const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR&                getZeroInitializeWorkgroupMemoryFeatures                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>();              }
diff --git a/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..aa3b202
--- /dev/null
@@ -0,0 +1,366 @@
+/* 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;
+FreeMemoryFunc                                                                         freeMemory;
+MapMemoryFunc                                                                          mapMemory;
+UnmapMemoryFunc                                                                                unmapMemory;
+FlushMappedMemoryRangesFunc                                                    flushMappedMemoryRanges;
+InvalidateMappedMemoryRangesFunc                                       invalidateMappedMemoryRanges;
+GetDeviceMemoryCommitmentFunc                                          getDeviceMemoryCommitment;
+BindBufferMemoryFunc                                                           bindBufferMemory;
+BindImageMemoryFunc                                                                    bindImageMemory;
+GetBufferMemoryRequirementsFunc                                                getBufferMemoryRequirements;
+GetImageMemoryRequirementsFunc                                         getImageMemoryRequirements;
+GetImageSparseMemoryRequirementsFunc                           getImageSparseMemoryRequirements;
+QueueBindSparseFunc                                                                    queueBindSparse;
+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;
+DestroyQueryPoolFunc                                                           destroyQueryPool;
+GetQueryPoolResultsFunc                                                                getQueryPoolResults;
+CreateBufferFunc                                                                       createBuffer;
+DestroyBufferFunc                                                                      destroyBuffer;
+CreateBufferViewFunc                                                           createBufferView;
+DestroyBufferViewFunc                                                          destroyBufferView;
+CreateImageFunc                                                                                createImage;
+DestroyImageFunc                                                                       destroyImage;
+GetImageSubresourceLayoutFunc                                          getImageSubresourceLayout;
+CreateImageViewFunc                                                                    createImageView;
+DestroyImageViewFunc                                                           destroyImageView;
+CreateShaderModuleFunc                                                         createShaderModule;
+DestroyShaderModuleFunc                                                                destroyShaderModule;
+CreatePipelineCacheFunc                                                                createPipelineCache;
+DestroyPipelineCacheFunc                                                       destroyPipelineCache;
+GetPipelineCacheDataFunc                                                       getPipelineCacheData;
+MergePipelineCachesFunc                                                                mergePipelineCaches;
+CreateGraphicsPipelinesFunc                                                    createGraphicsPipelines;
+CreateComputePipelinesFunc                                                     createComputePipelines;
+DestroyPipelineFunc                                                                    destroyPipeline;
+CreatePipelineLayoutFunc                                                       createPipelineLayout;
+DestroyPipelineLayoutFunc                                                      destroyPipelineLayout;
+CreateSamplerFunc                                                                      createSampler;
+DestroySamplerFunc                                                                     destroySampler;
+CreateDescriptorSetLayoutFunc                                          createDescriptorSetLayout;
+DestroyDescriptorSetLayoutFunc                                         destroyDescriptorSetLayout;
+CreateDescriptorPoolFunc                                                       createDescriptorPool;
+DestroyDescriptorPoolFunc                                                      destroyDescriptorPool;
+ResetDescriptorPoolFunc                                                                resetDescriptorPool;
+AllocateDescriptorSetsFunc                                                     allocateDescriptorSets;
+FreeDescriptorSetsFunc                                                         freeDescriptorSets;
+UpdateDescriptorSetsFunc                                                       updateDescriptorSets;
+CreateFramebufferFunc                                                          createFramebuffer;
+DestroyFramebufferFunc                                                         destroyFramebuffer;
+CreateRenderPassFunc                                                           createRenderPass;
+DestroyRenderPassFunc                                                          destroyRenderPass;
+GetRenderAreaGranularityFunc                                           getRenderAreaGranularity;
+CreateCommandPoolFunc                                                          createCommandPool;
+DestroyCommandPoolFunc                                                         destroyCommandPool;
+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;
+BindBufferMemory2Func                                                          bindBufferMemory2;
+BindImageMemory2Func                                                           bindImageMemory2;
+GetDeviceGroupPeerMemoryFeaturesFunc                           getDeviceGroupPeerMemoryFeatures;
+CmdSetDeviceMaskFunc                                                           cmdSetDeviceMask;
+CmdDispatchBaseFunc                                                                    cmdDispatchBase;
+GetImageMemoryRequirements2Func                                                getImageMemoryRequirements2;
+GetBufferMemoryRequirements2Func                                       getBufferMemoryRequirements2;
+GetImageSparseMemoryRequirements2Func                          getImageSparseMemoryRequirements2;
+TrimCommandPoolFunc                                                                    trimCommandPool;
+GetDeviceQueue2Func                                                                    getDeviceQueue2;
+CreateSamplerYcbcrConversionFunc                                       createSamplerYcbcrConversion;
+DestroySamplerYcbcrConversionFunc                                      destroySamplerYcbcrConversion;
+CreateDescriptorUpdateTemplateFunc                                     createDescriptorUpdateTemplate;
+DestroyDescriptorUpdateTemplateFunc                                    destroyDescriptorUpdateTemplate;
+UpdateDescriptorSetWithTemplateFunc                                    updateDescriptorSetWithTemplate;
+GetDescriptorSetLayoutSupportFunc                                      getDescriptorSetLayoutSupport;
+CmdDrawIndirectCountFunc                                                       cmdDrawIndirectCount;
+CmdDrawIndexedIndirectCountFunc                                                cmdDrawIndexedIndirectCount;
+CreateRenderPass2Func                                                          createRenderPass2;
+CmdBeginRenderPass2Func                                                                cmdBeginRenderPass2;
+CmdNextSubpass2Func                                                                    cmdNextSubpass2;
+CmdEndRenderPass2Func                                                          cmdEndRenderPass2;
+ResetQueryPoolFunc                                                                     resetQueryPool;
+GetSemaphoreCounterValueFunc                                           getSemaphoreCounterValue;
+WaitSemaphoresFunc                                                                     waitSemaphores;
+SignalSemaphoreFunc                                                                    signalSemaphore;
+GetBufferDeviceAddressFunc                                                     getBufferDeviceAddress;
+GetBufferOpaqueCaptureAddressFunc                                      getBufferOpaqueCaptureAddress;
+GetDeviceMemoryOpaqueCaptureAddressFunc                                getDeviceMemoryOpaqueCaptureAddress;
+CreateSwapchainKHRFunc                                                         createSwapchainKHR;
+DestroySwapchainKHRFunc                                                                destroySwapchainKHR;
+GetSwapchainImagesKHRFunc                                                      getSwapchainImagesKHR;
+AcquireNextImageKHRFunc                                                                acquireNextImageKHR;
+QueuePresentKHRFunc                                                                    queuePresentKHR;
+GetDeviceGroupPresentCapabilitiesKHRFunc                       getDeviceGroupPresentCapabilitiesKHR;
+GetDeviceGroupSurfacePresentModesKHRFunc                       getDeviceGroupSurfacePresentModesKHR;
+AcquireNextImage2KHRFunc                                                       acquireNextImage2KHR;
+CreateSharedSwapchainsKHRFunc                                          createSharedSwapchainsKHR;
+GetMemoryFdKHRFunc                                                                     getMemoryFdKHR;
+GetMemoryFdPropertiesKHRFunc                                           getMemoryFdPropertiesKHR;
+ImportSemaphoreFdKHRFunc                                                       importSemaphoreFdKHR;
+GetSemaphoreFdKHRFunc                                                          getSemaphoreFdKHR;
+CmdPushDescriptorSetKHRFunc                                                    cmdPushDescriptorSetKHR;
+CmdPushDescriptorSetWithTemplateKHRFunc                                cmdPushDescriptorSetWithTemplateKHR;
+GetSwapchainStatusKHRFunc                                                      getSwapchainStatusKHR;
+ImportFenceFdKHRFunc                                                           importFenceFdKHR;
+GetFenceFdKHRFunc                                                                      getFenceFdKHR;
+AcquireProfilingLockKHRFunc                                                    acquireProfilingLockKHR;
+ReleaseProfilingLockKHRFunc                                                    releaseProfilingLockKHR;
+CmdSetFragmentShadingRateKHRFunc                                       cmdSetFragmentShadingRateKHR;
+WaitForPresentKHRFunc                                                          waitForPresentKHR;
+CreateDeferredOperationKHRFunc                                         createDeferredOperationKHR;
+DestroyDeferredOperationKHRFunc                                                destroyDeferredOperationKHR;
+GetDeferredOperationMaxConcurrencyKHRFunc                      getDeferredOperationMaxConcurrencyKHR;
+GetDeferredOperationResultKHRFunc                                      getDeferredOperationResultKHR;
+DeferredOperationJoinKHRFunc                                           deferredOperationJoinKHR;
+GetPipelineExecutablePropertiesKHRFunc                         getPipelineExecutablePropertiesKHR;
+GetPipelineExecutableStatisticsKHRFunc                         getPipelineExecutableStatisticsKHR;
+GetPipelineExecutableInternalRepresentationsKHRFunc    getPipelineExecutableInternalRepresentationsKHR;
+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;
+DebugMarkerSetObjectTagEXTFunc                                         debugMarkerSetObjectTagEXT;
+DebugMarkerSetObjectNameEXTFunc                                                debugMarkerSetObjectNameEXT;
+CmdDebugMarkerBeginEXTFunc                                                     cmdDebugMarkerBeginEXT;
+CmdDebugMarkerEndEXTFunc                                                       cmdDebugMarkerEndEXT;
+CmdDebugMarkerInsertEXTFunc                                                    cmdDebugMarkerInsertEXT;
+CmdBindTransformFeedbackBuffersEXTFunc                         cmdBindTransformFeedbackBuffersEXT;
+CmdBeginTransformFeedbackEXTFunc                                       cmdBeginTransformFeedbackEXT;
+CmdEndTransformFeedbackEXTFunc                                         cmdEndTransformFeedbackEXT;
+CmdBeginQueryIndexedEXTFunc                                                    cmdBeginQueryIndexedEXT;
+CmdEndQueryIndexedEXTFunc                                                      cmdEndQueryIndexedEXT;
+CmdDrawIndirectByteCountEXTFunc                                                cmdDrawIndirectByteCountEXT;
+CreateCuModuleNVXFunc                                                          createCuModuleNVX;
+CreateCuFunctionNVXFunc                                                                createCuFunctionNVX;
+DestroyCuModuleNVXFunc                                                         destroyCuModuleNVX;
+DestroyCuFunctionNVXFunc                                                       destroyCuFunctionNVX;
+CmdCuLaunchKernelNVXFunc                                                       cmdCuLaunchKernelNVX;
+GetImageViewHandleNVXFunc                                                      getImageViewHandleNVX;
+GetImageViewAddressNVXFunc                                                     getImageViewAddressNVX;
+CmdDrawIndirectCountAMDFunc                                                    cmdDrawIndirectCountAMD;
+CmdDrawIndexedIndirectCountAMDFunc                                     cmdDrawIndexedIndirectCountAMD;
+GetShaderInfoAMDFunc                                                           getShaderInfoAMD;
+CmdBeginConditionalRenderingEXTFunc                                    cmdBeginConditionalRenderingEXT;
+CmdEndConditionalRenderingEXTFunc                                      cmdEndConditionalRenderingEXT;
+CmdSetViewportWScalingNVFunc                                           cmdSetViewportWScalingNV;
+DisplayPowerControlEXTFunc                                                     displayPowerControlEXT;
+RegisterDeviceEventEXTFunc                                                     registerDeviceEventEXT;
+RegisterDisplayEventEXTFunc                                                    registerDisplayEventEXT;
+GetSwapchainCounterEXTFunc                                                     getSwapchainCounterEXT;
+GetRefreshCycleDurationGOOGLEFunc                                      getRefreshCycleDurationGOOGLE;
+GetPastPresentationTimingGOOGLEFunc                                    getPastPresentationTimingGOOGLE;
+CmdSetDiscardRectangleEXTFunc                                          cmdSetDiscardRectangleEXT;
+SetHdrMetadataEXTFunc                                                          setHdrMetadataEXT;
+SetDebugUtilsObjectNameEXTFunc                                         setDebugUtilsObjectNameEXT;
+SetDebugUtilsObjectTagEXTFunc                                          setDebugUtilsObjectTagEXT;
+QueueBeginDebugUtilsLabelEXTFunc                                       queueBeginDebugUtilsLabelEXT;
+QueueEndDebugUtilsLabelEXTFunc                                         queueEndDebugUtilsLabelEXT;
+QueueInsertDebugUtilsLabelEXTFunc                                      queueInsertDebugUtilsLabelEXT;
+CmdBeginDebugUtilsLabelEXTFunc                                         cmdBeginDebugUtilsLabelEXT;
+CmdEndDebugUtilsLabelEXTFunc                                           cmdEndDebugUtilsLabelEXT;
+CmdInsertDebugUtilsLabelEXTFunc                                                cmdInsertDebugUtilsLabelEXT;
+CmdSetSampleLocationsEXTFunc                                           cmdSetSampleLocationsEXT;
+GetImageDrmFormatModifierPropertiesEXTFunc                     getImageDrmFormatModifierPropertiesEXT;
+CreateValidationCacheEXTFunc                                           createValidationCacheEXT;
+DestroyValidationCacheEXTFunc                                          destroyValidationCacheEXT;
+MergeValidationCachesEXTFunc                                           mergeValidationCachesEXT;
+GetValidationCacheDataEXTFunc                                          getValidationCacheDataEXT;
+CmdBindShadingRateImageNVFunc                                          cmdBindShadingRateImageNV;
+CmdSetViewportShadingRatePaletteNVFunc                         cmdSetViewportShadingRatePaletteNV;
+CmdSetCoarseSampleOrderNVFunc                                          cmdSetCoarseSampleOrderNV;
+CreateAccelerationStructureNVFunc                                      createAccelerationStructureNV;
+DestroyAccelerationStructureNVFunc                                     destroyAccelerationStructureNV;
+GetAccelerationStructureMemoryRequirementsNVFunc       getAccelerationStructureMemoryRequirementsNV;
+BindAccelerationStructureMemoryNVFunc                          bindAccelerationStructureMemoryNV;
+CmdBuildAccelerationStructureNVFunc                                    cmdBuildAccelerationStructureNV;
+CmdCopyAccelerationStructureNVFunc                                     cmdCopyAccelerationStructureNV;
+CmdTraceRaysNVFunc                                                                     cmdTraceRaysNV;
+CreateRayTracingPipelinesNVFunc                                                createRayTracingPipelinesNV;
+GetRayTracingShaderGroupHandlesKHRFunc                         getRayTracingShaderGroupHandlesKHR;
+GetRayTracingShaderGroupHandlesNVFunc                          getRayTracingShaderGroupHandlesNV;
+GetAccelerationStructureHandleNVFunc                           getAccelerationStructureHandleNV;
+CmdWriteAccelerationStructuresPropertiesNVFunc         cmdWriteAccelerationStructuresPropertiesNV;
+CompileDeferredNVFunc                                                          compileDeferredNV;
+GetMemoryHostPointerPropertiesEXTFunc                          getMemoryHostPointerPropertiesEXT;
+CmdWriteBufferMarkerAMDFunc                                                    cmdWriteBufferMarkerAMD;
+GetCalibratedTimestampsEXTFunc                                         getCalibratedTimestampsEXT;
+CmdDrawMeshTasksNVFunc                                                         cmdDrawMeshTasksNV;
+CmdDrawMeshTasksIndirectNVFunc                                         cmdDrawMeshTasksIndirectNV;
+CmdDrawMeshTasksIndirectCountNVFunc                                    cmdDrawMeshTasksIndirectCountNV;
+CmdSetExclusiveScissorNVFunc                                           cmdSetExclusiveScissorNV;
+CmdSetCheckpointNVFunc                                                         cmdSetCheckpointNV;
+GetQueueCheckpointDataNVFunc                                           getQueueCheckpointDataNV;
+InitializePerformanceApiINTELFunc                                      initializePerformanceApiINTEL;
+UninitializePerformanceApiINTELFunc                                    uninitializePerformanceApiINTEL;
+CmdSetPerformanceMarkerINTELFunc                                       cmdSetPerformanceMarkerINTEL;
+CmdSetPerformanceStreamMarkerINTELFunc                         cmdSetPerformanceStreamMarkerINTEL;
+CmdSetPerformanceOverrideINTELFunc                                     cmdSetPerformanceOverrideINTEL;
+AcquirePerformanceConfigurationINTELFunc                       acquirePerformanceConfigurationINTEL;
+ReleasePerformanceConfigurationINTELFunc                       releasePerformanceConfigurationINTEL;
+QueueSetPerformanceConfigurationINTELFunc                      queueSetPerformanceConfigurationINTEL;
+GetPerformanceParameterINTELFunc                                       getPerformanceParameterINTEL;
+SetLocalDimmingAMDFunc                                                         setLocalDimmingAMD;
+GetBufferDeviceAddressEXTFunc                                          getBufferDeviceAddressEXT;
+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;
+GetGeneratedCommandsMemoryRequirementsNVFunc           getGeneratedCommandsMemoryRequirementsNV;
+CmdPreprocessGeneratedCommandsNVFunc                           cmdPreprocessGeneratedCommandsNV;
+CmdExecuteGeneratedCommandsNVFunc                                      cmdExecuteGeneratedCommandsNV;
+CmdBindPipelineShaderGroupNVFunc                                       cmdBindPipelineShaderGroupNV;
+CreateIndirectCommandsLayoutNVFunc                                     createIndirectCommandsLayoutNV;
+DestroyIndirectCommandsLayoutNVFunc                                    destroyIndirectCommandsLayoutNV;
+CreatePrivateDataSlotEXTFunc                                           createPrivateDataSlotEXT;
+DestroyPrivateDataSlotEXTFunc                                          destroyPrivateDataSlotEXT;
+SetPrivateDataEXTFunc                                                          setPrivateDataEXT;
+GetPrivateDataEXTFunc                                                          getPrivateDataEXT;
+CmdSetFragmentShadingRateEnumNVFunc                                    cmdSetFragmentShadingRateEnumNV;
+CmdSetVertexInputEXTFunc                                                       cmdSetVertexInputEXT;
+GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEIFunc      getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
+CmdSubpassShadingHUAWEIFunc                                                    cmdSubpassShadingHUAWEI;
+CmdBindInvocationMaskHUAWEIFunc                                                cmdBindInvocationMaskHUAWEI;
+GetMemoryRemoteAddressNVFunc                                           getMemoryRemoteAddressNV;
+CmdSetPatchControlPointsEXTFunc                                                cmdSetPatchControlPointsEXT;
+CmdSetRasterizerDiscardEnableEXTFunc                           cmdSetRasterizerDiscardEnableEXT;
+CmdSetDepthBiasEnableEXTFunc                                           cmdSetDepthBiasEnableEXT;
+CmdSetLogicOpEXTFunc                                                           cmdSetLogicOpEXT;
+CmdSetPrimitiveRestartEnableEXTFunc                                    cmdSetPrimitiveRestartEnableEXT;
+CmdSetColorWriteEnableEXTFunc                                          cmdSetColorWriteEnableEXT;
+CmdDrawMultiEXTFunc                                                                    cmdDrawMultiEXT;
+CmdDrawMultiIndexedEXTFunc                                                     cmdDrawMultiIndexedEXT;
+CreateAccelerationStructureKHRFunc                                     createAccelerationStructureKHR;
+DestroyAccelerationStructureKHRFunc                                    destroyAccelerationStructureKHR;
+CmdBuildAccelerationStructuresKHRFunc                          cmdBuildAccelerationStructuresKHR;
+CmdBuildAccelerationStructuresIndirectKHRFunc          cmdBuildAccelerationStructuresIndirectKHR;
+BuildAccelerationStructuresKHRFunc                                     buildAccelerationStructuresKHR;
+CopyAccelerationStructureKHRFunc                                       copyAccelerationStructureKHR;
+CopyAccelerationStructureToMemoryKHRFunc                       copyAccelerationStructureToMemoryKHR;
+CopyMemoryToAccelerationStructureKHRFunc                       copyMemoryToAccelerationStructureKHR;
+WriteAccelerationStructuresPropertiesKHRFunc           writeAccelerationStructuresPropertiesKHR;
+CmdCopyAccelerationStructureKHRFunc                                    cmdCopyAccelerationStructureKHR;
+CmdCopyAccelerationStructureToMemoryKHRFunc                    cmdCopyAccelerationStructureToMemoryKHR;
+CmdCopyMemoryToAccelerationStructureKHRFunc                    cmdCopyMemoryToAccelerationStructureKHR;
+GetAccelerationStructureDeviceAddressKHRFunc           getAccelerationStructureDeviceAddressKHR;
+CmdWriteAccelerationStructuresPropertiesKHRFunc                cmdWriteAccelerationStructuresPropertiesKHR;
+GetDeviceAccelerationStructureCompatibilityKHRFunc     getDeviceAccelerationStructureCompatibilityKHR;
+GetAccelerationStructureBuildSizesKHRFunc                      getAccelerationStructureBuildSizesKHR;
+CmdTraceRaysKHRFunc                                                                    cmdTraceRaysKHR;
+CreateRayTracingPipelinesKHRFunc                                       createRayTracingPipelinesKHR;
+GetRayTracingCaptureReplayShaderGroupHandlesKHRFunc    getRayTracingCaptureReplayShaderGroupHandlesKHR;
+CmdTraceRaysIndirectKHRFunc                                                    cmdTraceRaysIndirectKHR;
+GetRayTracingShaderGroupStackSizeKHRFunc                       getRayTracingShaderGroupStackSizeKHR;
+CmdSetRayTracingPipelineStackSizeKHRFunc                       cmdSetRayTracingPipelineStackSizeKHR;
+GetAndroidHardwareBufferPropertiesANDROIDFunc          getAndroidHardwareBufferPropertiesANDROID;
+GetMemoryAndroidHardwareBufferANDROIDFunc                      getMemoryAndroidHardwareBufferANDROID;
+CreateVideoSessionKHRFunc                                                      createVideoSessionKHR;
+DestroyVideoSessionKHRFunc                                                     destroyVideoSessionKHR;
+GetVideoSessionMemoryRequirementsKHRFunc                       getVideoSessionMemoryRequirementsKHR;
+BindVideoSessionMemoryKHRFunc                                          bindVideoSessionMemoryKHR;
+CreateVideoSessionParametersKHRFunc                                    createVideoSessionParametersKHR;
+UpdateVideoSessionParametersKHRFunc                                    updateVideoSessionParametersKHR;
+DestroyVideoSessionParametersKHRFunc                           destroyVideoSessionParametersKHR;
+CmdBeginVideoCodingKHRFunc                                                     cmdBeginVideoCodingKHR;
+CmdEndVideoCodingKHRFunc                                                       cmdEndVideoCodingKHR;
+CmdControlVideoCodingKHRFunc                                           cmdControlVideoCodingKHR;
+CmdDecodeVideoKHRFunc                                                          cmdDecodeVideoKHR;
+CmdEncodeVideoKHRFunc                                                          cmdEncodeVideoKHR;
+GetMemoryZirconHandleFUCHSIAFunc                                       getMemoryZirconHandleFUCHSIA;
+GetMemoryZirconHandlePropertiesFUCHSIAFunc                     getMemoryZirconHandlePropertiesFUCHSIA;
+ImportSemaphoreZirconHandleFUCHSIAFunc                         importSemaphoreZirconHandleFUCHSIA;
+GetSemaphoreZirconHandleFUCHSIAFunc                                    getSemaphoreZirconHandleFUCHSIA;
+GetMemoryWin32HandleKHRFunc                                                    getMemoryWin32HandleKHR;
+GetMemoryWin32HandlePropertiesKHRFunc                          getMemoryWin32HandlePropertiesKHR;
+ImportSemaphoreWin32HandleKHRFunc                                      importSemaphoreWin32HandleKHR;
+GetSemaphoreWin32HandleKHRFunc                                         getSemaphoreWin32HandleKHR;
+ImportFenceWin32HandleKHRFunc                                          importFenceWin32HandleKHR;
+GetFenceWin32HandleKHRFunc                                                     getFenceWin32HandleKHR;
+GetMemoryWin32HandleNVFunc                                                     getMemoryWin32HandleNV;
+AcquireFullScreenExclusiveModeEXTFunc                          acquireFullScreenExclusiveModeEXT;
+ReleaseFullScreenExclusiveModeEXTFunc                          releaseFullScreenExclusiveModeEXT;
+GetDeviceGroupSurfacePresentModes2EXTFunc                      getDeviceGroupSurfacePresentModes2EXT;
diff --git a/external/vulkancts/framework/vulkan/vkDeviceProperties.inl b/external/vulkancts/framework/vulkan/vkDeviceProperties.inl
new file mode 100644 (file)
index 0000000..c199110
--- /dev/null
@@ -0,0 +1,329 @@
+/* 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_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
+#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
+#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
+#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands"
+#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
+#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm"
+#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
+#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2"
+#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
+#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums"
+#define VK_KHR_PRESENT_ID_EXTENSION_NAME  "VK_KHR_present_id"
+#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
+#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
+#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
+#define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
+#define VK_EXT_MULTI_DRAW_EXTENSION_NAME  "VK_EXT_multi_draw"
+#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
+#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
+#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
+#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "core_property"
+#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+#define VK_NV_RAY_TRACING_EXTENSION_NAME  "VK_NV_ray_tracing"
+#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
+#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
+#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
+#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
+#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2"
+#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
+#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
+#define DECL_SUBGROUP_EXTENSION_NAME "core_property"
+#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
+#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
+#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
+
+
+template<> 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<> void initPropertyFromBlob<VkPhysicalDeviceGroupProperties>(VkPhysicalDeviceGroupProperties&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceMemoryProperties2>(VkPhysicalDeviceMemoryProperties2&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePushDescriptorPropertiesKHR>(VkPhysicalDevicePushDescriptorPropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePerformanceQueryPropertiesKHR>(VkPhysicalDevicePerformanceQueryPropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>(VkPhysicalDeviceFragmentShadingRatePropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR>(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceTransformFeedbackPropertiesEXT>(VkPhysicalDeviceTransformFeedbackPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceDiscardRectanglePropertiesEXT>(VkPhysicalDeviceDiscardRectanglePropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(VkPhysicalDeviceConservativeRasterizationPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>(VkPhysicalDeviceInlineUniformBlockPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceSampleLocationsPropertiesEXT>(VkPhysicalDeviceSampleLocationsPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV>(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceShadingRateImagePropertiesNV>(VkPhysicalDeviceShadingRateImagePropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceRayTracingPropertiesNV>(VkPhysicalDeviceRayTracingPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>(VkPhysicalDeviceExternalMemoryHostPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceShaderCorePropertiesAMD>(VkPhysicalDeviceShaderCorePropertiesAMD&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceMeshShaderPropertiesNV>(VkPhysicalDeviceMeshShaderPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePCIBusInfoPropertiesEXT>(VkPhysicalDevicePCIBusInfoPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>(VkPhysicalDeviceFragmentDensityMapPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceShaderCoreProperties2AMD>(VkPhysicalDeviceShaderCoreProperties2AMD&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(VkPhysicalDeviceMemoryBudgetPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceToolPropertiesEXT>(VkPhysicalDeviceToolPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(VkPhysicalDeviceCooperativeMatrixPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceProvokingVertexPropertiesEXT>(VkPhysicalDeviceProvokingVertexPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceLineRasterizationPropertiesEXT>(VkPhysicalDeviceLineRasterizationPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV>(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceRobustness2PropertiesEXT>(VkPhysicalDeviceRobustness2PropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceCustomBorderColorPropertiesEXT>(VkPhysicalDeviceCustomBorderColorPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV>(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceDrmPropertiesEXT>(VkPhysicalDeviceDrmPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceMultiDrawPropertiesEXT>(VkPhysicalDeviceMultiDrawPropertiesEXT&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceAccelerationStructurePropertiesKHR>(VkPhysicalDeviceAccelerationStructurePropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>(VkPhysicalDeviceRayTracingPipelinePropertiesKHR&, const AllPropertiesBlobs&) {}
+template<> void initPropertyFromBlob<VkPhysicalDevicePortabilitySubsetPropertiesKHR>(VkPhysicalDevicePortabilitySubsetPropertiesKHR&, const AllPropertiesBlobs&) {}
+
+
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceAccelerationStructurePropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION, 47}; }
+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, 46}; }
+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, 45}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 44}; }
+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, 43}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDepthStencilResolveProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION, 42}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDescriptorIndexingProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 41}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, 40}; }
+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, 39}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDriverProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION, 38}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDrmPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME, VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION, 37}; }
+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, 36}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFloatControlsProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION, 35}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 34}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION, 33}; }
+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, 32}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION, 31}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceIDProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION, 30}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 29}; }
+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, 28}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMaintenance3Properties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION, 27}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMeshShaderPropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 26}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 25}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION, 24}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiDrawPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION, 23}; }
+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, 22}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePointClippingProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_KHR_MAINTENANCE2_SPEC_VERSION, 21}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePortabilitySubsetPropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION, 20}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceProtectedMemoryProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 19}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceProvokingVertexPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION, 18}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePushDescriptorPropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION, 17}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceRayTracingPropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION, 16}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION, 15}; }
+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, 14}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSamplerFilterMinmaxProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION, 13}; }
+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, 12}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShaderCorePropertiesAMD>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME, VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION, 11}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShaderCoreProperties2AMD>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME, VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION, 10}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION, 9}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShadingRateImagePropertiesNV>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 8}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, DECL_SUBGROUP_EXTENSION_NAME, 0, 7}; }
+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, 6}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION, 5}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 4}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTimelineSemaphoreProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 3}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTransformFeedbackPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 2}; }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 1}; }
+
+
+static const PropertyStructCreationData propertyStructCreationArray[] =
+{
+       { createPropertyStructWrapper<VkPhysicalDeviceAccelerationStructurePropertiesKHR>, VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceCooperativeMatrixPropertiesNV>, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceCustomBorderColorPropertiesEXT>, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDepthStencilResolveProperties>, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDescriptorIndexingProperties>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV>, VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDiscardRectanglePropertiesEXT>, VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDriverProperties>, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDrmPropertiesEXT>, VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME, VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFloatControlsProperties>, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV>, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME, VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceIDProperties>, VK_KHR_PRESENT_ID_EXTENSION_NAME, VK_KHR_PRESENT_ID_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceLineRasterizationPropertiesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMaintenance3Properties>, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMeshShaderPropertiesNV>, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMultiviewProperties>, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMultiDrawPropertiesEXT>, VK_EXT_MULTI_DRAW_EXTENSION_NAME, VK_EXT_MULTI_DRAW_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePerformanceQueryPropertiesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePointClippingProperties>, VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_KHR_MAINTENANCE2_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePortabilitySubsetPropertiesKHR>, VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceProtectedMemoryProperties>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceProvokingVertexPropertiesEXT>, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePushDescriptorPropertiesKHR>, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceRayTracingPropertiesNV>, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceRobustness2PropertiesEXT>, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSamplerFilterMinmaxProperties>, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSampleLocationsPropertiesEXT>, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceShaderCorePropertiesAMD>, VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME, VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceShaderCoreProperties2AMD>, VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME, VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR>, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME, VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceShadingRateImagePropertiesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSubgroupProperties>, DECL_SUBGROUP_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>, VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME, VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTimelineSemaphoreProperties>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTransformFeedbackPropertiesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
+};
+
+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
+
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl
new file mode 100644 (file)
index 0000000..250edd8
--- /dev/null
@@ -0,0 +1,50 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceAccelerationStructurePropertiesKHR&          getAccelerationStructureProperties                      (void) const;
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&         getBlendOperationAdvancedPropertiesEXT          (void) const;
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT&      getConservativeRasterizationPropertiesEXT       (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV&                       getCooperativeMatrixProperties                          (void) const;
+const vk::VkPhysicalDeviceCustomBorderColorPropertiesEXT&                      getCustomBorderColorPropertiesEXT                       (void) const;
+const vk::VkPhysicalDeviceDepthStencilResolveProperties&                       getDepthStencilResolveProperties                        (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingProperties&                                getDescriptorIndexingProperties                         (void) const;
+const vk::VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&         getDeviceGeneratedCommandsProperties            (void) const;
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT&                       getDiscardRectanglePropertiesEXT                        (void) const;
+const vk::VkPhysicalDeviceDriverProperties&                                                    getDriverProperties                                                     (void) const;
+const vk::VkPhysicalDeviceDrmPropertiesEXT&                                                    getDrmPropertiesEXT                                                     (void) const;
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                     getExternalMemoryHostPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceFloatControlsProperties&                                     getFloatControlsProperties                                      (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                     getFragmentDensityMapPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&                    getFragmentDensityMap2PropertiesEXT                     (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                    getFragmentShadingRateProperties                        (void) const;
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&                getFragmentShadingRateEnumsProperties           (void) const;
+const vk::VkPhysicalDeviceIDProperties&                                                                getIDProperties                                                         (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                     getInlineUniformBlockPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                      getLineRasterizationPropertiesEXT                       (void) const;
+const vk::VkPhysicalDeviceMaintenance3Properties&                                      getMaintenance3Properties                                       (void) const;
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV&                                      getMeshShaderProperties                                         (void) const;
+const vk::VkPhysicalDeviceMultiviewProperties&                                         getMultiviewProperties                                          (void) const;
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&     getMultiviewPerViewAttributesPropertiesX        (void) const;
+const vk::VkPhysicalDeviceMultiDrawPropertiesEXT&                                      getMultiDrawPropertiesEXT                                       (void) const;
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR&                       getPerformanceQueryProperties                           (void) const;
+const vk::VkPhysicalDevicePointClippingProperties&                                     getPointClippingProperties                                      (void) const;
+const vk::VkPhysicalDevicePortabilitySubsetPropertiesKHR&                      getPortabilitySubsetProperties                          (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryProperties&                           getProtectedMemoryProperties                            (void) const;
+const vk::VkPhysicalDeviceProvokingVertexPropertiesEXT&                                getProvokingVertexPropertiesEXT                         (void) const;
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR&                         getPushDescriptorProperties                                     (void) const;
+const vk::VkPhysicalDeviceRayTracingPropertiesNV&                                      getRayTracingPropertiesNV                                       (void) const;
+const vk::VkPhysicalDeviceRayTracingPipelinePropertiesKHR&                     getRayTracingPipelineProperties                         (void) const;
+const vk::VkPhysicalDeviceRobustness2PropertiesEXT&                                    getRobustness2PropertiesEXT                                     (void) const;
+const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties&                       getSamplerFilterMinmaxProperties                        (void) const;
+const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT&                                getSampleLocationsPropertiesEXT                         (void) const;
+const vk::VkPhysicalDeviceShaderCorePropertiesAMD&                                     getShaderCorePropertiesAMD                                      (void) const;
+const vk::VkPhysicalDeviceShaderCoreProperties2AMD&                                    getShaderCoreProperties2AMD                                     (void) const;
+const vk::VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR&                getShaderIntegerDotProductProperties            (void) const;
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV&                                getShadingRateImageProperties                           (void) const;
+const vk::VkPhysicalDeviceSubgroupProperties&                                          getSubgroupProperties                                           (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                    getSubgroupSizeControlPropertiesEXT                     (void) const;
+const vk::VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&                      getSubpassShadingPropertiesHUAWEI                       (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&           getTexelBufferAlignmentPropertiesEXT            (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties&                         getTimelineSemaphoreProperties                          (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT&                      getTransformFeedbackPropertiesEXT                       (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&         getVertexAttributeDivisorPropertiesEXT          (void) const;
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl
new file mode 100644 (file)
index 0000000..5078df6
--- /dev/null
@@ -0,0 +1,50 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceAccelerationStructurePropertiesKHR&          Context::getAccelerationStructureProperties                     (void) const { return m_device->getAccelerationStructureProperties();                   }
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&         Context::getBlendOperationAdvancedPropertiesEXT         (void) const { return m_device->getBlendOperationAdvancedPropertiesEXT();               }
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT&      Context::getConservativeRasterizationPropertiesEXT      (void) const { return m_device->getConservativeRasterizationPropertiesEXT();    }
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV&                       Context::getCooperativeMatrixProperties                         (void) const { return m_device->getCooperativeMatrixProperties();                               }
+const vk::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::VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&         Context::getDeviceGeneratedCommandsProperties           (void) const { return m_device->getDeviceGeneratedCommandsProperties();                 }
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT&                       Context::getDiscardRectanglePropertiesEXT                       (void) const { return m_device->getDiscardRectanglePropertiesEXT();                             }
+const vk::VkPhysicalDeviceDriverProperties&                                                    Context::getDriverProperties                                            (void) const { return m_device->getDriverProperties();                                                  }
+const vk::VkPhysicalDeviceDrmPropertiesEXT&                                                    Context::getDrmPropertiesEXT                                            (void) const { return m_device->getDrmPropertiesEXT();                                                  }
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                     Context::getExternalMemoryHostPropertiesEXT                     (void) const { return m_device->getExternalMemoryHostPropertiesEXT();                   }
+const vk::VkPhysicalDeviceFloatControlsProperties&                                     Context::getFloatControlsProperties                                     (void) const { return m_device->getFloatControlsProperties();                                   }
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                     Context::getFragmentDensityMapPropertiesEXT                     (void) const { return m_device->getFragmentDensityMapPropertiesEXT();                   }
+const vk::VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&                    Context::getFragmentDensityMap2PropertiesEXT            (void) const { return m_device->getFragmentDensityMap2PropertiesEXT();                  }
+const vk::VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                    Context::getFragmentShadingRateProperties                       (void) const { return m_device->getFragmentShadingRateProperties();                             }
+const vk::VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&                Context::getFragmentShadingRateEnumsProperties          (void) const { return m_device->getFragmentShadingRateEnumsProperties();                }
+const vk::VkPhysicalDeviceIDProperties&                                                                Context::getIDProperties                                                        (void) const { return m_device->getIDProperties();                                                              }
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                     Context::getInlineUniformBlockPropertiesEXT                     (void) const { return m_device->getInlineUniformBlockPropertiesEXT();                   }
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                      Context::getLineRasterizationPropertiesEXT                      (void) const { return m_device->getLineRasterizationPropertiesEXT();                    }
+const vk::VkPhysicalDeviceMaintenance3Properties&                                      Context::getMaintenance3Properties                                      (void) const { return m_device->getMaintenance3Properties();                                    }
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV&                                      Context::getMeshShaderProperties                                        (void) const { return m_device->getMeshShaderProperties();                                              }
+const vk::VkPhysicalDeviceMultiviewProperties&                                         Context::getMultiviewProperties                                         (void) const { return m_device->getMultiviewProperties();                                               }
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&     Context::getMultiviewPerViewAttributesPropertiesX       (void) const { return m_device->getMultiviewPerViewAttributesPropertiesX();             }
+const vk::VkPhysicalDeviceMultiDrawPropertiesEXT&                                      Context::getMultiDrawPropertiesEXT                                      (void) const { return m_device->getMultiDrawPropertiesEXT();                                    }
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR&                       Context::getPerformanceQueryProperties                          (void) const { return m_device->getPerformanceQueryProperties();                                }
+const vk::VkPhysicalDevicePointClippingProperties&                                     Context::getPointClippingProperties                                     (void) const { return m_device->getPointClippingProperties();                                   }
+const vk::VkPhysicalDevicePortabilitySubsetPropertiesKHR&                      Context::getPortabilitySubsetProperties                         (void) const { return m_device->getPortabilitySubsetProperties();                               }
+const vk::VkPhysicalDeviceProtectedMemoryProperties&                           Context::getProtectedMemoryProperties                           (void) const { return m_device->getProtectedMemoryProperties();                                 }
+const vk::VkPhysicalDeviceProvokingVertexPropertiesEXT&                                Context::getProvokingVertexPropertiesEXT                        (void) const { return m_device->getProvokingVertexPropertiesEXT();                              }
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR&                         Context::getPushDescriptorProperties                            (void) const { return m_device->getPushDescriptorProperties();                                  }
+const vk::VkPhysicalDeviceRayTracingPropertiesNV&                                      Context::getRayTracingPropertiesNV                                      (void) const { return m_device->getRayTracingPropertiesNV();                                    }
+const vk::VkPhysicalDeviceRayTracingPipelinePropertiesKHR&                     Context::getRayTracingPipelineProperties                        (void) const { return m_device->getRayTracingPipelineProperties();                              }
+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::VkPhysicalDeviceShaderCorePropertiesAMD&                                     Context::getShaderCorePropertiesAMD                                     (void) const { return m_device->getShaderCorePropertiesAMD();                                   }
+const vk::VkPhysicalDeviceShaderCoreProperties2AMD&                                    Context::getShaderCoreProperties2AMD                            (void) const { return m_device->getShaderCoreProperties2AMD();                                  }
+const vk::VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR&                Context::getShaderIntegerDotProductProperties           (void) const { return m_device->getShaderIntegerDotProductProperties();                 }
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV&                                Context::getShadingRateImageProperties                          (void) const { return m_device->getShadingRateImageProperties();                                }
+const vk::VkPhysicalDeviceSubgroupProperties&                                          Context::getSubgroupProperties                                          (void) const { return m_device->getSubgroupProperties();                                                }
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                    Context::getSubgroupSizeControlPropertiesEXT            (void) const { return m_device->getSubgroupSizeControlPropertiesEXT();                  }
+const vk::VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&                      Context::getSubpassShadingPropertiesHUAWEI                      (void) const { return m_device->getSubpassShadingPropertiesHUAWEI();                    }
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&           Context::getTexelBufferAlignmentPropertiesEXT           (void) const { return m_device->getTexelBufferAlignmentPropertiesEXT();                 }
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties&                         Context::getTimelineSemaphoreProperties                         (void) const { return m_device->getTimelineSemaphoreProperties();                               }
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT&                      Context::getTransformFeedbackPropertiesEXT                      (void) const { return m_device->getTransformFeedbackPropertiesEXT();                    }
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&         Context::getVertexAttributeDivisorPropertiesEXT         (void) const { return m_device->getVertexAttributeDivisorPropertiesEXT();               }
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl
new file mode 100644 (file)
index 0000000..33d7f17
--- /dev/null
@@ -0,0 +1,50 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const VkPhysicalDeviceAccelerationStructurePropertiesKHR&              getAccelerationStructureProperties                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceAccelerationStructurePropertiesKHR>();                 }
+const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&             getBlendOperationAdvancedPropertiesEXT          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>();                }
+const VkPhysicalDeviceConservativeRasterizationPropertiesEXT&  getConservativeRasterizationPropertiesEXT       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>();             }
+const VkPhysicalDeviceCooperativeMatrixPropertiesNV&                   getCooperativeMatrixProperties                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceCooperativeMatrixPropertiesNV>();                              }
+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 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&             getDeviceGeneratedCommandsProperties            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV>();                }
+const VkPhysicalDeviceDiscardRectanglePropertiesEXT&                   getDiscardRectanglePropertiesEXT                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDiscardRectanglePropertiesEXT>();                              }
+const VkPhysicalDeviceDriverProperties&                                                        getDriverProperties                                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDriverProperties>();                                                   }
+const VkPhysicalDeviceDrmPropertiesEXT&                                                        getDrmPropertiesEXT                                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDrmPropertiesEXT>();                                                   }
+const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                 getExternalMemoryHostPropertiesEXT                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>();                    }
+const VkPhysicalDeviceFloatControlsProperties&                                 getFloatControlsProperties                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFloatControlsProperties>();                                    }
+const VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                 getFragmentDensityMapPropertiesEXT                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>();                    }
+const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&                        getFragmentDensityMap2PropertiesEXT                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>();                   }
+const VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                        getFragmentShadingRateProperties                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>();                   }
+const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&            getFragmentShadingRateEnumsProperties           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV>();               }
+const VkPhysicalDeviceIDProperties&                                                            getIDProperties                                                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceIDProperties>();                                                               }
+const VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                 getInlineUniformBlockPropertiesEXT                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>();                    }
+const VkPhysicalDeviceLineRasterizationPropertiesEXT&                  getLineRasterizationPropertiesEXT                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceLineRasterizationPropertiesEXT>();                             }
+const VkPhysicalDeviceMaintenance3Properties&                                  getMaintenance3Properties                                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMaintenance3Properties>();                                             }
+const VkPhysicalDeviceMeshShaderPropertiesNV&                                  getMeshShaderProperties                                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMeshShaderPropertiesNV>();                                             }
+const VkPhysicalDeviceMultiviewProperties&                                             getMultiviewProperties                                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMultiviewProperties>();                                                }
+const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& getMultiviewPerViewAttributesPropertiesX        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>();    }
+const VkPhysicalDeviceMultiDrawPropertiesEXT&                                  getMultiDrawPropertiesEXT                                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMultiDrawPropertiesEXT>();                                             }
+const VkPhysicalDevicePerformanceQueryPropertiesKHR&                   getPerformanceQueryProperties                           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePerformanceQueryPropertiesKHR>();                              }
+const VkPhysicalDevicePointClippingProperties&                                 getPointClippingProperties                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePointClippingProperties>();                                    }
+const VkPhysicalDevicePortabilitySubsetPropertiesKHR&                  getPortabilitySubsetProperties                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePortabilitySubsetPropertiesKHR>();                             }
+const VkPhysicalDeviceProtectedMemoryProperties&                               getProtectedMemoryProperties                            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceProtectedMemoryProperties>();                                  }
+const VkPhysicalDeviceProvokingVertexPropertiesEXT&                            getProvokingVertexPropertiesEXT                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceProvokingVertexPropertiesEXT>();                               }
+const VkPhysicalDevicePushDescriptorPropertiesKHR&                             getPushDescriptorProperties                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePushDescriptorPropertiesKHR>();                                }
+const VkPhysicalDeviceRayTracingPropertiesNV&                                  getRayTracingPropertiesNV                                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceRayTracingPropertiesNV>();                                             }
+const VkPhysicalDeviceRayTracingPipelinePropertiesKHR&                 getRayTracingPipelineProperties                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>();                    }
+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 VkPhysicalDeviceShaderCorePropertiesAMD&                                 getShaderCorePropertiesAMD                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceShaderCorePropertiesAMD>();                                    }
+const VkPhysicalDeviceShaderCoreProperties2AMD&                                        getShaderCoreProperties2AMD                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceShaderCoreProperties2AMD>();                                   }
+const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR&            getShaderIntegerDotProductProperties            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR>();               }
+const VkPhysicalDeviceShadingRateImagePropertiesNV&                            getShadingRateImageProperties                           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceShadingRateImagePropertiesNV>();                               }
+const VkPhysicalDeviceSubgroupProperties&                                              getSubgroupProperties                                           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSubgroupProperties>();                                                 }
+const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                        getSubgroupSizeControlPropertiesEXT                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>();                   }
+const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&                  getSubpassShadingPropertiesHUAWEI                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI>();                             }
+const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&               getTexelBufferAlignmentPropertiesEXT            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>();                  }
+const VkPhysicalDeviceTimelineSemaphoreProperties&                             getTimelineSemaphoreProperties                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceTimelineSemaphoreProperties>();                                }
+const VkPhysicalDeviceTransformFeedbackPropertiesEXT&                  getTransformFeedbackPropertiesEXT                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceTransformFeedbackPropertiesEXT>();                             }
+const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&             getVertexAttributeDivisorPropertiesEXT          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>();                }
diff --git a/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl b/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl
new file mode 100644 (file)
index 0000000..5d780e5
--- /dev/null
@@ -0,0 +1,2484 @@
+/* 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_sampler_mirror_clamp_to_edge")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_multiview")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_physical_device_properties2")
+       {
+               functions.push_back("vkGetPhysicalDeviceFeatures2KHR");
+               functions.push_back("vkGetPhysicalDeviceProperties2KHR");
+               functions.push_back("vkGetPhysicalDeviceFormatProperties2KHR");
+               functions.push_back("vkGetPhysicalDeviceImageFormatProperties2KHR");
+               functions.push_back("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+               functions.push_back("vkGetPhysicalDeviceMemoryProperties2KHR");
+               functions.push_back("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+               return;
+       }
+       if (extName == "VK_KHR_device_group")
+       {
+               if(apiVersion < VK_API_VERSION_1_1) functions.push_back("vkGetPhysicalDevicePresentRectanglesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_shader_draw_parameters")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_maintenance1")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_device_group_creation")
+       {
+               functions.push_back("vkEnumeratePhysicalDeviceGroupsKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_capabilities")
+       {
+               functions.push_back("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_memory")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_fd")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_capabilities")
+       {
+               functions.push_back("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_fd")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_push_descriptor")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_float16_int8")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_16bit_storage")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_incremental_present")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_descriptor_update_template")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_imageless_framebuffer")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_create_renderpass2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shared_presentable_image")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_fence_capabilities")
+       {
+               functions.push_back("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_fence")
+       {
+               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_maintenance2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_surface_capabilities2")
+       {
+               functions.push_back("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
+               functions.push_back("vkGetPhysicalDeviceSurfaceFormats2KHR");
+               return;
+       }
+       if (extName == "VK_KHR_variable_pointers")
+       {
+               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_dedicated_allocation")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_storage_buffer_storage_class")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_relaxed_block_layout")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_memory_requirements2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_image_format_list")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_sampler_ycbcr_conversion")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_bind_memory2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_maintenance3")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_draw_indirect_count")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_subgroup_extended_types")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_8bit_storage")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_atomic_int64")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_clock")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_driver_properties")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_float_controls")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_depth_stencil_resolve")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_swapchain_mutable_format")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_timeline_semaphore")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_vulkan_memory_model")
+       {
+               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_spirv_1_4")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_surface_protected_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_separate_depth_stencil_layouts")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_present_wait")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_uniform_buffer_standard_layout")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_buffer_device_address")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_deferred_host_operations")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_pipeline_executable_properties")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_integer_dot_product")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_pipeline_library")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_non_semantic_info")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_present_id")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_synchronization2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_subgroup_uniform_control_flow")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_zero_initialize_workgroup_memory")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_workgroup_memory_explicit_layout")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_copy_commands2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_debug_report")
+       {
+               functions.push_back("vkCreateDebugReportCallbackEXT");
+               functions.push_back("vkDestroyDebugReportCallbackEXT");
+               functions.push_back("vkDebugReportMessageEXT");
+               return;
+       }
+       if (extName == "VK_NV_glsl_shader")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_depth_range_unrestricted")
+       {
+               return;
+       }
+       if (extName == "VK_IMG_filter_cubic")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_rasterization_order")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_trinary_minmax")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_explicit_vertex_parameter")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_debug_marker")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_gcn_shader")
+       {
+               return;
+       }
+       if (extName == "VK_NV_dedicated_allocation")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_transform_feedback")
+       {
+               return;
+       }
+       if (extName == "VK_NVX_binary_import")
+       {
+               return;
+       }
+       if (extName == "VK_NVX_image_view_handle")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_draw_indirect_count")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_negative_viewport_height")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_gpu_shader_half_float")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_ballot")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_texture_gather_bias_lod")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_info")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_image_load_store_lod")
+       {
+               return;
+       }
+       if (extName == "VK_NV_corner_sampled_image")
+       {
+               return;
+       }
+       if (extName == "VK_IMG_format_pvrtc")
+       {
+               return;
+       }
+       if (extName == "VK_NV_external_memory_capabilities")
+       {
+               functions.push_back("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
+               return;
+       }
+       if (extName == "VK_NV_external_memory")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_validation_flags")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_subgroup_ballot")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_subgroup_vote")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_texture_compression_astc_hdr")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_astc_decode_mode")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_conditional_rendering")
+       {
+               return;
+       }
+       if (extName == "VK_NV_clip_space_w_scaling")
+       {
+               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_GOOGLE_display_timing")
+       {
+               return;
+       }
+       if (extName == "VK_NV_sample_mask_override_coverage")
+       {
+               return;
+       }
+       if (extName == "VK_NV_geometry_shader_passthrough")
+       {
+               return;
+       }
+       if (extName == "VK_NV_viewport_array2")
+       {
+               return;
+       }
+       if (extName == "VK_NVX_multiview_per_view_attributes")
+       {
+               return;
+       }
+       if (extName == "VK_NV_viewport_swizzle")
+       {
+               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_sampler_filter_minmax")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_gpu_shader_int16")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_mixed_attachment_samples")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_fragment_mask")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_inline_uniform_block")
+       {
+               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_NV_fragment_coverage_to_color")
+       {
+               return;
+       }
+       if (extName == "VK_NV_framebuffer_mixed_samples")
+       {
+               return;
+       }
+       if (extName == "VK_NV_fill_rectangle")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_sm_builtins")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_post_depth_coverage")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_image_drm_format_modifier")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_validation_cache")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_descriptor_indexing")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_viewport_index_layer")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shading_rate_image")
+       {
+               return;
+       }
+       if (extName == "VK_NV_ray_tracing")
+       {
+               return;
+       }
+       if (extName == "VK_NV_representative_fragment_test")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_filter_cubic")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_shader_resolve")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_global_priority")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_external_memory_host")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_buffer_marker")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_pipeline_compiler_control")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_calibrated_timestamps")
+       {
+               functions.push_back("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
+               return;
+       }
+       if (extName == "VK_AMD_shader_core_properties")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_memory_overallocation_behavior")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_vertex_attribute_divisor")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_pipeline_creation_feedback")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_subgroup_partitioned")
+       {
+               return;
+       }
+       if (extName == "VK_NV_compute_shader_derivatives")
+       {
+               return;
+       }
+       if (extName == "VK_NV_mesh_shader")
+       {
+               return;
+       }
+       if (extName == "VK_NV_fragment_shader_barycentric")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_image_footprint")
+       {
+               return;
+       }
+       if (extName == "VK_NV_scissor_exclusive")
+       {
+               return;
+       }
+       if (extName == "VK_NV_device_diagnostic_checkpoints")
+       {
+               return;
+       }
+       if (extName == "VK_INTEL_shader_integer_functions2")
+       {
+               return;
+       }
+       if (extName == "VK_INTEL_performance_query")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_pci_bus_info")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_display_native_hdr")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_fragment_density_map")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_scalar_block_layout")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_hlsl_functionality1")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_decorate_string")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_subgroup_size_control")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_core_properties2")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_device_coherent_memory")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_image_atomic_int64")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_memory_budget")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_memory_priority")
+       {
+               return;
+       }
+       if (extName == "VK_NV_dedicated_allocation_image_aliasing")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_buffer_device_address")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_tooling_info")
+       {
+               functions.push_back("vkGetPhysicalDeviceToolPropertiesEXT");
+               return;
+       }
+       if (extName == "VK_EXT_separate_stencil_usage")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_validation_features")
+       {
+               return;
+       }
+       if (extName == "VK_NV_cooperative_matrix")
+       {
+               functions.push_back("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
+               return;
+       }
+       if (extName == "VK_NV_coverage_reduction_mode")
+       {
+               functions.push_back("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
+               return;
+       }
+       if (extName == "VK_EXT_fragment_shader_interlock")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_ycbcr_image_arrays")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_provoking_vertex")
+       {
+               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_host_query_reset")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_index_type_uint8")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_extended_dynamic_state")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_atomic_float2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_demote_to_helper_invocation")
+       {
+               return;
+       }
+       if (extName == "VK_NV_device_generated_commands")
+       {
+               return;
+       }
+       if (extName == "VK_NV_inherited_viewport_scissor")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_texel_buffer_alignment")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_transform")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_device_memory_report")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_acquire_drm_display")
+       {
+               functions.push_back("vkAcquireDrmDisplayEXT");
+               functions.push_back("vkGetDrmDisplayEXT");
+               return;
+       }
+       if (extName == "VK_EXT_robustness2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_custom_border_color")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_user_type")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_private_data")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_pipeline_creation_cache_control")
+       {
+               return;
+       }
+       if (extName == "VK_NV_device_diagnostics_config")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_store_ops")
+       {
+               return;
+       }
+       if (extName == "VK_NV_fragment_shading_rate_enums")
+       {
+               return;
+       }
+       if (extName == "VK_NV_ray_tracing_motion_blur")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_ycbcr_2plane_444_formats")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_fragment_density_map2")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_rotated_copy_commands")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_image_robustness")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_4444_formats")
+       {
+               return;
+       }
+       if (extName == "VK_NV_acquire_winrt_display")
+       {
+               functions.push_back("vkAcquireWinrtDisplayNV");
+               functions.push_back("vkGetWinrtDisplayNV");
+               return;
+       }
+       if (extName == "VK_VALVE_mutable_descriptor_type")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_vertex_input_dynamic_state")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_physical_device_drm")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_primitive_topology_list_restart")
+       {
+               return;
+       }
+       if (extName == "VK_HUAWEI_subpass_shading")
+       {
+               return;
+       }
+       if (extName == "VK_HUAWEI_invocation_mask")
+       {
+               return;
+       }
+       if (extName == "VK_NV_external_memory_rdma")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_extended_dynamic_state2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_color_write_enable")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_global_priority_query")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_multi_draw")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_load_store_op_none")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_acceleration_structure")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_ray_tracing_pipeline")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_ray_query")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_android_surface")
+       {
+               functions.push_back("vkCreateAndroidSurfaceKHR");
+               return;
+       }
+       if (extName == "VK_ANDROID_external_memory_android_hardware_buffer")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_video_queue")
+       {
+               functions.push_back("vkGetPhysicalDeviceVideoCapabilitiesKHR");
+               functions.push_back("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_video_decode_queue")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_portability_subset")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_video_encode_queue")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_video_encode_h264")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_video_decode_h264")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_video_decode_h265")
+       {
+               return;
+       }
+       if (extName == "VK_FUCHSIA_imagepipe_surface")
+       {
+               functions.push_back("vkCreateImagePipeSurfaceFUCHSIA");
+               return;
+       }
+       if (extName == "VK_FUCHSIA_external_memory")
+       {
+               return;
+       }
+       if (extName == "VK_FUCHSIA_external_semaphore")
+       {
+               return;
+       }
+       if (extName == "VK_GGP_stream_descriptor_surface")
+       {
+               functions.push_back("vkCreateStreamDescriptorSurfaceGGP");
+               return;
+       }
+       if (extName == "VK_GGP_frame_token")
+       {
+               return;
+       }
+       if (extName == "VK_MVK_ios_surface")
+       {
+               functions.push_back("vkCreateIOSSurfaceMVK");
+               return;
+       }
+       if (extName == "VK_MVK_macos_surface")
+       {
+               functions.push_back("vkCreateMacOSSurfaceMVK");
+               return;
+       }
+       if (extName == "VK_EXT_metal_surface")
+       {
+               functions.push_back("vkCreateMetalSurfaceEXT");
+               return;
+       }
+       if (extName == "VK_NN_vi_surface")
+       {
+               functions.push_back("vkCreateViSurfaceNN");
+               return;
+       }
+       if (extName == "VK_KHR_wayland_surface")
+       {
+               functions.push_back("vkCreateWaylandSurfaceKHR");
+               functions.push_back("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+               return;
+       }
+       if (extName == "VK_KHR_win32_surface")
+       {
+               functions.push_back("vkCreateWin32SurfaceKHR");
+               functions.push_back("vkGetPhysicalDeviceWin32PresentationSupportKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_win32")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_win32_keyed_mutex")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_win32")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_fence_win32")
+       {
+               return;
+       }
+       if (extName == "VK_NV_external_memory_win32")
+       {
+               return;
+       }
+       if (extName == "VK_NV_win32_keyed_mutex")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_full_screen_exclusive")
+       {
+               functions.push_back("vkGetPhysicalDeviceSurfacePresentModes2EXT");
+               return;
+       }
+       if (extName == "VK_KHR_xcb_surface")
+       {
+               functions.push_back("vkCreateXcbSurfaceKHR");
+               functions.push_back("vkGetPhysicalDeviceXcbPresentationSupportKHR");
+               return;
+       }
+       if (extName == "VK_KHR_xlib_surface")
+       {
+               functions.push_back("vkCreateXlibSurfaceKHR");
+               functions.push_back("vkGetPhysicalDeviceXlibPresentationSupportKHR");
+               return;
+       }
+       if (extName == "VK_EXT_acquire_xlib_display")
+       {
+               functions.push_back("vkAcquireXlibDisplayEXT");
+               functions.push_back("vkGetRandROutputDisplayEXT");
+               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("vkDestroySwapchainKHR");
+               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_sampler_mirror_clamp_to_edge")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_multiview")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_physical_device_properties2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_device_group")
+       {
+               functions.push_back("vkGetDeviceGroupPeerMemoryFeaturesKHR");
+               functions.push_back("vkCmdSetDeviceMaskKHR");
+               functions.push_back("vkCmdDispatchBaseKHR");
+               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_shader_draw_parameters")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_maintenance1")
+       {
+               functions.push_back("vkTrimCommandPoolKHR");
+               return;
+       }
+       if (extName == "VK_KHR_device_group_creation")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_memory")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_fd")
+       {
+               functions.push_back("vkGetMemoryFdKHR");
+               functions.push_back("vkGetMemoryFdPropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_fd")
+       {
+               functions.push_back("vkImportSemaphoreFdKHR");
+               functions.push_back("vkGetSemaphoreFdKHR");
+               return;
+       }
+       if (extName == "VK_KHR_push_descriptor")
+       {
+               functions.push_back("vkCmdPushDescriptorSetKHR");
+               functions.push_back("vkCmdPushDescriptorSetWithTemplateKHR");
+               return;
+       }
+       if (extName == "VK_KHR_shader_float16_int8")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_16bit_storage")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_incremental_present")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_descriptor_update_template")
+       {
+               functions.push_back("vkCreateDescriptorUpdateTemplateKHR");
+               functions.push_back("vkDestroyDescriptorUpdateTemplateKHR");
+               functions.push_back("vkUpdateDescriptorSetWithTemplateKHR");
+               return;
+       }
+       if (extName == "VK_KHR_imageless_framebuffer")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_create_renderpass2")
+       {
+               functions.push_back("vkCreateRenderPass2KHR");
+               functions.push_back("vkCmdBeginRenderPass2KHR");
+               functions.push_back("vkCmdNextSubpass2KHR");
+               functions.push_back("vkCmdEndRenderPass2KHR");
+               return;
+       }
+       if (extName == "VK_KHR_shared_presentable_image")
+       {
+               functions.push_back("vkGetSwapchainStatusKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_fence_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_fence")
+       {
+               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_maintenance2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_surface_capabilities2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_variable_pointers")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_display_properties2")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_dedicated_allocation")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_storage_buffer_storage_class")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_relaxed_block_layout")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_get_memory_requirements2")
+       {
+               functions.push_back("vkGetImageMemoryRequirements2KHR");
+               functions.push_back("vkGetBufferMemoryRequirements2KHR");
+               functions.push_back("vkGetImageSparseMemoryRequirements2KHR");
+               return;
+       }
+       if (extName == "VK_KHR_image_format_list")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_sampler_ycbcr_conversion")
+       {
+               functions.push_back("vkCreateSamplerYcbcrConversionKHR");
+               functions.push_back("vkDestroySamplerYcbcrConversionKHR");
+               return;
+       }
+       if (extName == "VK_KHR_bind_memory2")
+       {
+               functions.push_back("vkBindBufferMemory2KHR");
+               functions.push_back("vkBindImageMemory2KHR");
+               return;
+       }
+       if (extName == "VK_KHR_maintenance3")
+       {
+               functions.push_back("vkGetDescriptorSetLayoutSupportKHR");
+               return;
+       }
+       if (extName == "VK_KHR_draw_indirect_count")
+       {
+               functions.push_back("vkCmdDrawIndirectCountKHR");
+               functions.push_back("vkCmdDrawIndexedIndirectCountKHR");
+               return;
+       }
+       if (extName == "VK_KHR_shader_subgroup_extended_types")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_8bit_storage")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_atomic_int64")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_clock")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_driver_properties")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_float_controls")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_depth_stencil_resolve")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_swapchain_mutable_format")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_timeline_semaphore")
+       {
+               functions.push_back("vkGetSemaphoreCounterValueKHR");
+               functions.push_back("vkWaitSemaphoresKHR");
+               functions.push_back("vkSignalSemaphoreKHR");
+               return;
+       }
+       if (extName == "VK_KHR_vulkan_memory_model")
+       {
+               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_spirv_1_4")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_surface_protected_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_separate_depth_stencil_layouts")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_present_wait")
+       {
+               functions.push_back("vkWaitForPresentKHR");
+               return;
+       }
+       if (extName == "VK_KHR_uniform_buffer_standard_layout")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_buffer_device_address")
+       {
+               functions.push_back("vkGetBufferDeviceAddressKHR");
+               functions.push_back("vkGetBufferOpaqueCaptureAddressKHR");
+               functions.push_back("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+               return;
+       }
+       if (extName == "VK_KHR_deferred_host_operations")
+       {
+               functions.push_back("vkCreateDeferredOperationKHR");
+               functions.push_back("vkDestroyDeferredOperationKHR");
+               functions.push_back("vkGetDeferredOperationMaxConcurrencyKHR");
+               functions.push_back("vkGetDeferredOperationResultKHR");
+               functions.push_back("vkDeferredOperationJoinKHR");
+               return;
+       }
+       if (extName == "VK_KHR_pipeline_executable_properties")
+       {
+               functions.push_back("vkGetPipelineExecutablePropertiesKHR");
+               functions.push_back("vkGetPipelineExecutableStatisticsKHR");
+               functions.push_back("vkGetPipelineExecutableInternalRepresentationsKHR");
+               return;
+       }
+       if (extName == "VK_KHR_shader_integer_dot_product")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_pipeline_library")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_shader_non_semantic_info")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_present_id")
+       {
+               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_shader_subgroup_uniform_control_flow")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_zero_initialize_workgroup_memory")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_workgroup_memory_explicit_layout")
+       {
+               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;
+       }
+       if (extName == "VK_EXT_debug_report")
+       {
+               return;
+       }
+       if (extName == "VK_NV_glsl_shader")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_depth_range_unrestricted")
+       {
+               return;
+       }
+       if (extName == "VK_IMG_filter_cubic")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_rasterization_order")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_trinary_minmax")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_explicit_vertex_parameter")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_debug_marker")
+       {
+               functions.push_back("vkDebugMarkerSetObjectTagEXT");
+               functions.push_back("vkDebugMarkerSetObjectNameEXT");
+               functions.push_back("vkCmdDebugMarkerBeginEXT");
+               functions.push_back("vkCmdDebugMarkerEndEXT");
+               functions.push_back("vkCmdDebugMarkerInsertEXT");
+               return;
+       }
+       if (extName == "VK_AMD_gcn_shader")
+       {
+               return;
+       }
+       if (extName == "VK_NV_dedicated_allocation")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_transform_feedback")
+       {
+               functions.push_back("vkCmdBindTransformFeedbackBuffersEXT");
+               functions.push_back("vkCmdBeginTransformFeedbackEXT");
+               functions.push_back("vkCmdEndTransformFeedbackEXT");
+               functions.push_back("vkCmdBeginQueryIndexedEXT");
+               functions.push_back("vkCmdEndQueryIndexedEXT");
+               functions.push_back("vkCmdDrawIndirectByteCountEXT");
+               return;
+       }
+       if (extName == "VK_NVX_binary_import")
+       {
+               functions.push_back("vkCreateCuModuleNVX");
+               functions.push_back("vkCreateCuFunctionNVX");
+               functions.push_back("vkDestroyCuModuleNVX");
+               functions.push_back("vkDestroyCuFunctionNVX");
+               functions.push_back("vkCmdCuLaunchKernelNVX");
+               return;
+       }
+       if (extName == "VK_NVX_image_view_handle")
+       {
+               functions.push_back("vkGetImageViewHandleNVX");
+               functions.push_back("vkGetImageViewAddressNVX");
+               return;
+       }
+       if (extName == "VK_AMD_draw_indirect_count")
+       {
+               functions.push_back("vkCmdDrawIndirectCountAMD");
+               functions.push_back("vkCmdDrawIndexedIndirectCountAMD");
+               return;
+       }
+       if (extName == "VK_AMD_negative_viewport_height")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_gpu_shader_half_float")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_ballot")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_texture_gather_bias_lod")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_info")
+       {
+               functions.push_back("vkGetShaderInfoAMD");
+               return;
+       }
+       if (extName == "VK_AMD_shader_image_load_store_lod")
+       {
+               return;
+       }
+       if (extName == "VK_NV_corner_sampled_image")
+       {
+               return;
+       }
+       if (extName == "VK_IMG_format_pvrtc")
+       {
+               return;
+       }
+       if (extName == "VK_NV_external_memory_capabilities")
+       {
+               return;
+       }
+       if (extName == "VK_NV_external_memory")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_validation_flags")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_subgroup_ballot")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_subgroup_vote")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_texture_compression_astc_hdr")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_astc_decode_mode")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_conditional_rendering")
+       {
+               functions.push_back("vkCmdBeginConditionalRenderingEXT");
+               functions.push_back("vkCmdEndConditionalRenderingEXT");
+               return;
+       }
+       if (extName == "VK_NV_clip_space_w_scaling")
+       {
+               functions.push_back("vkCmdSetViewportWScalingNV");
+               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_GOOGLE_display_timing")
+       {
+               functions.push_back("vkGetRefreshCycleDurationGOOGLE");
+               functions.push_back("vkGetPastPresentationTimingGOOGLE");
+               return;
+       }
+       if (extName == "VK_NV_sample_mask_override_coverage")
+       {
+               return;
+       }
+       if (extName == "VK_NV_geometry_shader_passthrough")
+       {
+               return;
+       }
+       if (extName == "VK_NV_viewport_array2")
+       {
+               return;
+       }
+       if (extName == "VK_NVX_multiview_per_view_attributes")
+       {
+               return;
+       }
+       if (extName == "VK_NV_viewport_swizzle")
+       {
+               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_sampler_filter_minmax")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_gpu_shader_int16")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_mixed_attachment_samples")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_fragment_mask")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_inline_uniform_block")
+       {
+               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_NV_fragment_coverage_to_color")
+       {
+               return;
+       }
+       if (extName == "VK_NV_framebuffer_mixed_samples")
+       {
+               return;
+       }
+       if (extName == "VK_NV_fill_rectangle")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_sm_builtins")
+       {
+               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_validation_cache")
+       {
+               functions.push_back("vkCreateValidationCacheEXT");
+               functions.push_back("vkDestroyValidationCacheEXT");
+               functions.push_back("vkMergeValidationCachesEXT");
+               functions.push_back("vkGetValidationCacheDataEXT");
+               return;
+       }
+       if (extName == "VK_EXT_descriptor_indexing")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_viewport_index_layer")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shading_rate_image")
+       {
+               functions.push_back("vkCmdBindShadingRateImageNV");
+               functions.push_back("vkCmdSetViewportShadingRatePaletteNV");
+               functions.push_back("vkCmdSetCoarseSampleOrderNV");
+               return;
+       }
+       if (extName == "VK_NV_ray_tracing")
+       {
+               functions.push_back("vkCreateAccelerationStructureNV");
+               functions.push_back("vkDestroyAccelerationStructureNV");
+               functions.push_back("vkGetAccelerationStructureMemoryRequirementsNV");
+               functions.push_back("vkBindAccelerationStructureMemoryNV");
+               functions.push_back("vkCmdBuildAccelerationStructureNV");
+               functions.push_back("vkCmdCopyAccelerationStructureNV");
+               functions.push_back("vkCmdTraceRaysNV");
+               functions.push_back("vkCreateRayTracingPipelinesNV");
+               functions.push_back("vkGetRayTracingShaderGroupHandlesNV");
+               functions.push_back("vkGetAccelerationStructureHandleNV");
+               functions.push_back("vkCmdWriteAccelerationStructuresPropertiesNV");
+               functions.push_back("vkCompileDeferredNV");
+               return;
+       }
+       if (extName == "VK_NV_representative_fragment_test")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_filter_cubic")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_shader_resolve")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_global_priority")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_external_memory_host")
+       {
+               functions.push_back("vkGetMemoryHostPointerPropertiesEXT");
+               return;
+       }
+       if (extName == "VK_AMD_buffer_marker")
+       {
+               functions.push_back("vkCmdWriteBufferMarkerAMD");
+               return;
+       }
+       if (extName == "VK_AMD_pipeline_compiler_control")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_calibrated_timestamps")
+       {
+               functions.push_back("vkGetCalibratedTimestampsEXT");
+               return;
+       }
+       if (extName == "VK_AMD_shader_core_properties")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_memory_overallocation_behavior")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_vertex_attribute_divisor")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_pipeline_creation_feedback")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_subgroup_partitioned")
+       {
+               return;
+       }
+       if (extName == "VK_NV_compute_shader_derivatives")
+       {
+               return;
+       }
+       if (extName == "VK_NV_mesh_shader")
+       {
+               functions.push_back("vkCmdDrawMeshTasksNV");
+               functions.push_back("vkCmdDrawMeshTasksIndirectNV");
+               functions.push_back("vkCmdDrawMeshTasksIndirectCountNV");
+               return;
+       }
+       if (extName == "VK_NV_fragment_shader_barycentric")
+       {
+               return;
+       }
+       if (extName == "VK_NV_shader_image_footprint")
+       {
+               return;
+       }
+       if (extName == "VK_NV_scissor_exclusive")
+       {
+               functions.push_back("vkCmdSetExclusiveScissorNV");
+               return;
+       }
+       if (extName == "VK_NV_device_diagnostic_checkpoints")
+       {
+               functions.push_back("vkCmdSetCheckpointNV");
+               functions.push_back("vkGetQueueCheckpointDataNV");
+               return;
+       }
+       if (extName == "VK_INTEL_shader_integer_functions2")
+       {
+               return;
+       }
+       if (extName == "VK_INTEL_performance_query")
+       {
+               functions.push_back("vkInitializePerformanceApiINTEL");
+               functions.push_back("vkUninitializePerformanceApiINTEL");
+               functions.push_back("vkCmdSetPerformanceMarkerINTEL");
+               functions.push_back("vkCmdSetPerformanceStreamMarkerINTEL");
+               functions.push_back("vkCmdSetPerformanceOverrideINTEL");
+               functions.push_back("vkAcquirePerformanceConfigurationINTEL");
+               functions.push_back("vkReleasePerformanceConfigurationINTEL");
+               functions.push_back("vkQueueSetPerformanceConfigurationINTEL");
+               functions.push_back("vkGetPerformanceParameterINTEL");
+               return;
+       }
+       if (extName == "VK_EXT_pci_bus_info")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_display_native_hdr")
+       {
+               functions.push_back("vkSetLocalDimmingAMD");
+               return;
+       }
+       if (extName == "VK_EXT_fragment_density_map")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_scalar_block_layout")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_hlsl_functionality1")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_decorate_string")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_subgroup_size_control")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_shader_core_properties2")
+       {
+               return;
+       }
+       if (extName == "VK_AMD_device_coherent_memory")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_image_atomic_int64")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_memory_budget")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_memory_priority")
+       {
+               return;
+       }
+       if (extName == "VK_NV_dedicated_allocation_image_aliasing")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_buffer_device_address")
+       {
+               functions.push_back("vkGetBufferDeviceAddressEXT");
+               return;
+       }
+       if (extName == "VK_EXT_tooling_info")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_separate_stencil_usage")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_validation_features")
+       {
+               return;
+       }
+       if (extName == "VK_NV_cooperative_matrix")
+       {
+               return;
+       }
+       if (extName == "VK_NV_coverage_reduction_mode")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_fragment_shader_interlock")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_ycbcr_image_arrays")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_provoking_vertex")
+       {
+               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_host_query_reset")
+       {
+               functions.push_back("vkResetQueryPoolEXT");
+               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_atomic_float2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_shader_demote_to_helper_invocation")
+       {
+               return;
+       }
+       if (extName == "VK_NV_device_generated_commands")
+       {
+               functions.push_back("vkGetGeneratedCommandsMemoryRequirementsNV");
+               functions.push_back("vkCmdPreprocessGeneratedCommandsNV");
+               functions.push_back("vkCmdExecuteGeneratedCommandsNV");
+               functions.push_back("vkCmdBindPipelineShaderGroupNV");
+               functions.push_back("vkCreateIndirectCommandsLayoutNV");
+               functions.push_back("vkDestroyIndirectCommandsLayoutNV");
+               return;
+       }
+       if (extName == "VK_NV_inherited_viewport_scissor")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_texel_buffer_alignment")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_transform")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_device_memory_report")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_acquire_drm_display")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_robustness2")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_custom_border_color")
+       {
+               return;
+       }
+       if (extName == "VK_GOOGLE_user_type")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_private_data")
+       {
+               functions.push_back("vkCreatePrivateDataSlotEXT");
+               functions.push_back("vkDestroyPrivateDataSlotEXT");
+               functions.push_back("vkSetPrivateDataEXT");
+               functions.push_back("vkGetPrivateDataEXT");
+               return;
+       }
+       if (extName == "VK_EXT_pipeline_creation_cache_control")
+       {
+               return;
+       }
+       if (extName == "VK_NV_device_diagnostics_config")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_render_pass_store_ops")
+       {
+               return;
+       }
+       if (extName == "VK_NV_fragment_shading_rate_enums")
+       {
+               functions.push_back("vkCmdSetFragmentShadingRateEnumNV");
+               return;
+       }
+       if (extName == "VK_NV_ray_tracing_motion_blur")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_ycbcr_2plane_444_formats")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_fragment_density_map2")
+       {
+               return;
+       }
+       if (extName == "VK_QCOM_rotated_copy_commands")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_image_robustness")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_4444_formats")
+       {
+               return;
+       }
+       if (extName == "VK_NV_acquire_winrt_display")
+       {
+               return;
+       }
+       if (extName == "VK_VALVE_mutable_descriptor_type")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_vertex_input_dynamic_state")
+       {
+               functions.push_back("vkCmdSetVertexInputEXT");
+               return;
+       }
+       if (extName == "VK_EXT_physical_device_drm")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_primitive_topology_list_restart")
+       {
+               return;
+       }
+       if (extName == "VK_HUAWEI_subpass_shading")
+       {
+               functions.push_back("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
+               functions.push_back("vkCmdSubpassShadingHUAWEI");
+               return;
+       }
+       if (extName == "VK_HUAWEI_invocation_mask")
+       {
+               functions.push_back("vkCmdBindInvocationMaskHUAWEI");
+               return;
+       }
+       if (extName == "VK_NV_external_memory_rdma")
+       {
+               functions.push_back("vkGetMemoryRemoteAddressNV");
+               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;
+       }
+       if (extName == "VK_EXT_global_priority_query")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_multi_draw")
+       {
+               functions.push_back("vkCmdDrawMultiEXT");
+               functions.push_back("vkCmdDrawMultiIndexedEXT");
+               return;
+       }
+       if (extName == "VK_EXT_load_store_op_none")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_acceleration_structure")
+       {
+               functions.push_back("vkCreateAccelerationStructureKHR");
+               functions.push_back("vkDestroyAccelerationStructureKHR");
+               functions.push_back("vkCmdBuildAccelerationStructuresKHR");
+               functions.push_back("vkCmdBuildAccelerationStructuresIndirectKHR");
+               functions.push_back("vkBuildAccelerationStructuresKHR");
+               functions.push_back("vkCopyAccelerationStructureKHR");
+               functions.push_back("vkCopyAccelerationStructureToMemoryKHR");
+               functions.push_back("vkCopyMemoryToAccelerationStructureKHR");
+               functions.push_back("vkWriteAccelerationStructuresPropertiesKHR");
+               functions.push_back("vkCmdCopyAccelerationStructureKHR");
+               functions.push_back("vkCmdCopyAccelerationStructureToMemoryKHR");
+               functions.push_back("vkCmdCopyMemoryToAccelerationStructureKHR");
+               functions.push_back("vkGetAccelerationStructureDeviceAddressKHR");
+               functions.push_back("vkCmdWriteAccelerationStructuresPropertiesKHR");
+               functions.push_back("vkGetDeviceAccelerationStructureCompatibilityKHR");
+               functions.push_back("vkGetAccelerationStructureBuildSizesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_ray_tracing_pipeline")
+       {
+               functions.push_back("vkCmdTraceRaysKHR");
+               functions.push_back("vkCreateRayTracingPipelinesKHR");
+               functions.push_back("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
+               functions.push_back("vkCmdTraceRaysIndirectKHR");
+               functions.push_back("vkGetRayTracingShaderGroupStackSizeKHR");
+               functions.push_back("vkCmdSetRayTracingPipelineStackSizeKHR");
+               return;
+       }
+       if (extName == "VK_KHR_ray_query")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_android_surface")
+       {
+               return;
+       }
+       if (extName == "VK_ANDROID_external_memory_android_hardware_buffer")
+       {
+               functions.push_back("vkGetAndroidHardwareBufferPropertiesANDROID");
+               functions.push_back("vkGetMemoryAndroidHardwareBufferANDROID");
+               return;
+       }
+       if (extName == "VK_KHR_video_queue")
+       {
+               functions.push_back("vkCreateVideoSessionKHR");
+               functions.push_back("vkDestroyVideoSessionKHR");
+               functions.push_back("vkGetVideoSessionMemoryRequirementsKHR");
+               functions.push_back("vkBindVideoSessionMemoryKHR");
+               functions.push_back("vkCreateVideoSessionParametersKHR");
+               functions.push_back("vkUpdateVideoSessionParametersKHR");
+               functions.push_back("vkDestroyVideoSessionParametersKHR");
+               functions.push_back("vkCmdBeginVideoCodingKHR");
+               functions.push_back("vkCmdEndVideoCodingKHR");
+               functions.push_back("vkCmdControlVideoCodingKHR");
+               return;
+       }
+       if (extName == "VK_KHR_video_decode_queue")
+       {
+               functions.push_back("vkCmdDecodeVideoKHR");
+               return;
+       }
+       if (extName == "VK_KHR_portability_subset")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_video_encode_queue")
+       {
+               functions.push_back("vkCmdEncodeVideoKHR");
+               return;
+       }
+       if (extName == "VK_EXT_video_encode_h264")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_video_decode_h264")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_video_decode_h265")
+       {
+               return;
+       }
+       if (extName == "VK_FUCHSIA_imagepipe_surface")
+       {
+               return;
+       }
+       if (extName == "VK_FUCHSIA_external_memory")
+       {
+               functions.push_back("vkGetMemoryZirconHandleFUCHSIA");
+               functions.push_back("vkGetMemoryZirconHandlePropertiesFUCHSIA");
+               return;
+       }
+       if (extName == "VK_FUCHSIA_external_semaphore")
+       {
+               functions.push_back("vkImportSemaphoreZirconHandleFUCHSIA");
+               functions.push_back("vkGetSemaphoreZirconHandleFUCHSIA");
+               return;
+       }
+       if (extName == "VK_GGP_stream_descriptor_surface")
+       {
+               return;
+       }
+       if (extName == "VK_GGP_frame_token")
+       {
+               return;
+       }
+       if (extName == "VK_MVK_ios_surface")
+       {
+               return;
+       }
+       if (extName == "VK_MVK_macos_surface")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_metal_surface")
+       {
+               return;
+       }
+       if (extName == "VK_NN_vi_surface")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_wayland_surface")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_win32_surface")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_memory_win32")
+       {
+               functions.push_back("vkGetMemoryWin32HandleKHR");
+               functions.push_back("vkGetMemoryWin32HandlePropertiesKHR");
+               return;
+       }
+       if (extName == "VK_KHR_win32_keyed_mutex")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_external_semaphore_win32")
+       {
+               functions.push_back("vkImportSemaphoreWin32HandleKHR");
+               functions.push_back("vkGetSemaphoreWin32HandleKHR");
+               return;
+       }
+       if (extName == "VK_KHR_external_fence_win32")
+       {
+               functions.push_back("vkImportFenceWin32HandleKHR");
+               functions.push_back("vkGetFenceWin32HandleKHR");
+               return;
+       }
+       if (extName == "VK_NV_external_memory_win32")
+       {
+               functions.push_back("vkGetMemoryWin32HandleNV");
+               return;
+       }
+       if (extName == "VK_NV_win32_keyed_mutex")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_full_screen_exclusive")
+       {
+               functions.push_back("vkAcquireFullScreenExclusiveModeEXT");
+               functions.push_back("vkReleaseFullScreenExclusiveModeEXT");
+               functions.push_back("vkGetDeviceGroupSurfacePresentModes2EXT");
+               return;
+       }
+       if (extName == "VK_KHR_xcb_surface")
+       {
+               return;
+       }
+       if (extName == "VK_KHR_xlib_surface")
+       {
+               return;
+       }
+       if (extName == "VK_EXT_acquire_xlib_display")
+       {
+               return;
+       }
+       DE_FATAL("Extension name not found");
+}
+
+::std::string instanceExtensionNames[] =
+{
+       "VK_KHR_surface",
+       "VK_KHR_display",
+       "VK_KHR_get_physical_device_properties2",
+       "VK_KHR_device_group_creation",
+       "VK_KHR_external_memory_capabilities",
+       "VK_KHR_external_semaphore_capabilities",
+       "VK_KHR_external_fence_capabilities",
+       "VK_KHR_performance_query",
+       "VK_KHR_get_surface_capabilities2",
+       "VK_KHR_get_display_properties2",
+       "VK_KHR_fragment_shading_rate",
+       "VK_EXT_debug_report",
+       "VK_NV_external_memory_capabilities",
+       "VK_EXT_direct_mode_display",
+       "VK_EXT_display_surface_counter",
+       "VK_EXT_calibrated_timestamps",
+       "VK_EXT_tooling_info",
+       "VK_NV_cooperative_matrix",
+       "VK_NV_coverage_reduction_mode",
+       "VK_EXT_headless_surface",
+       "VK_EXT_acquire_drm_display",
+       "VK_NV_acquire_winrt_display",
+       "VK_KHR_android_surface",
+       "VK_KHR_video_queue",
+       "VK_FUCHSIA_imagepipe_surface",
+       "VK_GGP_stream_descriptor_surface",
+       "VK_MVK_ios_surface",
+       "VK_MVK_macos_surface",
+       "VK_EXT_metal_surface",
+       "VK_NN_vi_surface",
+       "VK_KHR_wayland_surface",
+       "VK_KHR_win32_surface",
+       "VK_EXT_full_screen_exclusive",
+       "VK_KHR_xcb_surface",
+       "VK_KHR_xlib_surface",
+       "VK_EXT_acquire_xlib_display"
+};
+
+::std::string deviceExtensionNames[] =
+{
+       "VK_KHR_swapchain",
+       "VK_KHR_display_swapchain",
+       "VK_KHR_device_group",
+       "VK_KHR_maintenance1",
+       "VK_KHR_external_memory_fd",
+       "VK_KHR_external_semaphore_fd",
+       "VK_KHR_push_descriptor",
+       "VK_KHR_descriptor_update_template",
+       "VK_KHR_create_renderpass2",
+       "VK_KHR_shared_presentable_image",
+       "VK_KHR_external_fence_fd",
+       "VK_KHR_get_memory_requirements2",
+       "VK_KHR_sampler_ycbcr_conversion",
+       "VK_KHR_bind_memory2",
+       "VK_KHR_maintenance3",
+       "VK_KHR_draw_indirect_count",
+       "VK_KHR_timeline_semaphore",
+       "VK_KHR_present_wait",
+       "VK_KHR_buffer_device_address",
+       "VK_KHR_deferred_host_operations",
+       "VK_KHR_pipeline_executable_properties",
+       "VK_KHR_synchronization2",
+       "VK_KHR_copy_commands2",
+       "VK_EXT_debug_marker",
+       "VK_EXT_transform_feedback",
+       "VK_NVX_binary_import",
+       "VK_NVX_image_view_handle",
+       "VK_AMD_draw_indirect_count",
+       "VK_AMD_shader_info",
+       "VK_EXT_conditional_rendering",
+       "VK_NV_clip_space_w_scaling",
+       "VK_EXT_display_control",
+       "VK_GOOGLE_display_timing",
+       "VK_EXT_discard_rectangles",
+       "VK_EXT_hdr_metadata",
+       "VK_EXT_debug_utils",
+       "VK_EXT_sample_locations",
+       "VK_EXT_image_drm_format_modifier",
+       "VK_EXT_validation_cache",
+       "VK_NV_shading_rate_image",
+       "VK_NV_ray_tracing",
+       "VK_EXT_external_memory_host",
+       "VK_AMD_buffer_marker",
+       "VK_NV_mesh_shader",
+       "VK_NV_scissor_exclusive",
+       "VK_NV_device_diagnostic_checkpoints",
+       "VK_INTEL_performance_query",
+       "VK_AMD_display_native_hdr",
+       "VK_EXT_buffer_device_address",
+       "VK_EXT_line_rasterization",
+       "VK_EXT_host_query_reset",
+       "VK_EXT_extended_dynamic_state",
+       "VK_NV_device_generated_commands",
+       "VK_EXT_private_data",
+       "VK_NV_fragment_shading_rate_enums",
+       "VK_EXT_vertex_input_dynamic_state",
+       "VK_HUAWEI_subpass_shading",
+       "VK_HUAWEI_invocation_mask",
+       "VK_NV_external_memory_rdma",
+       "VK_EXT_extended_dynamic_state2",
+       "VK_EXT_color_write_enable",
+       "VK_EXT_multi_draw",
+       "VK_KHR_acceleration_structure",
+       "VK_KHR_ray_tracing_pipeline",
+       "VK_ANDROID_external_memory_android_hardware_buffer",
+       "VK_KHR_video_decode_queue",
+       "VK_KHR_video_encode_queue",
+       "VK_FUCHSIA_external_memory",
+       "VK_FUCHSIA_external_semaphore",
+       "VK_KHR_external_memory_win32",
+       "VK_KHR_external_semaphore_win32",
+       "VK_KHR_external_fence_win32",
+       "VK_NV_external_memory_win32"
+};
diff --git a/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl b/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
new file mode 100644 (file)
index 0000000..c91bd7c
--- /dev/null
@@ -0,0 +1,494 @@
+/* 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 void                                        (VKAPI_CALL* FreeMemoryFunc)                                                                                                            (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
+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 void                                        (VKAPI_CALL* DestroyQueryPoolFunc)                                                                                                      (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
+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* CreateShaderModuleFunc)                                                                                            (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyShaderModuleFunc)                                                                                           (VkDevice device, VkShaderModule shaderModule, 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* GetPipelineCacheDataFunc)                                                                                          (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergePipelineCachesFunc)                                                                                           (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
+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 void                                        (VKAPI_CALL* DestroyDescriptorPoolFunc)                                                                                         (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
+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 void                                        (VKAPI_CALL* DestroyCommandPoolFunc)                                                                                            (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
+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* 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* TrimCommandPoolFunc)                                                                                                       (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+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 VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateFunc)                                                                        (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateFunc)                                                                       (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateFunc)                                                                       (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+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 void                                        (VKAPI_CALL* DestroySwapchainKHRFunc)                                                                                           (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
+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 void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2KHRFunc)                                                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2KHRFunc)                                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2KHRFunc)                                                         (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2KHRFunc)                                            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                                            (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2KHRFunc)                                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)                                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesKHRFunc)                                                           (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDeviceMaskKHRFunc)                                                                                           (VkCommandBuffer commandBuffer, deUint32 deviceMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchBaseKHRFunc)                                                                                            (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolKHRFunc)                                                                                            (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDeviceGroupsKHRFunc)                                                                      (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesKHRFunc)                                          (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+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 void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)                                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+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 void                                        (VKAPI_CALL* CmdPushDescriptorSetKHRFunc)                                                                                       (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc)                                                           (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc)                                                                     (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc)                                                            (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc)                                                            (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2KHRFunc)                                                                                          (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2KHRFunc)                                                                                        (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2KHRFunc)                                                                                            (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2KHRFunc)                                                                                          (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                                                         (VkDevice device, VkSwapchainKHR swapchain);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc)                                           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceFdKHRFunc)                                                                                                      (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+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 void                                        (VKAPI_CALL* GetImageMemoryRequirements2KHRFunc)                                                                        (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirements2KHRFunc)                                                                       (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirements2KHRFunc)                                                          (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerYcbcrConversionKHRFunc)                                                                       (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerYcbcrConversionKHRFunc)                                                                      (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemory2KHRFunc)                                                                                          (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemory2KHRFunc)                                                                                           (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportKHRFunc)                                                                      (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountKHRFunc)                                                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc)                                                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreCounterValueKHRFunc)                                                                           (VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitSemaphoresKHRFunc)                                                                                                     (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SignalSemaphoreKHRFunc)                                                                                            (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+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* WaitForPresentKHRFunc)                                                                                                     (VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressKHRFunc)                                                                                     (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetBufferOpaqueCaptureAddressKHRFunc)                                                                      (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressKHRFunc)                                                        (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDeferredOperationKHRFunc)                                                                            (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDeferredOperationKHRFunc)                                                                           (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR uint32_t                            (VKAPI_CALL* GetDeferredOperationMaxConcurrencyKHRFunc)                                                         (VkDevice device, VkDeferredOperationKHR operation);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeferredOperationResultKHRFunc)                                                                         (VkDevice device, VkDeferredOperationKHR operation);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DeferredOperationJoinKHRFunc)                                                                                      (VkDevice device, VkDeferredOperationKHR operation);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutablePropertiesKHRFunc)                                                            (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutableStatisticsKHRFunc)                                                            (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutableInternalRepresentationsKHRFunc)                                       (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
+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* CreateDebugReportCallbackEXTFunc)                                                                          (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDebugReportCallbackEXTFunc)                                                                         (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DebugReportMessageEXTFunc)                                                                                         (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectTagEXTFunc)                                                                            (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectNameEXTFunc)                                                                           (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerBeginEXTFunc)                                                                                        (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerEndEXTFunc)                                                                                          (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerInsertEXTFunc)                                                                                       (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindTransformFeedbackBuffersEXTFunc)                                                            (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginTransformFeedbackEXTFunc)                                                                          (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndTransformFeedbackEXTFunc)                                                                            (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginQueryIndexedEXTFunc)                                                                                       (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndQueryIndexedEXTFunc)                                                                                         (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectByteCountEXTFunc)                                                                           (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateCuModuleNVXFunc)                                                                                                     (VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateCuFunctionNVXFunc)                                                                                           (VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyCuModuleNVXFunc)                                                                                            (VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyCuFunctionNVXFunc)                                                                                          (VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCuLaunchKernelNVXFunc)                                                                                          (VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo);
+typedef VKAPI_ATTR uint32_t                            (VKAPI_CALL* GetImageViewHandleNVXFunc)                                                                                         (VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetImageViewAddressNVXFunc)                                                                                        (VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountAMDFunc)                                                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountAMDFunc)                                                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetShaderInfoAMDFunc)                                                                                                      (VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginConditionalRenderingEXTFunc)                                                                       (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndConditionalRenderingEXTFunc)                                                                         (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportWScalingNVFunc)                                                                                      (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings);
+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 VkResult                            (VKAPI_CALL* GetRefreshCycleDurationGOOGLEFunc)                                                                         (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPastPresentationTimingGOOGLEFunc)                                                                       (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
+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* CreateValidationCacheEXTFunc)                                                                                      (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyValidationCacheEXTFunc)                                                                                     (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergeValidationCachesEXTFunc)                                                                                      (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetValidationCacheDataEXTFunc)                                                                                     (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindShadingRateImageNVFunc)                                                                                     (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportShadingRatePaletteNVFunc)                                                            (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetCoarseSampleOrderNVFunc)                                                                                     (VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAccelerationStructureNVFunc)                                                                         (VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyAccelerationStructureNVFunc)                                                                        (VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetAccelerationStructureMemoryRequirementsNVFunc)                                          (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindAccelerationStructureMemoryNVFunc)                                                                     (VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBuildAccelerationStructureNVFunc)                                                                       (VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyAccelerationStructureNVFunc)                                                                        (VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdTraceRaysNVFunc)                                                                                                        (VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRayTracingPipelinesNVFunc)                                                                           (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRayTracingShaderGroupHandlesKHRFunc)                                                            (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRayTracingShaderGroupHandlesNVFunc)                                                                     (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetAccelerationStructureHandleNVFunc)                                                                      (VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWriteAccelerationStructuresPropertiesNVFunc)                                            (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CompileDeferredNVFunc)                                                                                                     (VkDevice device, VkPipeline pipeline, deUint32 shader);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)                                                                     (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWriteBufferMarkerAMDFunc)                                                                                       (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker);
+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 void                                        (VKAPI_CALL* CmdDrawMeshTasksNVFunc)                                                                                            (VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawMeshTasksIndirectNVFunc)                                                                            (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawMeshTasksIndirectCountNVFunc)                                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetExclusiveScissorNVFunc)                                                                                      (VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetCheckpointNVFunc)                                                                                            (VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetQueueCheckpointDataNVFunc)                                                                                      (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* InitializePerformanceApiINTELFunc)                                                                         (VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UninitializePerformanceApiINTELFunc)                                                                       (VkDevice device);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CmdSetPerformanceMarkerINTELFunc)                                                                          (VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CmdSetPerformanceStreamMarkerINTELFunc)                                                            (VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CmdSetPerformanceOverrideINTELFunc)                                                                        (VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquirePerformanceConfigurationINTELFunc)                                                          (VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ReleasePerformanceConfigurationINTELFunc)                                                          (VkDevice device, VkPerformanceConfigurationINTEL configuration);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueSetPerformanceConfigurationINTELFunc)                                                         (VkQueue queue, VkPerformanceConfigurationINTEL configuration);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPerformanceParameterINTELFunc)                                                                          (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* SetLocalDimmingAMDFunc)                                                                                            (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressEXTFunc)                                                                                     (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceToolPropertiesEXTFunc)                                                            (VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)                                        (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc)       (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateHeadlessSurfaceEXTFunc)                                                                                      (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetLineStippleEXTFunc)                                                                                          (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* ResetQueryPoolEXTFunc)                                                                                                     (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+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* GetGeneratedCommandsMemoryRequirementsNVFunc)                                                      (VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPreprocessGeneratedCommandsNVFunc)                                                                      (VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdExecuteGeneratedCommandsNVFunc)                                                                         (VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindPipelineShaderGroupNVFunc)                                                                          (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIndirectCommandsLayoutNVFunc)                                                                        (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyIndirectCommandsLayoutNVFunc)                                                                       (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireDrmDisplayEXTFunc)                                                                                          (VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDrmDisplayEXTFunc)                                                                                                      (VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreatePrivateDataSlotEXTFunc)                                                                                      (VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPrivateDataSlotEXTFunc)                                                                                     (VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SetPrivateDataEXTFunc)                                                                                                     (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPrivateDataEXTFunc)                                                                                                     (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetFragmentShadingRateEnumNVFunc)                                                                       (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireWinrtDisplayNVFunc)                                                                                         (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetWinrtDisplayNVFunc)                                                                                                     (VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetVertexInputEXTFunc)                                                                                          (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEIFunc)                                         (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSubpassShadingHUAWEIFunc)                                                                                       (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindInvocationMaskHUAWEIFunc)                                                                           (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryRemoteAddressNVFunc)                                                                                      (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);
+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);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawMultiEXTFunc)                                                                                                       (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawMultiIndexedEXTFunc)                                                                                        (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAccelerationStructureKHRFunc)                                                                        (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyAccelerationStructureKHRFunc)                                                                       (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBuildAccelerationStructuresKHRFunc)                                                                     (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBuildAccelerationStructuresIndirectKHRFunc)                                                     (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BuildAccelerationStructuresKHRFunc)                                                                        (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CopyAccelerationStructureKHRFunc)                                                                          (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CopyAccelerationStructureToMemoryKHRFunc)                                                          (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CopyMemoryToAccelerationStructureKHRFunc)                                                          (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WriteAccelerationStructuresPropertiesKHRFunc)                                                      (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyAccelerationStructureKHRFunc)                                                                       (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyAccelerationStructureToMemoryKHRFunc)                                                       (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyMemoryToAccelerationStructureKHRFunc)                                                       (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetAccelerationStructureDeviceAddressKHRFunc)                                                      (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWriteAccelerationStructuresPropertiesKHRFunc)                                           (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceAccelerationStructureCompatibilityKHRFunc)                                        (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetAccelerationStructureBuildSizesKHRFunc)                                                         (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdTraceRaysKHRFunc)                                                                                                       (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRayTracingPipelinesKHRFunc)                                                                          (VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRayTracingCaptureReplayShaderGroupHandlesKHRFunc)                                       (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdTraceRaysIndirectKHRFunc)                                                                                       (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress);
+typedef VKAPI_ATTR VkDeviceSize                        (VKAPI_CALL* GetRayTracingShaderGroupStackSizeKHRFunc)                                                          (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetRayTracingPipelineStackSizeKHRFunc)                                                          (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAndroidSurfaceKHRFunc)                                                                                       (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetAndroidHardwareBufferPropertiesANDROIDFunc)                                                     (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryAndroidHardwareBufferANDROIDFunc)                                                         (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceVideoCapabilitiesKHRFunc)                                                         (VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceVideoFormatPropertiesKHRFunc)                                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, deUint32* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateVideoSessionKHRFunc)                                                                                         (VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyVideoSessionKHRFunc)                                                                                        (VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetVideoSessionMemoryRequirementsKHRFunc)                                                          (VkDevice device, VkVideoSessionKHR videoSession, deUint32* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindVideoSessionMemoryKHRFunc)                                                                                     (VkDevice device, VkVideoSessionKHR videoSession, deUint32 videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateVideoSessionParametersKHRFunc)                                                                       (VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* UpdateVideoSessionParametersKHRFunc)                                                                       (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyVideoSessionParametersKHRFunc)                                                                      (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginVideoCodingKHRFunc)                                                                                        (VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndVideoCodingKHRFunc)                                                                                          (VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdControlVideoCodingKHRFunc)                                                                                      (VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDecodeVideoKHRFunc)                                                                                                     (VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEncodeVideoKHRFunc)                                                                                                     (VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateImagePipeSurfaceFUCHSIAFunc)                                                                         (VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryZirconHandleFUCHSIAFunc)                                                                          (VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryZirconHandlePropertiesFUCHSIAFunc)                                                        (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreZirconHandleFUCHSIAFunc)                                                            (VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreZirconHandleFUCHSIAFunc)                                                                       (VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateStreamDescriptorSurfaceGGPFunc)                                                                      (VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIOSSurfaceMVKFunc)                                                                                           (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMacOSSurfaceMVKFunc)                                                                                         (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMetalSurfaceEXTFunc)                                                                                         (VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateViSurfaceNNFunc)                                                                                                     (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWaylandSurfaceKHRFunc)                                                                                       (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWaylandPresentationSupportKHRFunc)                                        (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWin32SurfaceKHRFunc)                                                                                         (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWin32PresentationSupportKHRFunc)                                          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleKHRFunc)                                                                                       (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandlePropertiesKHRFunc)                                                                     (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreWin32HandleKHRFunc)                                                                         (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreWin32HandleKHRFunc)                                                                            (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceWin32HandleKHRFunc)                                                                                     (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceWin32HandleKHRFunc)                                                                                        (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleNVFunc)                                                                                        (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfacePresentModes2EXTFunc)                                                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireFullScreenExclusiveModeEXTFunc)                                                                     (VkDevice device, VkSwapchainKHR swapchain);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ReleaseFullScreenExclusiveModeEXTFunc)                                                                     (VkDevice device, VkSwapchainKHR swapchain);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceGroupSurfacePresentModes2EXTFunc)                                                         (VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXcbSurfaceKHRFunc)                                                                                           (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXcbPresentationSupportKHRFunc)                                            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXlibSurfaceKHRFunc)                                                                                          (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXlibPresentationSupportKHRFunc)                                           (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireXlibDisplayEXTFunc)                                                                                         (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRandROutputDisplayEXTFunc)                                                                                      (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay);
diff --git a/external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl b/external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl
new file mode 100644 (file)
index 0000000..b146af8
--- /dev/null
@@ -0,0 +1,2838 @@
+/* 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<VkBindSparseInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_BIND_SPARSE_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<VkShaderModuleCreateInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_SHADER_MODULE_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<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<VkDeviceGroupBindSparseInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO;
+}
+
+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<VkImageSparseMemoryRequirementsInfo2> (void)
+{
+       return VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
+}
+
+template<> VkStructureType getStructureType<VkMemoryRequirements2> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
+}
+
+template<> VkStructureType getStructureType<VkSparseImageMemoryRequirements2> (void)
+{
+       return VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_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<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<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<VkDescriptorUpdateTemplateCreateInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
+}
+
+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<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<VkPhysicalDevicePushDescriptorPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_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<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<VkSurfaceProtectedCapabilitiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineExecutablePropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineExecutableInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineExecutableStatisticKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineExecutableInternalRepresentationKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPipelineLibraryCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPresentIdKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PRESENT_ID_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePresentIdFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_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<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
+}
+
+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<VkDebugReportCallbackCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineRasterizationStateRasterizationOrderAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;
+}
+
+template<> VkStructureType getStructureType<VkDebugMarkerObjectNameInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDebugMarkerObjectTagInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDebugMarkerMarkerInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDedicatedAllocationImageCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkDedicatedAllocationBufferCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkDedicatedAllocationMemoryAllocateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceTransformFeedbackPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineRasterizationStateStreamCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkCuModuleCreateInfoNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX;
+}
+
+template<> VkStructureType getStructureType<VkCuFunctionCreateInfoNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX;
+}
+
+template<> VkStructureType getStructureType<VkCuLaunchInfoNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX;
+}
+
+template<> VkStructureType getStructureType<VkImageViewHandleInfoNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX;
+}
+
+template<> VkStructureType getStructureType<VkImageViewAddressPropertiesNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX;
+}
+
+template<> VkStructureType getStructureType<VkTextureLODGatherFormatPropertiesAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceCornerSampledImageFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkExternalMemoryImageCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkExportMemoryAllocateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkValidationFlagsEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT;
+}
+
+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<VkConditionalRenderingBeginInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkCommandBufferInheritanceConditionalRenderingInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineViewportWScalingStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;
+}
+
+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<VkPresentTimesInfoGOOGLE> (void)
+{
+       return VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;
+}
+
+template<> VkStructureType getStructureType<VkPipelineViewportSwizzleStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;
+}
+
+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<VkPhysicalDeviceInlineUniformBlockFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceInlineUniformBlockPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkWriteDescriptorSetInlineUniformBlockEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDescriptorPoolInlineUniformBlockCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_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<VkPipelineCoverageToColorStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineCoverageModulationStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;
+}
+
+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<VkValidationCacheCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkShaderModuleValidationCacheCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineViewportShadingRateImageStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShadingRateImageFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShadingRateImagePropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkRayTracingShaderGroupCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkRayTracingPipelineCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkGeometryTrianglesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV;
+}
+
+template<> VkStructureType getStructureType<VkGeometryAABBNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV;
+}
+
+template<> VkStructureType getStructureType<VkGeometryNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GEOMETRY_NV;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkBindAccelerationStructureMemoryInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkWriteDescriptorSetAccelerationStructureNV> (void)
+{
+       return VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureMemoryRequirementsInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineRepresentativeFragmentTestStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;
+}
+
+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<VkPipelineCompilerControlCreateInfoAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;
+}
+
+template<> VkStructureType getStructureType<VkCalibratedTimestampInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderCorePropertiesAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
+}
+
+template<> VkStructureType getStructureType<VkDeviceMemoryOverallocationCreateInfoAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
+}
+
+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<VkPipelineCreationFeedbackCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceMeshShaderFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceMeshShaderPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineViewportExclusiveScissorStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceExclusiveScissorFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkQueueFamilyCheckpointPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkCheckpointDataNV> (void)
+{
+       return VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkInitializePerformanceApiInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkQueryPoolPerformanceQueryCreateInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceMarkerInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceStreamMarkerInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceOverrideInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceConfigurationAcquireInfoINTEL> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePCIBusInfoPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDisplayNativeHdrSurfaceCapabilitiesAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;
+}
+
+template<> VkStructureType getStructureType<VkSwapchainDisplayNativeHdrCreateInfoAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentDensityMapPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkRenderPassFragmentDensityMapCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_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<VkPhysicalDeviceShaderCoreProperties2AMD> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;
+}
+
+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<VkPhysicalDeviceMemoryPriorityFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkMemoryPriorityAllocateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkBufferDeviceAddressCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceToolPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkValidationFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkCooperativeMatrixPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceCooperativeMatrixPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineCoverageReductionStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkFramebufferMixedSamplesCombinationNV> (void)
+{
+       return VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;
+}
+
+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<VkPhysicalDeviceProvokingVertexFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceProvokingVertexPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_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<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkGraphicsShaderGroupCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkGraphicsPipelineShaderGroupsCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkIndirectCommandsLayoutTokenNV> (void)
+{
+       return VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;
+}
+
+template<> VkStructureType getStructureType<VkIndirectCommandsLayoutCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkGeneratedCommandsInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkGeneratedCommandsMemoryRequirementsInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceInheritedViewportScissorFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkCommandBufferInheritanceViewportScissorInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV;
+}
+
+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<VkRenderPassTransformBeginInfoQCOM> (void)
+{
+       return VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM;
+}
+
+template<> VkStructureType getStructureType<VkCommandBufferInheritanceRenderPassTransformInfoQCOM> (void)
+{
+       return VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDeviceMemoryReportCallbackDataEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDeviceDeviceMemoryReportCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_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<VkPhysicalDevicePrivateDataFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkDevicePrivateDataCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPrivateDataSlotCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceDiagnosticsConfigFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkDeviceDiagnosticsConfigCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPipelineFragmentShadingRateEnumStateCreateInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureGeometryMotionTrianglesDataNV> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureMotionInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkCopyCommandTransformInfoQCOM> (void)
+{
+       return VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM;
+}
+
+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<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE;
+}
+
+template<> VkStructureType getStructureType<VkMutableDescriptorTypeCreateInfoVALVE> (void)
+{
+       return VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE;
+}
+
+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<VkPhysicalDeviceDrmPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkSubpassShadingPipelineCreateInfoHUAWEI> (void)
+{
+       return VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI;
+}
+
+template<> VkStructureType getStructureType<VkMemoryGetRemoteAddressInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;
+}
+
+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;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkQueueFamilyGlobalPriorityPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceMultiDrawPropertiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureGeometryTrianglesDataKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureGeometryAabbsDataKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureGeometryInstancesDataKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureGeometryKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureBuildGeometryInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkWriteDescriptorSetAccelerationStructureKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceAccelerationStructurePropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureDeviceAddressInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureVersionInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkCopyAccelerationStructureToMemoryInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkCopyMemoryToAccelerationStructureInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkCopyAccelerationStructureInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAccelerationStructureBuildSizesInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkRayTracingShaderGroupCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkRayTracingPipelineInterfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkRayTracingPipelineCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPipelinePropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAndroidSurfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAndroidHardwareBufferUsageANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkAndroidHardwareBufferPropertiesANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkAndroidHardwareBufferFormatPropertiesANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkImportAndroidHardwareBufferInfoANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkMemoryGetAndroidHardwareBufferInfoANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkExternalFormatANDROID> (void)
+{
+       return VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;
+}
+
+template<> VkStructureType getStructureType<VkVideoQueueFamilyProperties2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoProfileKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoProfilesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoCapabilitiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceVideoFormatInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoFormatPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoPictureResourceKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoReferenceSlotKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoGetMemoryPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoBindMemoryKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoSessionCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoSessionParametersCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoSessionParametersUpdateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoBeginCodingInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoEndCodingInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoCodingControlInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePortabilitySubsetPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeRateControlInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264CapabilitiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264SessionCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264SessionParametersAddInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264SessionParametersCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264DpbSlotInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264NaluSliceEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264VclFrameInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264EmitPictureParametersEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoEncodeH264ProfileEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264ProfileEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264CapabilitiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264SessionCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264SessionParametersAddInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264SessionParametersCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264PictureInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264MvcEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH264DpbSlotInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265ProfileEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265CapabilitiesEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265SessionCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265SessionParametersAddInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265SessionParametersCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265PictureInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkVideoDecodeH265DpbSlotInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkImagePipeSurfaceCreateInfoFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkImportMemoryZirconHandleInfoFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkMemoryZirconHandlePropertiesFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkMemoryGetZirconHandleInfoFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkImportSemaphoreZirconHandleInfoFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkSemaphoreGetZirconHandleInfoFUCHSIA> (void)
+{
+       return VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
+}
+
+template<> VkStructureType getStructureType<VkStreamDescriptorSurfaceCreateInfoGGP> (void)
+{
+       return VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
+}
+
+template<> VkStructureType getStructureType<VkPresentFrameTokenGGP> (void)
+{
+       return VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP;
+}
+
+template<> VkStructureType getStructureType<VkIOSSurfaceCreateInfoMVK> (void)
+{
+       return VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
+}
+
+template<> VkStructureType getStructureType<VkMacOSSurfaceCreateInfoMVK> (void)
+{
+       return VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
+}
+
+template<> VkStructureType getStructureType<VkMetalSurfaceCreateInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkViSurfaceCreateInfoNN> (void)
+{
+       return VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;
+}
+
+template<> VkStructureType getStructureType<VkWaylandSurfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkWin32SurfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportMemoryWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkExportMemoryWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkMemoryWin32HandlePropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkMemoryGetWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkWin32KeyedMutexAcquireReleaseInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportSemaphoreWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkExportSemaphoreWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkD3D12FenceSubmitInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSemaphoreGetWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportFenceWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkExportFenceWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkFenceGetWin32HandleInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportMemoryWin32HandleInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkExportMemoryWin32HandleInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkWin32KeyedMutexAcquireReleaseInfoNV> (void)
+{
+       return VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceFullScreenExclusiveInfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceCapabilitiesFullScreenExclusiveEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceFullScreenExclusiveWin32InfoEXT> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;
+}
+
+template<> VkStructureType getStructureType<VkXcbSurfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkXlibSurfaceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
+}
+
diff --git a/external/vulkancts/framework/vulkan/vkHandleType.inl b/external/vulkancts/framework/vulkan/vkHandleType.inl
new file mode 100644 (file)
index 0000000..56eb1e0
--- /dev/null
@@ -0,0 +1,54 @@
+/* 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_DESCRIPTOR_UPDATE_TEMPLATE,
+       HANDLE_TYPE_SURFACE_KHR,
+       HANDLE_TYPE_SWAPCHAIN_KHR,
+       HANDLE_TYPE_DISPLAY_KHR,
+       HANDLE_TYPE_DISPLAY_MODE_KHR,
+       HANDLE_TYPE_DEFERRED_OPERATION_KHR,
+       HANDLE_TYPE_DEBUG_REPORT_CALLBACK_EXT,
+       HANDLE_TYPE_CU_MODULE_NVX,
+       HANDLE_TYPE_CU_FUNCTION_NVX,
+       HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT,
+       HANDLE_TYPE_VALIDATION_CACHE_EXT,
+       HANDLE_TYPE_ACCELERATION_STRUCTURE_NV,
+       HANDLE_TYPE_PERFORMANCE_CONFIGURATION_INTEL,
+       HANDLE_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,
+       HANDLE_TYPE_PRIVATE_DATA_SLOT_EXT,
+       HANDLE_TYPE_ACCELERATION_STRUCTURE_KHR,
+       HANDLE_TYPE_VIDEO_SESSION_KHR,
+       HANDLE_TYPE_VIDEO_SESSION_PARAMETERS_KHR,
+       HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION_KHR                = HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION,
+       HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR              = HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+       HANDLE_TYPE_LAST                                                                = HANDLE_TYPE_VIDEO_SESSION_PARAMETERS_KHR + 1
+};
+
diff --git a/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..9b16850
--- /dev/null
@@ -0,0 +1,422 @@
+/* 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.freeMemory                                                                                        = (FreeMemoryFunc)                                                                              GET_PROC_ADDR("vkFreeMemory");
+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.getImageSparseMemoryRequirements                                  = (GetImageSparseMemoryRequirementsFunc)                                GET_PROC_ADDR("vkGetImageSparseMemoryRequirements");
+m_vk.queueBindSparse                                                                   = (QueueBindSparseFunc)                                                                 GET_PROC_ADDR("vkQueueBindSparse");
+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.destroyQueryPool                                                                  = (DestroyQueryPoolFunc)                                                                GET_PROC_ADDR("vkDestroyQueryPool");
+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.createShaderModule                                                                        = (CreateShaderModuleFunc)                                                              GET_PROC_ADDR("vkCreateShaderModule");
+m_vk.destroyShaderModule                                                               = (DestroyShaderModuleFunc)                                                             GET_PROC_ADDR("vkDestroyShaderModule");
+m_vk.createPipelineCache                                                               = (CreatePipelineCacheFunc)                                                             GET_PROC_ADDR("vkCreatePipelineCache");
+m_vk.destroyPipelineCache                                                              = (DestroyPipelineCacheFunc)                                                    GET_PROC_ADDR("vkDestroyPipelineCache");
+m_vk.getPipelineCacheData                                                              = (GetPipelineCacheDataFunc)                                                    GET_PROC_ADDR("vkGetPipelineCacheData");
+m_vk.mergePipelineCaches                                                               = (MergePipelineCachesFunc)                                                             GET_PROC_ADDR("vkMergePipelineCaches");
+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.destroyDescriptorPool                                                             = (DestroyDescriptorPoolFunc)                                                   GET_PROC_ADDR("vkDestroyDescriptorPool");
+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.destroyCommandPool                                                                        = (DestroyCommandPoolFunc)                                                              GET_PROC_ADDR("vkDestroyCommandPool");
+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.bindBufferMemory2                                                                 = (BindBufferMemory2Func)                                                               GET_PROC_ADDR("vkBindBufferMemory2");
+if (!m_vk.bindBufferMemory2)
+       m_vk.bindBufferMemory2                                                          = (BindBufferMemory2Func)                                                               GET_PROC_ADDR("vkBindBufferMemory2KHR");
+m_vk.bindImageMemory2                                                                  = (BindImageMemory2Func)                                                                GET_PROC_ADDR("vkBindImageMemory2");
+if (!m_vk.bindImageMemory2)
+       m_vk.bindImageMemory2                                                           = (BindImageMemory2Func)                                                                GET_PROC_ADDR("vkBindImageMemory2KHR");
+m_vk.getDeviceGroupPeerMemoryFeatures                                  = (GetDeviceGroupPeerMemoryFeaturesFunc)                                GET_PROC_ADDR("vkGetDeviceGroupPeerMemoryFeatures");
+if (!m_vk.getDeviceGroupPeerMemoryFeatures)
+       m_vk.getDeviceGroupPeerMemoryFeatures                           = (GetDeviceGroupPeerMemoryFeaturesFunc)                                GET_PROC_ADDR("vkGetDeviceGroupPeerMemoryFeaturesKHR");
+m_vk.cmdSetDeviceMask                                                                  = (CmdSetDeviceMaskFunc)                                                                GET_PROC_ADDR("vkCmdSetDeviceMask");
+if (!m_vk.cmdSetDeviceMask)
+       m_vk.cmdSetDeviceMask                                                           = (CmdSetDeviceMaskFunc)                                                                GET_PROC_ADDR("vkCmdSetDeviceMaskKHR");
+m_vk.cmdDispatchBase                                                                   = (CmdDispatchBaseFunc)                                                                 GET_PROC_ADDR("vkCmdDispatchBase");
+if (!m_vk.cmdDispatchBase)
+       m_vk.cmdDispatchBase                                                            = (CmdDispatchBaseFunc)                                                                 GET_PROC_ADDR("vkCmdDispatchBaseKHR");
+m_vk.getImageMemoryRequirements2                                               = (GetImageMemoryRequirements2Func)                                             GET_PROC_ADDR("vkGetImageMemoryRequirements2");
+if (!m_vk.getImageMemoryRequirements2)
+       m_vk.getImageMemoryRequirements2                                        = (GetImageMemoryRequirements2Func)                                             GET_PROC_ADDR("vkGetImageMemoryRequirements2KHR");
+m_vk.getBufferMemoryRequirements2                                              = (GetBufferMemoryRequirements2Func)                                    GET_PROC_ADDR("vkGetBufferMemoryRequirements2");
+if (!m_vk.getBufferMemoryRequirements2)
+       m_vk.getBufferMemoryRequirements2                                       = (GetBufferMemoryRequirements2Func)                                    GET_PROC_ADDR("vkGetBufferMemoryRequirements2KHR");
+m_vk.getImageSparseMemoryRequirements2                                 = (GetImageSparseMemoryRequirements2Func)                               GET_PROC_ADDR("vkGetImageSparseMemoryRequirements2");
+if (!m_vk.getImageSparseMemoryRequirements2)
+       m_vk.getImageSparseMemoryRequirements2                          = (GetImageSparseMemoryRequirements2Func)                               GET_PROC_ADDR("vkGetImageSparseMemoryRequirements2KHR");
+m_vk.trimCommandPool                                                                   = (TrimCommandPoolFunc)                                                                 GET_PROC_ADDR("vkTrimCommandPool");
+if (!m_vk.trimCommandPool)
+       m_vk.trimCommandPool                                                            = (TrimCommandPoolFunc)                                                                 GET_PROC_ADDR("vkTrimCommandPoolKHR");
+m_vk.getDeviceQueue2                                                                   = (GetDeviceQueue2Func)                                                                 GET_PROC_ADDR("vkGetDeviceQueue2");
+m_vk.createSamplerYcbcrConversion                                              = (CreateSamplerYcbcrConversionFunc)                                    GET_PROC_ADDR("vkCreateSamplerYcbcrConversion");
+if (!m_vk.createSamplerYcbcrConversion)
+       m_vk.createSamplerYcbcrConversion                                       = (CreateSamplerYcbcrConversionFunc)                                    GET_PROC_ADDR("vkCreateSamplerYcbcrConversionKHR");
+m_vk.destroySamplerYcbcrConversion                                             = (DestroySamplerYcbcrConversionFunc)                                   GET_PROC_ADDR("vkDestroySamplerYcbcrConversion");
+if (!m_vk.destroySamplerYcbcrConversion)
+       m_vk.destroySamplerYcbcrConversion                                      = (DestroySamplerYcbcrConversionFunc)                                   GET_PROC_ADDR("vkDestroySamplerYcbcrConversionKHR");
+m_vk.createDescriptorUpdateTemplate                                            = (CreateDescriptorUpdateTemplateFunc)                                  GET_PROC_ADDR("vkCreateDescriptorUpdateTemplate");
+if (!m_vk.createDescriptorUpdateTemplate)
+       m_vk.createDescriptorUpdateTemplate                                     = (CreateDescriptorUpdateTemplateFunc)                                  GET_PROC_ADDR("vkCreateDescriptorUpdateTemplateKHR");
+m_vk.destroyDescriptorUpdateTemplate                                   = (DestroyDescriptorUpdateTemplateFunc)                                 GET_PROC_ADDR("vkDestroyDescriptorUpdateTemplate");
+if (!m_vk.destroyDescriptorUpdateTemplate)
+       m_vk.destroyDescriptorUpdateTemplate                            = (DestroyDescriptorUpdateTemplateFunc)                                 GET_PROC_ADDR("vkDestroyDescriptorUpdateTemplateKHR");
+m_vk.updateDescriptorSetWithTemplate                                   = (UpdateDescriptorSetWithTemplateFunc)                                 GET_PROC_ADDR("vkUpdateDescriptorSetWithTemplate");
+if (!m_vk.updateDescriptorSetWithTemplate)
+       m_vk.updateDescriptorSetWithTemplate                            = (UpdateDescriptorSetWithTemplateFunc)                                 GET_PROC_ADDR("vkUpdateDescriptorSetWithTemplateKHR");
+m_vk.getDescriptorSetLayoutSupport                                             = (GetDescriptorSetLayoutSupportFunc)                                   GET_PROC_ADDR("vkGetDescriptorSetLayoutSupport");
+if (!m_vk.getDescriptorSetLayoutSupport)
+       m_vk.getDescriptorSetLayoutSupport                                      = (GetDescriptorSetLayoutSupportFunc)                                   GET_PROC_ADDR("vkGetDescriptorSetLayoutSupportKHR");
+m_vk.cmdDrawIndirectCount                                                              = (CmdDrawIndirectCountFunc)                                                    GET_PROC_ADDR("vkCmdDrawIndirectCount");
+if (!m_vk.cmdDrawIndirectCount)
+       m_vk.cmdDrawIndirectCount                                                       = (CmdDrawIndirectCountFunc)                                                    GET_PROC_ADDR("vkCmdDrawIndirectCountKHR");
+m_vk.cmdDrawIndexedIndirectCount                                               = (CmdDrawIndexedIndirectCountFunc)                                             GET_PROC_ADDR("vkCmdDrawIndexedIndirectCount");
+if (!m_vk.cmdDrawIndexedIndirectCount)
+       m_vk.cmdDrawIndexedIndirectCount                                        = (CmdDrawIndexedIndirectCountFunc)                                             GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountKHR");
+m_vk.createRenderPass2                                                                 = (CreateRenderPass2Func)                                                               GET_PROC_ADDR("vkCreateRenderPass2");
+if (!m_vk.createRenderPass2)
+       m_vk.createRenderPass2                                                          = (CreateRenderPass2Func)                                                               GET_PROC_ADDR("vkCreateRenderPass2KHR");
+m_vk.cmdBeginRenderPass2                                                               = (CmdBeginRenderPass2Func)                                                             GET_PROC_ADDR("vkCmdBeginRenderPass2");
+if (!m_vk.cmdBeginRenderPass2)
+       m_vk.cmdBeginRenderPass2                                                        = (CmdBeginRenderPass2Func)                                                             GET_PROC_ADDR("vkCmdBeginRenderPass2KHR");
+m_vk.cmdNextSubpass2                                                                   = (CmdNextSubpass2Func)                                                                 GET_PROC_ADDR("vkCmdNextSubpass2");
+if (!m_vk.cmdNextSubpass2)
+       m_vk.cmdNextSubpass2                                                            = (CmdNextSubpass2Func)                                                                 GET_PROC_ADDR("vkCmdNextSubpass2KHR");
+m_vk.cmdEndRenderPass2                                                                 = (CmdEndRenderPass2Func)                                                               GET_PROC_ADDR("vkCmdEndRenderPass2");
+if (!m_vk.cmdEndRenderPass2)
+       m_vk.cmdEndRenderPass2                                                          = (CmdEndRenderPass2Func)                                                               GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
+m_vk.resetQueryPool                                                                            = (ResetQueryPoolFunc)                                                                  GET_PROC_ADDR("vkResetQueryPool");
+if (!m_vk.resetQueryPool)
+       m_vk.resetQueryPool                                                                     = (ResetQueryPoolFunc)                                                                  GET_PROC_ADDR("vkResetQueryPoolEXT");
+m_vk.getSemaphoreCounterValue                                                  = (GetSemaphoreCounterValueFunc)                                                GET_PROC_ADDR("vkGetSemaphoreCounterValue");
+if (!m_vk.getSemaphoreCounterValue)
+       m_vk.getSemaphoreCounterValue                                           = (GetSemaphoreCounterValueFunc)                                                GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
+m_vk.waitSemaphores                                                                            = (WaitSemaphoresFunc)                                                                  GET_PROC_ADDR("vkWaitSemaphores");
+if (!m_vk.waitSemaphores)
+       m_vk.waitSemaphores                                                                     = (WaitSemaphoresFunc)                                                                  GET_PROC_ADDR("vkWaitSemaphoresKHR");
+m_vk.signalSemaphore                                                                   = (SignalSemaphoreFunc)                                                                 GET_PROC_ADDR("vkSignalSemaphore");
+if (!m_vk.signalSemaphore)
+       m_vk.signalSemaphore                                                            = (SignalSemaphoreFunc)                                                                 GET_PROC_ADDR("vkSignalSemaphoreKHR");
+m_vk.getBufferDeviceAddress                                                            = (GetBufferDeviceAddressFunc)                                                  GET_PROC_ADDR("vkGetBufferDeviceAddress");
+if (!m_vk.getBufferDeviceAddress)
+       m_vk.getBufferDeviceAddress                                                     = (GetBufferDeviceAddressFunc)                                                  GET_PROC_ADDR("vkGetBufferDeviceAddressKHR");
+m_vk.getBufferOpaqueCaptureAddress                                             = (GetBufferOpaqueCaptureAddressFunc)                                   GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddress");
+if (!m_vk.getBufferOpaqueCaptureAddress)
+       m_vk.getBufferOpaqueCaptureAddress                                      = (GetBufferOpaqueCaptureAddressFunc)                                   GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddressKHR");
+m_vk.getDeviceMemoryOpaqueCaptureAddress                               = (GetDeviceMemoryOpaqueCaptureAddressFunc)                             GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddress");
+if (!m_vk.getDeviceMemoryOpaqueCaptureAddress)
+       m_vk.getDeviceMemoryOpaqueCaptureAddress                        = (GetDeviceMemoryOpaqueCaptureAddressFunc)                             GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+m_vk.createSwapchainKHR                                                                        = (CreateSwapchainKHRFunc)                                                              GET_PROC_ADDR("vkCreateSwapchainKHR");
+m_vk.destroySwapchainKHR                                                               = (DestroySwapchainKHRFunc)                                                             GET_PROC_ADDR("vkDestroySwapchainKHR");
+m_vk.getSwapchainImagesKHR                                                             = (GetSwapchainImagesKHRFunc)                                                   GET_PROC_ADDR("vkGetSwapchainImagesKHR");
+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.cmdPushDescriptorSetKHR                                                   = (CmdPushDescriptorSetKHRFunc)                                                 GET_PROC_ADDR("vkCmdPushDescriptorSetKHR");
+m_vk.cmdPushDescriptorSetWithTemplateKHR                               = (CmdPushDescriptorSetWithTemplateKHRFunc)                             GET_PROC_ADDR("vkCmdPushDescriptorSetWithTemplateKHR");
+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.waitForPresentKHR                                                                 = (WaitForPresentKHRFunc)                                                               GET_PROC_ADDR("vkWaitForPresentKHR");
+m_vk.createDeferredOperationKHR                                                        = (CreateDeferredOperationKHRFunc)                                              GET_PROC_ADDR("vkCreateDeferredOperationKHR");
+m_vk.destroyDeferredOperationKHR                                               = (DestroyDeferredOperationKHRFunc)                                             GET_PROC_ADDR("vkDestroyDeferredOperationKHR");
+m_vk.getDeferredOperationMaxConcurrencyKHR                             = (GetDeferredOperationMaxConcurrencyKHRFunc)                   GET_PROC_ADDR("vkGetDeferredOperationMaxConcurrencyKHR");
+m_vk.getDeferredOperationResultKHR                                             = (GetDeferredOperationResultKHRFunc)                                   GET_PROC_ADDR("vkGetDeferredOperationResultKHR");
+m_vk.deferredOperationJoinKHR                                                  = (DeferredOperationJoinKHRFunc)                                                GET_PROC_ADDR("vkDeferredOperationJoinKHR");
+m_vk.getPipelineExecutablePropertiesKHR                                        = (GetPipelineExecutablePropertiesKHRFunc)                              GET_PROC_ADDR("vkGetPipelineExecutablePropertiesKHR");
+m_vk.getPipelineExecutableStatisticsKHR                                        = (GetPipelineExecutableStatisticsKHRFunc)                              GET_PROC_ADDR("vkGetPipelineExecutableStatisticsKHR");
+m_vk.getPipelineExecutableInternalRepresentationsKHR   = (GetPipelineExecutableInternalRepresentationsKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutableInternalRepresentationsKHR");
+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.debugMarkerSetObjectTagEXT                                                        = (DebugMarkerSetObjectTagEXTFunc)                                              GET_PROC_ADDR("vkDebugMarkerSetObjectTagEXT");
+m_vk.debugMarkerSetObjectNameEXT                                               = (DebugMarkerSetObjectNameEXTFunc)                                             GET_PROC_ADDR("vkDebugMarkerSetObjectNameEXT");
+m_vk.cmdDebugMarkerBeginEXT                                                            = (CmdDebugMarkerBeginEXTFunc)                                                  GET_PROC_ADDR("vkCmdDebugMarkerBeginEXT");
+m_vk.cmdDebugMarkerEndEXT                                                              = (CmdDebugMarkerEndEXTFunc)                                                    GET_PROC_ADDR("vkCmdDebugMarkerEndEXT");
+m_vk.cmdDebugMarkerInsertEXT                                                   = (CmdDebugMarkerInsertEXTFunc)                                                 GET_PROC_ADDR("vkCmdDebugMarkerInsertEXT");
+m_vk.cmdBindTransformFeedbackBuffersEXT                                        = (CmdBindTransformFeedbackBuffersEXTFunc)                              GET_PROC_ADDR("vkCmdBindTransformFeedbackBuffersEXT");
+m_vk.cmdBeginTransformFeedbackEXT                                              = (CmdBeginTransformFeedbackEXTFunc)                                    GET_PROC_ADDR("vkCmdBeginTransformFeedbackEXT");
+m_vk.cmdEndTransformFeedbackEXT                                                        = (CmdEndTransformFeedbackEXTFunc)                                              GET_PROC_ADDR("vkCmdEndTransformFeedbackEXT");
+m_vk.cmdBeginQueryIndexedEXT                                                   = (CmdBeginQueryIndexedEXTFunc)                                                 GET_PROC_ADDR("vkCmdBeginQueryIndexedEXT");
+m_vk.cmdEndQueryIndexedEXT                                                             = (CmdEndQueryIndexedEXTFunc)                                                   GET_PROC_ADDR("vkCmdEndQueryIndexedEXT");
+m_vk.cmdDrawIndirectByteCountEXT                                               = (CmdDrawIndirectByteCountEXTFunc)                                             GET_PROC_ADDR("vkCmdDrawIndirectByteCountEXT");
+m_vk.createCuModuleNVX                                                                 = (CreateCuModuleNVXFunc)                                                               GET_PROC_ADDR("vkCreateCuModuleNVX");
+m_vk.createCuFunctionNVX                                                               = (CreateCuFunctionNVXFunc)                                                             GET_PROC_ADDR("vkCreateCuFunctionNVX");
+m_vk.destroyCuModuleNVX                                                                        = (DestroyCuModuleNVXFunc)                                                              GET_PROC_ADDR("vkDestroyCuModuleNVX");
+m_vk.destroyCuFunctionNVX                                                              = (DestroyCuFunctionNVXFunc)                                                    GET_PROC_ADDR("vkDestroyCuFunctionNVX");
+m_vk.cmdCuLaunchKernelNVX                                                              = (CmdCuLaunchKernelNVXFunc)                                                    GET_PROC_ADDR("vkCmdCuLaunchKernelNVX");
+m_vk.getImageViewHandleNVX                                                             = (GetImageViewHandleNVXFunc)                                                   GET_PROC_ADDR("vkGetImageViewHandleNVX");
+m_vk.getImageViewAddressNVX                                                            = (GetImageViewAddressNVXFunc)                                                  GET_PROC_ADDR("vkGetImageViewAddressNVX");
+m_vk.cmdDrawIndirectCountAMD                                                   = (CmdDrawIndirectCountAMDFunc)                                                 GET_PROC_ADDR("vkCmdDrawIndirectCountAMD");
+m_vk.cmdDrawIndexedIndirectCountAMD                                            = (CmdDrawIndexedIndirectCountAMDFunc)                                  GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountAMD");
+m_vk.getShaderInfoAMD                                                                  = (GetShaderInfoAMDFunc)                                                                GET_PROC_ADDR("vkGetShaderInfoAMD");
+m_vk.cmdBeginConditionalRenderingEXT                                   = (CmdBeginConditionalRenderingEXTFunc)                                 GET_PROC_ADDR("vkCmdBeginConditionalRenderingEXT");
+m_vk.cmdEndConditionalRenderingEXT                                             = (CmdEndConditionalRenderingEXTFunc)                                   GET_PROC_ADDR("vkCmdEndConditionalRenderingEXT");
+m_vk.cmdSetViewportWScalingNV                                                  = (CmdSetViewportWScalingNVFunc)                                                GET_PROC_ADDR("vkCmdSetViewportWScalingNV");
+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.getRefreshCycleDurationGOOGLE                                             = (GetRefreshCycleDurationGOOGLEFunc)                                   GET_PROC_ADDR("vkGetRefreshCycleDurationGOOGLE");
+m_vk.getPastPresentationTimingGOOGLE                                   = (GetPastPresentationTimingGOOGLEFunc)                                 GET_PROC_ADDR("vkGetPastPresentationTimingGOOGLE");
+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.createValidationCacheEXT                                                  = (CreateValidationCacheEXTFunc)                                                GET_PROC_ADDR("vkCreateValidationCacheEXT");
+m_vk.destroyValidationCacheEXT                                                 = (DestroyValidationCacheEXTFunc)                                               GET_PROC_ADDR("vkDestroyValidationCacheEXT");
+m_vk.mergeValidationCachesEXT                                                  = (MergeValidationCachesEXTFunc)                                                GET_PROC_ADDR("vkMergeValidationCachesEXT");
+m_vk.getValidationCacheDataEXT                                                 = (GetValidationCacheDataEXTFunc)                                               GET_PROC_ADDR("vkGetValidationCacheDataEXT");
+m_vk.cmdBindShadingRateImageNV                                                 = (CmdBindShadingRateImageNVFunc)                                               GET_PROC_ADDR("vkCmdBindShadingRateImageNV");
+m_vk.cmdSetViewportShadingRatePaletteNV                                        = (CmdSetViewportShadingRatePaletteNVFunc)                              GET_PROC_ADDR("vkCmdSetViewportShadingRatePaletteNV");
+m_vk.cmdSetCoarseSampleOrderNV                                                 = (CmdSetCoarseSampleOrderNVFunc)                                               GET_PROC_ADDR("vkCmdSetCoarseSampleOrderNV");
+m_vk.createAccelerationStructureNV                                             = (CreateAccelerationStructureNVFunc)                                   GET_PROC_ADDR("vkCreateAccelerationStructureNV");
+m_vk.destroyAccelerationStructureNV                                            = (DestroyAccelerationStructureNVFunc)                                  GET_PROC_ADDR("vkDestroyAccelerationStructureNV");
+m_vk.getAccelerationStructureMemoryRequirementsNV              = (GetAccelerationStructureMemoryRequirementsNVFunc)    GET_PROC_ADDR("vkGetAccelerationStructureMemoryRequirementsNV");
+m_vk.bindAccelerationStructureMemoryNV                                 = (BindAccelerationStructureMemoryNVFunc)                               GET_PROC_ADDR("vkBindAccelerationStructureMemoryNV");
+m_vk.cmdBuildAccelerationStructureNV                                   = (CmdBuildAccelerationStructureNVFunc)                                 GET_PROC_ADDR("vkCmdBuildAccelerationStructureNV");
+m_vk.cmdCopyAccelerationStructureNV                                            = (CmdCopyAccelerationStructureNVFunc)                                  GET_PROC_ADDR("vkCmdCopyAccelerationStructureNV");
+m_vk.cmdTraceRaysNV                                                                            = (CmdTraceRaysNVFunc)                                                                  GET_PROC_ADDR("vkCmdTraceRaysNV");
+m_vk.createRayTracingPipelinesNV                                               = (CreateRayTracingPipelinesNVFunc)                                             GET_PROC_ADDR("vkCreateRayTracingPipelinesNV");
+m_vk.getRayTracingShaderGroupHandlesKHR                                        = (GetRayTracingShaderGroupHandlesKHRFunc)                              GET_PROC_ADDR("vkGetRayTracingShaderGroupHandlesKHR");
+m_vk.getRayTracingShaderGroupHandlesNV                                 = (GetRayTracingShaderGroupHandlesNVFunc)                               GET_PROC_ADDR("vkGetRayTracingShaderGroupHandlesNV");
+m_vk.getAccelerationStructureHandleNV                                  = (GetAccelerationStructureHandleNVFunc)                                GET_PROC_ADDR("vkGetAccelerationStructureHandleNV");
+m_vk.cmdWriteAccelerationStructuresPropertiesNV                        = (CmdWriteAccelerationStructuresPropertiesNVFunc)              GET_PROC_ADDR("vkCmdWriteAccelerationStructuresPropertiesNV");
+m_vk.compileDeferredNV                                                                 = (CompileDeferredNVFunc)                                                               GET_PROC_ADDR("vkCompileDeferredNV");
+m_vk.getMemoryHostPointerPropertiesEXT                                 = (GetMemoryHostPointerPropertiesEXTFunc)                               GET_PROC_ADDR("vkGetMemoryHostPointerPropertiesEXT");
+m_vk.cmdWriteBufferMarkerAMD                                                   = (CmdWriteBufferMarkerAMDFunc)                                                 GET_PROC_ADDR("vkCmdWriteBufferMarkerAMD");
+m_vk.getCalibratedTimestampsEXT                                                        = (GetCalibratedTimestampsEXTFunc)                                              GET_PROC_ADDR("vkGetCalibratedTimestampsEXT");
+m_vk.cmdDrawMeshTasksNV                                                                        = (CmdDrawMeshTasksNVFunc)                                                              GET_PROC_ADDR("vkCmdDrawMeshTasksNV");
+m_vk.cmdDrawMeshTasksIndirectNV                                                        = (CmdDrawMeshTasksIndirectNVFunc)                                              GET_PROC_ADDR("vkCmdDrawMeshTasksIndirectNV");
+m_vk.cmdDrawMeshTasksIndirectCountNV                                   = (CmdDrawMeshTasksIndirectCountNVFunc)                                 GET_PROC_ADDR("vkCmdDrawMeshTasksIndirectCountNV");
+m_vk.cmdSetExclusiveScissorNV                                                  = (CmdSetExclusiveScissorNVFunc)                                                GET_PROC_ADDR("vkCmdSetExclusiveScissorNV");
+m_vk.cmdSetCheckpointNV                                                                        = (CmdSetCheckpointNVFunc)                                                              GET_PROC_ADDR("vkCmdSetCheckpointNV");
+m_vk.getQueueCheckpointDataNV                                                  = (GetQueueCheckpointDataNVFunc)                                                GET_PROC_ADDR("vkGetQueueCheckpointDataNV");
+m_vk.initializePerformanceApiINTEL                                             = (InitializePerformanceApiINTELFunc)                                   GET_PROC_ADDR("vkInitializePerformanceApiINTEL");
+m_vk.uninitializePerformanceApiINTEL                                   = (UninitializePerformanceApiINTELFunc)                                 GET_PROC_ADDR("vkUninitializePerformanceApiINTEL");
+m_vk.cmdSetPerformanceMarkerINTEL                                              = (CmdSetPerformanceMarkerINTELFunc)                                    GET_PROC_ADDR("vkCmdSetPerformanceMarkerINTEL");
+m_vk.cmdSetPerformanceStreamMarkerINTEL                                        = (CmdSetPerformanceStreamMarkerINTELFunc)                              GET_PROC_ADDR("vkCmdSetPerformanceStreamMarkerINTEL");
+m_vk.cmdSetPerformanceOverrideINTEL                                            = (CmdSetPerformanceOverrideINTELFunc)                                  GET_PROC_ADDR("vkCmdSetPerformanceOverrideINTEL");
+m_vk.acquirePerformanceConfigurationINTEL                              = (AcquirePerformanceConfigurationINTELFunc)                    GET_PROC_ADDR("vkAcquirePerformanceConfigurationINTEL");
+m_vk.releasePerformanceConfigurationINTEL                              = (ReleasePerformanceConfigurationINTELFunc)                    GET_PROC_ADDR("vkReleasePerformanceConfigurationINTEL");
+m_vk.queueSetPerformanceConfigurationINTEL                             = (QueueSetPerformanceConfigurationINTELFunc)                   GET_PROC_ADDR("vkQueueSetPerformanceConfigurationINTEL");
+m_vk.getPerformanceParameterINTEL                                              = (GetPerformanceParameterINTELFunc)                                    GET_PROC_ADDR("vkGetPerformanceParameterINTEL");
+m_vk.setLocalDimmingAMD                                                                        = (SetLocalDimmingAMDFunc)                                                              GET_PROC_ADDR("vkSetLocalDimmingAMD");
+m_vk.getBufferDeviceAddressEXT                                                 = (GetBufferDeviceAddressEXTFunc)                                               GET_PROC_ADDR("vkGetBufferDeviceAddressEXT");
+m_vk.cmdSetLineStippleEXT                                                              = (CmdSetLineStippleEXTFunc)                                                    GET_PROC_ADDR("vkCmdSetLineStippleEXT");
+m_vk.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.getGeneratedCommandsMemoryRequirementsNV                  = (GetGeneratedCommandsMemoryRequirementsNVFunc)                GET_PROC_ADDR("vkGetGeneratedCommandsMemoryRequirementsNV");
+m_vk.cmdPreprocessGeneratedCommandsNV                                  = (CmdPreprocessGeneratedCommandsNVFunc)                                GET_PROC_ADDR("vkCmdPreprocessGeneratedCommandsNV");
+m_vk.cmdExecuteGeneratedCommandsNV                                             = (CmdExecuteGeneratedCommandsNVFunc)                                   GET_PROC_ADDR("vkCmdExecuteGeneratedCommandsNV");
+m_vk.cmdBindPipelineShaderGroupNV                                              = (CmdBindPipelineShaderGroupNVFunc)                                    GET_PROC_ADDR("vkCmdBindPipelineShaderGroupNV");
+m_vk.createIndirectCommandsLayoutNV                                            = (CreateIndirectCommandsLayoutNVFunc)                                  GET_PROC_ADDR("vkCreateIndirectCommandsLayoutNV");
+m_vk.destroyIndirectCommandsLayoutNV                                   = (DestroyIndirectCommandsLayoutNVFunc)                                 GET_PROC_ADDR("vkDestroyIndirectCommandsLayoutNV");
+m_vk.createPrivateDataSlotEXT                                                  = (CreatePrivateDataSlotEXTFunc)                                                GET_PROC_ADDR("vkCreatePrivateDataSlotEXT");
+m_vk.destroyPrivateDataSlotEXT                                                 = (DestroyPrivateDataSlotEXTFunc)                                               GET_PROC_ADDR("vkDestroyPrivateDataSlotEXT");
+m_vk.setPrivateDataEXT                                                                 = (SetPrivateDataEXTFunc)                                                               GET_PROC_ADDR("vkSetPrivateDataEXT");
+m_vk.getPrivateDataEXT                                                                 = (GetPrivateDataEXTFunc)                                                               GET_PROC_ADDR("vkGetPrivateDataEXT");
+m_vk.cmdSetFragmentShadingRateEnumNV                                   = (CmdSetFragmentShadingRateEnumNVFunc)                                 GET_PROC_ADDR("vkCmdSetFragmentShadingRateEnumNV");
+m_vk.cmdSetVertexInputEXT                                                              = (CmdSetVertexInputEXTFunc)                                                    GET_PROC_ADDR("vkCmdSetVertexInputEXT");
+m_vk.getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI             = (GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEIFunc)   GET_PROC_ADDR("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
+m_vk.cmdSubpassShadingHUAWEI                                                   = (CmdSubpassShadingHUAWEIFunc)                                                 GET_PROC_ADDR("vkCmdSubpassShadingHUAWEI");
+m_vk.cmdBindInvocationMaskHUAWEI                                               = (CmdBindInvocationMaskHUAWEIFunc)                                             GET_PROC_ADDR("vkCmdBindInvocationMaskHUAWEI");
+m_vk.getMemoryRemoteAddressNV                                                  = (GetMemoryRemoteAddressNVFunc)                                                GET_PROC_ADDR("vkGetMemoryRemoteAddressNV");
+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");
+m_vk.cmdDrawMultiEXT                                                                   = (CmdDrawMultiEXTFunc)                                                                 GET_PROC_ADDR("vkCmdDrawMultiEXT");
+m_vk.cmdDrawMultiIndexedEXT                                                            = (CmdDrawMultiIndexedEXTFunc)                                                  GET_PROC_ADDR("vkCmdDrawMultiIndexedEXT");
+m_vk.createAccelerationStructureKHR                                            = (CreateAccelerationStructureKHRFunc)                                  GET_PROC_ADDR("vkCreateAccelerationStructureKHR");
+m_vk.destroyAccelerationStructureKHR                                   = (DestroyAccelerationStructureKHRFunc)                                 GET_PROC_ADDR("vkDestroyAccelerationStructureKHR");
+m_vk.cmdBuildAccelerationStructuresKHR                                 = (CmdBuildAccelerationStructuresKHRFunc)                               GET_PROC_ADDR("vkCmdBuildAccelerationStructuresKHR");
+m_vk.cmdBuildAccelerationStructuresIndirectKHR                 = (CmdBuildAccelerationStructuresIndirectKHRFunc)               GET_PROC_ADDR("vkCmdBuildAccelerationStructuresIndirectKHR");
+m_vk.buildAccelerationStructuresKHR                                            = (BuildAccelerationStructuresKHRFunc)                                  GET_PROC_ADDR("vkBuildAccelerationStructuresKHR");
+m_vk.copyAccelerationStructureKHR                                              = (CopyAccelerationStructureKHRFunc)                                    GET_PROC_ADDR("vkCopyAccelerationStructureKHR");
+m_vk.copyAccelerationStructureToMemoryKHR                              = (CopyAccelerationStructureToMemoryKHRFunc)                    GET_PROC_ADDR("vkCopyAccelerationStructureToMemoryKHR");
+m_vk.copyMemoryToAccelerationStructureKHR                              = (CopyMemoryToAccelerationStructureKHRFunc)                    GET_PROC_ADDR("vkCopyMemoryToAccelerationStructureKHR");
+m_vk.writeAccelerationStructuresPropertiesKHR                  = (WriteAccelerationStructuresPropertiesKHRFunc)                GET_PROC_ADDR("vkWriteAccelerationStructuresPropertiesKHR");
+m_vk.cmdCopyAccelerationStructureKHR                                   = (CmdCopyAccelerationStructureKHRFunc)                                 GET_PROC_ADDR("vkCmdCopyAccelerationStructureKHR");
+m_vk.cmdCopyAccelerationStructureToMemoryKHR                   = (CmdCopyAccelerationStructureToMemoryKHRFunc)                 GET_PROC_ADDR("vkCmdCopyAccelerationStructureToMemoryKHR");
+m_vk.cmdCopyMemoryToAccelerationStructureKHR                   = (CmdCopyMemoryToAccelerationStructureKHRFunc)                 GET_PROC_ADDR("vkCmdCopyMemoryToAccelerationStructureKHR");
+m_vk.getAccelerationStructureDeviceAddressKHR                  = (GetAccelerationStructureDeviceAddressKHRFunc)                GET_PROC_ADDR("vkGetAccelerationStructureDeviceAddressKHR");
+m_vk.cmdWriteAccelerationStructuresPropertiesKHR               = (CmdWriteAccelerationStructuresPropertiesKHRFunc)             GET_PROC_ADDR("vkCmdWriteAccelerationStructuresPropertiesKHR");
+m_vk.getDeviceAccelerationStructureCompatibilityKHR            = (GetDeviceAccelerationStructureCompatibilityKHRFunc)  GET_PROC_ADDR("vkGetDeviceAccelerationStructureCompatibilityKHR");
+m_vk.getAccelerationStructureBuildSizesKHR                             = (GetAccelerationStructureBuildSizesKHRFunc)                   GET_PROC_ADDR("vkGetAccelerationStructureBuildSizesKHR");
+m_vk.cmdTraceRaysKHR                                                                   = (CmdTraceRaysKHRFunc)                                                                 GET_PROC_ADDR("vkCmdTraceRaysKHR");
+m_vk.createRayTracingPipelinesKHR                                              = (CreateRayTracingPipelinesKHRFunc)                                    GET_PROC_ADDR("vkCreateRayTracingPipelinesKHR");
+m_vk.getRayTracingCaptureReplayShaderGroupHandlesKHR   = (GetRayTracingCaptureReplayShaderGroupHandlesKHRFunc) GET_PROC_ADDR("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
+m_vk.cmdTraceRaysIndirectKHR                                                   = (CmdTraceRaysIndirectKHRFunc)                                                 GET_PROC_ADDR("vkCmdTraceRaysIndirectKHR");
+m_vk.getRayTracingShaderGroupStackSizeKHR                              = (GetRayTracingShaderGroupStackSizeKHRFunc)                    GET_PROC_ADDR("vkGetRayTracingShaderGroupStackSizeKHR");
+m_vk.cmdSetRayTracingPipelineStackSizeKHR                              = (CmdSetRayTracingPipelineStackSizeKHRFunc)                    GET_PROC_ADDR("vkCmdSetRayTracingPipelineStackSizeKHR");
+m_vk.getAndroidHardwareBufferPropertiesANDROID                 = (GetAndroidHardwareBufferPropertiesANDROIDFunc)               GET_PROC_ADDR("vkGetAndroidHardwareBufferPropertiesANDROID");
+m_vk.getMemoryAndroidHardwareBufferANDROID                             = (GetMemoryAndroidHardwareBufferANDROIDFunc)                   GET_PROC_ADDR("vkGetMemoryAndroidHardwareBufferANDROID");
+m_vk.createVideoSessionKHR                                                             = (CreateVideoSessionKHRFunc)                                                   GET_PROC_ADDR("vkCreateVideoSessionKHR");
+m_vk.destroyVideoSessionKHR                                                            = (DestroyVideoSessionKHRFunc)                                                  GET_PROC_ADDR("vkDestroyVideoSessionKHR");
+m_vk.getVideoSessionMemoryRequirementsKHR                              = (GetVideoSessionMemoryRequirementsKHRFunc)                    GET_PROC_ADDR("vkGetVideoSessionMemoryRequirementsKHR");
+m_vk.bindVideoSessionMemoryKHR                                                 = (BindVideoSessionMemoryKHRFunc)                                               GET_PROC_ADDR("vkBindVideoSessionMemoryKHR");
+m_vk.createVideoSessionParametersKHR                                   = (CreateVideoSessionParametersKHRFunc)                                 GET_PROC_ADDR("vkCreateVideoSessionParametersKHR");
+m_vk.updateVideoSessionParametersKHR                                   = (UpdateVideoSessionParametersKHRFunc)                                 GET_PROC_ADDR("vkUpdateVideoSessionParametersKHR");
+m_vk.destroyVideoSessionParametersKHR                                  = (DestroyVideoSessionParametersKHRFunc)                                GET_PROC_ADDR("vkDestroyVideoSessionParametersKHR");
+m_vk.cmdBeginVideoCodingKHR                                                            = (CmdBeginVideoCodingKHRFunc)                                                  GET_PROC_ADDR("vkCmdBeginVideoCodingKHR");
+m_vk.cmdEndVideoCodingKHR                                                              = (CmdEndVideoCodingKHRFunc)                                                    GET_PROC_ADDR("vkCmdEndVideoCodingKHR");
+m_vk.cmdControlVideoCodingKHR                                                  = (CmdControlVideoCodingKHRFunc)                                                GET_PROC_ADDR("vkCmdControlVideoCodingKHR");
+m_vk.cmdDecodeVideoKHR                                                                 = (CmdDecodeVideoKHRFunc)                                                               GET_PROC_ADDR("vkCmdDecodeVideoKHR");
+m_vk.cmdEncodeVideoKHR                                                                 = (CmdEncodeVideoKHRFunc)                                                               GET_PROC_ADDR("vkCmdEncodeVideoKHR");
+m_vk.getMemoryZirconHandleFUCHSIA                                              = (GetMemoryZirconHandleFUCHSIAFunc)                                    GET_PROC_ADDR("vkGetMemoryZirconHandleFUCHSIA");
+m_vk.getMemoryZirconHandlePropertiesFUCHSIA                            = (GetMemoryZirconHandlePropertiesFUCHSIAFunc)                  GET_PROC_ADDR("vkGetMemoryZirconHandlePropertiesFUCHSIA");
+m_vk.importSemaphoreZirconHandleFUCHSIA                                        = (ImportSemaphoreZirconHandleFUCHSIAFunc)                              GET_PROC_ADDR("vkImportSemaphoreZirconHandleFUCHSIA");
+m_vk.getSemaphoreZirconHandleFUCHSIA                                   = (GetSemaphoreZirconHandleFUCHSIAFunc)                                 GET_PROC_ADDR("vkGetSemaphoreZirconHandleFUCHSIA");
+m_vk.getMemoryWin32HandleKHR                                                   = (GetMemoryWin32HandleKHRFunc)                                                 GET_PROC_ADDR("vkGetMemoryWin32HandleKHR");
+m_vk.getMemoryWin32HandlePropertiesKHR                                 = (GetMemoryWin32HandlePropertiesKHRFunc)                               GET_PROC_ADDR("vkGetMemoryWin32HandlePropertiesKHR");
+m_vk.importSemaphoreWin32HandleKHR                                             = (ImportSemaphoreWin32HandleKHRFunc)                                   GET_PROC_ADDR("vkImportSemaphoreWin32HandleKHR");
+m_vk.getSemaphoreWin32HandleKHR                                                        = (GetSemaphoreWin32HandleKHRFunc)                                              GET_PROC_ADDR("vkGetSemaphoreWin32HandleKHR");
+m_vk.importFenceWin32HandleKHR                                                 = (ImportFenceWin32HandleKHRFunc)                                               GET_PROC_ADDR("vkImportFenceWin32HandleKHR");
+m_vk.getFenceWin32HandleKHR                                                            = (GetFenceWin32HandleKHRFunc)                                                  GET_PROC_ADDR("vkGetFenceWin32HandleKHR");
+m_vk.getMemoryWin32HandleNV                                                            = (GetMemoryWin32HandleNVFunc)                                                  GET_PROC_ADDR("vkGetMemoryWin32HandleNV");
+m_vk.acquireFullScreenExclusiveModeEXT                                 = (AcquireFullScreenExclusiveModeEXTFunc)                               GET_PROC_ADDR("vkAcquireFullScreenExclusiveModeEXT");
+m_vk.releaseFullScreenExclusiveModeEXT                                 = (ReleaseFullScreenExclusiveModeEXTFunc)                               GET_PROC_ADDR("vkReleaseFullScreenExclusiveModeEXT");
+m_vk.getDeviceGroupSurfacePresentModes2EXT                             = (GetDeviceGroupSurfacePresentModes2EXTFunc)                   GET_PROC_ADDR("vkGetDeviceGroupSurfacePresentModes2EXT");
diff --git a/external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..e44734e
--- /dev/null
@@ -0,0 +1,119 @@
+/* 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.getPhysicalDeviceSparseImageFormatProperties                                              = (GetPhysicalDeviceSparseImageFormatPropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
+m_vk.enumeratePhysicalDeviceGroups                                                                             = (EnumeratePhysicalDeviceGroupsFunc)                                                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroups");
+if (!m_vk.enumeratePhysicalDeviceGroups)
+       m_vk.enumeratePhysicalDeviceGroups                                                                      = (EnumeratePhysicalDeviceGroupsFunc)                                                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroupsKHR");
+m_vk.getPhysicalDeviceFeatures2                                                                                        = (GetPhysicalDeviceFeatures2Func)                                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2");
+if (!m_vk.getPhysicalDeviceFeatures2)
+       m_vk.getPhysicalDeviceFeatures2                                                                         = (GetPhysicalDeviceFeatures2Func)                                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
+m_vk.getPhysicalDeviceProperties2                                                                              = (GetPhysicalDeviceProperties2Func)                                                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2");
+if (!m_vk.getPhysicalDeviceProperties2)
+       m_vk.getPhysicalDeviceProperties2                                                                       = (GetPhysicalDeviceProperties2Func)                                                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
+m_vk.getPhysicalDeviceFormatProperties2                                                                        = (GetPhysicalDeviceFormatProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2");
+if (!m_vk.getPhysicalDeviceFormatProperties2)
+       m_vk.getPhysicalDeviceFormatProperties2                                                         = (GetPhysicalDeviceFormatProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
+m_vk.getPhysicalDeviceImageFormatProperties2                                                   = (GetPhysicalDeviceImageFormatProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2");
+if (!m_vk.getPhysicalDeviceImageFormatProperties2)
+       m_vk.getPhysicalDeviceImageFormatProperties2                                            = (GetPhysicalDeviceImageFormatProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceQueueFamilyProperties2                                                   = (GetPhysicalDeviceQueueFamilyProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2");
+if (!m_vk.getPhysicalDeviceQueueFamilyProperties2)
+       m_vk.getPhysicalDeviceQueueFamilyProperties2                                            = (GetPhysicalDeviceQueueFamilyProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+m_vk.getPhysicalDeviceMemoryProperties2                                                                        = (GetPhysicalDeviceMemoryProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2");
+if (!m_vk.getPhysicalDeviceMemoryProperties2)
+       m_vk.getPhysicalDeviceMemoryProperties2                                                         = (GetPhysicalDeviceMemoryProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
+m_vk.getPhysicalDeviceSparseImageFormatProperties2                                             = (GetPhysicalDeviceSparseImageFormatProperties2Func)                                   GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2");
+if (!m_vk.getPhysicalDeviceSparseImageFormatProperties2)
+       m_vk.getPhysicalDeviceSparseImageFormatProperties2                                      = (GetPhysicalDeviceSparseImageFormatProperties2Func)                                   GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceExternalBufferProperties                                                 = (GetPhysicalDeviceExternalBufferPropertiesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferProperties");
+if (!m_vk.getPhysicalDeviceExternalBufferProperties)
+       m_vk.getPhysicalDeviceExternalBufferProperties                                          = (GetPhysicalDeviceExternalBufferPropertiesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+m_vk.getPhysicalDeviceExternalFenceProperties                                                  = (GetPhysicalDeviceExternalFencePropertiesFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFenceProperties");
+if (!m_vk.getPhysicalDeviceExternalFenceProperties)
+       m_vk.getPhysicalDeviceExternalFenceProperties                                           = (GetPhysicalDeviceExternalFencePropertiesFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+m_vk.getPhysicalDeviceExternalSemaphoreProperties                                              = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphoreProperties");
+if (!m_vk.getPhysicalDeviceExternalSemaphoreProperties)
+       m_vk.getPhysicalDeviceExternalSemaphoreProperties                                       = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+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.getPhysicalDeviceFeatures2KHR                                                                             = (GetPhysicalDeviceFeatures2KHRFunc)                                                                   GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
+m_vk.getPhysicalDeviceProperties2KHR                                                                   = (GetPhysicalDeviceProperties2KHRFunc)                                                                 GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
+m_vk.getPhysicalDeviceFormatProperties2KHR                                                             = (GetPhysicalDeviceFormatProperties2KHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
+m_vk.getPhysicalDeviceImageFormatProperties2KHR                                                        = (GetPhysicalDeviceImageFormatProperties2KHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceQueueFamilyProperties2KHR                                                        = (GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+m_vk.getPhysicalDeviceMemoryProperties2KHR                                                             = (GetPhysicalDeviceMemoryProperties2KHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
+m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR                                  = (GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)                                GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceExternalBufferPropertiesKHR                                              = (GetPhysicalDeviceExternalBufferPropertiesKHRFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+m_vk.getPhysicalDeviceExternalSemaphorePropertiesKHR                                   = (GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)                                 GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+m_vk.getPhysicalDeviceExternalFencePropertiesKHR                                               = (GetPhysicalDeviceExternalFencePropertiesKHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+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.createDebugReportCallbackEXT                                                                              = (CreateDebugReportCallbackEXTFunc)                                                                    GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
+m_vk.destroyDebugReportCallbackEXT                                                                             = (DestroyDebugReportCallbackEXTFunc)                                                                   GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
+m_vk.debugReportMessageEXT                                                                                             = (DebugReportMessageEXTFunc)                                                                                   GET_PROC_ADDR("vkDebugReportMessageEXT");
+m_vk.getPhysicalDeviceExternalImageFormatPropertiesNV                                  = (GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
+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.getPhysicalDeviceToolPropertiesEXT                                                                        = (GetPhysicalDeviceToolPropertiesEXTFunc)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceToolPropertiesEXT");
+m_vk.getPhysicalDeviceCooperativeMatrixPropertiesNV                                            = (GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)                                  GET_PROC_ADDR("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
+m_vk.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV   = (GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc) GET_PROC_ADDR("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
+m_vk.createHeadlessSurfaceEXT                                                                                  = (CreateHeadlessSurfaceEXTFunc)                                                                                GET_PROC_ADDR("vkCreateHeadlessSurfaceEXT");
+m_vk.acquireDrmDisplayEXT                                                                                              = (AcquireDrmDisplayEXTFunc)                                                                                    GET_PROC_ADDR("vkAcquireDrmDisplayEXT");
+m_vk.getDrmDisplayEXT                                                                                                  = (GetDrmDisplayEXTFunc)                                                                                                GET_PROC_ADDR("vkGetDrmDisplayEXT");
+m_vk.acquireWinrtDisplayNV                                                                                             = (AcquireWinrtDisplayNVFunc)                                                                                   GET_PROC_ADDR("vkAcquireWinrtDisplayNV");
+m_vk.getWinrtDisplayNV                                                                                                 = (GetWinrtDisplayNVFunc)                                                                                               GET_PROC_ADDR("vkGetWinrtDisplayNV");
+m_vk.createAndroidSurfaceKHR                                                                                   = (CreateAndroidSurfaceKHRFunc)                                                                                 GET_PROC_ADDR("vkCreateAndroidSurfaceKHR");
+m_vk.getPhysicalDeviceVideoCapabilitiesKHR                                                             = (GetPhysicalDeviceVideoCapabilitiesKHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceVideoCapabilitiesKHR");
+m_vk.getPhysicalDeviceVideoFormatPropertiesKHR                                                 = (GetPhysicalDeviceVideoFormatPropertiesKHRFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
+m_vk.createImagePipeSurfaceFUCHSIA                                                                             = (CreateImagePipeSurfaceFUCHSIAFunc)                                                                   GET_PROC_ADDR("vkCreateImagePipeSurfaceFUCHSIA");
+m_vk.createStreamDescriptorSurfaceGGP                                                                  = (CreateStreamDescriptorSurfaceGGPFunc)                                                                GET_PROC_ADDR("vkCreateStreamDescriptorSurfaceGGP");
+m_vk.createIOSSurfaceMVK                                                                                               = (CreateIOSSurfaceMVKFunc)                                                                                             GET_PROC_ADDR("vkCreateIOSSurfaceMVK");
+m_vk.createMacOSSurfaceMVK                                                                                             = (CreateMacOSSurfaceMVKFunc)                                                                                   GET_PROC_ADDR("vkCreateMacOSSurfaceMVK");
+m_vk.createMetalSurfaceEXT                                                                                             = (CreateMetalSurfaceEXTFunc)                                                                                   GET_PROC_ADDR("vkCreateMetalSurfaceEXT");
+m_vk.createViSurfaceNN                                                                                                 = (CreateViSurfaceNNFunc)                                                                                               GET_PROC_ADDR("vkCreateViSurfaceNN");
+m_vk.createWaylandSurfaceKHR                                                                                   = (CreateWaylandSurfaceKHRFunc)                                                                                 GET_PROC_ADDR("vkCreateWaylandSurfaceKHR");
+m_vk.getPhysicalDeviceWaylandPresentationSupportKHR                                            = (GetPhysicalDeviceWaylandPresentationSupportKHRFunc)                                  GET_PROC_ADDR("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+m_vk.createWin32SurfaceKHR                                                                                             = (CreateWin32SurfaceKHRFunc)                                                                                   GET_PROC_ADDR("vkCreateWin32SurfaceKHR");
+m_vk.getPhysicalDeviceWin32PresentationSupportKHR                                              = (GetPhysicalDeviceWin32PresentationSupportKHRFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceWin32PresentationSupportKHR");
+m_vk.getPhysicalDeviceSurfacePresentModes2EXT                                                  = (GetPhysicalDeviceSurfacePresentModes2EXTFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModes2EXT");
+m_vk.createXcbSurfaceKHR                                                                                               = (CreateXcbSurfaceKHRFunc)                                                                                             GET_PROC_ADDR("vkCreateXcbSurfaceKHR");
+m_vk.getPhysicalDeviceXcbPresentationSupportKHR                                                        = (GetPhysicalDeviceXcbPresentationSupportKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceXcbPresentationSupportKHR");
+m_vk.createXlibSurfaceKHR                                                                                              = (CreateXlibSurfaceKHRFunc)                                                                                    GET_PROC_ADDR("vkCreateXlibSurfaceKHR");
+m_vk.getPhysicalDeviceXlibPresentationSupportKHR                                               = (GetPhysicalDeviceXlibPresentationSupportKHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceXlibPresentationSupportKHR");
+m_vk.acquireXlibDisplayEXT                                                                                             = (AcquireXlibDisplayEXTFunc)                                                                                   GET_PROC_ADDR("vkAcquireXlibDisplayEXT");
+m_vk.getRandROutputDisplayEXT                                                                                  = (GetRandROutputDisplayEXTFunc)                                                                                GET_PROC_ADDR("vkGetRandROutputDisplayEXT");
diff --git a/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl
new file mode 100644 (file)
index 0000000..ce20970
--- /dev/null
@@ -0,0 +1,7 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+m_vk.createInstance                                                    = (CreateInstanceFunc)                                                  GET_PROC_ADDR("vkCreateInstance");
+m_vk.enumerateInstanceExtensionProperties      = (EnumerateInstanceExtensionPropertiesFunc)    GET_PROC_ADDR("vkEnumerateInstanceExtensionProperties");
+m_vk.enumerateInstanceLayerProperties          = (EnumerateInstanceLayerPropertiesFunc)                GET_PROC_ADDR("vkEnumerateInstanceLayerProperties");
+m_vk.enumerateInstanceVersion                          = (EnumerateInstanceVersionFunc)                                GET_PROC_ADDR("vkEnumerateInstanceVersion");
diff --git a/external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl
new file mode 100644 (file)
index 0000000..f8de81b
--- /dev/null
@@ -0,0 +1,473 @@
+/* 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::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);
+}
+
+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
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceFeatures2(physicalDevice, pFeatures);
+       else
+               m_vk.getPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
+}
+
+void InstanceDriver::getPhysicalDeviceProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceProperties2(physicalDevice, pProperties);
+       else
+               m_vk.getPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceFormatProperties2 (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
+       else
+               m_vk.getPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               return m_vk.getPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties);
+       else
+               return m_vk.getPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceQueueFamilyProperties2 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+       else
+               m_vk.getPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceMemoryProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
+       else
+               m_vk.getPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceSparseImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+       else
+               m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceExternalBufferProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+       else
+               m_vk.getPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceExternalFenceProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+       else
+               m_vk.getPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceExternalSemaphoreProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const
+{
+       vk::VkPhysicalDeviceProperties props;
+       m_vk.getPhysicalDeviceProperties(physicalDevice, &props);
+       if (props.apiVersion >= VK_API_VERSION_1_1)
+               m_vk.getPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
+       else
+               m_vk.getPhysicalDeviceExternalSemaphorePropertiesKHR(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::createDebugReportCallbackEXT (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const
+{
+       return m_vk.createDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
+}
+
+void InstanceDriver::destroyDebugReportCallbackEXT (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const
+{
+       m_vk.destroyDebugReportCallbackEXT(instance, callback, pAllocator);
+}
+
+void InstanceDriver::debugReportMessageEXT (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const
+{
+       m_vk.debugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceExternalImageFormatPropertiesNV (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const
+{
+       return m_vk.getPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
+}
+
+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::getPhysicalDeviceToolPropertiesEXT (VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties) const
+{
+       return m_vk.getPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceCooperativeMatrixPropertiesNV (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const
+{
+       return m_vk.getPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations) const
+{
+       return m_vk.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations);
+}
+
+VkResult InstanceDriver::createHeadlessSurfaceEXT (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::acquireDrmDisplayEXT (VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display) const
+{
+       return m_vk.acquireDrmDisplayEXT(physicalDevice, drmFd, display);
+}
+
+VkResult InstanceDriver::getDrmDisplayEXT (VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display) const
+{
+       return m_vk.getDrmDisplayEXT(physicalDevice, drmFd, connectorId, display);
+}
+
+VkResult InstanceDriver::acquireWinrtDisplayNV (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const
+{
+       return m_vk.acquireWinrtDisplayNV(physicalDevice, display);
+}
+
+VkResult InstanceDriver::getWinrtDisplayNV (VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay) const
+{
+       return m_vk.getWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay);
+}
+
+VkResult InstanceDriver::createAndroidSurfaceKHR (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceVideoCapabilitiesKHR (VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities) const
+{
+       return m_vk.getPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceVideoFormatPropertiesKHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, deUint32* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties) const
+{
+       return m_vk.getPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
+}
+
+VkResult InstanceDriver::createImagePipeSurfaceFUCHSIA (VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createStreamDescriptorSurfaceGGP (VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createIOSSurfaceMVK (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createMacOSSurfaceMVK (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createMetalSurfaceEXT (VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createViSurfaceNN (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkResult InstanceDriver::createWaylandSurfaceKHR (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkBool32 InstanceDriver::getPhysicalDeviceWaylandPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const
+{
+       return m_vk.getPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
+}
+
+VkResult InstanceDriver::createWin32SurfaceKHR (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkBool32 InstanceDriver::getPhysicalDeviceWin32PresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const
+{
+       return m_vk.getPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceSurfacePresentModes2EXT (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const
+{
+       return m_vk.getPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes);
+}
+
+VkResult InstanceDriver::createXcbSurfaceKHR (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkBool32 InstanceDriver::getPhysicalDeviceXcbPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const
+{
+       return m_vk.getPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
+}
+
+VkResult InstanceDriver::createXlibSurfaceKHR (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
+{
+       return m_vk.createXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
+}
+
+VkBool32 InstanceDriver::getPhysicalDeviceXlibPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const
+{
+       return m_vk.getPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
+}
+
+VkResult InstanceDriver::acquireXlibDisplayEXT (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const
+{
+       return m_vk.acquireXlibDisplayEXT(physicalDevice, dpy, display);
+}
+
+VkResult InstanceDriver::getRandROutputDisplayEXT (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const
+{
+       return m_vk.getRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
+}
diff --git a/external/vulkancts/framework/vulkan/vkInstanceExtensions.inl b/external/vulkancts/framework/vulkan/vkInstanceExtensions.inl
new file mode 100644 (file)
index 0000000..0565e64
--- /dev/null
@@ -0,0 +1,23 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+static const char* s_allowedInstanceKhrExtensions[] =
+{
+       "VK_KHR_surface",
+       "VK_KHR_display",
+       "VK_KHR_xlib_surface",
+       "VK_KHR_xcb_surface",
+       "VK_KHR_wayland_surface",
+       "VK_KHR_mir_surface",
+       "VK_KHR_android_surface",
+       "VK_KHR_win32_surface",
+       "VK_KHR_get_physical_device_properties2",
+       "VK_KHR_device_group_creation",
+       "VK_KHR_external_memory_capabilities",
+       "VK_KHR_external_semaphore_capabilities",
+       "VK_KHR_external_fence_capabilities",
+       "VK_KHR_get_surface_capabilities2",
+       "VK_KHR_get_display_properties2",
+       "VK_KHR_surface_protected_capabilities",
+};
+
diff --git a/external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..e9b09c9
--- /dev/null
@@ -0,0 +1,97 @@
+/* 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;
+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;
+GetPhysicalDeviceFeatures2KHRFunc                                                                      getPhysicalDeviceFeatures2KHR;
+GetPhysicalDeviceProperties2KHRFunc                                                                    getPhysicalDeviceProperties2KHR;
+GetPhysicalDeviceFormatProperties2KHRFunc                                                      getPhysicalDeviceFormatProperties2KHR;
+GetPhysicalDeviceImageFormatProperties2KHRFunc                                         getPhysicalDeviceImageFormatProperties2KHR;
+GetPhysicalDeviceQueueFamilyProperties2KHRFunc                                         getPhysicalDeviceQueueFamilyProperties2KHR;
+GetPhysicalDeviceMemoryProperties2KHRFunc                                                      getPhysicalDeviceMemoryProperties2KHR;
+GetPhysicalDeviceSparseImageFormatProperties2KHRFunc                           getPhysicalDeviceSparseImageFormatProperties2KHR;
+GetPhysicalDeviceExternalBufferPropertiesKHRFunc                                       getPhysicalDeviceExternalBufferPropertiesKHR;
+GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc                                    getPhysicalDeviceExternalSemaphorePropertiesKHR;
+GetPhysicalDeviceExternalFencePropertiesKHRFunc                                                getPhysicalDeviceExternalFencePropertiesKHR;
+EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc      enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc                      getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+GetPhysicalDeviceSurfaceCapabilities2KHRFunc                                           getPhysicalDeviceSurfaceCapabilities2KHR;
+GetPhysicalDeviceSurfaceFormats2KHRFunc                                                                getPhysicalDeviceSurfaceFormats2KHR;
+GetPhysicalDeviceDisplayProperties2KHRFunc                                                     getPhysicalDeviceDisplayProperties2KHR;
+GetPhysicalDeviceDisplayPlaneProperties2KHRFunc                                                getPhysicalDeviceDisplayPlaneProperties2KHR;
+GetDisplayModeProperties2KHRFunc                                                                       getDisplayModeProperties2KHR;
+GetDisplayPlaneCapabilities2KHRFunc                                                                    getDisplayPlaneCapabilities2KHR;
+GetPhysicalDeviceFragmentShadingRatesKHRFunc                                           getPhysicalDeviceFragmentShadingRatesKHR;
+CreateDebugReportCallbackEXTFunc                                                                       createDebugReportCallbackEXT;
+DestroyDebugReportCallbackEXTFunc                                                                      destroyDebugReportCallbackEXT;
+DebugReportMessageEXTFunc                                                                                      debugReportMessageEXT;
+GetPhysicalDeviceExternalImageFormatPropertiesNVFunc                           getPhysicalDeviceExternalImageFormatPropertiesNV;
+ReleaseDisplayEXTFunc                                                                                          releaseDisplayEXT;
+GetPhysicalDeviceSurfaceCapabilities2EXTFunc                                           getPhysicalDeviceSurfaceCapabilities2EXT;
+CreateDebugUtilsMessengerEXTFunc                                                                       createDebugUtilsMessengerEXT;
+DestroyDebugUtilsMessengerEXTFunc                                                                      destroyDebugUtilsMessengerEXT;
+SubmitDebugUtilsMessageEXTFunc                                                                         submitDebugUtilsMessageEXT;
+GetPhysicalDeviceMultisamplePropertiesEXTFunc                                          getPhysicalDeviceMultisamplePropertiesEXT;
+GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc                                       getPhysicalDeviceCalibrateableTimeDomainsEXT;
+GetPhysicalDeviceToolPropertiesEXTFunc                                                         getPhysicalDeviceToolPropertiesEXT;
+GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc                                     getPhysicalDeviceCooperativeMatrixPropertiesNV;
+GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc    getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
+CreateHeadlessSurfaceEXTFunc                                                                           createHeadlessSurfaceEXT;
+AcquireDrmDisplayEXTFunc                                                                                       acquireDrmDisplayEXT;
+GetDrmDisplayEXTFunc                                                                                           getDrmDisplayEXT;
+AcquireWinrtDisplayNVFunc                                                                                      acquireWinrtDisplayNV;
+GetWinrtDisplayNVFunc                                                                                          getWinrtDisplayNV;
+CreateAndroidSurfaceKHRFunc                                                                                    createAndroidSurfaceKHR;
+GetPhysicalDeviceVideoCapabilitiesKHRFunc                                                      getPhysicalDeviceVideoCapabilitiesKHR;
+GetPhysicalDeviceVideoFormatPropertiesKHRFunc                                          getPhysicalDeviceVideoFormatPropertiesKHR;
+CreateImagePipeSurfaceFUCHSIAFunc                                                                      createImagePipeSurfaceFUCHSIA;
+CreateStreamDescriptorSurfaceGGPFunc                                                           createStreamDescriptorSurfaceGGP;
+CreateIOSSurfaceMVKFunc                                                                                                createIOSSurfaceMVK;
+CreateMacOSSurfaceMVKFunc                                                                                      createMacOSSurfaceMVK;
+CreateMetalSurfaceEXTFunc                                                                                      createMetalSurfaceEXT;
+CreateViSurfaceNNFunc                                                                                          createViSurfaceNN;
+CreateWaylandSurfaceKHRFunc                                                                                    createWaylandSurfaceKHR;
+GetPhysicalDeviceWaylandPresentationSupportKHRFunc                                     getPhysicalDeviceWaylandPresentationSupportKHR;
+CreateWin32SurfaceKHRFunc                                                                                      createWin32SurfaceKHR;
+GetPhysicalDeviceWin32PresentationSupportKHRFunc                                       getPhysicalDeviceWin32PresentationSupportKHR;
+GetPhysicalDeviceSurfacePresentModes2EXTFunc                                           getPhysicalDeviceSurfacePresentModes2EXT;
+CreateXcbSurfaceKHRFunc                                                                                                createXcbSurfaceKHR;
+GetPhysicalDeviceXcbPresentationSupportKHRFunc                                         getPhysicalDeviceXcbPresentationSupportKHR;
+CreateXlibSurfaceKHRFunc                                                                                       createXlibSurfaceKHR;
+GetPhysicalDeviceXlibPresentationSupportKHRFunc                                                getPhysicalDeviceXlibPresentationSupportKHR;
+AcquireXlibDisplayEXTFunc                                                                                      acquireXlibDisplayEXT;
+GetRandROutputDisplayEXTFunc                                                                           getRandROutputDisplayEXT;
diff --git a/external/vulkancts/framework/vulkan/vkKnownDriverIds.inl b/external/vulkancts/framework/vulkan/vkKnownDriverIds.inl
new file mode 100644 (file)
index 0000000..57a2f92
--- /dev/null
@@ -0,0 +1,40 @@
+/* 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_JUICE_PROPRIETARY", 16},
+       {"VK_DRIVER_ID_VERISILICON_PROPRIETARY", 17},
+       {"VK_DRIVER_ID_AMD_PROPRIETARY_KHR", 1},        // VK_DRIVER_ID_AMD_PROPRIETARY
+       {"VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR", 2},        // VK_DRIVER_ID_AMD_OPEN_SOURCE
+       {"VK_DRIVER_ID_MESA_RADV_KHR", 3},      // VK_DRIVER_ID_MESA_RADV
+       {"VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR", 4},     // VK_DRIVER_ID_NVIDIA_PROPRIETARY
+       {"VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR", 5},      // VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS
+       {"VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR", 6}, // VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA
+       {"VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR", 7},        // VK_DRIVER_ID_IMAGINATION_PROPRIETARY
+       {"VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR", 8},   // VK_DRIVER_ID_QUALCOMM_PROPRIETARY
+       {"VK_DRIVER_ID_ARM_PROPRIETARY_KHR", 9},        // VK_DRIVER_ID_ARM_PROPRIETARY
+       {"VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR", 10},    // VK_DRIVER_ID_GOOGLE_SWIFTSHADER
+       {"VK_DRIVER_ID_GGP_PROPRIETARY_KHR", 11},       // VK_DRIVER_ID_GGP_PROPRIETARY
+       {"VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR", 12},  // VK_DRIVER_ID_BROADCOM_PROPRIETARY
+       {"VK_DRIVER_ID_MAX_ENUM", 0x7FFFFFFF}
+};
diff --git a/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl b/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl
new file mode 100644 (file)
index 0000000..08aa888
--- /dev/null
@@ -0,0 +1,1919 @@
+/* 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::VkPhysicalDevice16BitStorageFeaturesKHR physicalDevice16BitStorageFeaturesKHR;
+       deMemset(&physicalDevice16BitStorageFeaturesKHR, 0, sizeof(physicalDevice16BitStorageFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
+       {
+               physicalDevice16BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice16BitStorageFeaturesKHR>();
+               *nextPtr = &physicalDevice16BitStorageFeaturesKHR;
+               nextPtr  = &physicalDevice16BitStorageFeaturesKHR.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::VkPhysicalDevice8BitStorageFeaturesKHR physicalDevice8BitStorageFeaturesKHR;
+       deMemset(&physicalDevice8BitStorageFeaturesKHR, 0, sizeof(physicalDevice8BitStorageFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
+       {
+               physicalDevice8BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice8BitStorageFeaturesKHR>();
+               *nextPtr = &physicalDevice8BitStorageFeaturesKHR;
+               nextPtr  = &physicalDevice8BitStorageFeaturesKHR.pNext;
+       }
+
+       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::VkPhysicalDeviceBufferDeviceAddressFeaturesKHR physicalDeviceBufferDeviceAddressFeaturesKHR;
+       deMemset(&physicalDeviceBufferDeviceAddressFeaturesKHR, 0, sizeof(physicalDeviceBufferDeviceAddressFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) || 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));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) )
+       {
+               physicalDeviceConditionalRenderingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>();
+               *nextPtr = &physicalDeviceConditionalRenderingFeaturesEXT;
+               nextPtr  = &physicalDeviceConditionalRenderingFeaturesEXT.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::VkPhysicalDeviceDescriptorIndexingFeaturesEXT physicalDeviceDescriptorIndexingFeaturesEXT;
+       deMemset(&physicalDeviceDescriptorIndexingFeaturesEXT, 0, sizeof(physicalDeviceDescriptorIndexingFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) || 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_EXT_fragment_density_map")) )
+       {
+               physicalDeviceFragmentDensityMapFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>();
+               *nextPtr = &physicalDeviceFragmentDensityMapFeaturesEXT;
+               nextPtr  = &physicalDeviceFragmentDensityMapFeaturesEXT.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::VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT physicalDeviceGlobalPriorityQueryFeaturesEXT;
+       deMemset(&physicalDeviceGlobalPriorityQueryFeaturesEXT, 0, sizeof(physicalDeviceGlobalPriorityQueryFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) )
+       {
+               physicalDeviceGlobalPriorityQueryFeaturesEXT.sType = getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT>();
+               *nextPtr = &physicalDeviceGlobalPriorityQueryFeaturesEXT;
+               nextPtr  = &physicalDeviceGlobalPriorityQueryFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceHostQueryResetFeaturesEXT physicalDeviceHostQueryResetFeaturesEXT;
+       deMemset(&physicalDeviceHostQueryResetFeaturesEXT, 0, sizeof(physicalDeviceHostQueryResetFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) )
+       {
+               physicalDeviceHostQueryResetFeaturesEXT.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeaturesEXT>();
+               *nextPtr = &physicalDeviceHostQueryResetFeaturesEXT;
+               nextPtr  = &physicalDeviceHostQueryResetFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR physicalDeviceImagelessFramebufferFeaturesKHR;
+       deMemset(&physicalDeviceImagelessFramebufferFeaturesKHR, 0, sizeof(physicalDeviceImagelessFramebufferFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) )
+       {
+               physicalDeviceImagelessFramebufferFeaturesKHR.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>();
+               *nextPtr = &physicalDeviceImagelessFramebufferFeaturesKHR;
+               nextPtr  = &physicalDeviceImagelessFramebufferFeaturesKHR.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::VkPhysicalDeviceInlineUniformBlockFeaturesEXT physicalDeviceInlineUniformBlockFeaturesEXT;
+       deMemset(&physicalDeviceInlineUniformBlockFeaturesEXT, 0, sizeof(physicalDeviceInlineUniformBlockFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) )
+       {
+               physicalDeviceInlineUniformBlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>();
+               *nextPtr = &physicalDeviceInlineUniformBlockFeaturesEXT;
+               nextPtr  = &physicalDeviceInlineUniformBlockFeaturesEXT.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::VkPhysicalDeviceMemoryPriorityFeaturesEXT physicalDeviceMemoryPriorityFeaturesEXT;
+       deMemset(&physicalDeviceMemoryPriorityFeaturesEXT, 0, sizeof(physicalDeviceMemoryPriorityFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) )
+       {
+               physicalDeviceMemoryPriorityFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>();
+               *nextPtr = &physicalDeviceMemoryPriorityFeaturesEXT;
+               nextPtr  = &physicalDeviceMemoryPriorityFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceMultiDrawFeaturesEXT physicalDeviceMultiDrawFeaturesEXT;
+       deMemset(&physicalDeviceMultiDrawFeaturesEXT, 0, sizeof(physicalDeviceMultiDrawFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) )
+       {
+               physicalDeviceMultiDrawFeaturesEXT.sType = getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>();
+               *nextPtr = &physicalDeviceMultiDrawFeaturesEXT;
+               nextPtr  = &physicalDeviceMultiDrawFeaturesEXT.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;
+       }
+
+       vk::VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE physicalDeviceMutableDescriptorTypeFeaturesVALVE;
+       deMemset(&physicalDeviceMutableDescriptorTypeFeaturesVALVE, 0, sizeof(physicalDeviceMutableDescriptorTypeFeaturesVALVE));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) )
+       {
+               physicalDeviceMutableDescriptorTypeFeaturesVALVE.sType = getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE>();
+               *nextPtr = &physicalDeviceMutableDescriptorTypeFeaturesVALVE;
+               nextPtr  = &physicalDeviceMutableDescriptorTypeFeaturesVALVE.pNext;
+       }
+
+       vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR;
+       deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) )
+       {
+               physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();
+               *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR;
+               nextPtr  = &physicalDevicePerformanceQueryFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT physicalDevicePipelineCreationCacheControlFeaturesEXT;
+       deMemset(&physicalDevicePipelineCreationCacheControlFeaturesEXT, 0, sizeof(physicalDevicePipelineCreationCacheControlFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_creation_cache_control")) )
+       {
+               physicalDevicePipelineCreationCacheControlFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>();
+               *nextPtr = &physicalDevicePipelineCreationCacheControlFeaturesEXT;
+               nextPtr  = &physicalDevicePipelineCreationCacheControlFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR;
+       deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) )
+       {
+               physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType = getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>();
+               *nextPtr = &physicalDevicePipelineExecutablePropertiesFeaturesKHR;
+               nextPtr  = &physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDevicePresentIdFeaturesKHR physicalDevicePresentIdFeaturesKHR;
+       deMemset(&physicalDevicePresentIdFeaturesKHR, 0, sizeof(physicalDevicePresentIdFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) )
+       {
+               physicalDevicePresentIdFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>();
+               *nextPtr = &physicalDevicePresentIdFeaturesKHR;
+               nextPtr  = &physicalDevicePresentIdFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDevicePresentWaitFeaturesKHR physicalDevicePresentWaitFeaturesKHR;
+       deMemset(&physicalDevicePresentWaitFeaturesKHR, 0, sizeof(physicalDevicePresentWaitFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) )
+       {
+               physicalDevicePresentWaitFeaturesKHR.sType = getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>();
+               *nextPtr = &physicalDevicePresentWaitFeaturesKHR;
+               nextPtr  = &physicalDevicePresentWaitFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeaturesKHR;
+       deMemset(&physicalDeviceRayQueryFeaturesKHR, 0, sizeof(physicalDeviceRayQueryFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
+       {
+               physicalDeviceRayQueryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>();
+               *nextPtr = &physicalDeviceRayQueryFeaturesKHR;
+               nextPtr  = &physicalDeviceRayQueryFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeaturesKHR;
+       deMemset(&physicalDeviceRayTracingPipelineFeaturesKHR, 0, sizeof(physicalDeviceRayTracingPipelineFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) )
+       {
+               physicalDeviceRayTracingPipelineFeaturesKHR.sType = getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>();
+               *nextPtr = &physicalDeviceRayTracingPipelineFeaturesKHR;
+               nextPtr  = &physicalDeviceRayTracingPipelineFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR physicalDeviceSamplerYcbcrConversionFeaturesKHR;
+       deMemset(&physicalDeviceSamplerYcbcrConversionFeaturesKHR, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
+       {
+               physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>();
+               *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR;
+               nextPtr  = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT physicalDeviceScalarBlockLayoutFeaturesEXT;
+       deMemset(&physicalDeviceScalarBlockLayoutFeaturesEXT, 0, sizeof(physicalDeviceScalarBlockLayoutFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
+       {
+               physicalDeviceScalarBlockLayoutFeaturesEXT.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>();
+               *nextPtr = &physicalDeviceScalarBlockLayoutFeaturesEXT;
+               nextPtr  = &physicalDeviceScalarBlockLayoutFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+       deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) )
+       {
+               physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>();
+               *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+               nextPtr  = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT physicalDeviceShaderAtomicFloat2FeaturesEXT;
+       deMemset(&physicalDeviceShaderAtomicFloat2FeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloat2FeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) )
+       {
+               physicalDeviceShaderAtomicFloat2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>();
+               *nextPtr = &physicalDeviceShaderAtomicFloat2FeaturesEXT;
+               nextPtr  = &physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT;
+       deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) )
+       {
+               physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>();
+               *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT;
+               nextPtr  = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR physicalDeviceShaderAtomicInt64FeaturesKHR;
+       deMemset(&physicalDeviceShaderAtomicInt64FeaturesKHR, 0, sizeof(physicalDeviceShaderAtomicInt64FeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) )
+       {
+               physicalDeviceShaderAtomicInt64FeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>();
+               *nextPtr = &physicalDeviceShaderAtomicInt64FeaturesKHR;
+               nextPtr  = &physicalDeviceShaderAtomicInt64FeaturesKHR.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::VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR physicalDeviceShaderIntegerDotProductFeaturesKHR;
+       deMemset(&physicalDeviceShaderIntegerDotProductFeaturesKHR, 0, sizeof(physicalDeviceShaderIntegerDotProductFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) )
+       {
+               physicalDeviceShaderIntegerDotProductFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR>();
+               *nextPtr = &physicalDeviceShaderIntegerDotProductFeaturesKHR;
+               nextPtr  = &physicalDeviceShaderIntegerDotProductFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+       deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) )
+       {
+               physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>();
+               *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+               nextPtr  = &physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
+       deMemset(&physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, 0, sizeof(physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) )
+       {
+               physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>();
+               *nextPtr = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
+               nextPtr  = &physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.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::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR physicalDeviceTimelineSemaphoreFeaturesKHR;
+       deMemset(&physicalDeviceTimelineSemaphoreFeaturesKHR, 0, sizeof(physicalDeviceTimelineSemaphoreFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
+       {
+               physicalDeviceTimelineSemaphoreFeaturesKHR.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>();
+               *nextPtr = &physicalDeviceTimelineSemaphoreFeaturesKHR;
+               nextPtr  = &physicalDeviceTimelineSemaphoreFeaturesKHR.pNext;
+       }
+
+       vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT physicalDeviceTransformFeedbackFeaturesEXT;
+       deMemset(&physicalDeviceTransformFeedbackFeaturesEXT, 0, sizeof(physicalDeviceTransformFeedbackFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) )
+       {
+               physicalDeviceTransformFeedbackFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>();
+               *nextPtr = &physicalDeviceTransformFeedbackFeaturesEXT;
+               nextPtr  = &physicalDeviceTransformFeedbackFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR physicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+       deMemset(&physicalDeviceUniformBufferStandardLayoutFeaturesKHR, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) )
+       {
+               physicalDeviceUniformBufferStandardLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>();
+               *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+               nextPtr  = &physicalDeviceUniformBufferStandardLayoutFeaturesKHR.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::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR physicalDeviceVulkanMemoryModelFeaturesKHR;
+       deMemset(&physicalDeviceVulkanMemoryModelFeaturesKHR, 0, sizeof(physicalDeviceVulkanMemoryModelFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
+       {
+               physicalDeviceVulkanMemoryModelFeaturesKHR.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>();
+               *nextPtr = &physicalDeviceVulkanMemoryModelFeaturesKHR;
+               nextPtr  = &physicalDeviceVulkanMemoryModelFeaturesKHR.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));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) )
+       {
+               physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();
+               *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT;
+               nextPtr  = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext;
+       }
+
+       vk::VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
+       deMemset(&physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR, 0, sizeof(physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) )
+       {
+               physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.sType = getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR>();
+               *nextPtr = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
+               nextPtr  = &physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.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 ( physicalDevice8BitStorageFeaturesKHR.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.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 ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) )
+       {
+               if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
+       {
+               if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
+       {
+               if ( physicalDeviceScalarBlockLayoutFeaturesEXT.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 ( physicalDeviceUniformBufferStandardLayoutFeaturesKHR.uniformBufferStandardLayout == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) )
+       {
+               if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo 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 ( physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.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 ( physicalDeviceImagelessFramebufferFeaturesKHR.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 ( physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.separateDepthStencilLayouts == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_creation_cache_control")) )
+       {
+               if ( physicalDevicePipelineCreationCacheControlFeaturesEXT.pipelineCreationCacheControl == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl 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 ( physicalDeviceHostQueryResetFeaturesEXT.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 ( physicalDeviceTimelineSemaphoreFeaturesKHR.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_memory_priority")) )
+       {
+               if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature memoryPriority 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 ( physicalDeviceVulkanMemoryModelFeaturesKHR.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 ( physicalDeviceBufferDeviceAddressFeaturesKHR.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_transform_feedback")) )
+       {
+               if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) )
+       {
+               if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature conditionalRendering 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_EXT_fragment_density_map")) )
+       {
+               if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap 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 ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       {
+               if ( physicalDeviceVulkan12Features.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 ( physicalDevice16BitStorageFeaturesKHR.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 ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) )
+       {
+               if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
+       {
+               if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion 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_shader_image_atomic_int64")) )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 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 ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) )
+       {
+               if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) )
+       {
+               if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind 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 ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingPartiallyBound == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) )
+       {
+               if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
+       {
+               if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
+       {
+               if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature rayQuery 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;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) )
+       {
+               if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) )
+       {
+               if ( physicalDeviceGlobalPriorityQueryFeaturesEXT.globalPriorityQuery == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics )
+       {
+               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_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics )
+       {
+               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd )
+       {
+               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) )
+       {
+               if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) )
+       {
+               if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) )
+       {
+               if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) )
+       {
+               if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
+       {
+               if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) )
+       {
+               if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       return result;
+}
+
diff --git a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
new file mode 100644 (file)
index 0000000..43e43b7
--- /dev/null
@@ -0,0 +1,3720 @@
+/* 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 createShaderModule (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pShaderModule = allocateNonDispHandle<ShaderModule, VkShaderModule>(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 createDescriptorUpdateTemplate (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pDescriptorUpdateTemplate = allocateNonDispHandle<DescriptorUpdateTemplate, VkDescriptorUpdateTemplate>(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 createDeferredOperationKHR (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pDeferredOperation = allocateNonDispHandle<DeferredOperationKHR, VkDeferredOperationKHR>(device, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createDebugReportCallbackEXT (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pCallback = allocateNonDispHandle<DebugReportCallbackEXT, VkDebugReportCallbackEXT>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createCuModuleNVX (VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pModule = allocateNonDispHandle<CuModuleNVX, VkCuModuleNVX>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createCuFunctionNVX (VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pFunction = allocateNonDispHandle<CuFunctionNVX, VkCuFunctionNVX>(device, 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 createValidationCacheEXT (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pValidationCache = allocateNonDispHandle<ValidationCacheEXT, VkValidationCacheEXT>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createAccelerationStructureNV (VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pAccelerationStructure = allocateNonDispHandle<AccelerationStructureNV, VkAccelerationStructureNV>(device, 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 VkResult VKAPI_CALL createIndirectCommandsLayoutNV (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pIndirectCommandsLayout = allocateNonDispHandle<IndirectCommandsLayoutNV, VkIndirectCommandsLayoutNV>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createPrivateDataSlotEXT (VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pPrivateDataSlot = allocateNonDispHandle<PrivateDataSlotEXT, VkPrivateDataSlotEXT>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createAccelerationStructureKHR (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pAccelerationStructure = allocateNonDispHandle<AccelerationStructureKHR, VkAccelerationStructureKHR>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createAndroidSurfaceKHR (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createVideoSessionKHR (VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pVideoSession = allocateNonDispHandle<VideoSessionKHR, VkVideoSessionKHR>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createVideoSessionParametersKHR (VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pVideoSessionParameters = allocateNonDispHandle<VideoSessionParametersKHR, VkVideoSessionParametersKHR>(device, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createImagePipeSurfaceFUCHSIA (VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createStreamDescriptorSurfaceGGP (VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createIOSSurfaceMVK (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createMacOSSurfaceMVK (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createMetalSurfaceEXT (VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createViSurfaceNN (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createWaylandSurfaceKHR (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createWin32SurfaceKHR (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createXcbSurfaceKHR (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+{
+       DE_UNREF(pAllocator);
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL createXlibSurfaceKHR (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* 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 freeMemory (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<DeviceMemory, VkDeviceMemory>(memory, 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 destroyQueryPool (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<QueryPool, VkQueryPool>(queryPool, 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 destroyShaderModule (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<ShaderModule, VkShaderModule>(shaderModule, 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 destroyDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<DescriptorPool, VkDescriptorPool>(descriptorPool, 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 destroyCommandPool (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<CommandPool, VkCommandPool>(commandPool, 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 destroyDescriptorUpdateTemplate (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<DescriptorUpdateTemplate, VkDescriptorUpdateTemplate>(descriptorUpdateTemplate, 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 destroySwapchainKHR (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<SwapchainKHR, VkSwapchainKHR>(swapchain, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyDeferredOperationKHR (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<DeferredOperationKHR, VkDeferredOperationKHR>(operation, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyDebugReportCallbackEXT (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(instance);
+       freeNonDispHandle<DebugReportCallbackEXT, VkDebugReportCallbackEXT>(callback, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyCuModuleNVX (VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<CuModuleNVX, VkCuModuleNVX>(module, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyCuFunctionNVX (VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<CuFunctionNVX, VkCuFunctionNVX>(function, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyDebugUtilsMessengerEXT (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(instance);
+       freeNonDispHandle<DebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT>(messenger, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyValidationCacheEXT (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<ValidationCacheEXT, VkValidationCacheEXT>(validationCache, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyAccelerationStructureNV (VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<AccelerationStructureNV, VkAccelerationStructureNV>(accelerationStructure, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyIndirectCommandsLayoutNV (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<IndirectCommandsLayoutNV, VkIndirectCommandsLayoutNV>(indirectCommandsLayout, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyPrivateDataSlotEXT (VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<PrivateDataSlotEXT, VkPrivateDataSlotEXT>(privateDataSlot, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyAccelerationStructureKHR (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<AccelerationStructureKHR, VkAccelerationStructureKHR>(accelerationStructure, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyVideoSessionKHR (VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<VideoSessionKHR, VkVideoSessionKHR>(videoSession, pAllocator);
+}
+
+VKAPI_ATTR void VKAPI_CALL destroyVideoSessionParametersKHR (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator)
+{
+       DE_UNREF(device);
+       freeNonDispHandle<VideoSessionParametersKHR, VkVideoSessionParametersKHR>(videoSessionParameters, 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 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;
+}
+
+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 VkResult VKAPI_CALL getPipelineCacheData (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipelineCache);
+       DE_UNREF(pDataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL mergePipelineCaches (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches)
+{
+       DE_UNREF(device);
+       DE_UNREF(dstCache);
+       DE_UNREF(srcCacheCount);
+       DE_UNREF(pSrcCaches);
+       return VK_SUCCESS;
+}
+
+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 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 getImageSparseMemoryRequirements2 (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       DE_UNREF(pSparseMemoryRequirementCount);
+       DE_UNREF(pSparseMemoryRequirements);
+}
+
+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 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 trimCommandPool (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags)
+{
+       DE_UNREF(device);
+       DE_UNREF(commandPool);
+       DE_UNREF(flags);
+}
+
+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 updateDescriptorSetWithTemplate (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(descriptorSet);
+       DE_UNREF(descriptorUpdateTemplate);
+       DE_UNREF(pData);
+}
+
+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 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 void VKAPI_CALL cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pipelineBindPoint);
+       DE_UNREF(layout);
+       DE_UNREF(set);
+       DE_UNREF(descriptorWriteCount);
+       DE_UNREF(pDescriptorWrites);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(descriptorUpdateTemplate);
+       DE_UNREF(layout);
+       DE_UNREF(set);
+       DE_UNREF(pData);
+}
+
+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);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL waitForPresentKHR (VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapchain);
+       DE_UNREF(presentId);
+       DE_UNREF(timeout);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR uint32_t VKAPI_CALL getDeferredOperationMaxConcurrencyKHR (VkDevice device, VkDeferredOperationKHR operation)
+{
+       DE_UNREF(device);
+       DE_UNREF(operation);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getDeferredOperationResultKHR (VkDevice device, VkDeferredOperationKHR operation)
+{
+       DE_UNREF(device);
+       DE_UNREF(operation);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL deferredOperationJoinKHR (VkDevice device, VkDeferredOperationKHR operation)
+{
+       DE_UNREF(device);
+       DE_UNREF(operation);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(pPipelineInfo);
+       DE_UNREF(pExecutableCount);
+       DE_UNREF(pProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPipelineExecutableStatisticsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics)
+{
+       DE_UNREF(device);
+       DE_UNREF(pExecutableInfo);
+       DE_UNREF(pStatisticCount);
+       DE_UNREF(pStatistics);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
+{
+       DE_UNREF(device);
+       DE_UNREF(pExecutableInfo);
+       DE_UNREF(pInternalRepresentationCount);
+       DE_UNREF(pInternalRepresentations);
+       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 void VKAPI_CALL debugReportMessageEXT (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage)
+{
+       DE_UNREF(instance);
+       DE_UNREF(flags);
+       DE_UNREF(objectType);
+       DE_UNREF(object);
+       DE_UNREF(location);
+       DE_UNREF(messageCode);
+       DE_UNREF(pLayerPrefix);
+       DE_UNREF(pMessage);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pTagInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL debugMarkerSetObjectNameEXT (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pNameInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pMarkerInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDebugMarkerEndEXT (VkCommandBuffer commandBuffer)
+{
+       DE_UNREF(commandBuffer);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pMarkerInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstBinding);
+       DE_UNREF(bindingCount);
+       DE_UNREF(pBuffers);
+       DE_UNREF(pOffsets);
+       DE_UNREF(pSizes);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstCounterBuffer);
+       DE_UNREF(counterBufferCount);
+       DE_UNREF(pCounterBuffers);
+       DE_UNREF(pCounterBufferOffsets);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstCounterBuffer);
+       DE_UNREF(counterBufferCount);
+       DE_UNREF(pCounterBuffers);
+       DE_UNREF(pCounterBufferOffsets);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(queryPool);
+       DE_UNREF(query);
+       DE_UNREF(flags);
+       DE_UNREF(index);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(queryPool);
+       DE_UNREF(query);
+       DE_UNREF(index);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(instanceCount);
+       DE_UNREF(firstInstance);
+       DE_UNREF(counterBuffer);
+       DE_UNREF(counterBufferOffset);
+       DE_UNREF(counterOffset);
+       DE_UNREF(vertexStride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdCuLaunchKernelNVX (VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pLaunchInfo);
+}
+
+VKAPI_ATTR uint32_t VKAPI_CALL getImageViewHandleNVX (VkDevice device, const VkImageViewHandleInfoNVX* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getImageViewAddressNVX (VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(imageView);
+       DE_UNREF(pProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCountAMD (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 cmdDrawIndexedIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(buffer);
+       DE_UNREF(offset);
+       DE_UNREF(countBuffer);
+       DE_UNREF(countBufferOffset);
+       DE_UNREF(maxDrawCount);
+       DE_UNREF(stride);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getShaderInfoAMD (VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(shaderStage);
+       DE_UNREF(infoType);
+       DE_UNREF(pInfoSize);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceExternalImageFormatPropertiesNV (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(format);
+       DE_UNREF(type);
+       DE_UNREF(tiling);
+       DE_UNREF(usage);
+       DE_UNREF(flags);
+       DE_UNREF(externalHandleType);
+       DE_UNREF(pExternalImageFormatProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginConditionalRenderingEXT (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pConditionalRenderingBegin);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndConditionalRenderingEXT (VkCommandBuffer commandBuffer)
+{
+       DE_UNREF(commandBuffer);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetViewportWScalingNV (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstViewport);
+       DE_UNREF(viewportCount);
+       DE_UNREF(pViewportWScalings);
+}
+
+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 VkResult VKAPI_CALL getRefreshCycleDurationGOOGLE (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapchain);
+       DE_UNREF(pDisplayTimingProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPastPresentationTimingGOOGLE (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapchain);
+       DE_UNREF(pPresentationTimingCount);
+       DE_UNREF(pPresentationTimings);
+       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 mergeValidationCachesEXT (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches)
+{
+       DE_UNREF(device);
+       DE_UNREF(dstCache);
+       DE_UNREF(srcCacheCount);
+       DE_UNREF(pSrcCaches);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getValidationCacheDataEXT (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(validationCache);
+       DE_UNREF(pDataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBindShadingRateImageNV (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(imageView);
+       DE_UNREF(imageLayout);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetViewportShadingRatePaletteNV (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstViewport);
+       DE_UNREF(viewportCount);
+       DE_UNREF(pShadingRatePalettes);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetCoarseSampleOrderNV (VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(sampleOrderType);
+       DE_UNREF(customSampleOrderCount);
+       DE_UNREF(pCustomSampleOrders);
+}
+
+VKAPI_ATTR void VKAPI_CALL getAccelerationStructureMemoryRequirementsNV (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       DE_UNREF(pMemoryRequirements);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL bindAccelerationStructureMemoryNV (VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
+{
+       DE_UNREF(device);
+       DE_UNREF(bindInfoCount);
+       DE_UNREF(pBindInfos);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBuildAccelerationStructureNV (VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pInfo);
+       DE_UNREF(instanceData);
+       DE_UNREF(instanceOffset);
+       DE_UNREF(update);
+       DE_UNREF(dst);
+       DE_UNREF(src);
+       DE_UNREF(scratch);
+       DE_UNREF(scratchOffset);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdCopyAccelerationStructureNV (VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(dst);
+       DE_UNREF(src);
+       DE_UNREF(mode);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdTraceRaysNV (VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(raygenShaderBindingTableBuffer);
+       DE_UNREF(raygenShaderBindingOffset);
+       DE_UNREF(missShaderBindingTableBuffer);
+       DE_UNREF(missShaderBindingOffset);
+       DE_UNREF(missShaderBindingStride);
+       DE_UNREF(hitShaderBindingTableBuffer);
+       DE_UNREF(hitShaderBindingOffset);
+       DE_UNREF(hitShaderBindingStride);
+       DE_UNREF(callableShaderBindingTableBuffer);
+       DE_UNREF(callableShaderBindingOffset);
+       DE_UNREF(callableShaderBindingStride);
+       DE_UNREF(width);
+       DE_UNREF(height);
+       DE_UNREF(depth);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getRayTracingShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(firstGroup);
+       DE_UNREF(groupCount);
+       DE_UNREF(dataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getRayTracingShaderGroupHandlesNV (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(firstGroup);
+       DE_UNREF(groupCount);
+       DE_UNREF(dataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getAccelerationStructureHandleNV (VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(accelerationStructure);
+       DE_UNREF(dataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdWriteAccelerationStructuresPropertiesNV (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(accelerationStructureCount);
+       DE_UNREF(pAccelerationStructures);
+       DE_UNREF(queryType);
+       DE_UNREF(queryPool);
+       DE_UNREF(firstQuery);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL compileDeferredNV (VkDevice device, VkPipeline pipeline, deUint32 shader)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(shader);
+       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 void VKAPI_CALL cmdWriteBufferMarkerAMD (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pipelineStage);
+       DE_UNREF(dstBuffer);
+       DE_UNREF(dstOffset);
+       DE_UNREF(marker);
+}
+
+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 cmdDrawMeshTasksNV (VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(taskCount);
+       DE_UNREF(firstTask);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawMeshTasksIndirectNV (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 cmdDrawMeshTasksIndirectCountNV (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 cmdSetExclusiveScissorNV (VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(firstExclusiveScissor);
+       DE_UNREF(exclusiveScissorCount);
+       DE_UNREF(pExclusiveScissors);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetCheckpointNV (VkCommandBuffer commandBuffer, const void* pCheckpointMarker)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pCheckpointMarker);
+}
+
+VKAPI_ATTR void VKAPI_CALL getQueueCheckpointDataNV (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData)
+{
+       DE_UNREF(queue);
+       DE_UNREF(pCheckpointDataCount);
+       DE_UNREF(pCheckpointData);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL initializePerformanceApiINTEL (VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInitializeInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL uninitializePerformanceApiINTEL (VkDevice device)
+{
+       DE_UNREF(device);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL cmdSetPerformanceMarkerINTEL (VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pMarkerInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL cmdSetPerformanceStreamMarkerINTEL (VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pMarkerInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL cmdSetPerformanceOverrideINTEL (VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pOverrideInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquirePerformanceConfigurationINTEL (VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration)
+{
+       DE_UNREF(device);
+       DE_UNREF(pAcquireInfo);
+       DE_UNREF(pConfiguration);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL releasePerformanceConfigurationINTEL (VkDevice device, VkPerformanceConfigurationINTEL configuration)
+{
+       DE_UNREF(device);
+       DE_UNREF(configuration);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL queueSetPerformanceConfigurationINTEL (VkQueue queue, VkPerformanceConfigurationINTEL configuration)
+{
+       DE_UNREF(queue);
+       DE_UNREF(configuration);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPerformanceParameterINTEL (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue)
+{
+       DE_UNREF(device);
+       DE_UNREF(parameter);
+       DE_UNREF(pValue);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapChain);
+       DE_UNREF(localDimmingEnable);
+}
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceToolPropertiesEXT (VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pToolCount);
+       DE_UNREF(pToolProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceCooperativeMatrixPropertiesNV (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pPropertyCount);
+       DE_UNREF(pProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pCombinationCount);
+       DE_UNREF(pCombinations);
+       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 getGeneratedCommandsMemoryRequirementsNV (VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       DE_UNREF(pMemoryRequirements);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdPreprocessGeneratedCommandsNV (VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pGeneratedCommandsInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdExecuteGeneratedCommandsNV (VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(isPreprocessed);
+       DE_UNREF(pGeneratedCommandsInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBindPipelineShaderGroupNV (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pipelineBindPoint);
+       DE_UNREF(pipeline);
+       DE_UNREF(groupIndex);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquireDrmDisplayEXT (VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(drmFd);
+       DE_UNREF(display);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getDrmDisplayEXT (VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(drmFd);
+       DE_UNREF(connectorId);
+       DE_UNREF(display);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL setPrivateDataEXT (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data)
+{
+       DE_UNREF(device);
+       DE_UNREF(objectType);
+       DE_UNREF(objectHandle);
+       DE_UNREF(privateDataSlot);
+       DE_UNREF(data);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL getPrivateDataEXT (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(objectType);
+       DE_UNREF(objectHandle);
+       DE_UNREF(privateDataSlot);
+       DE_UNREF(pData);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(shadingRate);
+       DE_UNREF(combinerOps);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquireWinrtDisplayNV (VkPhysicalDevice physicalDevice, VkDisplayKHR display)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(display);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getWinrtDisplayNV (VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(deviceRelativeId);
+       DE_UNREF(pDisplay);
+       return VK_SUCCESS;
+}
+
+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 VkResult VKAPI_CALL getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize)
+{
+       DE_UNREF(device);
+       DE_UNREF(renderpass);
+       DE_UNREF(pMaxWorkgroupSize);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSubpassShadingHUAWEI (VkCommandBuffer commandBuffer)
+{
+       DE_UNREF(commandBuffer);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBindInvocationMaskHUAWEI (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(imageView);
+       DE_UNREF(imageLayout);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryRemoteAddressNV (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress)
+{
+       DE_UNREF(device);
+       DE_UNREF(pMemoryGetRemoteAddressInfo);
+       DE_UNREF(pAddress);
+       return VK_SUCCESS;
+}
+
+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);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawMultiEXT (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(drawCount);
+       DE_UNREF(pVertexInfo);
+       DE_UNREF(instanceCount);
+       DE_UNREF(firstInstance);
+       DE_UNREF(stride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawMultiIndexedEXT (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(drawCount);
+       DE_UNREF(pIndexInfo);
+       DE_UNREF(instanceCount);
+       DE_UNREF(firstInstance);
+       DE_UNREF(stride);
+       DE_UNREF(pVertexOffset);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBuildAccelerationStructuresKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(infoCount);
+       DE_UNREF(pInfos);
+       DE_UNREF(ppBuildRangeInfos);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBuildAccelerationStructuresIndirectKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(infoCount);
+       DE_UNREF(pInfos);
+       DE_UNREF(pIndirectDeviceAddresses);
+       DE_UNREF(pIndirectStrides);
+       DE_UNREF(ppMaxPrimitiveCounts);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL buildAccelerationStructuresKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
+{
+       DE_UNREF(device);
+       DE_UNREF(deferredOperation);
+       DE_UNREF(infoCount);
+       DE_UNREF(pInfos);
+       DE_UNREF(ppBuildRangeInfos);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL copyAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(deferredOperation);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL copyAccelerationStructureToMemoryKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(deferredOperation);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL copyMemoryToAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(deferredOperation);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL writeAccelerationStructuresPropertiesKHR (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride)
+{
+       DE_UNREF(device);
+       DE_UNREF(accelerationStructureCount);
+       DE_UNREF(pAccelerationStructures);
+       DE_UNREF(queryType);
+       DE_UNREF(dataSize);
+       DE_UNREF(pData);
+       DE_UNREF(stride);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdCopyAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdCopyAccelerationStructureToMemoryKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdCopyMemoryToAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pInfo);
+}
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getAccelerationStructureDeviceAddressKHR (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdWriteAccelerationStructuresPropertiesKHR (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(accelerationStructureCount);
+       DE_UNREF(pAccelerationStructures);
+       DE_UNREF(queryType);
+       DE_UNREF(queryPool);
+       DE_UNREF(firstQuery);
+}
+
+VKAPI_ATTR void VKAPI_CALL getDeviceAccelerationStructureCompatibilityKHR (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility)
+{
+       DE_UNREF(device);
+       DE_UNREF(pVersionInfo);
+       DE_UNREF(pCompatibility);
+}
+
+VKAPI_ATTR void VKAPI_CALL getAccelerationStructureBuildSizesKHR (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(buildType);
+       DE_UNREF(pBuildInfo);
+       DE_UNREF(pMaxPrimitiveCounts);
+       DE_UNREF(pSizeInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdTraceRaysKHR (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pRaygenShaderBindingTable);
+       DE_UNREF(pMissShaderBindingTable);
+       DE_UNREF(pHitShaderBindingTable);
+       DE_UNREF(pCallableShaderBindingTable);
+       DE_UNREF(width);
+       DE_UNREF(height);
+       DE_UNREF(depth);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(firstGroup);
+       DE_UNREF(groupCount);
+       DE_UNREF(dataSize);
+       DE_UNREF(pData);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdTraceRaysIndirectKHR (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pRaygenShaderBindingTable);
+       DE_UNREF(pMissShaderBindingTable);
+       DE_UNREF(pHitShaderBindingTable);
+       DE_UNREF(pCallableShaderBindingTable);
+       DE_UNREF(indirectDeviceAddress);
+}
+
+VKAPI_ATTR VkDeviceSize VKAPI_CALL getRayTracingShaderGroupStackSizeKHR (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader)
+{
+       DE_UNREF(device);
+       DE_UNREF(pipeline);
+       DE_UNREF(group);
+       DE_UNREF(groupShader);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdSetRayTracingPipelineStackSizeKHR (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pipelineStackSize);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(buffer);
+       DE_UNREF(pProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceVideoCapabilitiesKHR (VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pVideoProfile);
+       DE_UNREF(pCapabilities);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceVideoFormatPropertiesKHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, deUint32* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pVideoFormatInfo);
+       DE_UNREF(pVideoFormatPropertyCount);
+       DE_UNREF(pVideoFormatProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getVideoSessionMemoryRequirementsKHR (VkDevice device, VkVideoSessionKHR videoSession, deUint32* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
+{
+       DE_UNREF(device);
+       DE_UNREF(videoSession);
+       DE_UNREF(pVideoSessionMemoryRequirementsCount);
+       DE_UNREF(pVideoSessionMemoryRequirements);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL bindVideoSessionMemoryKHR (VkDevice device, VkVideoSessionKHR videoSession, deUint32 videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
+{
+       DE_UNREF(device);
+       DE_UNREF(videoSession);
+       DE_UNREF(videoSessionBindMemoryCount);
+       DE_UNREF(pVideoSessionBindMemories);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL updateVideoSessionParametersKHR (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(videoSessionParameters);
+       DE_UNREF(pUpdateInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pBeginInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pEndCodingInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdControlVideoCodingKHR (VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pCodingControlInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDecodeVideoKHR (VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pFrameInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEncodeVideoKHR (VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pEncodeInfo);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryZirconHandleFUCHSIA (VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(pGetZirconHandleInfo);
+       DE_UNREF(pZirconHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryZirconHandlePropertiesFUCHSIA (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(handleType);
+       DE_UNREF(zirconHandle);
+       DE_UNREF(pMemoryZirconHandleProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL importSemaphoreZirconHandleFUCHSIA (VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pImportSemaphoreZirconHandleInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreZirconHandleFUCHSIA (VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(pGetZirconHandleInfo);
+       DE_UNREF(pZirconHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkBool32 VKAPI_CALL getPhysicalDeviceWaylandPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(queueFamilyIndex);
+       DE_UNREF(display);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkBool32 VKAPI_CALL getPhysicalDeviceWin32PresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(queueFamilyIndex);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(pGetWin32HandleInfo);
+       DE_UNREF(pHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryWin32HandlePropertiesKHR (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
+{
+       DE_UNREF(device);
+       DE_UNREF(handleType);
+       DE_UNREF(handle);
+       DE_UNREF(pMemoryWin32HandleProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL importSemaphoreWin32HandleKHR (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pImportSemaphoreWin32HandleInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreWin32HandleKHR (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(pGetWin32HandleInfo);
+       DE_UNREF(pHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL importFenceWin32HandleKHR (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pImportFenceWin32HandleInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getFenceWin32HandleKHR (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(pGetWin32HandleInfo);
+       DE_UNREF(pHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getMemoryWin32HandleNV (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle)
+{
+       DE_UNREF(device);
+       DE_UNREF(memory);
+       DE_UNREF(handleType);
+       DE_UNREF(pHandle);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfacePresentModes2EXT (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pSurfaceInfo);
+       DE_UNREF(pPresentModeCount);
+       DE_UNREF(pPresentModes);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquireFullScreenExclusiveModeEXT (VkDevice device, VkSwapchainKHR swapchain)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapchain);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL releaseFullScreenExclusiveModeEXT (VkDevice device, VkSwapchainKHR swapchain)
+{
+       DE_UNREF(device);
+       DE_UNREF(swapchain);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getDeviceGroupSurfacePresentModes2EXT (VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes)
+{
+       DE_UNREF(device);
+       DE_UNREF(pSurfaceInfo);
+       DE_UNREF(pModes);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkBool32 VKAPI_CALL getPhysicalDeviceXcbPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(queueFamilyIndex);
+       DE_UNREF(connection);
+       DE_UNREF(visual_id);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkBool32 VKAPI_CALL getPhysicalDeviceXlibPresentationSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(queueFamilyIndex);
+       DE_UNREF(dpy);
+       DE_UNREF(visualID);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquireXlibDisplayEXT (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(dpy);
+       DE_UNREF(display);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getRandROutputDisplayEXT (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(dpy);
+       DE_UNREF(rrOutput);
+       DE_UNREF(pDisplay);
+       return VK_SUCCESS;
+}
+
+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(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(vkGetPhysicalDeviceFeatures2KHR,                                                                             getPhysicalDeviceFeatures2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2KHR,                                                                   getPhysicalDeviceProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR,                                                             getPhysicalDeviceFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR,                                                getPhysicalDeviceImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR,                                                getPhysicalDeviceQueueFamilyProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR,                                                             getPhysicalDeviceMemoryProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR,                                  getPhysicalDeviceSparseImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroupsKHR,                                                                  enumeratePhysicalDeviceGroups),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferPropertiesKHR,                                              getPhysicalDeviceExternalBufferProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,                                   getPhysicalDeviceExternalSemaphoreProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFencePropertiesKHR,                                               getPhysicalDeviceExternalFenceProperties),
+       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(vkCreateDebugReportCallbackEXT,                                                                              createDebugReportCallbackEXT),
+       VK_NULL_FUNC_ENTRY(vkDestroyDebugReportCallbackEXT,                                                                             destroyDebugReportCallbackEXT),
+       VK_NULL_FUNC_ENTRY(vkDebugReportMessageEXT,                                                                                             debugReportMessageEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalImageFormatPropertiesNV,                                  getPhysicalDeviceExternalImageFormatPropertiesNV),
+       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(vkGetPhysicalDeviceToolPropertiesEXT,                                                                getPhysicalDeviceToolPropertiesEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV,                                    getPhysicalDeviceCooperativeMatrixPropertiesNV),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV,   getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV),
+       VK_NULL_FUNC_ENTRY(vkCreateHeadlessSurfaceEXT,                                                                                  createHeadlessSurfaceEXT),
+       VK_NULL_FUNC_ENTRY(vkAcquireDrmDisplayEXT,                                                                                              acquireDrmDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkGetDrmDisplayEXT,                                                                                                  getDrmDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkAcquireWinrtDisplayNV,                                                                                             acquireWinrtDisplayNV),
+       VK_NULL_FUNC_ENTRY(vkGetWinrtDisplayNV,                                                                                                 getWinrtDisplayNV),
+       VK_NULL_FUNC_ENTRY(vkCreateAndroidSurfaceKHR,                                                                                   createAndroidSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceVideoCapabilitiesKHR,                                                             getPhysicalDeviceVideoCapabilitiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceVideoFormatPropertiesKHR,                                                 getPhysicalDeviceVideoFormatPropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateImagePipeSurfaceFUCHSIA,                                                                             createImagePipeSurfaceFUCHSIA),
+       VK_NULL_FUNC_ENTRY(vkCreateStreamDescriptorSurfaceGGP,                                                                  createStreamDescriptorSurfaceGGP),
+       VK_NULL_FUNC_ENTRY(vkCreateIOSSurfaceMVK,                                                                                               createIOSSurfaceMVK),
+       VK_NULL_FUNC_ENTRY(vkCreateMacOSSurfaceMVK,                                                                                             createMacOSSurfaceMVK),
+       VK_NULL_FUNC_ENTRY(vkCreateMetalSurfaceEXT,                                                                                             createMetalSurfaceEXT),
+       VK_NULL_FUNC_ENTRY(vkCreateViSurfaceNN,                                                                                                 createViSurfaceNN),
+       VK_NULL_FUNC_ENTRY(vkCreateWaylandSurfaceKHR,                                                                                   createWaylandSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWaylandPresentationSupportKHR,                                    getPhysicalDeviceWaylandPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateWin32SurfaceKHR,                                                                                             createWin32SurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWin32PresentationSupportKHR,                                              getPhysicalDeviceWin32PresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfacePresentModes2EXT,                                                  getPhysicalDeviceSurfacePresentModes2EXT),
+       VK_NULL_FUNC_ENTRY(vkCreateXcbSurfaceKHR,                                                                                               createXcbSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXcbPresentationSupportKHR,                                                getPhysicalDeviceXcbPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateXlibSurfaceKHR,                                                                                              createXlibSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXlibPresentationSupportKHR,                                               getPhysicalDeviceXlibPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkAcquireXlibDisplayEXT,                                                                                             acquireXlibDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkGetRandROutputDisplayEXT,                                                                                  getRandROutputDisplayEXT),
+};
+
+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(vkFreeMemory,                                                                                freeMemory),
+       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(vkGetImageSparseMemoryRequirements,                                  getImageSparseMemoryRequirements),
+       VK_NULL_FUNC_ENTRY(vkQueueBindSparse,                                                                   queueBindSparse),
+       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(vkDestroyQueryPool,                                                                  destroyQueryPool),
+       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(vkCreateShaderModule,                                                                createShaderModule),
+       VK_NULL_FUNC_ENTRY(vkDestroyShaderModule,                                                               destroyShaderModule),
+       VK_NULL_FUNC_ENTRY(vkCreatePipelineCache,                                                               createPipelineCache),
+       VK_NULL_FUNC_ENTRY(vkDestroyPipelineCache,                                                              destroyPipelineCache),
+       VK_NULL_FUNC_ENTRY(vkGetPipelineCacheData,                                                              getPipelineCacheData),
+       VK_NULL_FUNC_ENTRY(vkMergePipelineCaches,                                                               mergePipelineCaches),
+       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(vkDestroyDescriptorPool,                                                             destroyDescriptorPool),
+       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(vkDestroyCommandPool,                                                                destroyCommandPool),
+       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(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(vkGetImageSparseMemoryRequirements2,                                 getImageSparseMemoryRequirements2),
+       VK_NULL_FUNC_ENTRY(vkTrimCommandPool,                                                                   trimCommandPool),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceQueue2,                                                                   getDeviceQueue2),
+       VK_NULL_FUNC_ENTRY(vkCreateSamplerYcbcrConversion,                                              createSamplerYcbcrConversion),
+       VK_NULL_FUNC_ENTRY(vkDestroySamplerYcbcrConversion,                                             destroySamplerYcbcrConversion),
+       VK_NULL_FUNC_ENTRY(vkCreateDescriptorUpdateTemplate,                                    createDescriptorUpdateTemplate),
+       VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplate,                                   destroyDescriptorUpdateTemplate),
+       VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplate,                                   updateDescriptorSetWithTemplate),
+       VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupport,                                             getDescriptorSetLayoutSupport),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCount,                                                              cmdDrawIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCount,                                               cmdDrawIndexedIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCreateRenderPass2,                                                                 createRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2,                                                               cmdBeginRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2,                                                                   cmdNextSubpass2),
+       VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2,                                                                 cmdEndRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkResetQueryPool,                                                                    resetQueryPool),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValue,                                                  getSemaphoreCounterValue),
+       VK_NULL_FUNC_ENTRY(vkWaitSemaphores,                                                                    waitSemaphores),
+       VK_NULL_FUNC_ENTRY(vkSignalSemaphore,                                                                   signalSemaphore),
+       VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddress,                                                    getBufferDeviceAddress),
+       VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddress,                                             getBufferOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddress,                               getDeviceMemoryOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkCreateSwapchainKHR,                                                                createSwapchainKHR),
+       VK_NULL_FUNC_ENTRY(vkDestroySwapchainKHR,                                                               destroySwapchainKHR),
+       VK_NULL_FUNC_ENTRY(vkGetSwapchainImagesKHR,                                                             getSwapchainImagesKHR),
+       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(vkGetDeviceGroupPeerMemoryFeaturesKHR,                               getDeviceGroupPeerMemoryFeatures),
+       VK_NULL_FUNC_ENTRY(vkCmdSetDeviceMaskKHR,                                                               cmdSetDeviceMask),
+       VK_NULL_FUNC_ENTRY(vkCmdDispatchBaseKHR,                                                                cmdDispatchBase),
+       VK_NULL_FUNC_ENTRY(vkTrimCommandPoolKHR,                                                                trimCommandPool),
+       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(vkCmdPushDescriptorSetKHR,                                                   cmdPushDescriptorSetKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdPushDescriptorSetWithTemplateKHR,                               cmdPushDescriptorSetWithTemplateKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateDescriptorUpdateTemplateKHR,                                 createDescriptorUpdateTemplate),
+       VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplateKHR,                                destroyDescriptorUpdateTemplate),
+       VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplateKHR,                                updateDescriptorSetWithTemplate),
+       VK_NULL_FUNC_ENTRY(vkCreateRenderPass2KHR,                                                              createRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2KHR,                                                    cmdBeginRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2KHR,                                                                cmdNextSubpass2),
+       VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2KHR,                                                              cmdEndRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkGetSwapchainStatusKHR,                                                             getSwapchainStatusKHR),
+       VK_NULL_FUNC_ENTRY(vkImportFenceFdKHR,                                                                  importFenceFdKHR),
+       VK_NULL_FUNC_ENTRY(vkGetFenceFdKHR,                                                                             getFenceFdKHR),
+       VK_NULL_FUNC_ENTRY(vkAcquireProfilingLockKHR,                                                   acquireProfilingLockKHR),
+       VK_NULL_FUNC_ENTRY(vkReleaseProfilingLockKHR,                                                   releaseProfilingLockKHR),
+       VK_NULL_FUNC_ENTRY(vkGetImageMemoryRequirements2KHR,                                    getImageMemoryRequirements2),
+       VK_NULL_FUNC_ENTRY(vkGetBufferMemoryRequirements2KHR,                                   getBufferMemoryRequirements2),
+       VK_NULL_FUNC_ENTRY(vkGetImageSparseMemoryRequirements2KHR,                              getImageSparseMemoryRequirements2),
+       VK_NULL_FUNC_ENTRY(vkCreateSamplerYcbcrConversionKHR,                                   createSamplerYcbcrConversion),
+       VK_NULL_FUNC_ENTRY(vkDestroySamplerYcbcrConversionKHR,                                  destroySamplerYcbcrConversion),
+       VK_NULL_FUNC_ENTRY(vkBindBufferMemory2KHR,                                                              bindBufferMemory2),
+       VK_NULL_FUNC_ENTRY(vkBindImageMemory2KHR,                                                               bindImageMemory2),
+       VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupportKHR,                                  getDescriptorSetLayoutSupport),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR,                                                   cmdDrawIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountKHR,                                    cmdDrawIndexedIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValueKHR,                                               getSemaphoreCounterValue),
+       VK_NULL_FUNC_ENTRY(vkWaitSemaphoresKHR,                                                                 waitSemaphores),
+       VK_NULL_FUNC_ENTRY(vkSignalSemaphoreKHR,                                                                signalSemaphore),
+       VK_NULL_FUNC_ENTRY(vkCmdSetFragmentShadingRateKHR,                                              cmdSetFragmentShadingRateKHR),
+       VK_NULL_FUNC_ENTRY(vkWaitForPresentKHR,                                                                 waitForPresentKHR),
+       VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressKHR,                                                 getBufferDeviceAddress),
+       VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddressKHR,                                  getBufferOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddressKHR,                    getDeviceMemoryOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkCreateDeferredOperationKHR,                                                createDeferredOperationKHR),
+       VK_NULL_FUNC_ENTRY(vkDestroyDeferredOperationKHR,                                               destroyDeferredOperationKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDeferredOperationMaxConcurrencyKHR,                             getDeferredOperationMaxConcurrencyKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDeferredOperationResultKHR,                                             getDeferredOperationResultKHR),
+       VK_NULL_FUNC_ENTRY(vkDeferredOperationJoinKHR,                                                  deferredOperationJoinKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPipelineExecutablePropertiesKHR,                                getPipelineExecutablePropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableStatisticsKHR,                                getPipelineExecutableStatisticsKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableInternalRepresentationsKHR,   getPipelineExecutableInternalRepresentationsKHR),
+       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(vkDebugMarkerSetObjectTagEXT,                                                debugMarkerSetObjectTagEXT),
+       VK_NULL_FUNC_ENTRY(vkDebugMarkerSetObjectNameEXT,                                               debugMarkerSetObjectNameEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerBeginEXT,                                                    cmdDebugMarkerBeginEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerEndEXT,                                                              cmdDebugMarkerEndEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerInsertEXT,                                                   cmdDebugMarkerInsertEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdBindTransformFeedbackBuffersEXT,                                cmdBindTransformFeedbackBuffersEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginTransformFeedbackEXT,                                              cmdBeginTransformFeedbackEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdEndTransformFeedbackEXT,                                                cmdEndTransformFeedbackEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginQueryIndexedEXT,                                                   cmdBeginQueryIndexedEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdEndQueryIndexedEXT,                                                             cmdEndQueryIndexedEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectByteCountEXT,                                               cmdDrawIndirectByteCountEXT),
+       VK_NULL_FUNC_ENTRY(vkCreateCuModuleNVX,                                                                 createCuModuleNVX),
+       VK_NULL_FUNC_ENTRY(vkCreateCuFunctionNVX,                                                               createCuFunctionNVX),
+       VK_NULL_FUNC_ENTRY(vkDestroyCuModuleNVX,                                                                destroyCuModuleNVX),
+       VK_NULL_FUNC_ENTRY(vkDestroyCuFunctionNVX,                                                              destroyCuFunctionNVX),
+       VK_NULL_FUNC_ENTRY(vkCmdCuLaunchKernelNVX,                                                              cmdCuLaunchKernelNVX),
+       VK_NULL_FUNC_ENTRY(vkGetImageViewHandleNVX,                                                             getImageViewHandleNVX),
+       VK_NULL_FUNC_ENTRY(vkGetImageViewAddressNVX,                                                    getImageViewAddressNVX),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountAMD,                                                   cmdDrawIndirectCountAMD),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountAMD,                                    cmdDrawIndexedIndirectCountAMD),
+       VK_NULL_FUNC_ENTRY(vkGetShaderInfoAMD,                                                                  getShaderInfoAMD),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginConditionalRenderingEXT,                                   cmdBeginConditionalRenderingEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdEndConditionalRenderingEXT,                                             cmdEndConditionalRenderingEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdSetViewportWScalingNV,                                                  cmdSetViewportWScalingNV),
+       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(vkGetRefreshCycleDurationGOOGLE,                                             getRefreshCycleDurationGOOGLE),
+       VK_NULL_FUNC_ENTRY(vkGetPastPresentationTimingGOOGLE,                                   getPastPresentationTimingGOOGLE),
+       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(vkCreateValidationCacheEXT,                                                  createValidationCacheEXT),
+       VK_NULL_FUNC_ENTRY(vkDestroyValidationCacheEXT,                                                 destroyValidationCacheEXT),
+       VK_NULL_FUNC_ENTRY(vkMergeValidationCachesEXT,                                                  mergeValidationCachesEXT),
+       VK_NULL_FUNC_ENTRY(vkGetValidationCacheDataEXT,                                                 getValidationCacheDataEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdBindShadingRateImageNV,                                                 cmdBindShadingRateImageNV),
+       VK_NULL_FUNC_ENTRY(vkCmdSetViewportShadingRatePaletteNV,                                cmdSetViewportShadingRatePaletteNV),
+       VK_NULL_FUNC_ENTRY(vkCmdSetCoarseSampleOrderNV,                                                 cmdSetCoarseSampleOrderNV),
+       VK_NULL_FUNC_ENTRY(vkCreateAccelerationStructureNV,                                             createAccelerationStructureNV),
+       VK_NULL_FUNC_ENTRY(vkDestroyAccelerationStructureNV,                                    destroyAccelerationStructureNV),
+       VK_NULL_FUNC_ENTRY(vkGetAccelerationStructureMemoryRequirementsNV,              getAccelerationStructureMemoryRequirementsNV),
+       VK_NULL_FUNC_ENTRY(vkBindAccelerationStructureMemoryNV,                                 bindAccelerationStructureMemoryNV),
+       VK_NULL_FUNC_ENTRY(vkCmdBuildAccelerationStructureNV,                                   cmdBuildAccelerationStructureNV),
+       VK_NULL_FUNC_ENTRY(vkCmdCopyAccelerationStructureNV,                                    cmdCopyAccelerationStructureNV),
+       VK_NULL_FUNC_ENTRY(vkCmdTraceRaysNV,                                                                    cmdTraceRaysNV),
+       VK_NULL_FUNC_ENTRY(vkCreateRayTracingPipelinesNV,                                               createRayTracingPipelinesNV),
+       VK_NULL_FUNC_ENTRY(vkGetRayTracingShaderGroupHandlesKHR,                                getRayTracingShaderGroupHandlesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetRayTracingShaderGroupHandlesNV,                                 getRayTracingShaderGroupHandlesNV),
+       VK_NULL_FUNC_ENTRY(vkGetAccelerationStructureHandleNV,                                  getAccelerationStructureHandleNV),
+       VK_NULL_FUNC_ENTRY(vkCmdWriteAccelerationStructuresPropertiesNV,                cmdWriteAccelerationStructuresPropertiesNV),
+       VK_NULL_FUNC_ENTRY(vkCompileDeferredNV,                                                                 compileDeferredNV),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryHostPointerPropertiesEXT,                                 getMemoryHostPointerPropertiesEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdWriteBufferMarkerAMD,                                                   cmdWriteBufferMarkerAMD),
+       VK_NULL_FUNC_ENTRY(vkGetCalibratedTimestampsEXT,                                                getCalibratedTimestampsEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawMeshTasksNV,                                                                cmdDrawMeshTasksNV),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawMeshTasksIndirectNV,                                                cmdDrawMeshTasksIndirectNV),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawMeshTasksIndirectCountNV,                                   cmdDrawMeshTasksIndirectCountNV),
+       VK_NULL_FUNC_ENTRY(vkCmdSetExclusiveScissorNV,                                                  cmdSetExclusiveScissorNV),
+       VK_NULL_FUNC_ENTRY(vkCmdSetCheckpointNV,                                                                cmdSetCheckpointNV),
+       VK_NULL_FUNC_ENTRY(vkGetQueueCheckpointDataNV,                                                  getQueueCheckpointDataNV),
+       VK_NULL_FUNC_ENTRY(vkInitializePerformanceApiINTEL,                                             initializePerformanceApiINTEL),
+       VK_NULL_FUNC_ENTRY(vkUninitializePerformanceApiINTEL,                                   uninitializePerformanceApiINTEL),
+       VK_NULL_FUNC_ENTRY(vkCmdSetPerformanceMarkerINTEL,                                              cmdSetPerformanceMarkerINTEL),
+       VK_NULL_FUNC_ENTRY(vkCmdSetPerformanceStreamMarkerINTEL,                                cmdSetPerformanceStreamMarkerINTEL),
+       VK_NULL_FUNC_ENTRY(vkCmdSetPerformanceOverrideINTEL,                                    cmdSetPerformanceOverrideINTEL),
+       VK_NULL_FUNC_ENTRY(vkAcquirePerformanceConfigurationINTEL,                              acquirePerformanceConfigurationINTEL),
+       VK_NULL_FUNC_ENTRY(vkReleasePerformanceConfigurationINTEL,                              releasePerformanceConfigurationINTEL),
+       VK_NULL_FUNC_ENTRY(vkQueueSetPerformanceConfigurationINTEL,                             queueSetPerformanceConfigurationINTEL),
+       VK_NULL_FUNC_ENTRY(vkGetPerformanceParameterINTEL,                                              getPerformanceParameterINTEL),
+       VK_NULL_FUNC_ENTRY(vkSetLocalDimmingAMD,                                                                setLocalDimmingAMD),
+       VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressEXT,                                                 getBufferDeviceAddressEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdSetLineStippleEXT,                                                              cmdSetLineStippleEXT),
+       VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT,                                                                 resetQueryPool),
+       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(vkGetGeneratedCommandsMemoryRequirementsNV,                  getGeneratedCommandsMemoryRequirementsNV),
+       VK_NULL_FUNC_ENTRY(vkCmdPreprocessGeneratedCommandsNV,                                  cmdPreprocessGeneratedCommandsNV),
+       VK_NULL_FUNC_ENTRY(vkCmdExecuteGeneratedCommandsNV,                                             cmdExecuteGeneratedCommandsNV),
+       VK_NULL_FUNC_ENTRY(vkCmdBindPipelineShaderGroupNV,                                              cmdBindPipelineShaderGroupNV),
+       VK_NULL_FUNC_ENTRY(vkCreateIndirectCommandsLayoutNV,                                    createIndirectCommandsLayoutNV),
+       VK_NULL_FUNC_ENTRY(vkDestroyIndirectCommandsLayoutNV,                                   destroyIndirectCommandsLayoutNV),
+       VK_NULL_FUNC_ENTRY(vkCreatePrivateDataSlotEXT,                                                  createPrivateDataSlotEXT),
+       VK_NULL_FUNC_ENTRY(vkDestroyPrivateDataSlotEXT,                                                 destroyPrivateDataSlotEXT),
+       VK_NULL_FUNC_ENTRY(vkSetPrivateDataEXT,                                                                 setPrivateDataEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPrivateDataEXT,                                                                 getPrivateDataEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdSetFragmentShadingRateEnumNV,                                   cmdSetFragmentShadingRateEnumNV),
+       VK_NULL_FUNC_ENTRY(vkCmdSetVertexInputEXT,                                                              cmdSetVertexInputEXT),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI,             getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI),
+       VK_NULL_FUNC_ENTRY(vkCmdSubpassShadingHUAWEI,                                                   cmdSubpassShadingHUAWEI),
+       VK_NULL_FUNC_ENTRY(vkCmdBindInvocationMaskHUAWEI,                                               cmdBindInvocationMaskHUAWEI),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryRemoteAddressNV,                                                  getMemoryRemoteAddressNV),
+       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),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawMultiEXT,                                                                   cmdDrawMultiEXT),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawMultiIndexedEXT,                                                    cmdDrawMultiIndexedEXT),
+       VK_NULL_FUNC_ENTRY(vkCreateAccelerationStructureKHR,                                    createAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkDestroyAccelerationStructureKHR,                                   destroyAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdBuildAccelerationStructuresKHR,                                 cmdBuildAccelerationStructuresKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdBuildAccelerationStructuresIndirectKHR,                 cmdBuildAccelerationStructuresIndirectKHR),
+       VK_NULL_FUNC_ENTRY(vkBuildAccelerationStructuresKHR,                                    buildAccelerationStructuresKHR),
+       VK_NULL_FUNC_ENTRY(vkCopyAccelerationStructureKHR,                                              copyAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkCopyAccelerationStructureToMemoryKHR,                              copyAccelerationStructureToMemoryKHR),
+       VK_NULL_FUNC_ENTRY(vkCopyMemoryToAccelerationStructureKHR,                              copyMemoryToAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkWriteAccelerationStructuresPropertiesKHR,                  writeAccelerationStructuresPropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdCopyAccelerationStructureKHR,                                   cmdCopyAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdCopyAccelerationStructureToMemoryKHR,                   cmdCopyAccelerationStructureToMemoryKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdCopyMemoryToAccelerationStructureKHR,                   cmdCopyMemoryToAccelerationStructureKHR),
+       VK_NULL_FUNC_ENTRY(vkGetAccelerationStructureDeviceAddressKHR,                  getAccelerationStructureDeviceAddressKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdWriteAccelerationStructuresPropertiesKHR,               cmdWriteAccelerationStructuresPropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceAccelerationStructureCompatibilityKHR,    getDeviceAccelerationStructureCompatibilityKHR),
+       VK_NULL_FUNC_ENTRY(vkGetAccelerationStructureBuildSizesKHR,                             getAccelerationStructureBuildSizesKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdTraceRaysKHR,                                                                   cmdTraceRaysKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateRayTracingPipelinesKHR,                                              createRayTracingPipelinesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetRayTracingCaptureReplayShaderGroupHandlesKHR,   getRayTracingCaptureReplayShaderGroupHandlesKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdTraceRaysIndirectKHR,                                                   cmdTraceRaysIndirectKHR),
+       VK_NULL_FUNC_ENTRY(vkGetRayTracingShaderGroupStackSizeKHR,                              getRayTracingShaderGroupStackSizeKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdSetRayTracingPipelineStackSizeKHR,                              cmdSetRayTracingPipelineStackSizeKHR),
+       VK_NULL_FUNC_ENTRY(vkGetAndroidHardwareBufferPropertiesANDROID,                 getAndroidHardwareBufferPropertiesANDROID),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryAndroidHardwareBufferANDROID,                             getMemoryAndroidHardwareBufferANDROID),
+       VK_NULL_FUNC_ENTRY(vkCreateVideoSessionKHR,                                                             createVideoSessionKHR),
+       VK_NULL_FUNC_ENTRY(vkDestroyVideoSessionKHR,                                                    destroyVideoSessionKHR),
+       VK_NULL_FUNC_ENTRY(vkGetVideoSessionMemoryRequirementsKHR,                              getVideoSessionMemoryRequirementsKHR),
+       VK_NULL_FUNC_ENTRY(vkBindVideoSessionMemoryKHR,                                                 bindVideoSessionMemoryKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateVideoSessionParametersKHR,                                   createVideoSessionParametersKHR),
+       VK_NULL_FUNC_ENTRY(vkUpdateVideoSessionParametersKHR,                                   updateVideoSessionParametersKHR),
+       VK_NULL_FUNC_ENTRY(vkDestroyVideoSessionParametersKHR,                                  destroyVideoSessionParametersKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginVideoCodingKHR,                                                    cmdBeginVideoCodingKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdEndVideoCodingKHR,                                                              cmdEndVideoCodingKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdControlVideoCodingKHR,                                                  cmdControlVideoCodingKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdDecodeVideoKHR,                                                                 cmdDecodeVideoKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdEncodeVideoKHR,                                                                 cmdEncodeVideoKHR),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryZirconHandleFUCHSIA,                                              getMemoryZirconHandleFUCHSIA),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryZirconHandlePropertiesFUCHSIA,                    getMemoryZirconHandlePropertiesFUCHSIA),
+       VK_NULL_FUNC_ENTRY(vkImportSemaphoreZirconHandleFUCHSIA,                                importSemaphoreZirconHandleFUCHSIA),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreZirconHandleFUCHSIA,                                   getSemaphoreZirconHandleFUCHSIA),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandleKHR,                                                   getMemoryWin32HandleKHR),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandlePropertiesKHR,                                 getMemoryWin32HandlePropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkImportSemaphoreWin32HandleKHR,                                             importSemaphoreWin32HandleKHR),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreWin32HandleKHR,                                                getSemaphoreWin32HandleKHR),
+       VK_NULL_FUNC_ENTRY(vkImportFenceWin32HandleKHR,                                                 importFenceWin32HandleKHR),
+       VK_NULL_FUNC_ENTRY(vkGetFenceWin32HandleKHR,                                                    getFenceWin32HandleKHR),
+       VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandleNV,                                                    getMemoryWin32HandleNV),
+       VK_NULL_FUNC_ENTRY(vkAcquireFullScreenExclusiveModeEXT,                                 acquireFullScreenExclusiveModeEXT),
+       VK_NULL_FUNC_ENTRY(vkReleaseFullScreenExclusiveModeEXT,                                 releaseFullScreenExclusiveModeEXT),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceGroupSurfacePresentModes2EXT,                             getDeviceGroupSurfacePresentModes2EXT),
+};
+
diff --git a/external/vulkancts/framework/vulkan/vkObjTypeImpl.inl b/external/vulkancts/framework/vulkan/vkObjTypeImpl.inl
new file mode 100644 (file)
index 0000000..d786d5f
--- /dev/null
@@ -0,0 +1,51 @@
+/* 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<VkDescriptorUpdateTemplate>               (void) { return VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE;              }
+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<VkDeferredOperationKHR>                   (void) { return VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR;                  }
+template<> inline VkObjectType getObjectType<VkDebugReportCallbackEXT>                 (void) { return VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT;               }
+template<> inline VkObjectType getObjectType<VkCuModuleNVX>                                    (void) { return VK_OBJECT_TYPE_CU_MODULE_NVX;                                   }
+template<> inline VkObjectType getObjectType<VkCuFunctionNVX>                                  (void) { return VK_OBJECT_TYPE_CU_FUNCTION_NVX;                                 }
+template<> inline VkObjectType getObjectType<VkDebugUtilsMessengerEXT>                 (void) { return VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT;               }
+template<> inline VkObjectType getObjectType<VkValidationCacheEXT>                             (void) { return VK_OBJECT_TYPE_VALIDATION_CACHE_EXT;                    }
+template<> inline VkObjectType getObjectType<VkAccelerationStructureNV>                (void) { return VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV;               }
+template<> inline VkObjectType getObjectType<VkPerformanceConfigurationINTEL>  (void) { return VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL; }
+template<> inline VkObjectType getObjectType<VkIndirectCommandsLayoutNV>               (void) { return VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV;             }
+template<> inline VkObjectType getObjectType<VkPrivateDataSlotEXT>                             (void) { return VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT;                   }
+template<> inline VkObjectType getObjectType<VkAccelerationStructureKHR>               (void) { return VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR;              }
+template<> inline VkObjectType getObjectType<VkVideoSessionKHR>                                (void) { return VK_OBJECT_TYPE_VIDEO_SESSION_KHR;                               }
+template<> inline VkObjectType getObjectType<VkVideoSessionParametersKHR>              (void) { return VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR;    }
+}
diff --git a/external/vulkancts/framework/vulkan/vkPlatformDriverImpl.inl b/external/vulkancts/framework/vulkan/vkPlatformDriverImpl.inl
new file mode 100644 (file)
index 0000000..07880fe
--- /dev/null
@@ -0,0 +1,32 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+
+VkResult PlatformDriver::createInstance (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) const
+{
+       return m_vk.createInstance(pCreateInfo, pAllocator, pInstance);
+}
+
+PFN_vkVoidFunction PlatformDriver::getInstanceProcAddr (VkInstance instance, const char* pName) const
+{
+       return m_vk.getInstanceProcAddr(instance, pName);
+}
+
+VkResult PlatformDriver::enumerateInstanceExtensionProperties (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const
+{
+       return m_vk.enumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties);
+}
+
+VkResult PlatformDriver::enumerateInstanceLayerProperties (deUint32* pPropertyCount, VkLayerProperties* pProperties) const
+{
+       return m_vk.enumerateInstanceLayerProperties(pPropertyCount, pProperties);
+}
+
+VkResult PlatformDriver::enumerateInstanceVersion (deUint32* pApiVersion) const
+{
+       if (m_vk.enumerateInstanceVersion)
+               return m_vk.enumerateInstanceVersion(pApiVersion);
+
+       *pApiVersion = VK_API_VERSION_1_0;
+       return VK_SUCCESS;
+}
diff --git a/external/vulkancts/framework/vulkan/vkPlatformFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkPlatformFunctionPointers.inl
new file mode 100644 (file)
index 0000000..62c6b14
--- /dev/null
@@ -0,0 +1,8 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+CreateInstanceFunc                                                     createInstance;
+GetInstanceProcAddrFunc                                                getInstanceProcAddr;
+EnumerateInstanceExtensionPropertiesFunc       enumerateInstanceExtensionProperties;
+EnumerateInstanceLayerPropertiesFunc           enumerateInstanceLayerProperties;
+EnumerateInstanceVersionFunc                           enumerateInstanceVersion;
diff --git a/external/vulkancts/framework/vulkan/vkRefUtil.inl b/external/vulkancts/framework/vulkan/vkRefUtil.inl
new file mode 100644 (file)
index 0000000..9daf4e3
--- /dev/null
@@ -0,0 +1,53 @@
+/* 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<VkShaderModule>                           createShaderModule                                      (const DeviceInterface& vk, VkDevice device, const VkShaderModuleCreateInfo* 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<VkDescriptorUpdateTemplate>       createDescriptorUpdateTemplate          (const DeviceInterface& vk, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkRenderPass>                                     createRenderPass2                                       (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSwapchainKHR>                           createSwapchainKHR                                      (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createDisplayPlaneSurfaceKHR            (const InstanceInterface& vk, VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSwapchainKHR>                           createSharedSwapchainsKHR                       (const DeviceInterface& vk, VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkDeferredOperationKHR>           createDeferredOperationKHR                      (const DeviceInterface& vk, VkDevice device, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkDebugReportCallbackEXT>         createDebugReportCallbackEXT            (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkCuModuleNVX>                                    createCuModuleNVX                                       (const DeviceInterface& vk, VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkCuFunctionNVX>                          createCuFunctionNVX                                     (const DeviceInterface& vk, VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkDebugUtilsMessengerEXT>         createDebugUtilsMessengerEXT            (const InstanceInterface& vk, VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkValidationCacheEXT>                     createValidationCacheEXT                        (const DeviceInterface& vk, VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkAccelerationStructureNV>                createAccelerationStructureNV           (const DeviceInterface& vk, VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createHeadlessSurfaceEXT                        (const InstanceInterface& vk, VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkIndirectCommandsLayoutNV>       createIndirectCommandsLayoutNV          (const DeviceInterface& vk, VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkPrivateDataSlotEXT>                     createPrivateDataSlotEXT                        (const DeviceInterface& vk, VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkAccelerationStructureKHR>       createAccelerationStructureKHR          (const DeviceInterface& vk, VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createAndroidSurfaceKHR                         (const InstanceInterface& vk, VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkVideoSessionKHR>                                createVideoSessionKHR                           (const DeviceInterface& vk, VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkVideoSessionParametersKHR>      createVideoSessionParametersKHR         (const DeviceInterface& vk, VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createImagePipeSurfaceFUCHSIA           (const InstanceInterface& vk, VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createStreamDescriptorSurfaceGGP        (const InstanceInterface& vk, VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createIOSSurfaceMVK                                     (const InstanceInterface& vk, VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createMacOSSurfaceMVK                           (const InstanceInterface& vk, VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createMetalSurfaceEXT                           (const InstanceInterface& vk, VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createViSurfaceNN                                       (const InstanceInterface& vk, VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createWaylandSurfaceKHR                         (const InstanceInterface& vk, VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createWin32SurfaceKHR                           (const InstanceInterface& vk, VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createXcbSurfaceKHR                                     (const InstanceInterface& vk, VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkSurfaceKHR>                                     createXlibSurfaceKHR                            (const InstanceInterface& vk, VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
diff --git a/external/vulkancts/framework/vulkan/vkRefUtilImpl.inl b/external/vulkancts/framework/vulkan/vkRefUtilImpl.inl
new file mode 100644 (file)
index 0000000..9237542
--- /dev/null
@@ -0,0 +1,550 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+namespace refdetails
+{
+
+template<>
+void Deleter<VkDeviceMemory>::operator() (VkDeviceMemory obj) const
+{
+       m_deviceIface->freeMemory(m_device, obj, m_allocator);
+}
+
+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<VkQueryPool>::operator() (VkQueryPool obj) const
+{
+       m_deviceIface->destroyQueryPool(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<VkShaderModule>::operator() (VkShaderModule obj) const
+{
+       m_deviceIface->destroyShaderModule(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<VkDescriptorPool>::operator() (VkDescriptorPool obj) const
+{
+       m_deviceIface->destroyDescriptorPool(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<VkCommandPool>::operator() (VkCommandPool obj) const
+{
+       m_deviceIface->destroyCommandPool(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkSamplerYcbcrConversion>::operator() (VkSamplerYcbcrConversion obj) const
+{
+       m_deviceIface->destroySamplerYcbcrConversion(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkDescriptorUpdateTemplate>::operator() (VkDescriptorUpdateTemplate obj) const
+{
+       m_deviceIface->destroyDescriptorUpdateTemplate(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkSwapchainKHR>::operator() (VkSwapchainKHR obj) const
+{
+       m_deviceIface->destroySwapchainKHR(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkDeferredOperationKHR>::operator() (VkDeferredOperationKHR obj) const
+{
+       m_deviceIface->destroyDeferredOperationKHR(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkCuModuleNVX>::operator() (VkCuModuleNVX obj) const
+{
+       m_deviceIface->destroyCuModuleNVX(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkCuFunctionNVX>::operator() (VkCuFunctionNVX obj) const
+{
+       m_deviceIface->destroyCuFunctionNVX(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkValidationCacheEXT>::operator() (VkValidationCacheEXT obj) const
+{
+       m_deviceIface->destroyValidationCacheEXT(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkAccelerationStructureNV>::operator() (VkAccelerationStructureNV obj) const
+{
+       m_deviceIface->destroyAccelerationStructureNV(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkIndirectCommandsLayoutNV>::operator() (VkIndirectCommandsLayoutNV obj) const
+{
+       m_deviceIface->destroyIndirectCommandsLayoutNV(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkPrivateDataSlotEXT>::operator() (VkPrivateDataSlotEXT obj) const
+{
+       m_deviceIface->destroyPrivateDataSlotEXT(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkAccelerationStructureKHR>::operator() (VkAccelerationStructureKHR obj) const
+{
+       m_deviceIface->destroyAccelerationStructureKHR(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkVideoSessionKHR>::operator() (VkVideoSessionKHR obj) const
+{
+       m_deviceIface->destroyVideoSessionKHR(m_device, obj, m_allocator);
+}
+
+template<>
+void Deleter<VkVideoSessionParametersKHR>::operator() (VkVideoSessionParametersKHR obj) const
+{
+       m_deviceIface->destroyVideoSessionParametersKHR(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<VkShaderModule> createShaderModule (const DeviceInterface& vk, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkShaderModule object = 0;
+       VK_CHECK(vk.createShaderModule(device, pCreateInfo, pAllocator, &object));
+       return Move<VkShaderModule>(check<VkShaderModule>(object), Deleter<VkShaderModule>(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<VkDescriptorUpdateTemplate> createDescriptorUpdateTemplate (const DeviceInterface& vk, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkDescriptorUpdateTemplate object = 0;
+       VK_CHECK(vk.createDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, &object));
+       return Move<VkDescriptorUpdateTemplate>(check<VkDescriptorUpdateTemplate>(object), Deleter<VkDescriptorUpdateTemplate>(vk, device, pAllocator));
+}
+
+Move<VkRenderPass> createRenderPass2 (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkRenderPass object = 0;
+       VK_CHECK(vk.createRenderPass2(device, pCreateInfo, pAllocator, &object));
+       return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
+}
+
+Move<VkSwapchainKHR> createSwapchainKHR (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSwapchainKHR object = 0;
+       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<VkDeferredOperationKHR> createDeferredOperationKHR (const DeviceInterface& vk, VkDevice device, const VkAllocationCallbacks* pAllocator)
+{
+       VkDeferredOperationKHR object = 0;
+       VK_CHECK(vk.createDeferredOperationKHR(device, pAllocator, &object));
+       return Move<VkDeferredOperationKHR>(check<VkDeferredOperationKHR>(object), Deleter<VkDeferredOperationKHR>(vk, device, pAllocator));
+}
+
+Move<VkDebugReportCallbackEXT> createDebugReportCallbackEXT (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkDebugReportCallbackEXT object = 0;
+       VK_CHECK(vk.createDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkDebugReportCallbackEXT>(check<VkDebugReportCallbackEXT>(object), Deleter<VkDebugReportCallbackEXT>(vk, instance, pAllocator));
+}
+
+Move<VkCuModuleNVX> createCuModuleNVX (const DeviceInterface& vk, VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkCuModuleNVX object = 0;
+       VK_CHECK(vk.createCuModuleNVX(device, pCreateInfo, pAllocator, &object));
+       return Move<VkCuModuleNVX>(check<VkCuModuleNVX>(object), Deleter<VkCuModuleNVX>(vk, device, pAllocator));
+}
+
+Move<VkCuFunctionNVX> createCuFunctionNVX (const DeviceInterface& vk, VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkCuFunctionNVX object = 0;
+       VK_CHECK(vk.createCuFunctionNVX(device, pCreateInfo, pAllocator, &object));
+       return Move<VkCuFunctionNVX>(check<VkCuFunctionNVX>(object), Deleter<VkCuFunctionNVX>(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<VkValidationCacheEXT> createValidationCacheEXT (const DeviceInterface& vk, VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkValidationCacheEXT object = 0;
+       VK_CHECK(vk.createValidationCacheEXT(device, pCreateInfo, pAllocator, &object));
+       return Move<VkValidationCacheEXT>(check<VkValidationCacheEXT>(object), Deleter<VkValidationCacheEXT>(vk, device, pAllocator));
+}
+
+Move<VkAccelerationStructureNV> createAccelerationStructureNV (const DeviceInterface& vk, VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkAccelerationStructureNV object = 0;
+       VK_CHECK(vk.createAccelerationStructureNV(device, pCreateInfo, pAllocator, &object));
+       return Move<VkAccelerationStructureNV>(check<VkAccelerationStructureNV>(object), Deleter<VkAccelerationStructureNV>(vk, device, 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));
+}
+
+Move<VkIndirectCommandsLayoutNV> createIndirectCommandsLayoutNV (const DeviceInterface& vk, VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkIndirectCommandsLayoutNV object = 0;
+       VK_CHECK(vk.createIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, &object));
+       return Move<VkIndirectCommandsLayoutNV>(check<VkIndirectCommandsLayoutNV>(object), Deleter<VkIndirectCommandsLayoutNV>(vk, device, pAllocator));
+}
+
+Move<VkPrivateDataSlotEXT> createPrivateDataSlotEXT (const DeviceInterface& vk, VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkPrivateDataSlotEXT object = 0;
+       VK_CHECK(vk.createPrivateDataSlotEXT(device, pCreateInfo, pAllocator, &object));
+       return Move<VkPrivateDataSlotEXT>(check<VkPrivateDataSlotEXT>(object), Deleter<VkPrivateDataSlotEXT>(vk, device, pAllocator));
+}
+
+Move<VkAccelerationStructureKHR> createAccelerationStructureKHR (const DeviceInterface& vk, VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkAccelerationStructureKHR object = 0;
+       VK_CHECK(vk.createAccelerationStructureKHR(device, pCreateInfo, pAllocator, &object));
+       return Move<VkAccelerationStructureKHR>(check<VkAccelerationStructureKHR>(object), Deleter<VkAccelerationStructureKHR>(vk, device, pAllocator));
+}
+
+Move<VkSurfaceKHR> createAndroidSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkVideoSessionKHR> createVideoSessionKHR (const DeviceInterface& vk, VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkVideoSessionKHR object = 0;
+       VK_CHECK(vk.createVideoSessionKHR(device, pCreateInfo, pAllocator, &object));
+       return Move<VkVideoSessionKHR>(check<VkVideoSessionKHR>(object), Deleter<VkVideoSessionKHR>(vk, device, pAllocator));
+}
+
+Move<VkVideoSessionParametersKHR> createVideoSessionParametersKHR (const DeviceInterface& vk, VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkVideoSessionParametersKHR object = 0;
+       VK_CHECK(vk.createVideoSessionParametersKHR(device, pCreateInfo, pAllocator, &object));
+       return Move<VkVideoSessionParametersKHR>(check<VkVideoSessionParametersKHR>(object), Deleter<VkVideoSessionParametersKHR>(vk, device, pAllocator));
+}
+
+Move<VkSurfaceKHR> createImagePipeSurfaceFUCHSIA (const InstanceInterface& vk, VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createStreamDescriptorSurfaceGGP (const InstanceInterface& vk, VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createIOSSurfaceMVK (const InstanceInterface& vk, VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createIOSSurfaceMVK(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createMacOSSurfaceMVK (const InstanceInterface& vk, VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createMetalSurfaceEXT (const InstanceInterface& vk, VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createMetalSurfaceEXT(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createViSurfaceNN (const InstanceInterface& vk, VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createViSurfaceNN(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createWaylandSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createWin32SurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createWin32SurfaceKHR(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createXcbSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createXcbSurfaceKHR(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
+Move<VkSurfaceKHR> createXlibSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkSurfaceKHR object = 0;
+       VK_CHECK(vk.createXlibSurfaceKHR(instance, pCreateInfo, pAllocator, &object));
+       return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
+}
+
diff --git a/external/vulkancts/framework/vulkan/vkStrUtil.inl b/external/vulkancts/framework/vulkan/vkStrUtil.inl
new file mode 100644 (file)
index 0000000..6d7d657
--- /dev/null
@@ -0,0 +1,1235 @@
+/* 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*    getPipelineCacheHeaderVersionName                                               (VkPipelineCacheHeaderVersion value);
+const char*    getVendorIdName                                                                                 (VkVendorId 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);
+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*    getDescriptorUpdateTemplateTypeName                                             (VkDescriptorUpdateTemplateType value);
+const char*    getDriverIdName                                                                                 (VkDriverId value);
+const char*    getShaderFloatControlsIndependenceName                                  (VkShaderFloatControlsIndependence value);
+const char*    getSamplerReductionModeName                                                             (VkSamplerReductionMode value);
+const char*    getSemaphoreTypeName                                                                    (VkSemaphoreType value);
+const char*    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*    getPipelineExecutableStatisticFormatKHRName                             (VkPipelineExecutableStatisticFormatKHR value);
+const char*    getDebugReportObjectTypeEXTName                                                 (VkDebugReportObjectTypeEXT value);
+const char*    getRasterizationOrderAMDName                                                    (VkRasterizationOrderAMD value);
+const char*    getShaderInfoTypeAMDName                                                                (VkShaderInfoTypeAMD value);
+const char*    getValidationCheckEXTName                                                               (VkValidationCheckEXT value);
+const char*    getDisplayPowerStateEXTName                                                             (VkDisplayPowerStateEXT value);
+const char*    getDeviceEventTypeEXTName                                                               (VkDeviceEventTypeEXT value);
+const char*    getDisplayEventTypeEXTName                                                              (VkDisplayEventTypeEXT value);
+const char*    getViewportCoordinateSwizzleNVName                                              (VkViewportCoordinateSwizzleNV value);
+const char*    getDiscardRectangleModeEXTName                                                  (VkDiscardRectangleModeEXT value);
+const char*    getConservativeRasterizationModeEXTName                                 (VkConservativeRasterizationModeEXT value);
+const char*    getBlendOverlapEXTName                                                                  (VkBlendOverlapEXT value);
+const char*    getCoverageModulationModeNVName                                                 (VkCoverageModulationModeNV value);
+const char*    getValidationCacheHeaderVersionEXTName                                  (VkValidationCacheHeaderVersionEXT value);
+const char*    getShadingRatePaletteEntryNVName                                                (VkShadingRatePaletteEntryNV value);
+const char*    getCoarseSampleOrderTypeNVName                                                  (VkCoarseSampleOrderTypeNV value);
+const char*    getRayTracingShaderGroupTypeKHRName                                             (VkRayTracingShaderGroupTypeKHR value);
+const char*    getGeometryTypeKHRName                                                                  (VkGeometryTypeKHR value);
+const char*    getAccelerationStructureTypeKHRName                                             (VkAccelerationStructureTypeKHR value);
+const char*    getCopyAccelerationStructureModeKHRName                                 (VkCopyAccelerationStructureModeKHR value);
+const char*    getAccelerationStructureMemoryRequirementsTypeNVName    (VkAccelerationStructureMemoryRequirementsTypeNV value);
+const char*    getQueueGlobalPriorityEXTName                                                   (VkQueueGlobalPriorityEXT value);
+const char*    getTimeDomainEXTName                                                                    (VkTimeDomainEXT value);
+const char*    getMemoryOverallocationBehaviorAMDName                                  (VkMemoryOverallocationBehaviorAMD value);
+const char*    getPerformanceConfigurationTypeINTELName                                (VkPerformanceConfigurationTypeINTEL value);
+const char*    getQueryPoolSamplingModeINTELName                                               (VkQueryPoolSamplingModeINTEL value);
+const char*    getPerformanceOverrideTypeINTELName                                             (VkPerformanceOverrideTypeINTEL value);
+const char*    getPerformanceParameterTypeINTELName                                    (VkPerformanceParameterTypeINTEL value);
+const char*    getPerformanceValueTypeINTELName                                                (VkPerformanceValueTypeINTEL value);
+const char*    getValidationFeatureEnableEXTName                                               (VkValidationFeatureEnableEXT value);
+const char*    getValidationFeatureDisableEXTName                                              (VkValidationFeatureDisableEXT value);
+const char*    getComponentTypeNVName                                                                  (VkComponentTypeNV value);
+const char*    getScopeNVName                                                                                  (VkScopeNV value);
+const char*    getCoverageReductionModeNVName                                                  (VkCoverageReductionModeNV value);
+const char*    getProvokingVertexModeEXTName                                                   (VkProvokingVertexModeEXT value);
+const char*    getLineRasterizationModeEXTName                                                 (VkLineRasterizationModeEXT value);
+const char*    getIndirectCommandsTokenTypeNVName                                              (VkIndirectCommandsTokenTypeNV value);
+const char*    getDeviceMemoryReportEventTypeEXTName                                   (VkDeviceMemoryReportEventTypeEXT value);
+const char*    getFragmentShadingRateTypeNVName                                                (VkFragmentShadingRateTypeNV value);
+const char*    getFragmentShadingRateNVName                                                    (VkFragmentShadingRateNV value);
+const char*    getAccelerationStructureMotionInstanceTypeNVName                (VkAccelerationStructureMotionInstanceTypeNV value);
+const char*    getBuildAccelerationStructureModeKHRName                                (VkBuildAccelerationStructureModeKHR value);
+const char*    getAccelerationStructureBuildTypeKHRName                                (VkAccelerationStructureBuildTypeKHR value);
+const char*    getAccelerationStructureCompatibilityKHRName                    (VkAccelerationStructureCompatibilityKHR value);
+const char*    getShaderGroupShaderKHRName                                                             (VkShaderGroupShaderKHR value);
+const char*    getQueryResultStatusKHRName                                                             (VkQueryResultStatusKHR value);
+const char*    getdVideoH264ChromaFormatIdcName                                                (StdVideoH264ChromaFormatIdc value);
+const char*    getdVideoH264ProfileIdcName                                                             (StdVideoH264ProfileIdc value);
+const char*    getdVideoH264LevelName                                                                  (StdVideoH264Level value);
+const char*    getdVideoH264PocTypeName                                                                (StdVideoH264PocType value);
+const char*    getdVideoH264AspectRatioIdcName                                                 (StdVideoH264AspectRatioIdc value);
+const char*    getdVideoH264WeightedBiPredIdcName                                              (StdVideoH264WeightedBiPredIdc value);
+const char*    getdVideoH264ModificationOfPicNumsIdcName                               (StdVideoH264ModificationOfPicNumsIdc value);
+const char*    getdVideoH264MemMgmtControlOpName                                               (StdVideoH264MemMgmtControlOp value);
+const char*    getdVideoH264CabacInitIdcName                                                   (StdVideoH264CabacInitIdc value);
+const char*    getdVideoH264DisableDeblockingFilterIdcName                             (StdVideoH264DisableDeblockingFilterIdc value);
+const char*    getdVideoH264PictureTypeName                                                    (StdVideoH264PictureType value);
+const char*    getdVideoH264SliceTypeName                                                              (StdVideoH264SliceType value);
+const char*    getdVideoH264NonVclNaluTypeName                                                 (StdVideoH264NonVclNaluType value);
+const char*    getdVideoH265ChromaFormatIdcName                                                (StdVideoH265ChromaFormatIdc value);
+const char*    getdVideoH265ProfileIdcName                                                             (StdVideoH265ProfileIdc value);
+const char*    getdVideoH265LevelName                                                                  (StdVideoH265Level value);
+const char*    getFullScreenExclusiveEXTName                                                   (VkFullScreenExclusiveEXT 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<VkPipelineCacheHeaderVersion>                                         getPipelineCacheHeaderVersionStr                                        (VkPipelineCacheHeaderVersion value)                                    { return tcu::Format::Enum<VkPipelineCacheHeaderVersion>(getPipelineCacheHeaderVersionName, value);                                                                                     }
+inline tcu::Format::Enum<VkVendorId>                                                                           getVendorIdStr                                                                          (VkVendorId value)                                                                              { return tcu::Format::Enum<VkVendorId>(getVendorIdName, 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 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<VkDescriptorUpdateTemplateType>                                       getDescriptorUpdateTemplateTypeStr                                      (VkDescriptorUpdateTemplateType value)                                  { return tcu::Format::Enum<VkDescriptorUpdateTemplateType>(getDescriptorUpdateTemplateTypeName, value);                                                                         }
+inline tcu::Format::Enum<VkDriverId>                                                                           getDriverIdStr                                                                          (VkDriverId value)                                                                              { return tcu::Format::Enum<VkDriverId>(getDriverIdName, value);                                                                                                                                                         }
+inline tcu::Format::Enum<VkShaderFloatControlsIndependence>                                    getShaderFloatControlsIndependenceStr                           (VkShaderFloatControlsIndependence value)                               { return tcu::Format::Enum<VkShaderFloatControlsIndependence>(getShaderFloatControlsIndependenceName, value);                                                           }
+inline tcu::Format::Enum<VkSamplerReductionMode>                                                       getSamplerReductionModeStr                                                      (VkSamplerReductionMode value)                                                  { return tcu::Format::Enum<VkSamplerReductionMode>(getSamplerReductionModeName, value);                                                                                                         }
+inline tcu::Format::Enum<VkSemaphoreType>                                                                      getSemaphoreTypeStr                                                                     (VkSemaphoreType value)                                                                 { return tcu::Format::Enum<VkSemaphoreType>(getSemaphoreTypeName, value);                                                                                                                                       }
+inline tcu::Format::Enum<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<VkPipelineExecutableStatisticFormatKHR>                       getPipelineExecutableStatisticFormatKHRStr                      (VkPipelineExecutableStatisticFormatKHR value)                  { return tcu::Format::Enum<VkPipelineExecutableStatisticFormatKHR>(getPipelineExecutableStatisticFormatKHRName, value);                                         }
+inline tcu::Format::Enum<VkDebugReportObjectTypeEXT>                                           getDebugReportObjectTypeEXTStr                                          (VkDebugReportObjectTypeEXT value)                                              { return tcu::Format::Enum<VkDebugReportObjectTypeEXT>(getDebugReportObjectTypeEXTName, value);                                                                                         }
+inline tcu::Format::Enum<VkRasterizationOrderAMD>                                                      getRasterizationOrderAMDStr                                                     (VkRasterizationOrderAMD value)                                                 { return tcu::Format::Enum<VkRasterizationOrderAMD>(getRasterizationOrderAMDName, value);                                                                                                       }
+inline tcu::Format::Enum<VkShaderInfoTypeAMD>                                                          getShaderInfoTypeAMDStr                                                         (VkShaderInfoTypeAMD value)                                                             { return tcu::Format::Enum<VkShaderInfoTypeAMD>(getShaderInfoTypeAMDName, value);                                                                                                                       }
+inline tcu::Format::Enum<VkValidationCheckEXT>                                                         getValidationCheckEXTStr                                                        (VkValidationCheckEXT value)                                                    { return tcu::Format::Enum<VkValidationCheckEXT>(getValidationCheckEXTName, 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<VkViewportCoordinateSwizzleNV>                                                getViewportCoordinateSwizzleNVStr                                       (VkViewportCoordinateSwizzleNV value)                                   { return tcu::Format::Enum<VkViewportCoordinateSwizzleNV>(getViewportCoordinateSwizzleNVName, value);                                                                           }
+inline tcu::Format::Enum<VkDiscardRectangleModeEXT>                                                    getDiscardRectangleModeEXTStr                                           (VkDiscardRectangleModeEXT value)                                               { return tcu::Format::Enum<VkDiscardRectangleModeEXT>(getDiscardRectangleModeEXTName, value);                                                                                           }
+inline tcu::Format::Enum<VkConservativeRasterizationModeEXT>                           getConservativeRasterizationModeEXTStr                          (VkConservativeRasterizationModeEXT value)                              { return tcu::Format::Enum<VkConservativeRasterizationModeEXT>(getConservativeRasterizationModeEXTName, value);                                                         }
+inline tcu::Format::Enum<VkBlendOverlapEXT>                                                                    getBlendOverlapEXTStr                                                           (VkBlendOverlapEXT value)                                                               { return tcu::Format::Enum<VkBlendOverlapEXT>(getBlendOverlapEXTName, value);                                                                                                                           }
+inline tcu::Format::Enum<VkCoverageModulationModeNV>                                           getCoverageModulationModeNVStr                                          (VkCoverageModulationModeNV value)                                              { return tcu::Format::Enum<VkCoverageModulationModeNV>(getCoverageModulationModeNVName, value);                                                                                         }
+inline tcu::Format::Enum<VkValidationCacheHeaderVersionEXT>                                    getValidationCacheHeaderVersionEXTStr                           (VkValidationCacheHeaderVersionEXT value)                               { return tcu::Format::Enum<VkValidationCacheHeaderVersionEXT>(getValidationCacheHeaderVersionEXTName, value);                                                           }
+inline tcu::Format::Enum<VkShadingRatePaletteEntryNV>                                          getShadingRatePaletteEntryNVStr                                         (VkShadingRatePaletteEntryNV value)                                             { return tcu::Format::Enum<VkShadingRatePaletteEntryNV>(getShadingRatePaletteEntryNVName, value);                                                                                       }
+inline tcu::Format::Enum<VkCoarseSampleOrderTypeNV>                                                    getCoarseSampleOrderTypeNVStr                                           (VkCoarseSampleOrderTypeNV value)                                               { return tcu::Format::Enum<VkCoarseSampleOrderTypeNV>(getCoarseSampleOrderTypeNVName, value);                                                                                           }
+inline tcu::Format::Enum<VkRayTracingShaderGroupTypeKHR>                                       getRayTracingShaderGroupTypeKHRStr                                      (VkRayTracingShaderGroupTypeKHR value)                                  { return tcu::Format::Enum<VkRayTracingShaderGroupTypeKHR>(getRayTracingShaderGroupTypeKHRName, value);                                                                         }
+inline tcu::Format::Enum<VkGeometryTypeKHR>                                                                    getGeometryTypeKHRStr                                                           (VkGeometryTypeKHR value)                                                               { return tcu::Format::Enum<VkGeometryTypeKHR>(getGeometryTypeKHRName, value);                                                                                                                           }
+inline tcu::Format::Enum<VkAccelerationStructureTypeKHR>                                       getAccelerationStructureTypeKHRStr                                      (VkAccelerationStructureTypeKHR value)                                  { return tcu::Format::Enum<VkAccelerationStructureTypeKHR>(getAccelerationStructureTypeKHRName, value);                                                                         }
+inline tcu::Format::Enum<VkCopyAccelerationStructureModeKHR>                           getCopyAccelerationStructureModeKHRStr                          (VkCopyAccelerationStructureModeKHR value)                              { return tcu::Format::Enum<VkCopyAccelerationStructureModeKHR>(getCopyAccelerationStructureModeKHRName, value);                                                         }
+inline tcu::Format::Enum<VkAccelerationStructureMemoryRequirementsTypeNV>      getAccelerationStructureMemoryRequirementsTypeNVStr     (VkAccelerationStructureMemoryRequirementsTypeNV value) { return tcu::Format::Enum<VkAccelerationStructureMemoryRequirementsTypeNV>(getAccelerationStructureMemoryRequirementsTypeNVName, 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<VkMemoryOverallocationBehaviorAMD>                                    getMemoryOverallocationBehaviorAMDStr                           (VkMemoryOverallocationBehaviorAMD value)                               { return tcu::Format::Enum<VkMemoryOverallocationBehaviorAMD>(getMemoryOverallocationBehaviorAMDName, value);                                                           }
+inline tcu::Format::Enum<VkPerformanceConfigurationTypeINTEL>                          getPerformanceConfigurationTypeINTELStr                         (VkPerformanceConfigurationTypeINTEL value)                             { return tcu::Format::Enum<VkPerformanceConfigurationTypeINTEL>(getPerformanceConfigurationTypeINTELName, value);                                                       }
+inline tcu::Format::Enum<VkQueryPoolSamplingModeINTEL>                                         getQueryPoolSamplingModeINTELStr                                        (VkQueryPoolSamplingModeINTEL value)                                    { return tcu::Format::Enum<VkQueryPoolSamplingModeINTEL>(getQueryPoolSamplingModeINTELName, value);                                                                                     }
+inline tcu::Format::Enum<VkPerformanceOverrideTypeINTEL>                                       getPerformanceOverrideTypeINTELStr                                      (VkPerformanceOverrideTypeINTEL value)                                  { return tcu::Format::Enum<VkPerformanceOverrideTypeINTEL>(getPerformanceOverrideTypeINTELName, value);                                                                         }
+inline tcu::Format::Enum<VkPerformanceParameterTypeINTEL>                                      getPerformanceParameterTypeINTELStr                                     (VkPerformanceParameterTypeINTEL value)                                 { return tcu::Format::Enum<VkPerformanceParameterTypeINTEL>(getPerformanceParameterTypeINTELName, value);                                                                       }
+inline tcu::Format::Enum<VkPerformanceValueTypeINTEL>                                          getPerformanceValueTypeINTELStr                                         (VkPerformanceValueTypeINTEL value)                                             { return tcu::Format::Enum<VkPerformanceValueTypeINTEL>(getPerformanceValueTypeINTELName, 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<VkComponentTypeNV>                                                                    getComponentTypeNVStr                                                           (VkComponentTypeNV value)                                                               { return tcu::Format::Enum<VkComponentTypeNV>(getComponentTypeNVName, value);                                                                                                                           }
+inline tcu::Format::Enum<VkScopeNV>                                                                                    getScopeNVStr                                                                           (VkScopeNV value)                                                                               { return tcu::Format::Enum<VkScopeNV>(getScopeNVName, value);                                                                                                                                                           }
+inline tcu::Format::Enum<VkCoverageReductionModeNV>                                                    getCoverageReductionModeNVStr                                           (VkCoverageReductionModeNV value)                                               { return tcu::Format::Enum<VkCoverageReductionModeNV>(getCoverageReductionModeNVName, value);                                                                                           }
+inline tcu::Format::Enum<VkProvokingVertexModeEXT>                                                     getProvokingVertexModeEXTStr                                            (VkProvokingVertexModeEXT value)                                                { return tcu::Format::Enum<VkProvokingVertexModeEXT>(getProvokingVertexModeEXTName, value);                                                                                                     }
+inline tcu::Format::Enum<VkLineRasterizationModeEXT>                                           getLineRasterizationModeEXTStr                                          (VkLineRasterizationModeEXT value)                                              { return tcu::Format::Enum<VkLineRasterizationModeEXT>(getLineRasterizationModeEXTName, value);                                                                                         }
+inline tcu::Format::Enum<VkIndirectCommandsTokenTypeNV>                                                getIndirectCommandsTokenTypeNVStr                                       (VkIndirectCommandsTokenTypeNV value)                                   { return tcu::Format::Enum<VkIndirectCommandsTokenTypeNV>(getIndirectCommandsTokenTypeNVName, value);                                                                           }
+inline tcu::Format::Enum<VkDeviceMemoryReportEventTypeEXT>                                     getDeviceMemoryReportEventTypeEXTStr                            (VkDeviceMemoryReportEventTypeEXT value)                                { return tcu::Format::Enum<VkDeviceMemoryReportEventTypeEXT>(getDeviceMemoryReportEventTypeEXTName, value);                                                                     }
+inline tcu::Format::Enum<VkFragmentShadingRateTypeNV>                                          getFragmentShadingRateTypeNVStr                                         (VkFragmentShadingRateTypeNV value)                                             { return tcu::Format::Enum<VkFragmentShadingRateTypeNV>(getFragmentShadingRateTypeNVName, value);                                                                                       }
+inline tcu::Format::Enum<VkFragmentShadingRateNV>                                                      getFragmentShadingRateNVStr                                                     (VkFragmentShadingRateNV value)                                                 { return tcu::Format::Enum<VkFragmentShadingRateNV>(getFragmentShadingRateNVName, value);                                                                                                       }
+inline tcu::Format::Enum<VkAccelerationStructureMotionInstanceTypeNV>          getAccelerationStructureMotionInstanceTypeNVStr         (VkAccelerationStructureMotionInstanceTypeNV value)             { return tcu::Format::Enum<VkAccelerationStructureMotionInstanceTypeNV>(getAccelerationStructureMotionInstanceTypeNVName, value);                       }
+inline tcu::Format::Enum<VkBuildAccelerationStructureModeKHR>                          getBuildAccelerationStructureModeKHRStr                         (VkBuildAccelerationStructureModeKHR value)                             { return tcu::Format::Enum<VkBuildAccelerationStructureModeKHR>(getBuildAccelerationStructureModeKHRName, value);                                                       }
+inline tcu::Format::Enum<VkAccelerationStructureBuildTypeKHR>                          getAccelerationStructureBuildTypeKHRStr                         (VkAccelerationStructureBuildTypeKHR value)                             { return tcu::Format::Enum<VkAccelerationStructureBuildTypeKHR>(getAccelerationStructureBuildTypeKHRName, value);                                                       }
+inline tcu::Format::Enum<VkAccelerationStructureCompatibilityKHR>                      getAccelerationStructureCompatibilityKHRStr                     (VkAccelerationStructureCompatibilityKHR value)                 { return tcu::Format::Enum<VkAccelerationStructureCompatibilityKHR>(getAccelerationStructureCompatibilityKHRName, value);                                       }
+inline tcu::Format::Enum<VkShaderGroupShaderKHR>                                                       getShaderGroupShaderKHRStr                                                      (VkShaderGroupShaderKHR value)                                                  { return tcu::Format::Enum<VkShaderGroupShaderKHR>(getShaderGroupShaderKHRName, value);                                                                                                         }
+inline tcu::Format::Enum<VkQueryResultStatusKHR>                                                       getQueryResultStatusKHRStr                                                      (VkQueryResultStatusKHR value)                                                  { return tcu::Format::Enum<VkQueryResultStatusKHR>(getQueryResultStatusKHRName, value);                                                                                                         }
+inline tcu::Format::Enum<StdVideoH264ChromaFormatIdc>                                          getdVideoH264ChromaFormatIdcStr                                         (StdVideoH264ChromaFormatIdc value)                                             { return tcu::Format::Enum<StdVideoH264ChromaFormatIdc>(getdVideoH264ChromaFormatIdcName, value);                                                                                       }
+inline tcu::Format::Enum<StdVideoH264ProfileIdc>                                                       getdVideoH264ProfileIdcStr                                                      (StdVideoH264ProfileIdc value)                                                  { return tcu::Format::Enum<StdVideoH264ProfileIdc>(getdVideoH264ProfileIdcName, value);                                                                                                         }
+inline tcu::Format::Enum<StdVideoH264Level>                                                                    getdVideoH264LevelStr                                                           (StdVideoH264Level value)                                                               { return tcu::Format::Enum<StdVideoH264Level>(getdVideoH264LevelName, value);                                                                                                                           }
+inline tcu::Format::Enum<StdVideoH264PocType>                                                          getdVideoH264PocTypeStr                                                         (StdVideoH264PocType value)                                                             { return tcu::Format::Enum<StdVideoH264PocType>(getdVideoH264PocTypeName, value);                                                                                                                       }
+inline tcu::Format::Enum<StdVideoH264AspectRatioIdc>                                           getdVideoH264AspectRatioIdcStr                                          (StdVideoH264AspectRatioIdc value)                                              { return tcu::Format::Enum<StdVideoH264AspectRatioIdc>(getdVideoH264AspectRatioIdcName, value);                                                                                         }
+inline tcu::Format::Enum<StdVideoH264WeightedBiPredIdc>                                                getdVideoH264WeightedBiPredIdcStr                                       (StdVideoH264WeightedBiPredIdc value)                                   { return tcu::Format::Enum<StdVideoH264WeightedBiPredIdc>(getdVideoH264WeightedBiPredIdcName, value);                                                                           }
+inline tcu::Format::Enum<StdVideoH264ModificationOfPicNumsIdc>                         getdVideoH264ModificationOfPicNumsIdcStr                        (StdVideoH264ModificationOfPicNumsIdc value)                    { return tcu::Format::Enum<StdVideoH264ModificationOfPicNumsIdc>(getdVideoH264ModificationOfPicNumsIdcName, value);                                                     }
+inline tcu::Format::Enum<StdVideoH264MemMgmtControlOp>                                         getdVideoH264MemMgmtControlOpStr                                        (StdVideoH264MemMgmtControlOp value)                                    { return tcu::Format::Enum<StdVideoH264MemMgmtControlOp>(getdVideoH264MemMgmtControlOpName, value);                                                                                     }
+inline tcu::Format::Enum<StdVideoH264CabacInitIdc>                                                     getdVideoH264CabacInitIdcStr                                            (StdVideoH264CabacInitIdc value)                                                { return tcu::Format::Enum<StdVideoH264CabacInitIdc>(getdVideoH264CabacInitIdcName, value);                                                                                                     }
+inline tcu::Format::Enum<StdVideoH264DisableDeblockingFilterIdc>                       getdVideoH264DisableDeblockingFilterIdcStr                      (StdVideoH264DisableDeblockingFilterIdc value)                  { return tcu::Format::Enum<StdVideoH264DisableDeblockingFilterIdc>(getdVideoH264DisableDeblockingFilterIdcName, value);                                         }
+inline tcu::Format::Enum<StdVideoH264PictureType>                                                      getdVideoH264PictureTypeStr                                                     (StdVideoH264PictureType value)                                                 { return tcu::Format::Enum<StdVideoH264PictureType>(getdVideoH264PictureTypeName, value);                                                                                                       }
+inline tcu::Format::Enum<StdVideoH264SliceType>                                                                getdVideoH264SliceTypeStr                                                       (StdVideoH264SliceType value)                                                   { return tcu::Format::Enum<StdVideoH264SliceType>(getdVideoH264SliceTypeName, value);                                                                                                           }
+inline tcu::Format::Enum<StdVideoH264NonVclNaluType>                                           getdVideoH264NonVclNaluTypeStr                                          (StdVideoH264NonVclNaluType value)                                              { return tcu::Format::Enum<StdVideoH264NonVclNaluType>(getdVideoH264NonVclNaluTypeName, value);                                                                                         }
+inline tcu::Format::Enum<StdVideoH265ChromaFormatIdc>                                          getdVideoH265ChromaFormatIdcStr                                         (StdVideoH265ChromaFormatIdc value)                                             { return tcu::Format::Enum<StdVideoH265ChromaFormatIdc>(getdVideoH265ChromaFormatIdcName, value);                                                                                       }
+inline tcu::Format::Enum<StdVideoH265ProfileIdc>                                                       getdVideoH265ProfileIdcStr                                                      (StdVideoH265ProfileIdc value)                                                  { return tcu::Format::Enum<StdVideoH265ProfileIdc>(getdVideoH265ProfileIdcName, value);                                                                                                         }
+inline tcu::Format::Enum<StdVideoH265Level>                                                                    getdVideoH265LevelStr                                                           (StdVideoH265Level value)                                                               { return tcu::Format::Enum<StdVideoH265Level>(getdVideoH265LevelName, value);                                                                                                                           }
+inline tcu::Format::Enum<VkFullScreenExclusiveEXT>                                                     getFullScreenExclusiveEXTStr                                            (VkFullScreenExclusiveEXT value)                                                { return tcu::Format::Enum<VkFullScreenExclusiveEXT>(getFullScreenExclusiveEXTName, 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, VkPipelineCacheHeaderVersion value)                                           { return s << getPipelineCacheHeaderVersionStr(value);                                          }
+inline std::ostream&   operator<<      (std::ostream& s, VkVendorId value)                                                                                     { return s << getVendorIdStr(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);                                                                     }
+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, VkDescriptorUpdateTemplateType value)                                         { return s << getDescriptorUpdateTemplateTypeStr(value);                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkDriverId value)                                                                                     { return s << getDriverIdStr(value);                                                                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkShaderFloatControlsIndependence value)                                      { return s << getShaderFloatControlsIndependenceStr(value);                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkSamplerReductionMode value)                                                         { return s << getSamplerReductionModeStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkSemaphoreType value)                                                                        { return s << getSemaphoreTypeStr(value);                                                                       }
+inline std::ostream&   operator<<      (std::ostream& s, 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, VkPipelineExecutableStatisticFormatKHR value)                         { return s << getPipelineExecutableStatisticFormatKHRStr(value);                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkDebugReportObjectTypeEXT value)                                                     { return s << getDebugReportObjectTypeEXTStr(value);                                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkRasterizationOrderAMD value)                                                        { return s << getRasterizationOrderAMDStr(value);                                                       }
+inline std::ostream&   operator<<      (std::ostream& s, VkShaderInfoTypeAMD value)                                                            { return s << getShaderInfoTypeAMDStr(value);                                                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkValidationCheckEXT value)                                                           { return s << getValidationCheckEXTStr(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, VkViewportCoordinateSwizzleNV value)                                          { return s << getViewportCoordinateSwizzleNVStr(value);                                         }
+inline std::ostream&   operator<<      (std::ostream& s, VkDiscardRectangleModeEXT value)                                                      { return s << getDiscardRectangleModeEXTStr(value);                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkConservativeRasterizationModeEXT value)                                     { return s << getConservativeRasterizationModeEXTStr(value);                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkBlendOverlapEXT value)                                                                      { return s << getBlendOverlapEXTStr(value);                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkCoverageModulationModeNV value)                                                     { return s << getCoverageModulationModeNVStr(value);                                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkValidationCacheHeaderVersionEXT value)                                      { return s << getValidationCacheHeaderVersionEXTStr(value);                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkShadingRatePaletteEntryNV value)                                            { return s << getShadingRatePaletteEntryNVStr(value);                                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkCoarseSampleOrderTypeNV value)                                                      { return s << getCoarseSampleOrderTypeNVStr(value);                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkRayTracingShaderGroupTypeKHR value)                                         { return s << getRayTracingShaderGroupTypeKHRStr(value);                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkGeometryTypeKHR value)                                                                      { return s << getGeometryTypeKHRStr(value);                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkAccelerationStructureTypeKHR value)                                         { return s << getAccelerationStructureTypeKHRStr(value);                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkCopyAccelerationStructureModeKHR value)                                     { return s << getCopyAccelerationStructureModeKHRStr(value);                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkAccelerationStructureMemoryRequirementsTypeNV value)        { return s << getAccelerationStructureMemoryRequirementsTypeNVStr(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, VkMemoryOverallocationBehaviorAMD value)                                      { return s << getMemoryOverallocationBehaviorAMDStr(value);                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceConfigurationTypeINTEL value)                            { return s << getPerformanceConfigurationTypeINTELStr(value);                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkQueryPoolSamplingModeINTEL value)                                           { return s << getQueryPoolSamplingModeINTELStr(value);                                          }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceOverrideTypeINTEL value)                                         { return s << getPerformanceOverrideTypeINTELStr(value);                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceParameterTypeINTEL value)                                        { return s << getPerformanceParameterTypeINTELStr(value);                                       }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceValueTypeINTEL value)                                            { return s << getPerformanceValueTypeINTELStr(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, VkComponentTypeNV value)                                                                      { return s << getComponentTypeNVStr(value);                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkScopeNV value)                                                                                      { return s << getScopeNVStr(value);                                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkCoverageReductionModeNV value)                                                      { return s << getCoverageReductionModeNVStr(value);                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkProvokingVertexModeEXT value)                                                       { return s << getProvokingVertexModeEXTStr(value);                                                      }
+inline std::ostream&   operator<<      (std::ostream& s, VkLineRasterizationModeEXT value)                                                     { return s << getLineRasterizationModeEXTStr(value);                                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkIndirectCommandsTokenTypeNV value)                                          { return s << getIndirectCommandsTokenTypeNVStr(value);                                         }
+inline std::ostream&   operator<<      (std::ostream& s, VkDeviceMemoryReportEventTypeEXT value)                                       { return s << getDeviceMemoryReportEventTypeEXTStr(value);                                      }
+inline std::ostream&   operator<<      (std::ostream& s, VkFragmentShadingRateTypeNV value)                                            { return s << getFragmentShadingRateTypeNVStr(value);                                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkFragmentShadingRateNV value)                                                        { return s << getFragmentShadingRateNVStr(value);                                                       }
+inline std::ostream&   operator<<      (std::ostream& s, VkAccelerationStructureMotionInstanceTypeNV value)            { return s << getAccelerationStructureMotionInstanceTypeNVStr(value);           }
+inline std::ostream&   operator<<      (std::ostream& s, VkBuildAccelerationStructureModeKHR value)                            { return s << getBuildAccelerationStructureModeKHRStr(value);                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkAccelerationStructureBuildTypeKHR value)                            { return s << getAccelerationStructureBuildTypeKHRStr(value);                           }
+inline std::ostream&   operator<<      (std::ostream& s, VkAccelerationStructureCompatibilityKHR value)                        { return s << getAccelerationStructureCompatibilityKHRStr(value);                       }
+inline std::ostream&   operator<<      (std::ostream& s, VkShaderGroupShaderKHR value)                                                         { return s << getShaderGroupShaderKHRStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkQueryResultStatusKHR value)                                                         { return s << getQueryResultStatusKHRStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264ChromaFormatIdc value)                                            { return s << getdVideoH264ChromaFormatIdcStr(value);                                           }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264ProfileIdc value)                                                         { return s << getdVideoH264ProfileIdcStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264Level value)                                                                      { return s << getdVideoH264LevelStr(value);                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264PocType value)                                                            { return s << getdVideoH264PocTypeStr(value);                                                           }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264AspectRatioIdc value)                                                     { return s << getdVideoH264AspectRatioIdcStr(value);                                            }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264WeightedBiPredIdc value)                                          { return s << getdVideoH264WeightedBiPredIdcStr(value);                                         }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264ModificationOfPicNumsIdc value)                           { return s << getdVideoH264ModificationOfPicNumsIdcStr(value);                          }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264MemMgmtControlOp value)                                           { return s << getdVideoH264MemMgmtControlOpStr(value);                                          }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264CabacInitIdc value)                                                       { return s << getdVideoH264CabacInitIdcStr(value);                                                      }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264DisableDeblockingFilterIdc value)                         { return s << getdVideoH264DisableDeblockingFilterIdcStr(value);                        }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264PictureType value)                                                        { return s << getdVideoH264PictureTypeStr(value);                                                       }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264SliceType value)                                                          { return s << getdVideoH264SliceTypeStr(value);                                                         }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH264NonVclNaluType value)                                                     { return s << getdVideoH264NonVclNaluTypeStr(value);                                            }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH265ChromaFormatIdc value)                                            { return s << getdVideoH265ChromaFormatIdcStr(value);                                           }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH265ProfileIdc value)                                                         { return s << getdVideoH265ProfileIdcStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, StdVideoH265Level value)                                                                      { return s << getdVideoH265LevelStr(value);                                                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkFullScreenExclusiveEXT value)                                                       { return s << getFullScreenExclusiveEXTStr(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>      getSparseMemoryBindFlagsStr                                                                     (VkSparseMemoryBindFlags value);
+tcu::Format::Bitfield<32>      getSparseImageFormatFlagsStr                                                            (VkSparseImageFormatFlags 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>      getSubmitFlagsKHRStr                                                                            (VkSubmitFlagsKHR value);
+tcu::Format::Bitfield<32>      getDebugReportFlagsEXTStr                                                                       (VkDebugReportFlagsEXT value);
+tcu::Format::Bitfield<32>      getExternalMemoryHandleTypeFlagsNVStr                                           (VkExternalMemoryHandleTypeFlagsNV value);
+tcu::Format::Bitfield<32>      getExternalMemoryFeatureFlagsNVStr                                                      (VkExternalMemoryFeatureFlagsNV value);
+tcu::Format::Bitfield<32>      getConditionalRenderingFlagsEXTStr                                                      (VkConditionalRenderingFlagsEXT 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>      getGeometryFlagsKHRStr                                                                          (VkGeometryFlagsKHR value);
+tcu::Format::Bitfield<32>      getGeometryInstanceFlagsKHRStr                                                          (VkGeometryInstanceFlagsKHR value);
+tcu::Format::Bitfield<32>      getBuildAccelerationStructureFlagsKHRStr                                        (VkBuildAccelerationStructureFlagsKHR value);
+tcu::Format::Bitfield<32>      getPipelineCompilerControlFlagsAMDStr                                           (VkPipelineCompilerControlFlagsAMD value);
+tcu::Format::Bitfield<32>      getPipelineCreationFeedbackFlagsEXTStr                                          (VkPipelineCreationFeedbackFlagsEXT value);
+tcu::Format::Bitfield<32>      getShaderCorePropertiesFlagsAMDStr                                                      (VkShaderCorePropertiesFlagsAMD value);
+tcu::Format::Bitfield<32>      getToolPurposeFlagsEXTStr                                                                       (VkToolPurposeFlagsEXT value);
+tcu::Format::Bitfield<32>      getIndirectStateFlagsNVStr                                                                      (VkIndirectStateFlagsNV value);
+tcu::Format::Bitfield<32>      getIndirectCommandsLayoutUsageFlagsNVStr                                        (VkIndirectCommandsLayoutUsageFlagsNV value);
+tcu::Format::Bitfield<32>      getPrivateDataSlotCreateFlagsEXTStr                                                     (VkPrivateDataSlotCreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getDeviceDiagnosticsConfigFlagsNVStr                                            (VkDeviceDiagnosticsConfigFlagsNV value);
+tcu::Format::Bitfield<32>      getAccelerationStructureCreateFlagsKHRStr                                       (VkAccelerationStructureCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoCodecOperationFlagsKHRStr                                                       (VkVideoCodecOperationFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoChromaSubsamplingFlagsKHRStr                                            (VkVideoChromaSubsamplingFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoComponentBitDepthFlagsKHRStr                                            (VkVideoComponentBitDepthFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoCapabilityFlagsKHRStr                                                           (VkVideoCapabilityFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoSessionCreateFlagsKHRStr                                                        (VkVideoSessionCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoCodingControlFlagsKHRStr                                                        (VkVideoCodingControlFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoCodingQualityPresetFlagsKHRStr                                          (VkVideoCodingQualityPresetFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoDecodeFlagsKHRStr                                                                       (VkVideoDecodeFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoEncodeFlagsKHRStr                                                                       (VkVideoEncodeFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoEncodeRateControlFlagsKHRStr                                            (VkVideoEncodeRateControlFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoEncodeRateControlModeFlagsKHRStr                                        (VkVideoEncodeRateControlModeFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoEncodeH264CapabilityFlagsEXTStr                                         (VkVideoEncodeH264CapabilityFlagsEXT value);
+tcu::Format::Bitfield<32>      getVideoEncodeH264InputModeFlagsEXTStr                                          (VkVideoEncodeH264InputModeFlagsEXT value);
+tcu::Format::Bitfield<32>      getVideoEncodeH264OutputModeFlagsEXTStr                                         (VkVideoEncodeH264OutputModeFlagsEXT value);
+tcu::Format::Bitfield<32>      getVideoEncodeH264CreateFlagsEXTStr                                                     (VkVideoEncodeH264CreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getVideoDecodeH264PictureLayoutFlagsEXTStr                                      (VkVideoDecodeH264PictureLayoutFlagsEXT 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);
+tcu::Format::Bitfield<32>      getQueryPoolCreateFlagsStr                                                                      (VkQueryPoolCreateFlags value);
+tcu::Format::Bitfield<32>      getBufferViewCreateFlagsStr                                                                     (VkBufferViewCreateFlags value);
+tcu::Format::Bitfield<32>      getShaderModuleCreateFlagsStr                                                           (VkShaderModuleCreateFlags 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>      getCommandPoolTrimFlagsStr                                                                      (VkCommandPoolTrimFlags value);
+tcu::Format::Bitfield<32>      getDescriptorUpdateTemplateCreateFlagsStr                                       (VkDescriptorUpdateTemplateCreateFlags value);
+tcu::Format::Bitfield<32>      getDisplayModeCreateFlagsKHRStr                                                         (VkDisplayModeCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getDisplaySurfaceCreateFlagsKHRStr                                                      (VkDisplaySurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getPipelineRasterizationStateStreamCreateFlagsEXTStr            (VkPipelineRasterizationStateStreamCreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getPipelineViewportSwizzleStateCreateFlagsNVStr                         (VkPipelineViewportSwizzleStateCreateFlagsNV 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>      getPipelineCoverageToColorStateCreateFlagsNVStr                         (VkPipelineCoverageToColorStateCreateFlagsNV value);
+tcu::Format::Bitfield<32>      getPipelineCoverageModulationStateCreateFlagsNVStr                      (VkPipelineCoverageModulationStateCreateFlagsNV value);
+tcu::Format::Bitfield<32>      getValidationCacheCreateFlagsEXTStr                                                     (VkValidationCacheCreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getPipelineCoverageReductionStateCreateFlagsNVStr                       (VkPipelineCoverageReductionStateCreateFlagsNV value);
+tcu::Format::Bitfield<32>      getHeadlessSurfaceCreateFlagsEXTStr                                                     (VkHeadlessSurfaceCreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getDeviceMemoryReportFlagsEXTStr                                                        (VkDeviceMemoryReportFlagsEXT value);
+tcu::Format::Bitfield<32>      getAccelerationStructureMotionInfoFlagsNVStr                            (VkAccelerationStructureMotionInfoFlagsNV value);
+tcu::Format::Bitfield<32>      getAccelerationStructureMotionInstanceFlagsNVStr                        (VkAccelerationStructureMotionInstanceFlagsNV value);
+tcu::Format::Bitfield<32>      getAndroidSurfaceCreateFlagsKHRStr                                                      (VkAndroidSurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoBeginCodingFlagsKHRStr                                                          (VkVideoBeginCodingFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoEndCodingFlagsKHRStr                                                            (VkVideoEndCodingFlagsKHR value);
+tcu::Format::Bitfield<32>      getVideoDecodeH264CreateFlagsEXTStr                                                     (VkVideoDecodeH264CreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getVideoDecodeH265CreateFlagsEXTStr                                                     (VkVideoDecodeH265CreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getImagePipeSurfaceCreateFlagsFUCHSIAStr                                        (VkImagePipeSurfaceCreateFlagsFUCHSIA value);
+tcu::Format::Bitfield<32>      getStreamDescriptorSurfaceCreateFlagsGGPStr                                     (VkStreamDescriptorSurfaceCreateFlagsGGP value);
+tcu::Format::Bitfield<32>      getIOSSurfaceCreateFlagsMVKStr                                                          (VkIOSSurfaceCreateFlagsMVK value);
+tcu::Format::Bitfield<32>      getMacOSSurfaceCreateFlagsMVKStr                                                        (VkMacOSSurfaceCreateFlagsMVK value);
+tcu::Format::Bitfield<32>      getMetalSurfaceCreateFlagsEXTStr                                                        (VkMetalSurfaceCreateFlagsEXT value);
+tcu::Format::Bitfield<32>      getViSurfaceCreateFlagsNNStr                                                            (VkViSurfaceCreateFlagsNN value);
+tcu::Format::Bitfield<32>      getWaylandSurfaceCreateFlagsKHRStr                                                      (VkWaylandSurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getWin32SurfaceCreateFlagsKHRStr                                                        (VkWin32SurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getXcbSurfaceCreateFlagsKHRStr                                                          (VkXcbSurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getXlibSurfaceCreateFlagsKHRStr                                                         (VkXlibSurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getBuildAccelerationStructureFlagsNVStr                                         (VkBuildAccelerationStructureFlagsNV 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 VkPipelineCacheHeaderVersionOne& 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 VkSparseMemoryBind& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseBufferMemoryBindInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageSubresource& 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 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 VkShaderModuleCreateInfo& 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 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 VkDeviceGroupBindSparseInfo& 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 VkImageSparseMemoryRequirementsInfo2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryRequirements2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageMemoryRequirements2& 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 VkSparseImageFormatProperties2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& 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 VkDescriptorUpdateTemplateEntry& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& 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 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 VkPhysicalDevicePushDescriptorPropertiesKHR& 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 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 VkSurfaceProtectedCapabilitiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePresentWaitFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutableInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutableStatisticValueKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutableStatisticKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutableInternalRepresentationKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineLibraryCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPresentIdKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePresentIdFeaturesKHR& 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 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& 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 VkDebugReportCallbackCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCuModuleCreateInfoNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCuFunctionCreateInfoNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCuLaunchInfoNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageViewHandleInfoNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageViewAddressPropertiesNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkShaderResourceUsageAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkShaderStatisticsInfoAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCornerSampledImageFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExternalImageFormatPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExportMemoryAllocateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkValidationFlagsEXT& 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 VkConditionalRenderingBeginInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkViewportWScalingNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& 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 VkRefreshCycleDurationGOOGLE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPastPresentationTimingGOOGLE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPresentTimeGOOGLE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPresentTimesInfoGOOGLE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value);
+std::ostream&  operator<<      (std::ostream& s, const VkViewportSwizzleNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& 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 VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& 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 VkPipelineCoverageToColorStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& 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 VkValidationCacheCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkShadingRatePaletteNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShadingRateImagePropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCoarseSampleLocationNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCoarseSampleOrderCustomNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRayTracingShaderGroupCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRayTracingPipelineCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeometryTrianglesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeometryAABBNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeometryDataNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeometryNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBindAccelerationStructureMemoryInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureMemoryRequirementsInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRayTracingPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkTransformMatrixKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAabbPositionsKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureInstanceKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineRepresentativeFragmentTestStateCreateInfoNV& 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 VkPipelineCompilerControlCreateInfoAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCalibratedTimestampInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderCorePropertiesAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceMemoryOverallocationCreateInfoAMD& 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 VkPipelineCreationFeedbackEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineCreationFeedbackCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMeshShaderFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMeshShaderPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDrawMeshTasksIndirectCommandNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderImageFootprintFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportExclusiveScissorStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceExclusiveScissorFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCheckpointDataNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceValueDataINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceValueINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkInitializePerformanceApiInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkQueryPoolPerformanceQueryCreateInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceMarkerInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceStreamMarkerInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceOverrideInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceConfigurationAcquireInfoINTEL& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDisplayNativeHdrSurfaceCapabilitiesAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSwapchainDisplayNativeHdrCreateInfoAMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const 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 VkPhysicalDeviceShaderCoreProperties2AMD& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCoherentMemoryFeaturesAMD& 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 VkPhysicalDeviceMemoryPriorityFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceToolPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkValidationFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCoverageReductionModeFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineCoverageReductionStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFramebufferMixedSamplesCombinationNV& 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 VkPhysicalDeviceProvokingVertexFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceProvokingVertexPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT& 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 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGraphicsShaderGroupCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGraphicsPipelineShaderGroupsCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBindShaderGroupIndirectCommandNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBindIndexBufferIndirectCommandNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBindVertexBufferIndirectCommandNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSetStateFlagsIndirectCommandNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkIndirectCommandsStreamNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkIndirectCommandsLayoutTokenNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeneratedCommandsInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkGeneratedCommandsMemoryRequirementsInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCommandBufferInheritanceViewportScissorInfoNV& 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 VkRenderPassTransformBeginInfoQCOM& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCommandBufferInheritanceRenderPassTransformInfoQCOM& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceMemoryReportCallbackDataEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceDeviceMemoryReportCreateInfoEXT& 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 VkPhysicalDevicePrivateDataFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDevicePrivateDataCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPrivateDataSlotCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceDiagnosticsConfigCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineFragmentShadingRateEnumStateCreateInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceOrHostAddressConstKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryMotionTrianglesDataNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureMotionInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureMatrixMotionInstanceNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSRTDataNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureSRTMotionInstanceNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureMotionInstanceDataNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureMotionInstanceNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCopyCommandTransformInfoQCOM& 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 VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMutableDescriptorTypeListVALVE& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMutableDescriptorTypeCreateInfoVALVE& 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 VkPhysicalDeviceDrmPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassShadingPipelineCreateInfoHUAWEI& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryGetRemoteAddressInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& 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);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkQueueFamilyGlobalPriorityPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMultiDrawFeaturesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMultiDrawPropertiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMultiDrawInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMultiDrawIndexedInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceOrHostAddressKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureBuildRangeInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryTrianglesDataKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryAabbsDataKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryInstancesDataKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryDataKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureGeometryKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureBuildGeometryInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceAccelerationStructureFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceAccelerationStructurePropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureDeviceAddressInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureVersionInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCopyAccelerationStructureToMemoryInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCopyMemoryToAccelerationStructureInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCopyAccelerationStructureInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAccelerationStructureBuildSizesInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRayTracingShaderGroupCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRayTracingPipelineInterfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRayTracingPipelineCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRayTracingPipelineFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRayTracingPipelinePropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkStridedDeviceAddressRegionKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkTraceRaysIndirectCommandKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceRayQueryFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExternalFormatANDROID& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoQueueFamilyProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoProfileKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoProfilesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoCapabilitiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVideoFormatInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoFormatPropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoPictureResourceKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoReferenceSlotKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoGetMemoryPropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoBindMemoryKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoSessionCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoSessionParametersCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoSessionParametersUpdateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoBeginCodingInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEndCodingInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoCodingControlInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePortabilitySubsetFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeRateControlInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264SpsVuiFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264HrdParameters& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264SequenceParameterSetVui& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264SpsFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264ScalingLists& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264SequenceParameterSet& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264PpsFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH264PictureParameterSet& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264SliceHeaderFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264PictureInfoFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264RefMgmtFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264RefListModEntry& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264RefPicMarkingEntry& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264RefMemMgmtCtrlOperations& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264PictureInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoEncodeH264SliceHeader& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264CapabilitiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264SessionCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264SessionParametersAddInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264SessionParametersCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264DpbSlotInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264NaluSliceEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264VclFrameInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264EmitPictureParametersEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoEncodeH264ProfileEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264PictureInfoFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264PictureInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264ReferenceInfoFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264ReferenceInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264MvcElementFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264MvcElement& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH264Mvc& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264ProfileEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264CapabilitiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264SessionCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264SessionParametersAddInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264SessionParametersCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264PictureInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264MvcEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH264DpbSlotInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265DecPicBufMgr& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265SubLayerHrdParameters& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265HrdFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265HrdParameters& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265VpsFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265VideoParameterSet& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265ScalingLists& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265SpsVuiFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265SequenceParameterSetVui& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265PredictorPaletteEntries& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265SpsFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265SequenceParameterSet& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265PpsFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoH265PictureParameterSet& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH265PictureInfoFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH265PictureInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH265ReferenceInfoFlags& value);
+std::ostream&  operator<<      (std::ostream& s, const StdVideoDecodeH265ReferenceInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265ProfileEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265CapabilitiesEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265SessionCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265SessionParametersAddInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265SessionParametersCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265PictureInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkVideoDecodeH265DpbSlotInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportMemoryZirconHandleInfoFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryZirconHandlePropertiesFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryGetZirconHandleInfoFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportSemaphoreZirconHandleInfoFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreGetZirconHandleInfoFUCHSIA& value);
+std::ostream&  operator<<      (std::ostream& s, const VkStreamDescriptorSurfaceCreateInfoGGP& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPresentFrameTokenGGP& value);
+std::ostream&  operator<<      (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMetalSurfaceCreateInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkViSurfaceCreateInfoNN& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSurfaceFullScreenExclusiveInfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSurfaceCapabilitiesFullScreenExclusiveEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSurfaceFullScreenExclusiveWin32InfoEXT& value);
+std::ostream&  operator<<      (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value);
diff --git a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
new file mode 100644 (file)
index 0000000..deb80f9
--- /dev/null
@@ -0,0 +1,13688 @@
+/* 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<VkDescriptorUpdateTemplate>                 (void) { return "VkDescriptorUpdateTemplate";           }
+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<VkDeferredOperationKHR>                             (void) { return "VkDeferredOperationKHR";                       }
+template<> const char* getTypeName<VkDebugReportCallbackEXT>                   (void) { return "VkDebugReportCallbackEXT";                     }
+template<> const char* getTypeName<VkCuModuleNVX>                                              (void) { return "VkCuModuleNVX";                                        }
+template<> const char* getTypeName<VkCuFunctionNVX>                                    (void) { return "VkCuFunctionNVX";                                      }
+template<> const char* getTypeName<VkDebugUtilsMessengerEXT>                   (void) { return "VkDebugUtilsMessengerEXT";                     }
+template<> const char* getTypeName<VkValidationCacheEXT>                               (void) { return "VkValidationCacheEXT";                         }
+template<> const char* getTypeName<VkAccelerationStructureNV>                  (void) { return "VkAccelerationStructureNV";            }
+template<> const char* getTypeName<VkPerformanceConfigurationINTEL>    (void) { return "VkPerformanceConfigurationINTEL";      }
+template<> const char* getTypeName<VkIndirectCommandsLayoutNV>                 (void) { return "VkIndirectCommandsLayoutNV";           }
+template<> const char* getTypeName<VkPrivateDataSlotEXT>                               (void) { return "VkPrivateDataSlotEXT";                         }
+template<> const char* getTypeName<VkAccelerationStructureKHR>                 (void) { return "VkAccelerationStructureKHR";           }
+template<> const char* getTypeName<VkVideoSessionKHR>                                  (void) { return "VkVideoSessionKHR";                            }
+template<> const char* getTypeName<VkVideoSessionParametersKHR>                (void) { return "VkVideoSessionParametersKHR";          }
+
+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_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_VALIDATION_FAILED_EXT:                                            return "VK_ERROR_VALIDATION_FAILED_EXT";
+               case VK_ERROR_INVALID_SHADER_NV:                                                        return "VK_ERROR_INVALID_SHADER_NV";
+               case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:     return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
+               case VK_ERROR_NOT_PERMITTED_EXT:                                                        return "VK_ERROR_NOT_PERMITTED_EXT";
+               case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:                      return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
+               case VK_THREAD_IDLE_KHR:                                                                        return "VK_THREAD_IDLE_KHR";
+               case VK_THREAD_DONE_KHR:                                                                        return "VK_THREAD_DONE_KHR";
+               case VK_OPERATION_DEFERRED_KHR:                                                         return "VK_OPERATION_DEFERRED_KHR";
+               case VK_OPERATION_NOT_DEFERRED_KHR:                                                     return "VK_OPERATION_NOT_DEFERRED_KHR";
+               case VK_PIPELINE_COMPILE_REQUIRED_EXT:                                          return "VK_PIPELINE_COMPILE_REQUIRED_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_DEVICE_GROUP_BIND_SPARSE_INFO:                                                                           return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
+               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_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:                                                         return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
+               case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:                                                                                           return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
+               case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:                                                                      return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_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_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_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_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:                                                          return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
+               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_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_XLIB_SURFACE_CREATE_INFO_KHR:                                                                            return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:                                                                                     return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:                                                                         return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:                                                                         return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:                                                                           return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:                                                           return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:                            return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
+               case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:                                                                       return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
+               case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:                                                                        return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
+               case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:                                                                            return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR:                                                                                                       return "VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR:                                                                                          return "VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR:                                                                                      return "VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR:                                                                         return "VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR:                                                                                           return "VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR:                                                                           return "VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR:                                                        return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR:                                                        return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR:                                                                                     return "VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR:                                                                                       return "VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR:                                                                           return "VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR:                                                                                        return "VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR:                                                                     return "VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR:                                                                                                      return "VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR:                                                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR:                                                                                     return "VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR:                                                                                           return "VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:                                                       return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:                                                      return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:                                            return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:                                     return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX:                                                                                       return "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX";
+               case VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX:                                                                                     return "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX";
+               case VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX:                                                                                                      return "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX";
+               case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX:                                                                                      return "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX";
+               case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX:                                                                       return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT:                                                       return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:                            return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:                                       return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT:                                                            return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT:                                                                     return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT:                                                                        return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT:                                           return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT:                                                                           return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT:                                                       return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT:                                                                                       return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT:                                                                           return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:                            return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:                                       return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT:                                                                     return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT";
+               case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:                                                        return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
+               case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP:                                                       return "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:                                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:                                                            return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:                                                                          return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                                      return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
+               case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                                      return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
+               case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                                                       return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
+               case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                                            return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
+               case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:                                                                                       return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
+               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_WIN32_HANDLE_INFO_KHR:                                                                     return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                                     return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:                                                                      return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:                                                                        return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
+               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_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:                                                      return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                          return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                          return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:                                                                                     return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:                                                                     return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_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_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:                       return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:                                                            return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                                     return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:                                        return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
+               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_PRESENT_TIMES_INFO_GOOGLE:                                                                                       return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:                                          return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
+               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_WIN32_HANDLE_INFO_KHR:                                                                      return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                                      return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:                                                                         return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_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_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_IOS_SURFACE_CREATE_INFO_MVK:                                                                                     return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
+               case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:                                                                           return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
+               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_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:                                                           return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
+               case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:                                                      return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
+               case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:                                       return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
+               case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                                     return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
+               case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                         return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
+               case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:                                                                                         return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:                                           return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:                            return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_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_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:                                         return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:                                         return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR:                                          return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR:                                          return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR:                                          return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR:                                      return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR:                                      return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR:                                                                     return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR:                                                         return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR";
+               case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR:                                                            return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR:                                          return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR";
+               case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR:                                          return "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR:                                                          return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR:                                                     return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR:                                                            return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR:                                                        return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR:                                          return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR:                                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:                                       return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:                                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV";
+               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_VALIDATION_CACHE_CREATE_INFO_EXT:                                                                        return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:                                          return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:                       return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:                                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:                      return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV:                                                                     return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV:                                                           return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_GEOMETRY_NV:                                                                                                                     return "VK_STRUCTURE_TYPE_GEOMETRY_NV";
+               case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV:                                                                                           return "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV";
+               case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV:                                                                                                        return "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV";
+               case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV:                                                      return "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV";
+               case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:                                          return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV:                                      return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:                                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV:                                                         return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV:                                                                          return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:                      return "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV";
+               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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:                                                       return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
+               case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:                                                                           return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:                                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT:                                                       return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:                            return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:                                       return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT:                                                                           return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT:                                                                     return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT";
+               case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:                                            return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD";
+               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_PRESENT_FRAME_TOKEN_GGP:                                                                                         return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
+               case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:                                                      return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:                                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:                                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:                        return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:                                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:                                                                                                      return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
+               case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:                                                           return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
+               case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:                                          return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL:                                                           return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL:                                                                           return "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL:                                                            return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL:                                                                         return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:                                            return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:                                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:                                                     return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
+               case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:                                            return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
+               case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA:                                                           return "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA";
+               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_METAL_SURFACE_CREATE_INFO_EXT:                                                                           return "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:                                        return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_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_CORE_PROPERTIES_2_AMD:                                            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:                                            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD";
+               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_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:                                            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:                                                                       return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:                                                                      return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:                                                           return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT:                                                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:                                                                                         return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR:                                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                                                        return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:                                        return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV:                                                        return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:                                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT:           return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:                                                          return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:                                          return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
+               case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:                                            return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
+               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_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR:                                                                                                       return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR:                                                                      return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR:                                                                            return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR:                                                                       return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR";
+               case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR:                                         return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT:                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_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_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV:                                                            return "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:                                          return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV:                                                                       return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV";
+               case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV:                                                         return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV:                                                                                      return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV";
+               case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV:                                          return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV:                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV:                                     return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR:                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR:                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR";
+               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_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:                      return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM:                                                           return "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:                                                     return "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT:                                                          return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_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_PIPELINE_LIBRARY_CREATE_INFO_KHR:                                                                        return "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PRESENT_ID_KHR:                                                                                                          return "VK_STRUCTURE_TYPE_PRESENT_ID_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR:                                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT:                                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT:                                                                     return "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT:                                                                       return "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT:            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR:                                                                                           return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR:                                                                      return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:                                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV:                                                        return "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV";
+               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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR:       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR:           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:                        return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV:                        return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV";
+               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV:                                                           return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_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_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:                                     return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM:                                                                        return "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:                                           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR:           return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR";
+               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_DIRECTFB_SURFACE_CREATE_INFO_EXT:                                                                        return "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE:                          return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE";
+               case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE:                                                       return "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE";
+               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_DRM_PROPERTIES_EXT:                                                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:            return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA:                                                        return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA";
+               case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA:                                                         return "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA";
+               case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA:                                                           return "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
+               case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA:                                                     return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA:                                                        return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
+               case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI:                                                     return "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI:                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI:                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI";
+               case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV:                                                                       return "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV:                                        return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV";
+               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_SCREEN_SURFACE_CREATE_INFO_QNX:                                                                          return "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX";
+               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_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT:                                      return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT:                                                     return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT:                                                         return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT:                                                       return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_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_VIDEO_DECODE_DST_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR";
+               case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR";
+               case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR";
+               case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:                                                        return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
+               case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT:                          return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
+               case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR:      return "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR";
+               case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR";
+               case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR";
+               case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR";
+               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_DESCRIPTOR_UPDATE_TEMPLATE:                 return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
+               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_REPORT_CALLBACK_EXT:                  return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
+               case VK_OBJECT_TYPE_VIDEO_SESSION_KHR:                                  return "VK_OBJECT_TYPE_VIDEO_SESSION_KHR";
+               case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR:               return "VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR";
+               case VK_OBJECT_TYPE_CU_MODULE_NVX:                                              return "VK_OBJECT_TYPE_CU_MODULE_NVX";
+               case VK_OBJECT_TYPE_CU_FUNCTION_NVX:                                    return "VK_OBJECT_TYPE_CU_FUNCTION_NVX";
+               case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:                  return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
+               case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR:                 return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR";
+               case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:                               return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
+               case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:                  return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV";
+               case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:    return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL";
+               case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR:                             return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR";
+               case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV:                return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV";
+               case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT:                              return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT";
+               case VK_OBJECT_TYPE_MAX_ENUM:                                                   return "VK_OBJECT_TYPE_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* 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* 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_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_PVRTC1_2BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
+               case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
+               case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
+               case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
+               case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
+               case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
+               case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
+               case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
+               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)
+       {
+               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_RESULT_STATUS_ONLY_KHR:                                                      return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR";
+               case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:                                       return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
+               case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:                                                       return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
+               case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR:           return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR";
+               case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR:       return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
+               case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV:            return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
+               case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL:                                                     return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
+               case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR:                     return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_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_VIEWPORT_W_SCALING_NV:                            return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
+               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_RAY_TRACING_PIPELINE_STACK_SIZE_KHR:      return "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR";
+               case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV:         return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV";
+               case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV:          return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV";
+               case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV:                                     return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV";
+               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_FILL_RECTANGLE_NV: return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
+               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_INLINE_UNIFORM_BLOCK_EXT:       return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT";
+               case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:     return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR";
+               case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:      return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV";
+               case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:                          return "VK_DESCRIPTOR_TYPE_MUTABLE_VALVE";
+               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_NONE_EXT:    return "VK_ATTACHMENT_LOAD_OP_NONE_EXT";
+               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_NONE_EXT:   return "VK_ATTACHMENT_STORE_OP_NONE_EXT";
+               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_RAY_TRACING_KHR:            return "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR";
+               case VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI:     return "VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI";
+               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_NONE_KHR:    return "VK_INDEX_TYPE_NONE_KHR";
+               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;
+       }
+}
+
+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* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
+{
+       switch (value)
+       {
+               case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:                 return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
+               case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:   return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
+               case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM:                               return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_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_JUICE_PROPRIETARY:                    return "VK_DRIVER_ID_JUICE_PROPRIETARY";
+               case VK_DRIVER_ID_VERISILICON_PROPRIETARY:              return "VK_DRIVER_ID_VERISILICON_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* 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_DISPLAY_NATIVE_AMD:                         return "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD";
+               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* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
+{
+       switch (value)
+       {
+               case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR";
+               case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR:         return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR";
+               case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR";
+               case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR:       return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR";
+               case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR:      return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR";
+               default:                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
+{
+       switch (value)
+       {
+               case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:                                         return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:                                      return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT:                      return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:          return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT";
+               case VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT";
+               default:                                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
+{
+       switch (value)
+       {
+               case VK_RASTERIZATION_ORDER_STRICT_AMD:         return "VK_RASTERIZATION_ORDER_STRICT_AMD";
+               case VK_RASTERIZATION_ORDER_RELAXED_AMD:        return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
+               case VK_RASTERIZATION_ORDER_MAX_ENUM_AMD:       return "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD";
+               default:                                                                        return DE_NULL;
+       }
+}
+
+const char* getShaderInfoTypeAMDName (VkShaderInfoTypeAMD value)
+{
+       switch (value)
+       {
+               case VK_SHADER_INFO_TYPE_STATISTICS_AMD:        return "VK_SHADER_INFO_TYPE_STATISTICS_AMD";
+               case VK_SHADER_INFO_TYPE_BINARY_AMD:            return "VK_SHADER_INFO_TYPE_BINARY_AMD";
+               case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:       return "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD";
+               case VK_SHADER_INFO_TYPE_MAX_ENUM_AMD:          return "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD";
+               default:                                                                        return DE_NULL;
+       }
+}
+
+const char* getValidationCheckEXTName (VkValidationCheckEXT value)
+{
+       switch (value)
+       {
+               case VK_VALIDATION_CHECK_ALL_EXT:               return "VK_VALIDATION_CHECK_ALL_EXT";
+               case VK_VALIDATION_CHECK_SHADERS_EXT:   return "VK_VALIDATION_CHECK_SHADERS_EXT";
+               case VK_VALIDATION_CHECK_MAX_ENUM_EXT:  return "VK_VALIDATION_CHECK_MAX_ENUM_EXT";
+               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* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
+{
+       switch (value)
+       {
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
+               case VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV:        return "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV";
+               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* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
+{
+       switch (value)
+       {
+               case VK_COVERAGE_MODULATION_MODE_NONE_NV:               return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
+               case VK_COVERAGE_MODULATION_MODE_RGB_NV:                return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
+               case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:              return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
+               case VK_COVERAGE_MODULATION_MODE_RGBA_NV:               return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
+               case VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV:   return "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV";
+               default:                                                                                return DE_NULL;
+       }
+}
+
+const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
+{
+       switch (value)
+       {
+               case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:                return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
+               case VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT:   return "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getShadingRatePaletteEntryNVName (VkShadingRatePaletteEntryNV value)
+{
+       switch (value)
+       {
+               case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV:                           return "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV:         return "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV:           return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV";
+               case VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV:                                         return "VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV";
+               default:                                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getCoarseSampleOrderTypeNVName (VkCoarseSampleOrderTypeNV value)
+{
+       switch (value)
+       {
+               case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV:            return "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV";
+               case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV:                     return "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV";
+               case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV:        return "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV";
+               case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV:       return "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV";
+               case VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV:           return "VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getRayTracingShaderGroupTypeKHRName (VkRayTracingShaderGroupTypeKHR value)
+{
+       switch (value)
+       {
+               case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR:                              return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR";
+               case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:  return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR";
+               case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR: return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR";
+               case VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR:                             return "VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getGeometryTypeKHRName (VkGeometryTypeKHR value)
+{
+       switch (value)
+       {
+               case VK_GEOMETRY_TYPE_TRIANGLES_KHR:    return "VK_GEOMETRY_TYPE_TRIANGLES_KHR";
+               case VK_GEOMETRY_TYPE_AABBS_KHR:                return "VK_GEOMETRY_TYPE_AABBS_KHR";
+               case VK_GEOMETRY_TYPE_INSTANCES_KHR:    return "VK_GEOMETRY_TYPE_INSTANCES_KHR";
+               case VK_GEOMETRY_TYPE_MAX_ENUM_KHR:             return "VK_GEOMETRY_TYPE_MAX_ENUM_KHR";
+               default:                                                                return DE_NULL;
+       }
+}
+
+const char* getAccelerationStructureTypeKHRName (VkAccelerationStructureTypeKHR value)
+{
+       switch (value)
+       {
+               case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR:              return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR";
+               case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR:   return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR";
+               case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR:                return "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR";
+               case VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR:               return "VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getCopyAccelerationStructureModeKHRName (VkCopyAccelerationStructureModeKHR value)
+{
+       switch (value)
+       {
+               case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR:                     return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR";
+               case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR:           return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR";
+               case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR:         return "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR";
+               case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR:       return "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR";
+               case VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR:          return "VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
+               default:                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getAccelerationStructureMemoryRequirementsTypeNVName (VkAccelerationStructureMemoryRequirementsTypeNV value)
+{
+       switch (value)
+       {
+               case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV:                      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV";
+               case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV:       return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV";
+               case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV:      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV";
+               case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV:            return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV";
+               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* getMemoryOverallocationBehaviorAMDName (VkMemoryOverallocationBehaviorAMD value)
+{
+       switch (value)
+       {
+               case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD";
+               case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD";
+               case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD:  return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD";
+               case VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD:    return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getPerformanceConfigurationTypeINTELName (VkPerformanceConfigurationTypeINTEL value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL: return "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL";
+               case VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL:                                                                  return "VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL";
+               default:                                                                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getQueryPoolSamplingModeINTELName (VkQueryPoolSamplingModeINTEL value)
+{
+       switch (value)
+       {
+               case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL:          return "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL";
+               case VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL:        return "VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getPerformanceOverrideTypeINTELName (VkPerformanceOverrideTypeINTEL value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL:          return "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL";
+               case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL:       return "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL";
+               case VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL:                       return "VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL";
+               default:                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getPerformanceParameterTypeINTELName (VkPerformanceParameterTypeINTEL value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL:         return "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL";
+               case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL:      return "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL";
+               case VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL:                                      return "VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL";
+               default:                                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getPerformanceValueTypeINTELName (VkPerformanceValueTypeINTEL value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL";
+               case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL";
+               case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL:             return "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL";
+               case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL:              return "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL";
+               case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL";
+               case VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL:  return "VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL";
+               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_SHADER_VALIDATION_CACHE_EXT: return "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT";
+               case VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT:                                return "VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getComponentTypeNVName (VkComponentTypeNV value)
+{
+       switch (value)
+       {
+               case VK_COMPONENT_TYPE_FLOAT16_NV:      return "VK_COMPONENT_TYPE_FLOAT16_NV";
+               case VK_COMPONENT_TYPE_FLOAT32_NV:      return "VK_COMPONENT_TYPE_FLOAT32_NV";
+               case VK_COMPONENT_TYPE_FLOAT64_NV:      return "VK_COMPONENT_TYPE_FLOAT64_NV";
+               case VK_COMPONENT_TYPE_SINT8_NV:        return "VK_COMPONENT_TYPE_SINT8_NV";
+               case VK_COMPONENT_TYPE_SINT16_NV:       return "VK_COMPONENT_TYPE_SINT16_NV";
+               case VK_COMPONENT_TYPE_SINT32_NV:       return "VK_COMPONENT_TYPE_SINT32_NV";
+               case VK_COMPONENT_TYPE_SINT64_NV:       return "VK_COMPONENT_TYPE_SINT64_NV";
+               case VK_COMPONENT_TYPE_UINT8_NV:        return "VK_COMPONENT_TYPE_UINT8_NV";
+               case VK_COMPONENT_TYPE_UINT16_NV:       return "VK_COMPONENT_TYPE_UINT16_NV";
+               case VK_COMPONENT_TYPE_UINT32_NV:       return "VK_COMPONENT_TYPE_UINT32_NV";
+               case VK_COMPONENT_TYPE_UINT64_NV:       return "VK_COMPONENT_TYPE_UINT64_NV";
+               case VK_COMPONENT_TYPE_MAX_ENUM_NV:     return "VK_COMPONENT_TYPE_MAX_ENUM_NV";
+               default:                                                        return DE_NULL;
+       }
+}
+
+const char* getScopeNVName (VkScopeNV value)
+{
+       switch (value)
+       {
+               case VK_SCOPE_DEVICE_NV:                return "VK_SCOPE_DEVICE_NV";
+               case VK_SCOPE_WORKGROUP_NV:             return "VK_SCOPE_WORKGROUP_NV";
+               case VK_SCOPE_SUBGROUP_NV:              return "VK_SCOPE_SUBGROUP_NV";
+               case VK_SCOPE_QUEUE_FAMILY_NV:  return "VK_SCOPE_QUEUE_FAMILY_NV";
+               case VK_SCOPE_MAX_ENUM_NV:              return "VK_SCOPE_MAX_ENUM_NV";
+               default:                                                return DE_NULL;
+       }
+}
+
+const char* getCoverageReductionModeNVName (VkCoverageReductionModeNV value)
+{
+       switch (value)
+       {
+               case VK_COVERAGE_REDUCTION_MODE_MERGE_NV:               return "VK_COVERAGE_REDUCTION_MODE_MERGE_NV";
+               case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV:    return "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV";
+               case VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV:    return "VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV";
+               default:                                                                                return DE_NULL;
+       }
+}
+
+const char* getProvokingVertexModeEXTName (VkProvokingVertexModeEXT value)
+{
+       switch (value)
+       {
+               case VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT: return "VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT";
+               case VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT:  return "VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT";
+               case VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT:             return "VK_PROVOKING_VERTEX_MODE_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;
+       }
+}
+
+const char* getIndirectCommandsTokenTypeNVName (VkIndirectCommandsTokenTypeNV value)
+{
+       switch (value)
+       {
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV:    return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV:  return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV:  return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV:                   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV:             return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV";
+               case VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV:               return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getDeviceMemoryReportEventTypeEXTName (VkDeviceMemoryReportEventTypeEXT value)
+{
+       switch (value)
+       {
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT";
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT:                               return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT";
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT:                             return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT";
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT";
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT:  return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT";
+               case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getFragmentShadingRateTypeNVName (VkFragmentShadingRateTypeNV value)
+{
+       switch (value)
+       {
+               case VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV:    return "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV";
+               case VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV:                    return "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV";
+               case VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV:                 return "VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getFragmentShadingRateNVName (VkFragmentShadingRateNV value)
+{
+       switch (value)
+       {
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV:                return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV";
+               case VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV";
+               case VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV";
+               case VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV";
+               case VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV:              return "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV";
+               case VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV:                                return "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV";
+               case VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV:                                              return "VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getAccelerationStructureMotionInstanceTypeNVName (VkAccelerationStructureMotionInstanceTypeNV value)
+{
+       switch (value)
+       {
+               case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV:                  return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV";
+               case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV:   return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV";
+               case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV:              return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV";
+               case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV:                return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV";
+               default:                                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getBuildAccelerationStructureModeKHRName (VkBuildAccelerationStructureModeKHR value)
+{
+       switch (value)
+       {
+               case VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR:    return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR";
+               case VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR:   return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR";
+               case VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR: return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getAccelerationStructureBuildTypeKHRName (VkAccelerationStructureBuildTypeKHR value)
+{
+       switch (value)
+       {
+               case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR:                             return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR";
+               case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR:                   return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR";
+               case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR:   return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR";
+               case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR:                 return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getAccelerationStructureCompatibilityKHRName (VkAccelerationStructureCompatibilityKHR value)
+{
+       switch (value)
+       {
+               case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR:    return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR";
+               case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR:  return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR";
+               case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR:              return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getShaderGroupShaderKHRName (VkShaderGroupShaderKHR value)
+{
+       switch (value)
+       {
+               case VK_SHADER_GROUP_SHADER_GENERAL_KHR:                return "VK_SHADER_GROUP_SHADER_GENERAL_KHR";
+               case VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR:    return "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR";
+               case VK_SHADER_GROUP_SHADER_ANY_HIT_KHR:                return "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR";
+               case VK_SHADER_GROUP_SHADER_INTERSECTION_KHR:   return "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR";
+               case VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR:               return "VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR";
+               default:                                                                                return DE_NULL;
+       }
+}
+
+const char* getQueryResultStatusKHRName (VkQueryResultStatusKHR value)
+{
+       switch (value)
+       {
+               case VK_QUERY_RESULT_STATUS_ERROR_KHR:          return "VK_QUERY_RESULT_STATUS_ERROR_KHR";
+               case VK_QUERY_RESULT_STATUS_NOT_READY_KHR:      return "VK_QUERY_RESULT_STATUS_NOT_READY_KHR";
+               case VK_QUERY_RESULT_STATUS_COMPLETE_KHR:       return "VK_QUERY_RESULT_STATUS_COMPLETE_KHR";
+               case VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR:       return "VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR";
+               default:                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264ChromaFormatIdcName (StdVideoH264ChromaFormatIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_chroma_format_idc_monochrome:       return "std_video_h264_chroma_format_idc_monochrome";
+               case std_video_h264_chroma_format_idc_420:                      return "std_video_h264_chroma_format_idc_420";
+               case std_video_h264_chroma_format_idc_422:                      return "std_video_h264_chroma_format_idc_422";
+               case std_video_h264_chroma_format_idc_444:                      return "std_video_h264_chroma_format_idc_444";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264ProfileIdcName (StdVideoH264ProfileIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_profile_idc_baseline:                               return "std_video_h264_profile_idc_baseline";
+               case std_video_h264_profile_idc_main:                                   return "std_video_h264_profile_idc_main";
+               case std_video_h264_profile_idc_high:                                   return "std_video_h264_profile_idc_high";
+               case std_video_h264_profile_idc_high_444_predictive:    return "std_video_h264_profile_idc_high_444_predictive";
+               case std_video_h264_profile_idc_invalid:                                return "std_video_h264_profile_idc_invalid";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH264LevelName (StdVideoH264Level value)
+{
+       switch (value)
+       {
+               case std_video_h264_level_1_0:          return "std_video_h264_level_1_0";
+               case std_video_h264_level_1_1:          return "std_video_h264_level_1_1";
+               case std_video_h264_level_1_2:          return "std_video_h264_level_1_2";
+               case std_video_h264_level_1_3:          return "std_video_h264_level_1_3";
+               case std_video_h264_level_2_0:          return "std_video_h264_level_2_0";
+               case std_video_h264_level_2_1:          return "std_video_h264_level_2_1";
+               case std_video_h264_level_2_2:          return "std_video_h264_level_2_2";
+               case std_video_h264_level_3_0:          return "std_video_h264_level_3_0";
+               case std_video_h264_level_3_1:          return "std_video_h264_level_3_1";
+               case std_video_h264_level_3_2:          return "std_video_h264_level_3_2";
+               case std_video_h264_level_4_0:          return "std_video_h264_level_4_0";
+               case std_video_h264_level_4_1:          return "std_video_h264_level_4_1";
+               case std_video_h264_level_4_2:          return "std_video_h264_level_4_2";
+               case std_video_h264_level_5_0:          return "std_video_h264_level_5_0";
+               case std_video_h264_level_5_1:          return "std_video_h264_level_5_1";
+               case std_video_h264_level_5_2:          return "std_video_h264_level_5_2";
+               case std_video_h264_level_6_0:          return "std_video_h264_level_6_0";
+               case std_video_h264_level_6_1:          return "std_video_h264_level_6_1";
+               case std_video_h264_level_6_2:          return "std_video_h264_level_6_2";
+               case std_video_h264_level_invalid:      return "std_video_h264_level_invalid";
+               default:                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264PocTypeName (StdVideoH264PocType value)
+{
+       switch (value)
+       {
+               case std_video_h264_poc_type_0:                 return "std_video_h264_poc_type_0";
+               case std_video_h264_poc_type_1:                 return "std_video_h264_poc_type_1";
+               case std_video_h264_poc_type_2:                 return "std_video_h264_poc_type_2";
+               case std_video_h264_poc_type_invalid:   return "std_video_h264_poc_type_invalid";
+               default:                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH264AspectRatioIdcName (StdVideoH264AspectRatioIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_aspect_ratio_idc_unspecified:       return "std_video_h264_aspect_ratio_idc_unspecified";
+               case std_video_h264_aspect_ratio_idc_square:            return "std_video_h264_aspect_ratio_idc_square";
+               case std_video_h264_aspect_ratio_idc_12_11:                     return "std_video_h264_aspect_ratio_idc_12_11";
+               case std_video_h264_aspect_ratio_idc_10_11:                     return "std_video_h264_aspect_ratio_idc_10_11";
+               case std_video_h264_aspect_ratio_idc_16_11:                     return "std_video_h264_aspect_ratio_idc_16_11";
+               case std_video_h264_aspect_ratio_idc_40_33:                     return "std_video_h264_aspect_ratio_idc_40_33";
+               case std_video_h264_aspect_ratio_idc_24_11:                     return "std_video_h264_aspect_ratio_idc_24_11";
+               case std_video_h264_aspect_ratio_idc_20_11:                     return "std_video_h264_aspect_ratio_idc_20_11";
+               case std_video_h264_aspect_ratio_idc_32_11:                     return "std_video_h264_aspect_ratio_idc_32_11";
+               case std_video_h264_aspect_ratio_idc_80_33:                     return "std_video_h264_aspect_ratio_idc_80_33";
+               case std_video_h264_aspect_ratio_idc_18_11:                     return "std_video_h264_aspect_ratio_idc_18_11";
+               case std_video_h264_aspect_ratio_idc_15_11:                     return "std_video_h264_aspect_ratio_idc_15_11";
+               case std_video_h264_aspect_ratio_idc_64_33:                     return "std_video_h264_aspect_ratio_idc_64_33";
+               case std_video_h264_aspect_ratio_idc_160_99:            return "std_video_h264_aspect_ratio_idc_160_99";
+               case std_video_h264_aspect_ratio_idc_4_3:                       return "std_video_h264_aspect_ratio_idc_4_3";
+               case std_video_h264_aspect_ratio_idc_3_2:                       return "std_video_h264_aspect_ratio_idc_3_2";
+               case std_video_h264_aspect_ratio_idc_2_1:                       return "std_video_h264_aspect_ratio_idc_2_1";
+               case std_video_h264_aspect_ratio_idc_extended_sar:      return "std_video_h264_aspect_ratio_idc_extended_sar";
+               case std_video_h264_aspect_ratio_idc_invalid:           return "std_video_h264_aspect_ratio_idc_invalid";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264WeightedBiPredIdcName (StdVideoH264WeightedBiPredIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_default_weighted_b_slices_prediction_idc:   return "std_video_h264_default_weighted_b_slices_prediction_idc";
+               case std_video_h264_explicit_weighted_b_slices_prediction_idc:  return "std_video_h264_explicit_weighted_b_slices_prediction_idc";
+               case std_video_h264_implicit_weighted_b_slices_prediction_idc:  return "std_video_h264_implicit_weighted_b_slices_prediction_idc";
+               case std_video_h264_invalid_weighted_b_slices_prediction_idc:   return "std_video_h264_invalid_weighted_b_slices_prediction_idc";
+               default:                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH264ModificationOfPicNumsIdcName (StdVideoH264ModificationOfPicNumsIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_modification_of_pic_nums_idc_short_term_subtract:   return "std_video_h264_modification_of_pic_nums_idc_short_term_subtract";
+               case std_video_h264_modification_of_pic_nums_idc_short_term_add:                return "std_video_h264_modification_of_pic_nums_idc_short_term_add";
+               case std_video_h264_modification_of_pic_nums_idc_long_term:                             return "std_video_h264_modification_of_pic_nums_idc_long_term";
+               case std_video_h264_modification_of_pic_nums_idc_end:                                   return "std_video_h264_modification_of_pic_nums_idc_end";
+               case std_video_h264_modification_of_pic_nums_idc_invalid:                               return "std_video_h264_modification_of_pic_nums_idc_invalid";
+               default:                                                                                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH264MemMgmtControlOpName (StdVideoH264MemMgmtControlOp value)
+{
+       switch (value)
+       {
+               case std_video_h264_mem_mgmt_control_op_end:                                            return "std_video_h264_mem_mgmt_control_op_end";
+               case std_video_h264_mem_mgmt_control_op_unmark_short_term:                      return "std_video_h264_mem_mgmt_control_op_unmark_short_term";
+               case std_video_h264_mem_mgmt_control_op_unmark_long_term:                       return "std_video_h264_mem_mgmt_control_op_unmark_long_term";
+               case std_video_h264_mem_mgmt_control_op_mark_long_term:                         return "std_video_h264_mem_mgmt_control_op_mark_long_term";
+               case std_video_h264_mem_mgmt_control_op_set_max_long_term_index:        return "std_video_h264_mem_mgmt_control_op_set_max_long_term_index";
+               case std_video_h264_mem_mgmt_control_op_unmark_all:                                     return "std_video_h264_mem_mgmt_control_op_unmark_all";
+               case std_video_h264_mem_mgmt_control_op_mark_current_as_long_term:      return "std_video_h264_mem_mgmt_control_op_mark_current_as_long_term";
+               case std_video_h264_mem_mgmt_control_op_invalid:                                        return "std_video_h264_mem_mgmt_control_op_invalid";
+               default:                                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264CabacInitIdcName (StdVideoH264CabacInitIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_cabac_init_idc_0:           return "std_video_h264_cabac_init_idc_0";
+               case std_video_h264_cabac_init_idc_1:           return "std_video_h264_cabac_init_idc_1";
+               case std_video_h264_cabac_init_idc_2:           return "std_video_h264_cabac_init_idc_2";
+               case std_video_h264_cabac_init_idc_invalid:     return "std_video_h264_cabac_init_idc_invalid";
+               default:                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264DisableDeblockingFilterIdcName (StdVideoH264DisableDeblockingFilterIdc value)
+{
+       switch (value)
+       {
+               case std_video_h264_disable_deblocking_filter_idc_disabled:     return "std_video_h264_disable_deblocking_filter_idc_disabled";
+               case std_video_h264_disable_deblocking_filter_idc_enabled:      return "std_video_h264_disable_deblocking_filter_idc_enabled";
+               case std_video_h264_disable_deblocking_filter_idc_partial:      return "std_video_h264_disable_deblocking_filter_idc_partial";
+               case std_video_h264_disable_deblocking_filter_idc_invalid:      return "std_video_h264_disable_deblocking_filter_idc_invalid";
+               default:                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264PictureTypeName (StdVideoH264PictureType value)
+{
+       switch (value)
+       {
+               case std_video_h264_picture_type_i:                     return "std_video_h264_picture_type_i";
+               case std_video_h264_picture_type_p:                     return "std_video_h264_picture_type_p";
+               case std_video_h264_picture_type_b:                     return "std_video_h264_picture_type_b";
+               case std_video_h264_picture_type_invalid:       return "std_video_h264_picture_type_invalid";
+               default:                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH264SliceTypeName (StdVideoH264SliceType value)
+{
+       switch (value)
+       {
+               case std_video_h264_slice_type_i:               return "std_video_h264_slice_type_i";
+               case std_video_h264_slice_type_p:               return "std_video_h264_slice_type_p";
+               case std_video_h264_slice_type_b:               return "std_video_h264_slice_type_b";
+               case std_video_h264_slice_type_invalid: return "std_video_h264_slice_type_invalid";
+               default:                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH264NonVclNaluTypeName (StdVideoH264NonVclNaluType value)
+{
+       switch (value)
+       {
+               case std_video_h264_non_vcl_nalu_type_sps:                              return "std_video_h264_non_vcl_nalu_type_sps";
+               case std_video_h264_non_vcl_nalu_type_pps:                              return "std_video_h264_non_vcl_nalu_type_pps";
+               case std_video_h264_non_vcl_nalu_type_aud:                              return "std_video_h264_non_vcl_nalu_type_aud";
+               case std_video_h264_non_vcl_nalu_type_prefix:                   return "std_video_h264_non_vcl_nalu_type_prefix";
+               case std_video_h264_non_vcl_nalu_type_end_of_sequence:  return "std_video_h264_non_vcl_nalu_type_end_of_sequence";
+               case std_video_h264_non_vcl_nalu_type_end_of_stream:    return "std_video_h264_non_vcl_nalu_type_end_of_stream";
+               case std_video_h264_non_vcl_nalu_type_precoded:                 return "std_video_h264_non_vcl_nalu_type_precoded";
+               case std_video_h264_non_vcl_nalu_type_invalid:                  return "std_video_h264_non_vcl_nalu_type_invalid";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getdVideoH265ChromaFormatIdcName (StdVideoH265ChromaFormatIdc value)
+{
+       switch (value)
+       {
+               case std_video_h265_chroma_format_idc_monochrome:       return "std_video_h265_chroma_format_idc_monochrome";
+               case std_video_h265_chroma_format_idc_420:                      return "std_video_h265_chroma_format_idc_420";
+               case std_video_h265_chroma_format_idc_422:                      return "std_video_h265_chroma_format_idc_422";
+               case std_video_h265_chroma_format_idc_444:                      return "std_video_h265_chroma_format_idc_444";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH265ProfileIdcName (StdVideoH265ProfileIdc value)
+{
+       switch (value)
+       {
+               case std_video_h265_profile_idc_main:                                           return "std_video_h265_profile_idc_main";
+               case std_video_h265_profile_idc_main_10:                                        return "std_video_h265_profile_idc_main_10";
+               case std_video_h265_profile_idc_main_still_picture:                     return "std_video_h265_profile_idc_main_still_picture";
+               case std_video_h265_profile_idc_format_range_extensions:        return "std_video_h265_profile_idc_format_range_extensions";
+               case std_video_h265_profile_idc_scc_extensions:                         return "std_video_h265_profile_idc_scc_extensions";
+               case std_video_h265_profile_idc_invalid:                                        return "std_video_h265_profile_idc_invalid";
+               default:                                                                                                        return DE_NULL;
+       }
+}
+
+const char* getdVideoH265LevelName (StdVideoH265Level value)
+{
+       switch (value)
+       {
+               case std_video_h265_level_1_0:          return "std_video_h265_level_1_0";
+               case std_video_h265_level_2_0:          return "std_video_h265_level_2_0";
+               case std_video_h265_level_2_1:          return "std_video_h265_level_2_1";
+               case std_video_h265_level_3_0:          return "std_video_h265_level_3_0";
+               case std_video_h265_level_3_1:          return "std_video_h265_level_3_1";
+               case std_video_h265_level_4_0:          return "std_video_h265_level_4_0";
+               case std_video_h265_level_4_1:          return "std_video_h265_level_4_1";
+               case std_video_h265_level_5_0:          return "std_video_h265_level_5_0";
+               case std_video_h265_level_5_1:          return "std_video_h265_level_5_1";
+               case std_video_h265_level_5_2:          return "std_video_h265_level_5_2";
+               case std_video_h265_level_6_0:          return "std_video_h265_level_6_0";
+               case std_video_h265_level_6_1:          return "std_video_h265_level_6_1";
+               case std_video_h265_level_6_2:          return "std_video_h265_level_6_2";
+               case std_video_h265_level_invalid:      return "std_video_h265_level_invalid";
+               default:                                                        return DE_NULL;
+       }
+}
+
+const char* getFullScreenExclusiveEXTName (VkFullScreenExclusiveEXT value)
+{
+       switch (value)
+       {
+               case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT";
+               case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT";
+               case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT:                           return "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT";
+               case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT:       return "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT";
+               case VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT:                                     return "VK_FULL_SCREEN_EXCLUSIVE_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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,                                "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,                 "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"),
+               tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,                "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,                              "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
+               tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,               "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
+               tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,                             "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"),
+               tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,                    "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,                               "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"),
+               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_COMMAND_PREPROCESS_READ_BIT_NV,                                  "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"),
+               tcu::Format::BitDesc(VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV,                                 "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"),
+               tcu::Format::BitDesc(VK_ACCESS_NONE_KHR,                                                                                "VK_ACCESS_NONE_KHR"),
+               tcu::Format::BitDesc(VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,                                  "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"),
+               tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,                              "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"),
+               tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV,                             "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"),
+               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_PLANE_0_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
+               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_VIDEO_DECODE_OUTPUT_BIT_KHR,                                                                                                             "VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR,                                                                                                                "VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR,                                                                    "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT,                                                                                                    "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,                                                                                "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR,                                                                                                              "VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR,                                                                                                                "VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,                                                                                                 "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,                                                    "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,                   "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,                   "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,                                                                                                                                "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,                                                                                                  "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_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_CORNER_SAMPLED_BIT_NV,                                             "VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"),
+               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_SUBSAMPLED_BIT_EXT,                                                "VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,               "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,                               "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,               "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,                                    "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT_KHR,                                                  "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT_KHR,                                                             "VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
+               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_VIDEO_DECODE_DST_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,                               "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
+               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_VIDEO_ENCODE_DST_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI,                                 "VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"),
+               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_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::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR,     "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
+               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_DEVICE_COHERENT_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV,            "VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"),
+               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_VIDEO_DECODE_BIT_KHR,     "VK_QUEUE_VIDEO_DECODE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_QUEUE_VIDEO_ENCODE_BIT_KHR,     "VK_QUEUE_VIDEO_ENCODE_BIT_KHR"),
+               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_TRANSFORM_FEEDBACK_BIT_EXT,                                      "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,                           "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,            "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,                                      "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV,                                                      "VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV,                                                      "VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT,                        "VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"),
+               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_COMMAND_PREPROCESS_BIT_NV,                                       "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE_KHR,                                                                        "VK_PIPELINE_STAGE_NONE_KHR"),
+               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_RAY_TRACING_SHADER_BIT_NV,                                       "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,                     "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"),
+               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::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)
+{
+       static const tcu::Format::BitDesc 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"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
+{
+       static const tcu::Format::BitDesc 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"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               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_WITH_STATUS_BIT_KHR,       "VK_QUERY_RESULT_WITH_STATUS_BIT_KHR"),
+               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_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM,                                               "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+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_VIDEO_DECODE_SRC_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,                                         "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT,                         "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,                                                     "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR,      "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR,                            "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,                                                      "VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,                                                                        "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,                                                     "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR,                                                     "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                                                                        "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT,         "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"),
+               tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT,        "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"),
+               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::BitDesc(VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT,  "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"),
+               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_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR,                    "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,                "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR,                               "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,               "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR,                                             "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR,                                                 "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, "VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV,                                                                   "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR,                                                             "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,                               "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV,                                                               "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_LIBRARY_BIT_KHR,                                                                                "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT,                              "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT,                                                "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV,                                                "VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,                                                                                  "VK_PIPELINE_CREATE_DISPATCH_BASE"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,                                   "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,                                                                              "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
+               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_RAYGEN_BIT_KHR,                            "VK_SHADER_STAGE_RAYGEN_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_KHR,                           "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,                       "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_KHR,                                      "VK_SHADER_STAGE_MISS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_KHR,                      "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_KHR,                          "VK_SHADER_STAGE_CALLABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_TASK_BIT_NV,                                       "VK_SHADER_STAGE_TASK_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_MESH_BIT_NV,                                       "VK_SHADER_STAGE_MESH_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI,        "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_NV,                                     "VK_SHADER_STAGE_RAYGEN_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_NV,                            "VK_SHADER_STAGE_ANY_HIT_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,                        "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_NV,                                       "VK_SHADER_STAGE_MISS_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_NV,                       "VK_SHADER_STAGE_INTERSECTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_NV,                           "VK_SHADER_STAGE_CALLABLE_BIT_NV"),
+               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_SUBSAMPLED_BIT_EXT,                                                      "VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT,        "VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"),
+               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_HOST_ONLY_BIT_VALVE,                     "VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,       "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM,                      "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
+       };
+       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_PUSH_DESCRIPTOR_BIT_KHR,                   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE,                  "VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT,    "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM,                                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
+       };
+       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_VIEW_LOCAL_BIT_KHR,          "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
+               tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,        "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
+               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_IMAGELESS_BIT_KHR,   "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM,  "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
+       };
+       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_TRANSFORM_BIT_QCOM,  "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"),
+               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_PER_VIEW_ATTRIBUTES_BIT_NVX,                "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
+               tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,   "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
+               tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM,                   "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"),
+               tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM,                    "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"),
+               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_PARTITIONED_BIT_NV,    "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
+               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_COPY_SRC_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
+               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_DEVICE_MASK_BIT_KHR,                                    "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR,                                 "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,  "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,                                             "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+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_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,        "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
+               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_ZIRCON_VMO_BIT_FUCHSIA,                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV,                                        "VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
+               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_DEDICATED_ONLY_BIT_KHR, "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
+               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_OPAQUE_FD_BIT_KHR,                   "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,    "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                             "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
+               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_EXPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
+               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_TEMPORARY_BIT_KHR,         "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
+               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_TEMPORARY_BIT_KHR,             "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
+               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_ZIRCON_EVENT_BIT_FUCHSIA,        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"),
+               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_OPAQUE_FD_BIT_KHR,                       "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,            "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,                     "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
+               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_EXPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
+               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_NONE_KHR,                          "VK_RESOLVE_MODE_NONE_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,       "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,           "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,                       "VK_RESOLVE_MODE_MIN_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,                       "VK_RESOLVE_MODE_MAX_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM,        "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,                               "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,             "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,                                 "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,               "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM,                                  "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT,                         "VK_SEMAPHORE_WAIT_ANY_BIT"),
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,                     "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM,      "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               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> 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> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,                       "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,                           "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,       "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,                                     "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,                                     "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT,            "VK_DEBUG_REPORT_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> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,                "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV,              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,  "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
+               tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV,  "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT,                 "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT,   "VK_CONDITIONAL_RENDERING_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> 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> getGeometryFlagsKHRStr (VkGeometryFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_KHR,                                                        "VK_GEOMETRY_OPAQUE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,       "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_NV,                                                         "VK_GEOMETRY_OPAQUE_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV,        "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR,                                        "VK_GEOMETRY_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> getGeometryInstanceFlagsKHRStr (VkGeometryInstanceFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,         "VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,                         "VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,                                         "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,                                      "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,      "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,                         "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,       "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,                                          "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV,                                       "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"),
+               tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR,                                       "VK_GEOMETRY_INSTANCE_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> getBuildAccelerationStructureFlagsKHRStr (VkBuildAccelerationStructureFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,              "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,  "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,                "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV,                             "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,               "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,   "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,                 "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,    "VK_BUILD_ACCELERATION_STRUCTURE_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> getPipelineCompilerControlFlagsAMDStr (VkPipelineCompilerControlFlagsAMD value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD,       "VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getPipelineCreationFeedbackFlagsEXTStr (VkPipelineCreationFeedbackFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT,                                                       "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT,      "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT,          "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT,                                      "VK_PIPELINE_CREATION_FEEDBACK_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> getShaderCorePropertiesFlagsAMDStr (VkShaderCorePropertiesFlagsAMD value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD,  "VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getToolPurposeFlagsEXTStr (VkToolPurposeFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_VALIDATION_BIT_EXT,                        "VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_PROFILING_BIT_EXT,                         "VK_TOOL_PURPOSE_PROFILING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_TRACING_BIT_EXT,                           "VK_TOOL_PURPOSE_TRACING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT,       "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT,        "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT,           "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT,                     "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"),
+               tcu::Format::BitDesc(VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT,            "VK_TOOL_PURPOSE_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> getIndirectStateFlagsNVStr (VkIndirectStateFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV,   "VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"),
+               tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV,   "VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVStr (VkIndirectCommandsLayoutUsageFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV,      "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"),
+               tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"),
+               tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV,      "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"),
+               tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV,           "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getPrivateDataSlotCreateFlagsEXTStr (VkPrivateDataSlotCreateFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT,        "VK_PRIVATE_DATA_SLOT_CREATE_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> getDeviceDiagnosticsConfigFlagsNVStr (VkDeviceDiagnosticsConfigFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV,              "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"),
+               tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV,              "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"),
+               tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV,  "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"),
+               tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV,                                "VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,    "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV,                                                    "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR,                                   "VK_ACCELERATION_STRUCTURE_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> getVideoCodecOperationFlagsKHRStr (VkVideoCodecOperationFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR,                  "VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT,              "VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT,              "VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT,              "VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR,   "VK_VIDEO_CODEC_OPERATION_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> getVideoChromaSubsamplingFlagsKHRStr (VkVideoChromaSubsamplingFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR,                       "VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR,            "VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR,                           "VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR,                           "VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR,                           "VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR,        "VK_VIDEO_CHROMA_SUBSAMPLING_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> getVideoComponentBitDepthFlagsKHRStr (VkVideoComponentBitDepthFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR,                          "VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR,                            "VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR,                           "VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR,                           "VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR,       "VK_VIDEO_COMPONENT_BIT_DEPTH_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> getVideoCapabilityFlagsKHRStr (VkVideoCapabilityFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR,                     "VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR,     "VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR,                        "VK_VIDEO_CAPABILITY_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> getVideoSessionCreateFlagsKHRStr (VkVideoSessionCreateFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_DEFAULT_KHR,                               "VK_VIDEO_SESSION_CREATE_DEFAULT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR, "VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR,    "VK_VIDEO_SESSION_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> getVideoCodingControlFlagsKHRStr (VkVideoCodingControlFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_DEFAULT_KHR,                               "VK_VIDEO_CODING_CONTROL_DEFAULT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR,                             "VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR,    "VK_VIDEO_CODING_CONTROL_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> getVideoCodingQualityPresetFlagsKHRStr (VkVideoCodingQualityPresetFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR,            "VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR,                     "VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR,                      "VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR,            "VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR,     "VK_VIDEO_CODING_QUALITY_PRESET_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> getVideoDecodeFlagsKHRStr (VkVideoDecodeFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_DEFAULT_KHR,                               "VK_VIDEO_DECODE_DEFAULT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_RESERVED_0_BIT_KHR,                "VK_VIDEO_DECODE_RESERVED_0_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR,    "VK_VIDEO_DECODE_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> getVideoEncodeFlagsKHRStr (VkVideoEncodeFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_DEFAULT_KHR,                               "VK_VIDEO_ENCODE_DEFAULT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR,                "VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR,    "VK_VIDEO_ENCODE_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> getVideoEncodeRateControlFlagsKHRStr (VkVideoEncodeRateControlFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR,                          "VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR,                        "VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR,       "VK_VIDEO_ENCODE_RATE_CONTROL_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> getVideoEncodeRateControlModeFlagsKHRStr (VkVideoEncodeRateControlModeFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR,                    "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR,                             "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR,                             "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR,  "VK_VIDEO_ENCODE_RATE_CONTROL_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> getVideoEncodeH264CapabilityFlagsEXTStr (VkVideoEncodeH264CapabilityFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT,                                                     "VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT,                                                     "VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT,         "VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT,                                     "VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT,                          "VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT,           "VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT,        "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT,         "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT,         "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT,          "VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT,     "VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT,                            "VK_VIDEO_ENCODE_H264_CAPABILITY_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> getVideoEncodeH264InputModeFlagsEXTStr (VkVideoEncodeH264InputModeFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT,                             "VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT,                             "VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT,                   "VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,    "VK_VIDEO_ENCODE_H264_INPUT_MODE_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> getVideoEncodeH264OutputModeFlagsEXTStr (VkVideoEncodeH264OutputModeFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT,                    "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT,                    "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT,                  "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,   "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_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> getVideoEncodeH264CreateFlagsEXTStr (VkVideoEncodeH264CreateFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT,                           "VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT,            "VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT,        "VK_VIDEO_ENCODE_H264_CREATE_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> getVideoDecodeH264PictureLayoutFlagsEXTStr (VkVideoDecodeH264PictureLayoutFlagsEXT value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT,                                               "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT,  "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT,    "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT"),
+               tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT,                                "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_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);
+}
+
+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> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags 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> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags 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> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV 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> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getPipelineCoverageReductionStateCreateFlagsNVStr (VkPipelineCoverageReductionStateCreateFlagsNV 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);
+}
+
+tcu::Format::Bitfield<32> getDeviceMemoryReportFlagsEXTStr (VkDeviceMemoryReportFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getAccelerationStructureMotionInfoFlagsNVStr (VkAccelerationStructureMotionInfoFlagsNV value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getAccelerationStructureMotionInstanceFlagsNVStr (VkAccelerationStructureMotionInstanceFlagsNV value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getVideoBeginCodingFlagsKHRStr (VkVideoBeginCodingFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getVideoEndCodingFlagsKHRStr (VkVideoEndCodingFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getVideoDecodeH264CreateFlagsEXTStr (VkVideoDecodeH264CreateFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getVideoDecodeH265CreateFlagsEXTStr (VkVideoDecodeH265CreateFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getImagePipeSurfaceCreateFlagsFUCHSIAStr (VkImagePipeSurfaceCreateFlagsFUCHSIA value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getStreamDescriptorSurfaceCreateFlagsGGPStr (VkStreamDescriptorSurfaceCreateFlagsGGP value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getMetalSurfaceCreateFlagsEXTStr (VkMetalSurfaceCreateFlagsEXT value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
+tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsNVStr (VkBuildAccelerationStructureFlagsNV value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,              "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,  "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,                "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV,                             "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,               "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,   "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,                 "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
+               tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,    "VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+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 VkPipelineCacheHeaderVersionOne& value)
+{
+       s << "VkPipelineCacheHeaderVersionOne = {\n";
+       s << "\theaderSize = " << value.headerSize << '\n';
+       s << "\theaderVersion = " << value.headerVersion << '\n';
+       s << "\tvendorID = " << value.vendorID << '\n';
+       s << "\tdeviceID = " << value.deviceID << '\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 << '}';
+       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 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;
+}
+
+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;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
+{
+       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';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
+{
+       s << "VkSparseImageMemoryBindInfo = {\n";
+       s << "\timage = " << value.image << '\n';
+       s << "\tbindCount = " << value.bindCount << '\n';
+       s << "\tpBinds = " << value.pBinds << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
+{
+       s << "VkBindSparseInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       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 << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
+{
+       s << "VkSparseImageFormatProperties = {\n";
+       s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
+       s << "\timageGranularity = " << value.imageGranularity << '\n';
+       s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+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 << "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 VkShaderModuleCreateInfo& value)
+{
+       s << "VkShaderModuleCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
+       s << "\tcodeSize = " << value.codeSize << '\n';
+       s << "\tpCode = " << value.pCode << '\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 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 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 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 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 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 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 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 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 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 VkDescriptorUpdateTemplateEntry& value)
+{
+       s << "VkDescriptorUpdateTemplateEntry = {\n";
+       s << "\tdstBinding = " << value.dstBinding << '\n';
+       s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
+       s << "\tdescriptorCount = " << value.descriptorCount << '\n';
+       s << "\tdescriptorType = " << value.descriptorType << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << "\tstride = " << value.stride << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
+{
+       s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
+       s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
+       s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
+       s << "\ttemplateType = " << value.templateType << '\n';
+       s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
+       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
+       s << "\tset = " << value.set << '\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;
+}
+
+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 VkPhysicalDevicePushDescriptorPropertiesKHR& value)
+{
+       s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\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 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 VkSurfaceProtectedCapabilitiesKHR& value)
+{
+       s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsupportsProtected = " << value.supportsProtected << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePresentWaitFeaturesKHR& value)
+{
+       s << "VkPhysicalDevicePresentWaitFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpresentWait = " << value.presentWait << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value)
+{
+       s << "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipelineExecutableInfo = " << value.pipelineExecutableInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineInfoKHR& value)
+{
+       s << "VkPipelineInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipeline = " << value.pipeline << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value)
+{
+       s << "VkPipelineExecutablePropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstages = " << getShaderStageFlagsStr(value.stages) << '\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 << "\tdescription = " << (const char*)value.description << '\n';
+       s << "\tsubgroupSize = " << value.subgroupSize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInfoKHR& value)
+{
+       s << "VkPipelineExecutableInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipeline = " << value.pipeline << '\n';
+       s << "\texecutableIndex = " << value.executableIndex << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticValueKHR& value)
+{
+       s << "VkPipelineExecutableStatisticValueKHR = {\n";
+       s << "\tb32 = " << value.b32 << '\n';
+       s << "\ti64 = " << value.i64 << '\n';
+       s << "\tu64 = " << value.u64 << '\n';
+       s << "\tf64 = " << value.f64 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticKHR& value)
+{
+       s << "VkPipelineExecutableStatisticKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\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 << "\tdescription = " << (const char*)value.description << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << "\tvalue = " << value.value << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInternalRepresentationKHR& value)
+{
+       s << "VkPipelineExecutableInternalRepresentationKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\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 << "\tdescription = " << (const char*)value.description << '\n';
+       s << "\tisText = " << value.isText << '\n';
+       s << "\tdataSize = " << value.dataSize << '\n';
+       s << "\tpData = " << value.pData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderIntegerDotProduct = " << value.shaderIntegerDotProduct << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR& value)
+{
+       s << "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tintegerDotProduct8BitUnsignedAccelerated = " << value.integerDotProduct8BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProduct8BitSignedAccelerated = " << value.integerDotProduct8BitSignedAccelerated << '\n';
+       s << "\tintegerDotProduct8BitMixedSignednessAccelerated = " << value.integerDotProduct8BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProduct4x8BitPackedUnsignedAccelerated = " << value.integerDotProduct4x8BitPackedUnsignedAccelerated << '\n';
+       s << "\tintegerDotProduct4x8BitPackedSignedAccelerated = " << value.integerDotProduct4x8BitPackedSignedAccelerated << '\n';
+       s << "\tintegerDotProduct4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProduct4x8BitPackedMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProduct16BitUnsignedAccelerated = " << value.integerDotProduct16BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProduct16BitSignedAccelerated = " << value.integerDotProduct16BitSignedAccelerated << '\n';
+       s << "\tintegerDotProduct16BitMixedSignednessAccelerated = " << value.integerDotProduct16BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProduct32BitUnsignedAccelerated = " << value.integerDotProduct32BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProduct32BitSignedAccelerated = " << value.integerDotProduct32BitSignedAccelerated << '\n';
+       s << "\tintegerDotProduct32BitMixedSignednessAccelerated = " << value.integerDotProduct32BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProduct64BitUnsignedAccelerated = " << value.integerDotProduct64BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProduct64BitSignedAccelerated = " << value.integerDotProduct64BitSignedAccelerated << '\n';
+       s << "\tintegerDotProduct64BitMixedSignednessAccelerated = " << value.integerDotProduct64BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating8BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating8BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitSignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating16BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating16BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitSignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating32BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating32BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitSignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating64BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating64BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitSignedAccelerated << '\n';
+       s << "\tintegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineLibraryCreateInfoKHR& value)
+{
+       s << "VkPipelineLibraryCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tlibraryCount = " << value.libraryCount << '\n';
+       s << "\tpLibraries = " << value.pLibraries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentIdKHR& value)
+{
+       s << "VkPresentIdKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tswapchainCount = " << value.swapchainCount << '\n';
+       s << "\tpPresentIds = " << value.pPresentIds << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePresentIdFeaturesKHR& value)
+{
+       s << "VkPhysicalDevicePresentIdFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpresentId = " << value.presentId << '\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 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderSubgroupUniformControlFlow = " << value.shaderSubgroupUniformControlFlow << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderZeroInitializeWorkgroupMemory = " << value.shaderZeroInitializeWorkgroupMemory << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tworkgroupMemoryExplicitLayout = " << value.workgroupMemoryExplicitLayout << '\n';
+       s << "\tworkgroupMemoryExplicitLayoutScalarBlockLayout = " << value.workgroupMemoryExplicitLayoutScalarBlockLayout << '\n';
+       s << "\tworkgroupMemoryExplicitLayout8BitAccess = " << value.workgroupMemoryExplicitLayout8BitAccess << '\n';
+       s << "\tworkgroupMemoryExplicitLayout16BitAccess = " << value.workgroupMemoryExplicitLayout16BitAccess << '\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 VkDebugReportCallbackCreateInfoEXT& value)
+{
+       s << "VkDebugReportCallbackCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
+       s << "\tpfnCallback = " << value.pfnCallback << '\n';
+       s << "\tpUserData = " << value.pUserData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
+{
+       s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
+{
+       s << "VkDebugMarkerObjectNameInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tobjectType = " << value.objectType << '\n';
+       s << "\tobject = " << value.object << '\n';
+       s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
+{
+       s << "VkDebugMarkerObjectTagInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tobjectType = " << value.objectType << '\n';
+       s << "\tobject = " << value.object << '\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 VkDebugMarkerMarkerInfoEXT& value)
+{
+       s << "VkDebugMarkerMarkerInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\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 VkDedicatedAllocationImageCreateInfoNV& value)
+{
+       s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
+{
+       s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
+{
+       s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\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 VkPhysicalDeviceTransformFeedbackFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceTransformFeedbackFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttransformFeedback = " << value.transformFeedback << '\n';
+       s << "\tgeometryStreams = " << value.geometryStreams << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceTransformFeedbackPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxTransformFeedbackStreams = " << value.maxTransformFeedbackStreams << '\n';
+       s << "\tmaxTransformFeedbackBuffers = " << value.maxTransformFeedbackBuffers << '\n';
+       s << "\tmaxTransformFeedbackBufferSize = " << value.maxTransformFeedbackBufferSize << '\n';
+       s << "\tmaxTransformFeedbackStreamDataSize = " << value.maxTransformFeedbackStreamDataSize << '\n';
+       s << "\tmaxTransformFeedbackBufferDataSize = " << value.maxTransformFeedbackBufferDataSize << '\n';
+       s << "\tmaxTransformFeedbackBufferDataStride = " << value.maxTransformFeedbackBufferDataStride << '\n';
+       s << "\ttransformFeedbackQueries = " << value.transformFeedbackQueries << '\n';
+       s << "\ttransformFeedbackStreamsLinesTriangles = " << value.transformFeedbackStreamsLinesTriangles << '\n';
+       s << "\ttransformFeedbackRasterizationStreamSelect = " << value.transformFeedbackRasterizationStreamSelect << '\n';
+       s << "\ttransformFeedbackDraw = " << value.transformFeedbackDraw << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value)
+{
+       s << "VkPipelineRasterizationStateStreamCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPipelineRasterizationStateStreamCreateFlagsEXTStr(value.flags) << '\n';
+       s << "\trasterizationStream = " << value.rasterizationStream << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCuModuleCreateInfoNVX& value)
+{
+       s << "VkCuModuleCreateInfoNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdataSize = " << value.dataSize << '\n';
+       s << "\tpData = " << value.pData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCuFunctionCreateInfoNVX& value)
+{
+       s << "VkCuFunctionCreateInfoNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmodule = " << value.module << '\n';
+       s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCuLaunchInfoNVX& value)
+{
+       s << "VkCuLaunchInfoNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfunction = " << value.function << '\n';
+       s << "\tgridDimX = " << value.gridDimX << '\n';
+       s << "\tgridDimY = " << value.gridDimY << '\n';
+       s << "\tgridDimZ = " << value.gridDimZ << '\n';
+       s << "\tblockDimX = " << value.blockDimX << '\n';
+       s << "\tblockDimY = " << value.blockDimY << '\n';
+       s << "\tblockDimZ = " << value.blockDimZ << '\n';
+       s << "\tsharedMemBytes = " << value.sharedMemBytes << '\n';
+       s << "\tparamCount = " << value.paramCount << '\n';
+       s << "\tpParams = " << value.pParams << '\n';
+       s << "\textraCount = " << value.extraCount << '\n';
+       s << "\tpExtras = " << value.pExtras << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageViewHandleInfoNVX& value)
+{
+       s << "VkImageViewHandleInfoNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\timageView = " << value.imageView << '\n';
+       s << "\tdescriptorType = " << value.descriptorType << '\n';
+       s << "\tsampler = " << value.sampler << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageViewAddressPropertiesNVX& value)
+{
+       s << "VkImageViewAddressPropertiesNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
+{
+       s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShaderResourceUsageAMD& value)
+{
+       s << "VkShaderResourceUsageAMD = {\n";
+       s << "\tnumUsedVgprs = " << value.numUsedVgprs << '\n';
+       s << "\tnumUsedSgprs = " << value.numUsedSgprs << '\n';
+       s << "\tldsSizePerLocalWorkGroup = " << value.ldsSizePerLocalWorkGroup << '\n';
+       s << "\tldsUsageSizeInBytes = " << value.ldsUsageSizeInBytes << '\n';
+       s << "\tscratchMemUsageInBytes = " << value.scratchMemUsageInBytes << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShaderStatisticsInfoAMD& value)
+{
+       s << "VkShaderStatisticsInfoAMD = {\n";
+       s << "\tshaderStageMask = " << getShaderStageFlagsStr(value.shaderStageMask) << '\n';
+       s << "\tresourceUsage = " << value.resourceUsage << '\n';
+       s << "\tnumPhysicalVgprs = " << value.numPhysicalVgprs << '\n';
+       s << "\tnumPhysicalSgprs = " << value.numPhysicalSgprs << '\n';
+       s << "\tnumAvailableVgprs = " << value.numAvailableVgprs << '\n';
+       s << "\tnumAvailableSgprs = " << value.numAvailableSgprs << '\n';
+       s << "\tcomputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.computeWorkGroupSize), DE_ARRAY_END(value.computeWorkGroupSize)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCornerSampledImageFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceCornerSampledImageFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcornerSampledImage = " << value.cornerSampledImage << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
+{
+       s << "VkExternalImageFormatPropertiesNV = {\n";
+       s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
+       s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
+       s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
+       s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
+{
+       s << "VkExternalMemoryImageCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
+{
+       s << "VkExportMemoryAllocateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
+{
+       s << "VkValidationFlagsEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
+       s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\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 VkConditionalRenderingBeginInfoEXT& value)
+{
+       s << "VkConditionalRenderingBeginInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tbuffer = " << value.buffer << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
+       s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
+{
+       s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
+{
+       s << "VkViewportWScalingNV = {\n";
+       s << "\txcoeff = " << value.xcoeff << '\n';
+       s << "\tycoeff = " << value.ycoeff << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
+{
+       s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
+       s << "\tviewportCount = " << value.viewportCount << '\n';
+       s << "\tpViewportWScalings = " << value.pViewportWScalings << '\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 VkRefreshCycleDurationGOOGLE& value)
+{
+       s << "VkRefreshCycleDurationGOOGLE = {\n";
+       s << "\trefreshDuration = " << value.refreshDuration << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
+{
+       s << "VkPastPresentationTimingGOOGLE = {\n";
+       s << "\tpresentID = " << value.presentID << '\n';
+       s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
+       s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
+       s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
+       s << "\tpresentMargin = " << value.presentMargin << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
+{
+       s << "VkPresentTimeGOOGLE = {\n";
+       s << "\tpresentID = " << value.presentID << '\n';
+       s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
+{
+       s << "VkPresentTimesInfoGOOGLE = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tswapchainCount = " << value.swapchainCount << '\n';
+       s << "\tpTimes = " << value.pTimes << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
+{
+       s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
+{
+       s << "VkViewportSwizzleNV = {\n";
+       s << "\tx = " << value.x << '\n';
+       s << "\ty = " << value.y << '\n';
+       s << "\tz = " << value.z << '\n';
+       s << "\tw = " << value.w << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
+{
+       s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
+       s << "\tviewportCount = " << value.viewportCount << '\n';
+       s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\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 VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
+       s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceInlineUniformBlockPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
+       s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
+       s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value)
+{
+       s << "VkWriteDescriptorSetInlineUniformBlockEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdataSize = " << value.dataSize << '\n';
+       s << "\tpData = " << value.pData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& value)
+{
+       s << "VkDescriptorPoolInlineUniformBlockCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\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 VkPipelineCoverageToColorStateCreateInfoNV& value)
+{
+       s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
+       s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
+       s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
+{
+       s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
+       s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
+       s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
+       s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
+       s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderSMCount = " << value.shaderSMCount << '\n';
+       s << "\tshaderWarpsPerSM = " << value.shaderWarpsPerSM << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderSMBuiltins = " << value.shaderSMBuiltins << '\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 VkValidationCacheCreateInfoEXT& value)
+{
+       s << "VkValidationCacheCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
+       s << "\tinitialDataSize = " << value.initialDataSize << '\n';
+       s << "\tpInitialData = " << value.pInitialData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
+{
+       s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvalidationCache = " << value.validationCache << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
+{
+       s << "VkShadingRatePaletteNV = {\n";
+       s << "\tshadingRatePaletteEntryCount = " << value.shadingRatePaletteEntryCount << '\n';
+       s << "\tpShadingRatePaletteEntries = " << value.pShadingRatePaletteEntries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value)
+{
+       s << "VkPipelineViewportShadingRateImageStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshadingRateImageEnable = " << value.shadingRateImageEnable << '\n';
+       s << "\tviewportCount = " << value.viewportCount << '\n';
+       s << "\tpShadingRatePalettes = " << value.pShadingRatePalettes << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceShadingRateImageFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshadingRateImage = " << value.shadingRateImage << '\n';
+       s << "\tshadingRateCoarseSampleOrder = " << value.shadingRateCoarseSampleOrder << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImagePropertiesNV& value)
+{
+       s << "VkPhysicalDeviceShadingRateImagePropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshadingRateTexelSize = " << value.shadingRateTexelSize << '\n';
+       s << "\tshadingRatePaletteSize = " << value.shadingRatePaletteSize << '\n';
+       s << "\tshadingRateMaxCoarseSamples = " << value.shadingRateMaxCoarseSamples << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCoarseSampleLocationNV& value)
+{
+       s << "VkCoarseSampleLocationNV = {\n";
+       s << "\tpixelX = " << value.pixelX << '\n';
+       s << "\tpixelY = " << value.pixelY << '\n';
+       s << "\tsample = " << value.sample << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCoarseSampleOrderCustomNV& value)
+{
+       s << "VkCoarseSampleOrderCustomNV = {\n";
+       s << "\tshadingRate = " << value.shadingRate << '\n';
+       s << "\tsampleCount = " << value.sampleCount << '\n';
+       s << "\tsampleLocationCount = " << value.sampleLocationCount << '\n';
+       s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& value)
+{
+       s << "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsampleOrderType = " << value.sampleOrderType << '\n';
+       s << "\tcustomSampleOrderCount = " << value.customSampleOrderCount << '\n';
+       s << "\tpCustomSampleOrders = " << value.pCustomSampleOrders << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoNV& value)
+{
+       s << "VkRayTracingShaderGroupCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tgeneralShader = " << value.generalShader << '\n';
+       s << "\tclosestHitShader = " << value.closestHitShader << '\n';
+       s << "\tanyHitShader = " << value.anyHitShader << '\n';
+       s << "\tintersectionShader = " << value.intersectionShader << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoNV& value)
+{
+       s << "VkRayTracingPipelineCreateInfoNV = {\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 << "\tgroupCount = " << value.groupCount << '\n';
+       s << "\tpGroups = " << value.pGroups << '\n';
+       s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\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 VkGeometryTrianglesNV& value)
+{
+       s << "VkGeometryTrianglesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvertexData = " << value.vertexData << '\n';
+       s << "\tvertexOffset = " << value.vertexOffset << '\n';
+       s << "\tvertexCount = " << value.vertexCount << '\n';
+       s << "\tvertexStride = " << value.vertexStride << '\n';
+       s << "\tvertexFormat = " << value.vertexFormat << '\n';
+       s << "\tindexData = " << value.indexData << '\n';
+       s << "\tindexOffset = " << value.indexOffset << '\n';
+       s << "\tindexCount = " << value.indexCount << '\n';
+       s << "\tindexType = " << value.indexType << '\n';
+       s << "\ttransformData = " << value.transformData << '\n';
+       s << "\ttransformOffset = " << value.transformOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGeometryAABBNV& value)
+{
+       s << "VkGeometryAABBNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taabbData = " << value.aabbData << '\n';
+       s << "\tnumAABBs = " << value.numAABBs << '\n';
+       s << "\tstride = " << value.stride << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGeometryDataNV& value)
+{
+       s << "VkGeometryDataNV = {\n";
+       s << "\ttriangles = " << value.triangles << '\n';
+       s << "\taabbs = " << value.aabbs << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGeometryNV& value)
+{
+       s << "VkGeometryNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tgeometryType = " << value.geometryType << '\n';
+       s << "\tgeometry = " << value.geometry << '\n';
+       s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInfoNV& value)
+{
+       s << "VkAccelerationStructureInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tflags = " << getBuildAccelerationStructureFlagsNVStr(value.flags) << '\n';
+       s << "\tinstanceCount = " << value.instanceCount << '\n';
+       s << "\tgeometryCount = " << value.geometryCount << '\n';
+       s << "\tpGeometries = " << value.pGeometries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoNV& value)
+{
+       s << "VkAccelerationStructureCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcompactedSize = " << value.compactedSize << '\n';
+       s << "\tinfo = " << value.info << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindAccelerationStructureMemoryInfoNV& value)
+{
+       s << "VkBindAccelerationStructureMemoryInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
+       s << "\tmemory = " << value.memory << '\n';
+       s << "\tmemoryOffset = " << value.memoryOffset << '\n';
+       s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
+       s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureNV& value)
+{
+       s << "VkWriteDescriptorSetAccelerationStructureNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
+       s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMemoryRequirementsInfoNV& value)
+{
+       s << "VkAccelerationStructureMemoryRequirementsInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceRayTracingPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
+       s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
+       s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
+       s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
+       s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
+       s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
+       s << "\tmaxTriangleCount = " << value.maxTriangleCount << '\n';
+       s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkTransformMatrixKHR& value)
+{
+       s << "VkTransformMatrixKHR = {\n";
+       s << "\tmatrix = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.matrix), DE_ARRAY_END(value.matrix)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAabbPositionsKHR& value)
+{
+       s << "VkAabbPositionsKHR = {\n";
+       s << "\tminX = " << value.minX << '\n';
+       s << "\tminY = " << value.minY << '\n';
+       s << "\tminZ = " << value.minZ << '\n';
+       s << "\tmaxX = " << value.maxX << '\n';
+       s << "\tmaxY = " << value.maxY << '\n';
+       s << "\tmaxZ = " << value.maxZ << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInstanceKHR& value)
+{
+       s << "VkAccelerationStructureInstanceKHR = {\n";
+       s << "\ttransform = " << value.transform << '\n';
+       s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
+       s << "\tmask = " << value.mask << '\n';
+       s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
+       s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
+       s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trepresentativeFragmentTest = " << value.representativeFragmentTest << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineRepresentativeFragmentTestStateCreateInfoNV& value)
+{
+       s << "VkPipelineRepresentativeFragmentTestStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trepresentativeFragmentTestEnable = " << value.representativeFragmentTestEnable << '\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 VkPipelineCompilerControlCreateInfoAMD& value)
+{
+       s << "VkPipelineCompilerControlCreateInfoAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcompilerControlFlags = " << getPipelineCompilerControlFlagsAMDStr(value.compilerControlFlags) << '\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 VkPhysicalDeviceShaderCorePropertiesAMD& value)
+{
+       s << "VkPhysicalDeviceShaderCorePropertiesAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderEngineCount = " << value.shaderEngineCount << '\n';
+       s << "\tshaderArraysPerEngineCount = " << value.shaderArraysPerEngineCount << '\n';
+       s << "\tcomputeUnitsPerShaderArray = " << value.computeUnitsPerShaderArray << '\n';
+       s << "\tsimdPerComputeUnit = " << value.simdPerComputeUnit << '\n';
+       s << "\twavefrontsPerSimd = " << value.wavefrontsPerSimd << '\n';
+       s << "\twavefrontSize = " << value.wavefrontSize << '\n';
+       s << "\tsgprsPerSimd = " << value.sgprsPerSimd << '\n';
+       s << "\tminSgprAllocation = " << value.minSgprAllocation << '\n';
+       s << "\tmaxSgprAllocation = " << value.maxSgprAllocation << '\n';
+       s << "\tsgprAllocationGranularity = " << value.sgprAllocationGranularity << '\n';
+       s << "\tvgprsPerSimd = " << value.vgprsPerSimd << '\n';
+       s << "\tminVgprAllocation = " << value.minVgprAllocation << '\n';
+       s << "\tmaxVgprAllocation = " << value.maxVgprAllocation << '\n';
+       s << "\tvgprAllocationGranularity = " << value.vgprAllocationGranularity << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOverallocationCreateInfoAMD& value)
+{
+       s << "VkDeviceMemoryOverallocationCreateInfoAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\toverallocationBehavior = " << value.overallocationBehavior << '\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 VkPipelineCreationFeedbackEXT& value)
+{
+       s << "VkPipelineCreationFeedbackEXT = {\n";
+       s << "\tflags = " << getPipelineCreationFeedbackFlagsEXTStr(value.flags) << '\n';
+       s << "\tduration = " << value.duration << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackCreateInfoEXT& value)
+{
+       s << "VkPipelineCreationFeedbackCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpPipelineCreationFeedback = " << value.pPipelineCreationFeedback << '\n';
+       s << "\tpipelineStageCreationFeedbackCount = " << value.pipelineStageCreationFeedbackCount << '\n';
+       s << "\tpPipelineStageCreationFeedbacks = " << value.pPipelineStageCreationFeedbacks << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcomputeDerivativeGroupQuads = " << value.computeDerivativeGroupQuads << '\n';
+       s << "\tcomputeDerivativeGroupLinear = " << value.computeDerivativeGroupLinear << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceMeshShaderFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttaskShader = " << value.taskShader << '\n';
+       s << "\tmeshShader = " << value.meshShader << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceMeshShaderPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxDrawMeshTasksCount = " << value.maxDrawMeshTasksCount << '\n';
+       s << "\tmaxTaskWorkGroupInvocations = " << value.maxTaskWorkGroupInvocations << '\n';
+       s << "\tmaxTaskWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxTaskWorkGroupSize), DE_ARRAY_END(value.maxTaskWorkGroupSize)) << '\n';
+       s << "\tmaxTaskTotalMemorySize = " << value.maxTaskTotalMemorySize << '\n';
+       s << "\tmaxTaskOutputCount = " << value.maxTaskOutputCount << '\n';
+       s << "\tmaxMeshWorkGroupInvocations = " << value.maxMeshWorkGroupInvocations << '\n';
+       s << "\tmaxMeshWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxMeshWorkGroupSize), DE_ARRAY_END(value.maxMeshWorkGroupSize)) << '\n';
+       s << "\tmaxMeshTotalMemorySize = " << value.maxMeshTotalMemorySize << '\n';
+       s << "\tmaxMeshOutputVertices = " << value.maxMeshOutputVertices << '\n';
+       s << "\tmaxMeshOutputPrimitives = " << value.maxMeshOutputPrimitives << '\n';
+       s << "\tmaxMeshMultiviewViewCount = " << value.maxMeshMultiviewViewCount << '\n';
+       s << "\tmeshOutputPerVertexGranularity = " << value.meshOutputPerVertexGranularity << '\n';
+       s << "\tmeshOutputPerPrimitiveGranularity = " << value.meshOutputPerPrimitiveGranularity << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDrawMeshTasksIndirectCommandNV& value)
+{
+       s << "VkDrawMeshTasksIndirectCommandNV = {\n";
+       s << "\ttaskCount = " << value.taskCount << '\n';
+       s << "\tfirstTask = " << value.firstTask << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfragmentShaderBarycentric = " << value.fragmentShaderBarycentric << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageFootprintFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceShaderImageFootprintFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\timageFootprint = " << value.imageFootprint << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportExclusiveScissorStateCreateInfoNV& value)
+{
+       s << "VkPipelineViewportExclusiveScissorStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\texclusiveScissorCount = " << value.exclusiveScissorCount << '\n';
+       s << "\tpExclusiveScissors = " << value.pExclusiveScissors << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExclusiveScissorFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceExclusiveScissorFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\texclusiveScissor = " << value.exclusiveScissor << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value)
+{
+       s << "VkQueueFamilyCheckpointPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlagsStr(value.checkpointExecutionStageMask) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCheckpointDataNV& value)
+{
+       s << "VkCheckpointDataNV = {\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 VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& value)
+{
+       s << "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderIntegerFunctions2 = " << value.shaderIntegerFunctions2 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceValueDataINTEL& value)
+{
+       s << "VkPerformanceValueDataINTEL = {\n";
+       s << "\tvalue32 = " << value.value32 << '\n';
+       s << "\tvalue64 = " << value.value64 << '\n';
+       s << "\tvalueFloat = " << value.valueFloat << '\n';
+       s << "\tvalueBool = " << value.valueBool << '\n';
+       s << "\tvalueString = " << getCharPtrStr(value.valueString) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceValueINTEL& value)
+{
+       s << "VkPerformanceValueINTEL = {\n";
+       s << "\ttype = " << value.type << '\n';
+       s << "\tdata = " << value.data << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkInitializePerformanceApiInfoINTEL& value)
+{
+       s << "VkInitializePerformanceApiInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpUserData = " << value.pUserData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceQueryCreateInfoINTEL& value)
+{
+       s << "VkQueryPoolPerformanceQueryCreateInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tperformanceCountersSampling = " << value.performanceCountersSampling << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceMarkerInfoINTEL& value)
+{
+       s << "VkPerformanceMarkerInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmarker = " << value.marker << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceStreamMarkerInfoINTEL& value)
+{
+       s << "VkPerformanceStreamMarkerInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmarker = " << value.marker << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceOverrideInfoINTEL& value)
+{
+       s << "VkPerformanceOverrideInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tenable = " << value.enable << '\n';
+       s << "\tparameter = " << value.parameter << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceConfigurationAcquireInfoINTEL& value)
+{
+       s << "VkPerformanceConfigurationAcquireInfoINTEL = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\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 VkDisplayNativeHdrSurfaceCapabilitiesAMD& value)
+{
+       s << "VkDisplayNativeHdrSurfaceCapabilitiesAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tlocalDimmingSupport = " << value.localDimmingSupport << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSwapchainDisplayNativeHdrCreateInfoAMD& value)
+{
+       s << "VkSwapchainDisplayNativeHdrCreateInfoAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tlocalDimmingEnable = " << value.localDimmingEnable << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceFragmentDensityMapFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfragmentDensityMap = " << value.fragmentDensityMap << '\n';
+       s << "\tfragmentDensityMapDynamic = " << value.fragmentDensityMapDynamic << '\n';
+       s << "\tfragmentDensityMapNonSubsampledImages = " << value.fragmentDensityMapNonSubsampledImages << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceFragmentDensityMapPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tminFragmentDensityTexelSize = " << value.minFragmentDensityTexelSize << '\n';
+       s << "\tmaxFragmentDensityTexelSize = " << value.maxFragmentDensityTexelSize << '\n';
+       s << "\tfragmentDensityInvocations = " << value.fragmentDensityInvocations << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value)
+{
+       s << "VkRenderPassFragmentDensityMapCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfragmentDensityMapAttachment = " << value.fragmentDensityMapAttachment << '\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 VkPhysicalDeviceShaderCoreProperties2AMD& value)
+{
+       s << "VkPhysicalDeviceShaderCoreProperties2AMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderCoreFeatures = " << getShaderCorePropertiesFlagsAMDStr(value.shaderCoreFeatures) << '\n';
+       s << "\tactiveComputeUnitCount = " << value.activeComputeUnitCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoherentMemoryFeaturesAMD& value)
+{
+       s << "VkPhysicalDeviceCoherentMemoryFeaturesAMD = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdeviceCoherentMemory = " << value.deviceCoherentMemory << '\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 VkPhysicalDeviceMemoryPriorityFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceMemoryPriorityFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmemoryPriority = " << value.memoryPriority << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value)
+{
+       s << "VkMemoryPriorityAllocateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpriority = " << value.priority << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdedicatedAllocationImageAliasing = " << value.dedicatedAllocationImageAliasing << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT = {\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 VkBufferDeviceAddressCreateInfoEXT& value)
+{
+       s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceToolPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceToolPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\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 << "\tversion = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.version)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.version))) << '\n';
+       s << "\tpurposes = " << getToolPurposeFlagsEXTStr(value.purposes) << '\n';
+       s << "\tdescription = " << (const char*)value.description << '\n';
+       s << "\tlayer = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.layer)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.layer))) << '\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 VkCooperativeMatrixPropertiesNV& value)
+{
+       s << "VkCooperativeMatrixPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tMSize = " << value.MSize << '\n';
+       s << "\tNSize = " << value.NSize << '\n';
+       s << "\tKSize = " << value.KSize << '\n';
+       s << "\tAType = " << value.AType << '\n';
+       s << "\tBType = " << value.BType << '\n';
+       s << "\tCType = " << value.CType << '\n';
+       s << "\tDType = " << value.DType << '\n';
+       s << "\tscope = " << value.scope << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceCooperativeMatrixFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcooperativeMatrix = " << value.cooperativeMatrix << '\n';
+       s << "\tcooperativeMatrixRobustBufferAccess = " << value.cooperativeMatrixRobustBufferAccess << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceCooperativeMatrixPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcooperativeMatrixSupportedStages = " << getShaderStageFlagsStr(value.cooperativeMatrixSupportedStages) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoverageReductionModeFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceCoverageReductionModeFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageReductionStateCreateInfoNV& value)
+{
+       s << "VkPipelineCoverageReductionStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPipelineCoverageReductionStateCreateFlagsNVStr(value.flags) << '\n';
+       s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkFramebufferMixedSamplesCombinationNV& value)
+{
+       s << "VkFramebufferMixedSamplesCombinationNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
+       s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
+       s << "\tdepthStencilSamples = " << getSampleCountFlagsStr(value.depthStencilSamples) << '\n';
+       s << "\tcolorSamples = " << getSampleCountFlagsStr(value.colorSamples) << '\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 VkPhysicalDeviceProvokingVertexFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceProvokingVertexFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprovokingVertexLast = " << value.provokingVertexLast << '\n';
+       s << "\ttransformFeedbackPreservesProvokingVertex = " << value.transformFeedbackPreservesProvokingVertex << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProvokingVertexPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceProvokingVertexPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprovokingVertexModePerPipeline = " << value.provokingVertexModePerPipeline << '\n';
+       s << "\ttransformFeedbackPreservesTriangleFanProvokingVertex = " << value.transformFeedbackPreservesTriangleFanProvokingVertex << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT& value)
+{
+       s << "VkPipelineRasterizationProvokingVertexStateCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprovokingVertexMode = " << value.provokingVertexMode << '\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 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderBufferFloat16Atomics = " << value.shaderBufferFloat16Atomics << '\n';
+       s << "\tshaderBufferFloat16AtomicAdd = " << value.shaderBufferFloat16AtomicAdd << '\n';
+       s << "\tshaderBufferFloat16AtomicMinMax = " << value.shaderBufferFloat16AtomicMinMax << '\n';
+       s << "\tshaderBufferFloat32AtomicMinMax = " << value.shaderBufferFloat32AtomicMinMax << '\n';
+       s << "\tshaderBufferFloat64AtomicMinMax = " << value.shaderBufferFloat64AtomicMinMax << '\n';
+       s << "\tshaderSharedFloat16Atomics = " << value.shaderSharedFloat16Atomics << '\n';
+       s << "\tshaderSharedFloat16AtomicAdd = " << value.shaderSharedFloat16AtomicAdd << '\n';
+       s << "\tshaderSharedFloat16AtomicMinMax = " << value.shaderSharedFloat16AtomicMinMax << '\n';
+       s << "\tshaderSharedFloat32AtomicMinMax = " << value.shaderSharedFloat32AtomicMinMax << '\n';
+       s << "\tshaderSharedFloat64AtomicMinMax = " << value.shaderSharedFloat64AtomicMinMax << '\n';
+       s << "\tshaderImageFloat32AtomicMinMax = " << value.shaderImageFloat32AtomicMinMax << '\n';
+       s << "\tsparseImageFloat32AtomicMinMax = " << value.sparseImageFloat32AtomicMinMax << '\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 VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxGraphicsShaderGroupCount = " << value.maxGraphicsShaderGroupCount << '\n';
+       s << "\tmaxIndirectSequenceCount = " << value.maxIndirectSequenceCount << '\n';
+       s << "\tmaxIndirectCommandsTokenCount = " << value.maxIndirectCommandsTokenCount << '\n';
+       s << "\tmaxIndirectCommandsStreamCount = " << value.maxIndirectCommandsStreamCount << '\n';
+       s << "\tmaxIndirectCommandsTokenOffset = " << value.maxIndirectCommandsTokenOffset << '\n';
+       s << "\tmaxIndirectCommandsStreamStride = " << value.maxIndirectCommandsStreamStride << '\n';
+       s << "\tminSequencesCountBufferOffsetAlignment = " << value.minSequencesCountBufferOffsetAlignment << '\n';
+       s << "\tminSequencesIndexBufferOffsetAlignment = " << value.minSequencesIndexBufferOffsetAlignment << '\n';
+       s << "\tminIndirectCommandsBufferOffsetAlignment = " << value.minIndirectCommandsBufferOffsetAlignment << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdeviceGeneratedCommands = " << value.deviceGeneratedCommands << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGraphicsShaderGroupCreateInfoNV& value)
+{
+       s << "VkGraphicsShaderGroupCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstageCount = " << value.stageCount << '\n';
+       s << "\tpStages = " << value.pStages << '\n';
+       s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
+       s << "\tpTessellationState = " << value.pTessellationState << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineShaderGroupsCreateInfoNV& value)
+{
+       s << "VkGraphicsPipelineShaderGroupsCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tgroupCount = " << value.groupCount << '\n';
+       s << "\tpGroups = " << value.pGroups << '\n';
+       s << "\tpipelineCount = " << value.pipelineCount << '\n';
+       s << "\tpPipelines = " << value.pPipelines << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindShaderGroupIndirectCommandNV& value)
+{
+       s << "VkBindShaderGroupIndirectCommandNV = {\n";
+       s << "\tgroupIndex = " << value.groupIndex << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindIndexBufferIndirectCommandNV& value)
+{
+       s << "VkBindIndexBufferIndirectCommandNV = {\n";
+       s << "\tbufferAddress = " << value.bufferAddress << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << "\tindexType = " << value.indexType << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindVertexBufferIndirectCommandNV& value)
+{
+       s << "VkBindVertexBufferIndirectCommandNV = {\n";
+       s << "\tbufferAddress = " << value.bufferAddress << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << "\tstride = " << value.stride << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSetStateFlagsIndirectCommandNV& value)
+{
+       s << "VkSetStateFlagsIndirectCommandNV = {\n";
+       s << "\tdata = " << value.data << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsStreamNV& value)
+{
+       s << "VkIndirectCommandsStreamNV = {\n";
+       s << "\tbuffer = " << value.buffer << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNV& value)
+{
+       s << "VkIndirectCommandsLayoutTokenNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttokenType = " << value.tokenType << '\n';
+       s << "\tstream = " << value.stream << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << "\tvertexBindingUnit = " << value.vertexBindingUnit << '\n';
+       s << "\tvertexDynamicStride = " << value.vertexDynamicStride << '\n';
+       s << "\tpushconstantPipelineLayout = " << value.pushconstantPipelineLayout << '\n';
+       s << "\tpushconstantShaderStageFlags = " << getShaderStageFlagsStr(value.pushconstantShaderStageFlags) << '\n';
+       s << "\tpushconstantOffset = " << value.pushconstantOffset << '\n';
+       s << "\tpushconstantSize = " << value.pushconstantSize << '\n';
+       s << "\tindirectStateFlags = " << getIndirectStateFlagsNVStr(value.indirectStateFlags) << '\n';
+       s << "\tindexTypeCount = " << value.indexTypeCount << '\n';
+       s << "\tpIndexTypes = " << value.pIndexTypes << '\n';
+       s << "\tpIndexTypeValues = " << value.pIndexTypeValues << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNV& value)
+{
+       s << "VkIndirectCommandsLayoutCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVStr(value.flags) << '\n';
+       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "\ttokenCount = " << value.tokenCount << '\n';
+       s << "\tpTokens = " << value.pTokens << '\n';
+       s << "\tstreamCount = " << value.streamCount << '\n';
+       s << "\tpStreamStrides = " << value.pStreamStrides << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsInfoNV& value)
+{
+       s << "VkGeneratedCommandsInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "\tpipeline = " << value.pipeline << '\n';
+       s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
+       s << "\tstreamCount = " << value.streamCount << '\n';
+       s << "\tpStreams = " << value.pStreams << '\n';
+       s << "\tsequencesCount = " << value.sequencesCount << '\n';
+       s << "\tpreprocessBuffer = " << value.preprocessBuffer << '\n';
+       s << "\tpreprocessOffset = " << value.preprocessOffset << '\n';
+       s << "\tpreprocessSize = " << value.preprocessSize << '\n';
+       s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
+       s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
+       s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
+       s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsMemoryRequirementsInfoNV& value)
+{
+       s << "VkGeneratedCommandsMemoryRequirementsInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "\tpipeline = " << value.pipeline << '\n';
+       s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
+       s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceInheritedViewportScissorFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tinheritedViewportScissor2D = " << value.inheritedViewportScissor2D << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceViewportScissorInfoNV& value)
+{
+       s << "VkCommandBufferInheritanceViewportScissorInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tviewportScissor2D = " << value.viewportScissor2D << '\n';
+       s << "\tviewportDepthCount = " << value.viewportDepthCount << '\n';
+       s << "\tpViewportDepths = " << value.pViewportDepths << '\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 VkRenderPassTransformBeginInfoQCOM& value)
+{
+       s << "VkRenderPassTransformBeginInfoQCOM = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttransform = " << value.transform << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceRenderPassTransformInfoQCOM& value)
+{
+       s << "VkCommandBufferInheritanceRenderPassTransformInfoQCOM = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttransform = " << value.transform << '\n';
+       s << "\trenderArea = " << value.renderArea << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdeviceMemoryReport = " << value.deviceMemoryReport << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryReportCallbackDataEXT& value)
+{
+       s << "VkDeviceMemoryReportCallbackDataEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tmemoryObjectId = " << value.memoryObjectId << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << "\tobjectType = " << value.objectType << '\n';
+       s << "\tobjectHandle = " << value.objectHandle << '\n';
+       s << "\theapIndex = " << value.heapIndex << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDeviceDeviceMemoryReportCreateInfoEXT& value)
+{
+       s << "VkDeviceDeviceMemoryReportCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
+       s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
+       s << "\tpUserData = " << value.pUserData << '\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 VkPhysicalDevicePrivateDataFeaturesEXT& value)
+{
+       s << "VkPhysicalDevicePrivateDataFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprivateData = " << value.privateData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDevicePrivateDataCreateInfoEXT& value)
+{
+       s << "VkDevicePrivateDataCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprivateDataSlotRequestCount = " << value.privateDataSlotRequestCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPrivateDataSlotCreateInfoEXT& value)
+{
+       s << "VkPrivateDataSlotCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPrivateDataSlotCreateFlagsEXTStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT& value)
+{
+       s << "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpipelineCreationCacheControl = " << value.pipelineCreationCacheControl << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceDiagnosticsConfigFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdiagnosticsConfig = " << value.diagnosticsConfig << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDeviceDiagnosticsConfigCreateInfoNV& value)
+{
+       s << "VkDeviceDiagnosticsConfigCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getDeviceDiagnosticsConfigFlagsNVStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfragmentShadingRateEnums = " << value.fragmentShadingRateEnums << '\n';
+       s << "\tsupersampleFragmentShadingRates = " << value.supersampleFragmentShadingRates << '\n';
+       s << "\tnoInvocationFragmentShadingRates = " << value.noInvocationFragmentShadingRates << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV& value)
+{
+       s << "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxFragmentShadingRateInvocationCount = " << value.maxFragmentShadingRateInvocationCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateEnumStateCreateInfoNV& value)
+{
+       s << "VkPipelineFragmentShadingRateEnumStateCreateInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshadingRateType = " << value.shadingRateType << '\n';
+       s << "\tshadingRate = " << value.shadingRate << '\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 VkDeviceOrHostAddressConstKHR& value)
+{
+       s << "VkDeviceOrHostAddressConstKHR = {\n";
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\thostAddress = " << value.hostAddress << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryMotionTrianglesDataNV& value)
+{
+       s << "VkAccelerationStructureGeometryMotionTrianglesDataNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvertexData = " << value.vertexData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInfoNV& value)
+{
+       s << "VkAccelerationStructureMotionInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxInstances = " << value.maxInstances << '\n';
+       s << "\tflags = " << getAccelerationStructureMotionInfoFlagsNVStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMatrixMotionInstanceNV& value)
+{
+       s << "VkAccelerationStructureMatrixMotionInstanceNV = {\n";
+       s << "\ttransformT0 = " << value.transformT0 << '\n';
+       s << "\ttransformT1 = " << value.transformT1 << '\n';
+       s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
+       s << "\tmask = " << value.mask << '\n';
+       s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
+       s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
+       s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSRTDataNV& value)
+{
+       s << "VkSRTDataNV = {\n";
+       s << "\tsx = " << value.sx << '\n';
+       s << "\ta = " << value.a << '\n';
+       s << "\tb = " << value.b << '\n';
+       s << "\tpvx = " << value.pvx << '\n';
+       s << "\tsy = " << value.sy << '\n';
+       s << "\tc = " << value.c << '\n';
+       s << "\tpvy = " << value.pvy << '\n';
+       s << "\tsz = " << value.sz << '\n';
+       s << "\tpvz = " << value.pvz << '\n';
+       s << "\tqx = " << value.qx << '\n';
+       s << "\tqy = " << value.qy << '\n';
+       s << "\tqz = " << value.qz << '\n';
+       s << "\tqw = " << value.qw << '\n';
+       s << "\ttx = " << value.tx << '\n';
+       s << "\tty = " << value.ty << '\n';
+       s << "\ttz = " << value.tz << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureSRTMotionInstanceNV& value)
+{
+       s << "VkAccelerationStructureSRTMotionInstanceNV = {\n";
+       s << "\ttransformT0 = " << value.transformT0 << '\n';
+       s << "\ttransformT1 = " << value.transformT1 << '\n';
+       s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
+       s << "\tmask = " << value.mask << '\n';
+       s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
+       s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
+       s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInstanceDataNV& value)
+{
+       s << "VkAccelerationStructureMotionInstanceDataNV = {\n";
+       s << "\tstaticInstance = " << value.staticInstance << '\n';
+       s << "\tmatrixMotionInstance = " << value.matrixMotionInstance << '\n';
+       s << "\tsrtMotionInstance = " << value.srtMotionInstance << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInstanceNV& value)
+{
+       s << "VkAccelerationStructureMotionInstanceNV = {\n";
+       s << "\ttype = " << value.type << '\n';
+       s << "\tflags = " << getAccelerationStructureMotionInstanceFlagsNVStr(value.flags) << '\n';
+       s << "\tdata = " << value.data << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trayTracingMotionBlur = " << value.rayTracingMotionBlur << '\n';
+       s << "\trayTracingMotionBlurPipelineTraceRaysIndirect = " << value.rayTracingMotionBlurPipelineTraceRaysIndirect << '\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 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfragmentDensityMapDeferred = " << value.fragmentDensityMapDeferred << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsubsampledLoads = " << value.subsampledLoads << '\n';
+       s << "\tsubsampledCoarseReconstructionEarlyAccess = " << value.subsampledCoarseReconstructionEarlyAccess << '\n';
+       s << "\tmaxSubsampledArrayLayers = " << value.maxSubsampledArrayLayers << '\n';
+       s << "\tmaxDescriptorSetSubsampledSamplers = " << value.maxDescriptorSetSubsampledSamplers << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCopyCommandTransformInfoQCOM& value)
+{
+       s << "VkCopyCommandTransformInfoQCOM = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttransform = " << value.transform << '\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 VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& value)
+{
+       s << "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmutableDescriptorType = " << value.mutableDescriptorType << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeListVALVE& value)
+{
+       s << "VkMutableDescriptorTypeListVALVE = {\n";
+       s << "\tdescriptorTypeCount = " << value.descriptorTypeCount << '\n';
+       s << "\tpDescriptorTypes = " << value.pDescriptorTypes << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeCreateInfoVALVE& value)
+{
+       s << "VkMutableDescriptorTypeCreateInfoVALVE = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmutableDescriptorTypeListCount = " << value.mutableDescriptorTypeListCount << '\n';
+       s << "\tpMutableDescriptorTypeLists = " << value.pMutableDescriptorTypeLists << '\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 VkPhysicalDeviceDrmPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceDrmPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thasPrimary = " << value.hasPrimary << '\n';
+       s << "\thasRender = " << value.hasRender << '\n';
+       s << "\tprimaryMajor = " << value.primaryMajor << '\n';
+       s << "\tprimaryMinor = " << value.primaryMinor << '\n';
+       s << "\trenderMajor = " << value.renderMajor << '\n';
+       s << "\trenderMinor = " << value.renderMinor << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& value)
+{
+       s << "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprimitiveTopologyListRestart = " << value.primitiveTopologyListRestart << '\n';
+       s << "\tprimitiveTopologyPatchListRestart = " << value.primitiveTopologyPatchListRestart << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassShadingPipelineCreateInfoHUAWEI& value)
+{
+       s << "VkSubpassShadingPipelineCreateInfoHUAWEI = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trenderPass = " << value.renderPass << '\n';
+       s << "\tsubpass = " << value.subpass << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& value)
+{
+       s << "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsubpassShading = " << value.subpassShading << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI& value)
+{
+       s << "VkPhysicalDeviceSubpassShadingPropertiesHUAWEI = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxSubpassShadingWorkgroupSizeAspectRatio = " << value.maxSubpassShadingWorkgroupSizeAspectRatio << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& value)
+{
+       s << "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tinvocationMask = " << value.invocationMask << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryGetRemoteAddressInfoNV& value)
+{
+       s << "VkMemoryGetRemoteAddressInfoNV = {\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 VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& value)
+{
+       s << "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\texternalMemoryRDMA = " << value.externalMemoryRDMA << '\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;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tglobalPriorityQuery = " << value.globalPriorityQuery << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkQueueFamilyGlobalPriorityPropertiesEXT& value)
+{
+       s << "VkQueueFamilyGlobalPriorityPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpriorityCount = " << value.priorityCount << '\n';
+       s << "\tpriorities = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.priorities), DE_ARRAY_END(value.priorities)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiDrawFeaturesEXT& value)
+{
+       s << "VkPhysicalDeviceMultiDrawFeaturesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmultiDraw = " << value.multiDraw << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiDrawPropertiesEXT& value)
+{
+       s << "VkPhysicalDeviceMultiDrawPropertiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxMultiDrawCount = " << value.maxMultiDrawCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMultiDrawInfoEXT& value)
+{
+       s << "VkMultiDrawInfoEXT = {\n";
+       s << "\tfirstVertex = " << value.firstVertex << '\n';
+       s << "\tvertexCount = " << value.vertexCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMultiDrawIndexedInfoEXT& value)
+{
+       s << "VkMultiDrawIndexedInfoEXT = {\n";
+       s << "\tfirstIndex = " << value.firstIndex << '\n';
+       s << "\tindexCount = " << value.indexCount << '\n';
+       s << "\tvertexOffset = " << value.vertexOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressKHR& value)
+{
+       s << "VkDeviceOrHostAddressKHR = {\n";
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\thostAddress = " << value.hostAddress << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildRangeInfoKHR& value)
+{
+       s << "VkAccelerationStructureBuildRangeInfoKHR = {\n";
+       s << "\tprimitiveCount = " << value.primitiveCount << '\n';
+       s << "\tprimitiveOffset = " << value.primitiveOffset << '\n';
+       s << "\tfirstVertex = " << value.firstVertex << '\n';
+       s << "\ttransformOffset = " << value.transformOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryTrianglesDataKHR& value)
+{
+       s << "VkAccelerationStructureGeometryTrianglesDataKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvertexFormat = " << value.vertexFormat << '\n';
+       s << "\tvertexData = " << value.vertexData << '\n';
+       s << "\tvertexStride = " << value.vertexStride << '\n';
+       s << "\tmaxVertex = " << value.maxVertex << '\n';
+       s << "\tindexType = " << value.indexType << '\n';
+       s << "\tindexData = " << value.indexData << '\n';
+       s << "\ttransformData = " << value.transformData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryAabbsDataKHR& value)
+{
+       s << "VkAccelerationStructureGeometryAabbsDataKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdata = " << value.data << '\n';
+       s << "\tstride = " << value.stride << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryInstancesDataKHR& value)
+{
+       s << "VkAccelerationStructureGeometryInstancesDataKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tarrayOfPointers = " << value.arrayOfPointers << '\n';
+       s << "\tdata = " << value.data << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryDataKHR& value)
+{
+       s << "VkAccelerationStructureGeometryDataKHR = {\n";
+       s << "\ttriangles = " << value.triangles << '\n';
+       s << "\taabbs = " << value.aabbs << '\n';
+       s << "\tinstances = " << value.instances << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryKHR& value)
+{
+       s << "VkAccelerationStructureGeometryKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tgeometryType = " << value.geometryType << '\n';
+       s << "\tgeometry = " << value.geometry << '\n';
+       s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildGeometryInfoKHR& value)
+{
+       s << "VkAccelerationStructureBuildGeometryInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tflags = " << getBuildAccelerationStructureFlagsKHRStr(value.flags) << '\n';
+       s << "\tmode = " << value.mode << '\n';
+       s << "\tsrcAccelerationStructure = " << value.srcAccelerationStructure << '\n';
+       s << "\tdstAccelerationStructure = " << value.dstAccelerationStructure << '\n';
+       s << "\tgeometryCount = " << value.geometryCount << '\n';
+       s << "\tpGeometries = " << value.pGeometries << '\n';
+       s << "\tppGeometries = " << value.ppGeometries << '\n';
+       s << "\tscratchData = " << value.scratchData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoKHR& value)
+{
+       s << "VkAccelerationStructureCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcreateFlags = " << getAccelerationStructureCreateFlagsKHRStr(value.createFlags) << '\n';
+       s << "\tbuffer = " << value.buffer << '\n';
+       s << "\toffset = " << value.offset << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureKHR& value)
+{
+       s << "VkWriteDescriptorSetAccelerationStructureKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
+       s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructureFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceAccelerationStructureFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
+       s << "\taccelerationStructureCaptureReplay = " << value.accelerationStructureCaptureReplay << '\n';
+       s << "\taccelerationStructureIndirectBuild = " << value.accelerationStructureIndirectBuild << '\n';
+       s << "\taccelerationStructureHostCommands = " << value.accelerationStructureHostCommands << '\n';
+       s << "\tdescriptorBindingAccelerationStructureUpdateAfterBind = " << value.descriptorBindingAccelerationStructureUpdateAfterBind << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructurePropertiesKHR& value)
+{
+       s << "VkPhysicalDeviceAccelerationStructurePropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
+       s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
+       s << "\tmaxPrimitiveCount = " << value.maxPrimitiveCount << '\n';
+       s << "\tmaxPerStageDescriptorAccelerationStructures = " << value.maxPerStageDescriptorAccelerationStructures << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindAccelerationStructures = " << value.maxPerStageDescriptorUpdateAfterBindAccelerationStructures << '\n';
+       s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindAccelerationStructures = " << value.maxDescriptorSetUpdateAfterBindAccelerationStructures << '\n';
+       s << "\tminAccelerationStructureScratchOffsetAlignment = " << value.minAccelerationStructureScratchOffsetAlignment << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureDeviceAddressInfoKHR& value)
+{
+       s << "VkAccelerationStructureDeviceAddressInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureVersionInfoKHR& value)
+{
+       s << "VkAccelerationStructureVersionInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpVersionData = " << value.pVersionData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureToMemoryInfoKHR& value)
+{
+       s << "VkCopyAccelerationStructureToMemoryInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsrc = " << value.src << '\n';
+       s << "\tdst = " << value.dst << '\n';
+       s << "\tmode = " << value.mode << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCopyMemoryToAccelerationStructureInfoKHR& value)
+{
+       s << "VkCopyMemoryToAccelerationStructureInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsrc = " << value.src << '\n';
+       s << "\tdst = " << value.dst << '\n';
+       s << "\tmode = " << value.mode << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureInfoKHR& value)
+{
+       s << "VkCopyAccelerationStructureInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsrc = " << value.src << '\n';
+       s << "\tdst = " << value.dst << '\n';
+       s << "\tmode = " << value.mode << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildSizesInfoKHR& value)
+{
+       s << "VkAccelerationStructureBuildSizesInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\taccelerationStructureSize = " << value.accelerationStructureSize << '\n';
+       s << "\tupdateScratchSize = " << value.updateScratchSize << '\n';
+       s << "\tbuildScratchSize = " << value.buildScratchSize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoKHR& value)
+{
+       s << "VkRayTracingShaderGroupCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tgeneralShader = " << value.generalShader << '\n';
+       s << "\tclosestHitShader = " << value.closestHitShader << '\n';
+       s << "\tanyHitShader = " << value.anyHitShader << '\n';
+       s << "\tintersectionShader = " << value.intersectionShader << '\n';
+       s << "\tpShaderGroupCaptureReplayHandle = " << value.pShaderGroupCaptureReplayHandle << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineInterfaceCreateInfoKHR& value)
+{
+       s << "VkRayTracingPipelineInterfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxPipelineRayPayloadSize = " << value.maxPipelineRayPayloadSize << '\n';
+       s << "\tmaxPipelineRayHitAttributeSize = " << value.maxPipelineRayHitAttributeSize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoKHR& value)
+{
+       s << "VkRayTracingPipelineCreateInfoKHR = {\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 << "\tgroupCount = " << value.groupCount << '\n';
+       s << "\tpGroups = " << value.pGroups << '\n';
+       s << "\tmaxPipelineRayRecursionDepth = " << value.maxPipelineRayRecursionDepth << '\n';
+       s << "\tpLibraryInfo = " << value.pLibraryInfo << '\n';
+       s << "\tpLibraryInterface = " << value.pLibraryInterface << '\n';
+       s << "\tpDynamicState = " << value.pDynamicState << '\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 VkPhysicalDeviceRayTracingPipelineFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceRayTracingPipelineFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trayTracingPipeline = " << value.rayTracingPipeline << '\n';
+       s << "\trayTracingPipelineShaderGroupHandleCaptureReplay = " << value.rayTracingPipelineShaderGroupHandleCaptureReplay << '\n';
+       s << "\trayTracingPipelineShaderGroupHandleCaptureReplayMixed = " << value.rayTracingPipelineShaderGroupHandleCaptureReplayMixed << '\n';
+       s << "\trayTracingPipelineTraceRaysIndirect = " << value.rayTracingPipelineTraceRaysIndirect << '\n';
+       s << "\trayTraversalPrimitiveCulling = " << value.rayTraversalPrimitiveCulling << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPipelinePropertiesKHR& value)
+{
+       s << "VkPhysicalDeviceRayTracingPipelinePropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
+       s << "\tmaxRayRecursionDepth = " << value.maxRayRecursionDepth << '\n';
+       s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
+       s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
+       s << "\tshaderGroupHandleCaptureReplaySize = " << value.shaderGroupHandleCaptureReplaySize << '\n';
+       s << "\tmaxRayDispatchInvocationCount = " << value.maxRayDispatchInvocationCount << '\n';
+       s << "\tshaderGroupHandleAlignment = " << value.shaderGroupHandleAlignment << '\n';
+       s << "\tmaxRayHitAttributeSize = " << value.maxRayHitAttributeSize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkStridedDeviceAddressRegionKHR& value)
+{
+       s << "VkStridedDeviceAddressRegionKHR = {\n";
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\tstride = " << value.stride << '\n';
+       s << "\tsize = " << value.size << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkTraceRaysIndirectCommandKHR& value)
+{
+       s << "VkTraceRaysIndirectCommandKHR = {\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 VkPhysicalDeviceRayQueryFeaturesKHR& value)
+{
+       s << "VkPhysicalDeviceRayQueryFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trayQuery = " << value.rayQuery << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
+{
+       s << "VkAndroidSurfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\twindow = " << value.window << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
+{
+       s << "VkAndroidHardwareBufferUsageANDROID = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
+{
+       s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tallocationSize = " << value.allocationSize << '\n';
+       s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
+{
+       s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << "\texternalFormat = " << value.externalFormat << '\n';
+       s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
+       s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
+       s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
+       s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
+       s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
+       s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
+{
+       s << "VkImportAndroidHardwareBufferInfoANDROID = {\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 VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
+{
+       s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmemory = " << value.memory << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
+{
+       s << "VkExternalFormatANDROID = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\texternalFormat = " << value.externalFormat << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoQueueFamilyProperties2KHR& value)
+{
+       s << "VkVideoQueueFamilyProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvideoCodecOperations = " << getVideoCodecOperationFlagsKHRStr(value.videoCodecOperations) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoProfileKHR& value)
+{
+       s << "VkVideoProfileKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvideoCodecOperation = " << value.videoCodecOperation << '\n';
+       s << "\tchromaSubsampling = " << getVideoChromaSubsamplingFlagsKHRStr(value.chromaSubsampling) << '\n';
+       s << "\tlumaBitDepth = " << getVideoComponentBitDepthFlagsKHRStr(value.lumaBitDepth) << '\n';
+       s << "\tchromaBitDepth = " << getVideoComponentBitDepthFlagsKHRStr(value.chromaBitDepth) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoProfilesKHR& value)
+{
+       s << "VkVideoProfilesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tprofileCount = " << value.profileCount << '\n';
+       s << "\tpProfiles = " << value.pProfiles << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoCapabilitiesKHR& value)
+{
+       s << "VkVideoCapabilitiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcapabilityFlags = " << getVideoCapabilityFlagsKHRStr(value.capabilityFlags) << '\n';
+       s << "\tminBitstreamBufferOffsetAlignment = " << value.minBitstreamBufferOffsetAlignment << '\n';
+       s << "\tminBitstreamBufferSizeAlignment = " << value.minBitstreamBufferSizeAlignment << '\n';
+       s << "\tvideoPictureExtentGranularity = " << value.videoPictureExtentGranularity << '\n';
+       s << "\tminExtent = " << value.minExtent << '\n';
+       s << "\tmaxExtent = " << value.maxExtent << '\n';
+       s << "\tmaxReferencePicturesSlotsCount = " << value.maxReferencePicturesSlotsCount << '\n';
+       s << "\tmaxReferencePicturesActiveCount = " << value.maxReferencePicturesActiveCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVideoFormatInfoKHR& value)
+{
+       s << "VkPhysicalDeviceVideoFormatInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
+       s << "\tpVideoProfiles = " << value.pVideoProfiles << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoFormatPropertiesKHR& value)
+{
+       s << "VkVideoFormatPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoPictureResourceKHR& value)
+{
+       s << "VkVideoPictureResourceKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcodedOffset = " << value.codedOffset << '\n';
+       s << "\tcodedExtent = " << value.codedExtent << '\n';
+       s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
+       s << "\timageViewBinding = " << value.imageViewBinding << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoReferenceSlotKHR& value)
+{
+       s << "VkVideoReferenceSlotKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tslotIndex = " << value.slotIndex << '\n';
+       s << "\tpPictureResource = " << value.pPictureResource << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoGetMemoryPropertiesKHR& value)
+{
+       s << "VkVideoGetMemoryPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmemoryBindIndex = " << value.memoryBindIndex << '\n';
+       s << "\tpMemoryRequirements = " << value.pMemoryRequirements << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoBindMemoryKHR& value)
+{
+       s << "VkVideoBindMemoryKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmemoryBindIndex = " << value.memoryBindIndex << '\n';
+       s << "\tmemory = " << value.memory << '\n';
+       s << "\tmemoryOffset = " << value.memoryOffset << '\n';
+       s << "\tmemorySize = " << value.memorySize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoSessionCreateInfoKHR& value)
+{
+       s << "VkVideoSessionCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
+       s << "\tflags = " << getVideoSessionCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tpVideoProfile = " << value.pVideoProfile << '\n';
+       s << "\tpictureFormat = " << value.pictureFormat << '\n';
+       s << "\tmaxCodedExtent = " << value.maxCodedExtent << '\n';
+       s << "\treferencePicturesFormat = " << value.referencePicturesFormat << '\n';
+       s << "\tmaxReferencePicturesSlotsCount = " << value.maxReferencePicturesSlotsCount << '\n';
+       s << "\tmaxReferencePicturesActiveCount = " << value.maxReferencePicturesActiveCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoSessionParametersCreateInfoKHR& value)
+{
+       s << "VkVideoSessionParametersCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvideoSessionParametersTemplate = " << value.videoSessionParametersTemplate << '\n';
+       s << "\tvideoSession = " << value.videoSession << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoSessionParametersUpdateInfoKHR& value)
+{
+       s << "VkVideoSessionParametersUpdateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tupdateSequenceCount = " << value.updateSequenceCount << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoBeginCodingInfoKHR& value)
+{
+       s << "VkVideoBeginCodingInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoBeginCodingFlagsKHRStr(value.flags) << '\n';
+       s << "\tcodecQualityPreset = " << getVideoCodingQualityPresetFlagsKHRStr(value.codecQualityPreset) << '\n';
+       s << "\tvideoSession = " << value.videoSession << '\n';
+       s << "\tvideoSessionParameters = " << value.videoSessionParameters << '\n';
+       s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
+       s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEndCodingInfoKHR& value)
+{
+       s << "VkVideoEndCodingInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoEndCodingFlagsKHRStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoCodingControlInfoKHR& value)
+{
+       s << "VkVideoCodingControlInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoCodingControlFlagsKHRStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeInfoKHR& value)
+{
+       s << "VkVideoDecodeInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoDecodeFlagsKHRStr(value.flags) << '\n';
+       s << "\tcodedOffset = " << value.codedOffset << '\n';
+       s << "\tcodedExtent = " << value.codedExtent << '\n';
+       s << "\tsrcBuffer = " << value.srcBuffer << '\n';
+       s << "\tsrcBufferOffset = " << value.srcBufferOffset << '\n';
+       s << "\tsrcBufferRange = " << value.srcBufferRange << '\n';
+       s << "\tdstPictureResource = " << value.dstPictureResource << '\n';
+       s << "\tpSetupReferenceSlot = " << value.pSetupReferenceSlot << '\n';
+       s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
+       s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetFeaturesKHR& value)
+{
+       s << "VkPhysicalDevicePortabilitySubsetFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tconstantAlphaColorBlendFactors = " << value.constantAlphaColorBlendFactors << '\n';
+       s << "\tevents = " << value.events << '\n';
+       s << "\timageViewFormatReinterpretation = " << value.imageViewFormatReinterpretation << '\n';
+       s << "\timageViewFormatSwizzle = " << value.imageViewFormatSwizzle << '\n';
+       s << "\timageView2DOn3DImage = " << value.imageView2DOn3DImage << '\n';
+       s << "\tmultisampleArrayImage = " << value.multisampleArrayImage << '\n';
+       s << "\tmutableComparisonSamplers = " << value.mutableComparisonSamplers << '\n';
+       s << "\tpointPolygons = " << value.pointPolygons << '\n';
+       s << "\tsamplerMipLodBias = " << value.samplerMipLodBias << '\n';
+       s << "\tseparateStencilMaskRef = " << value.separateStencilMaskRef << '\n';
+       s << "\tshaderSampleRateInterpolationFunctions = " << value.shaderSampleRateInterpolationFunctions << '\n';
+       s << "\ttessellationIsolines = " << value.tessellationIsolines << '\n';
+       s << "\ttessellationPointMode = " << value.tessellationPointMode << '\n';
+       s << "\ttriangleFans = " << value.triangleFans << '\n';
+       s << "\tvertexAttributeAccessBeyondStride = " << value.vertexAttributeAccessBeyondStride << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value)
+{
+       s << "VkPhysicalDevicePortabilitySubsetPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tminVertexInputBindingStrideAlignment = " << value.minVertexInputBindingStrideAlignment << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeInfoKHR& value)
+{
+       s << "VkVideoEncodeInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoEncodeFlagsKHRStr(value.flags) << '\n';
+       s << "\tqualityLevel = " << value.qualityLevel << '\n';
+       s << "\tcodedExtent = " << value.codedExtent << '\n';
+       s << "\tdstBitstreamBuffer = " << value.dstBitstreamBuffer << '\n';
+       s << "\tdstBitstreamBufferOffset = " << value.dstBitstreamBufferOffset << '\n';
+       s << "\tdstBitstreamBufferMaxRange = " << value.dstBitstreamBufferMaxRange << '\n';
+       s << "\tsrcPictureResource = " << value.srcPictureResource << '\n';
+       s << "\tpSetupReferenceSlot = " << value.pSetupReferenceSlot << '\n';
+       s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
+       s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeRateControlInfoKHR& value)
+{
+       s << "VkVideoEncodeRateControlInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoEncodeRateControlFlagsKHRStr(value.flags) << '\n';
+       s << "\trateControlMode = " << value.rateControlMode << '\n';
+       s << "\taverageBitrate = " << value.averageBitrate << '\n';
+       s << "\tpeakToAverageBitrateRatio = " << value.peakToAverageBitrateRatio << '\n';
+       s << "\tframeRateNumerator = " << value.frameRateNumerator << '\n';
+       s << "\tframeRateDenominator = " << value.frameRateDenominator << '\n';
+       s << "\tvirtualBufferSizeInMs = " << value.virtualBufferSizeInMs << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264SpsVuiFlags& value)
+{
+       s << "StdVideoH264SpsVuiFlags = {\n";
+       s << "\taspect_ratio_info_present_flag = " << value.aspect_ratio_info_present_flag << '\n';
+       s << "\toverscan_info_present_flag = " << value.overscan_info_present_flag << '\n';
+       s << "\toverscan_appropriate_flag = " << value.overscan_appropriate_flag << '\n';
+       s << "\tvideo_signal_type_present_flag = " << value.video_signal_type_present_flag << '\n';
+       s << "\tvideo_full_range_flag = " << value.video_full_range_flag << '\n';
+       s << "\tcolor_description_present_flag = " << value.color_description_present_flag << '\n';
+       s << "\tchroma_loc_info_present_flag = " << value.chroma_loc_info_present_flag << '\n';
+       s << "\ttiming_info_present_flag = " << value.timing_info_present_flag << '\n';
+       s << "\tfixed_frame_rate_flag = " << value.fixed_frame_rate_flag << '\n';
+       s << "\tbitstream_restriction_flag = " << value.bitstream_restriction_flag << '\n';
+       s << "\tnal_hrd_parameters_present_flag = " << value.nal_hrd_parameters_present_flag << '\n';
+       s << "\tvcl_hrd_parameters_present_flag = " << value.vcl_hrd_parameters_present_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264HrdParameters& value)
+{
+       s << "StdVideoH264HrdParameters = {\n";
+       s << "\tcpb_cnt_minus1 = " << value.cpb_cnt_minus1 << '\n';
+       s << "\tbit_rate_scale = " << value.bit_rate_scale << '\n';
+       s << "\tcpb_size_scale = " << value.cpb_size_scale << '\n';
+       s << "\tbit_rate_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_value_minus1), DE_ARRAY_END(value.bit_rate_value_minus1)) << '\n';
+       s << "\tcpb_size_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_value_minus1), DE_ARRAY_END(value.cpb_size_value_minus1)) << '\n';
+       s << "\tcbr_flag = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.cbr_flag)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.cbr_flag))) << '\n';
+       s << "\tinitial_cpb_removal_delay_length_minus1 = " << value.initial_cpb_removal_delay_length_minus1 << '\n';
+       s << "\tcpb_removal_delay_length_minus1 = " << value.cpb_removal_delay_length_minus1 << '\n';
+       s << "\tdpb_output_delay_length_minus1 = " << value.dpb_output_delay_length_minus1 << '\n';
+       s << "\ttime_offset_length = " << value.time_offset_length << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264SequenceParameterSetVui& value)
+{
+       s << "StdVideoH264SequenceParameterSetVui = {\n";
+       s << "\taspect_ratio_idc = " << value.aspect_ratio_idc << '\n';
+       s << "\tsar_width = " << value.sar_width << '\n';
+       s << "\tsar_height = " << value.sar_height << '\n';
+       s << "\tvideo_format = " << value.video_format << '\n';
+       s << "\tcolor_primaries = " << value.color_primaries << '\n';
+       s << "\ttransfer_characteristics = " << value.transfer_characteristics << '\n';
+       s << "\tmatrix_coefficients = " << value.matrix_coefficients << '\n';
+       s << "\tnum_units_in_tick = " << value.num_units_in_tick << '\n';
+       s << "\ttime_scale = " << value.time_scale << '\n';
+       s << "\thrd_parameters = " << value.hrd_parameters << '\n';
+       s << "\tnum_reorder_frames = " << value.num_reorder_frames << '\n';
+       s << "\tmax_dec_frame_buffering = " << value.max_dec_frame_buffering << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264SpsFlags& value)
+{
+       s << "StdVideoH264SpsFlags = {\n";
+       s << "\tconstraint_set0_flag = " << value.constraint_set0_flag << '\n';
+       s << "\tconstraint_set1_flag = " << value.constraint_set1_flag << '\n';
+       s << "\tconstraint_set2_flag = " << value.constraint_set2_flag << '\n';
+       s << "\tconstraint_set3_flag = " << value.constraint_set3_flag << '\n';
+       s << "\tconstraint_set4_flag = " << value.constraint_set4_flag << '\n';
+       s << "\tconstraint_set5_flag = " << value.constraint_set5_flag << '\n';
+       s << "\tdirect_8x8_inference_flag = " << value.direct_8x8_inference_flag << '\n';
+       s << "\tmb_adaptive_frame_field_flag = " << value.mb_adaptive_frame_field_flag << '\n';
+       s << "\tframe_mbs_only_flag = " << value.frame_mbs_only_flag << '\n';
+       s << "\tdelta_pic_order_always_zero_flag = " << value.delta_pic_order_always_zero_flag << '\n';
+       s << "\tresidual_colour_transform_flag = " << value.residual_colour_transform_flag << '\n';
+       s << "\tgaps_in_frame_num_value_allowed_flag = " << value.gaps_in_frame_num_value_allowed_flag << '\n';
+       s << "\tfirst_picture_after_seek_flag = " << value.first_picture_after_seek_flag << '\n';
+       s << "\tqpprime_y_zero_transform_bypass_flag = " << value.qpprime_y_zero_transform_bypass_flag << '\n';
+       s << "\tframe_cropping_flag = " << value.frame_cropping_flag << '\n';
+       s << "\tscaling_matrix_present_flag = " << value.scaling_matrix_present_flag << '\n';
+       s << "\tvui_parameters_present_flag = " << value.vui_parameters_present_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264ScalingLists& value)
+{
+       s << "StdVideoH264ScalingLists = {\n";
+       s << "\tscaling_list_present_mask = " << value.scaling_list_present_mask << '\n';
+       s << "\tuse_default_scaling_matrix_mask = " << value.use_default_scaling_matrix_mask << '\n';
+       s << "\tScalingList4x4 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList4x4), DE_ARRAY_END(value.ScalingList4x4)) << '\n';
+       s << "\tScalingList8x8 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList8x8), DE_ARRAY_END(value.ScalingList8x8)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264SequenceParameterSet& value)
+{
+       s << "StdVideoH264SequenceParameterSet = {\n";
+       s << "\tprofile_idc = " << value.profile_idc << '\n';
+       s << "\tlevel_idc = " << value.level_idc << '\n';
+       s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
+       s << "\tchroma_format_idc = " << value.chroma_format_idc << '\n';
+       s << "\tbit_depth_luma_minus8 = " << value.bit_depth_luma_minus8 << '\n';
+       s << "\tbit_depth_chroma_minus8 = " << value.bit_depth_chroma_minus8 << '\n';
+       s << "\tlog2_max_frame_num_minus4 = " << value.log2_max_frame_num_minus4 << '\n';
+       s << "\tpic_order_cnt_type = " << value.pic_order_cnt_type << '\n';
+       s << "\tlog2_max_pic_order_cnt_lsb_minus4 = " << value.log2_max_pic_order_cnt_lsb_minus4 << '\n';
+       s << "\toffset_for_non_ref_pic = " << value.offset_for_non_ref_pic << '\n';
+       s << "\toffset_for_top_to_bottom_field = " << value.offset_for_top_to_bottom_field << '\n';
+       s << "\tnum_ref_frames_in_pic_order_cnt_cycle = " << value.num_ref_frames_in_pic_order_cnt_cycle << '\n';
+       s << "\tmax_num_ref_frames = " << value.max_num_ref_frames << '\n';
+       s << "\tpic_width_in_mbs_minus1 = " << value.pic_width_in_mbs_minus1 << '\n';
+       s << "\tpic_height_in_map_units_minus1 = " << value.pic_height_in_map_units_minus1 << '\n';
+       s << "\tframe_crop_left_offset = " << value.frame_crop_left_offset << '\n';
+       s << "\tframe_crop_right_offset = " << value.frame_crop_right_offset << '\n';
+       s << "\tframe_crop_top_offset = " << value.frame_crop_top_offset << '\n';
+       s << "\tframe_crop_bottom_offset = " << value.frame_crop_bottom_offset << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << "\toffset_for_ref_frame = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.offset_for_ref_frame), DE_ARRAY_END(value.offset_for_ref_frame)) << '\n';
+       s << "\tpScalingLists = " << value.pScalingLists << '\n';
+       s << "\tpSequenceParameterSetVui = " << value.pSequenceParameterSetVui << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264PpsFlags& value)
+{
+       s << "StdVideoH264PpsFlags = {\n";
+       s << "\ttransform_8x8_mode_flag = " << value.transform_8x8_mode_flag << '\n';
+       s << "\tredundant_pic_cnt_present_flag = " << value.redundant_pic_cnt_present_flag << '\n';
+       s << "\tconstrained_intra_pred_flag = " << value.constrained_intra_pred_flag << '\n';
+       s << "\tdeblocking_filter_control_present_flag = " << value.deblocking_filter_control_present_flag << '\n';
+       s << "\tweighted_bipred_idc_flag = " << value.weighted_bipred_idc_flag << '\n';
+       s << "\tweighted_pred_flag = " << value.weighted_pred_flag << '\n';
+       s << "\tpic_order_present_flag = " << value.pic_order_present_flag << '\n';
+       s << "\tentropy_coding_mode_flag = " << value.entropy_coding_mode_flag << '\n';
+       s << "\tscaling_matrix_present_flag = " << value.scaling_matrix_present_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH264PictureParameterSet& value)
+{
+       s << "StdVideoH264PictureParameterSet = {\n";
+       s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
+       s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
+       s << "\tnum_ref_idx_l0_default_active_minus1 = " << value.num_ref_idx_l0_default_active_minus1 << '\n';
+       s << "\tnum_ref_idx_l1_default_active_minus1 = " << value.num_ref_idx_l1_default_active_minus1 << '\n';
+       s << "\tweighted_bipred_idc = " << value.weighted_bipred_idc << '\n';
+       s << "\tpic_init_qp_minus26 = " << value.pic_init_qp_minus26 << '\n';
+       s << "\tpic_init_qs_minus26 = " << value.pic_init_qs_minus26 << '\n';
+       s << "\tchroma_qp_index_offset = " << value.chroma_qp_index_offset << '\n';
+       s << "\tsecond_chroma_qp_index_offset = " << value.second_chroma_qp_index_offset << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tpScalingLists = " << value.pScalingLists << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264SliceHeaderFlags& value)
+{
+       s << "StdVideoEncodeH264SliceHeaderFlags = {\n";
+       s << "\tidr_flag = " << value.idr_flag << '\n';
+       s << "\tis_reference_flag = " << value.is_reference_flag << '\n';
+       s << "\tnum_ref_idx_active_override_flag = " << value.num_ref_idx_active_override_flag << '\n';
+       s << "\tno_output_of_prior_pics_flag = " << value.no_output_of_prior_pics_flag << '\n';
+       s << "\tlong_term_reference_flag = " << value.long_term_reference_flag << '\n';
+       s << "\tadaptive_ref_pic_marking_mode_flag = " << value.adaptive_ref_pic_marking_mode_flag << '\n';
+       s << "\tno_prior_references_available_flag = " << value.no_prior_references_available_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264PictureInfoFlags& value)
+{
+       s << "StdVideoEncodeH264PictureInfoFlags = {\n";
+       s << "\tidr_flag = " << value.idr_flag << '\n';
+       s << "\tis_reference_flag = " << value.is_reference_flag << '\n';
+       s << "\tlong_term_reference_flag = " << value.long_term_reference_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefMgmtFlags& value)
+{
+       s << "StdVideoEncodeH264RefMgmtFlags = {\n";
+       s << "\tref_pic_list_modification_l0_flag = " << value.ref_pic_list_modification_l0_flag << '\n';
+       s << "\tref_pic_list_modification_l1_flag = " << value.ref_pic_list_modification_l1_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefListModEntry& value)
+{
+       s << "StdVideoEncodeH264RefListModEntry = {\n";
+       s << "\tmodification_of_pic_nums_idc = " << value.modification_of_pic_nums_idc << '\n';
+       s << "\tabs_diff_pic_num_minus1 = " << value.abs_diff_pic_num_minus1 << '\n';
+       s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefPicMarkingEntry& value)
+{
+       s << "StdVideoEncodeH264RefPicMarkingEntry = {\n";
+       s << "\toperation = " << value.operation << '\n';
+       s << "\tdifference_of_pic_nums_minus1 = " << value.difference_of_pic_nums_minus1 << '\n';
+       s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
+       s << "\tlong_term_frame_idx = " << value.long_term_frame_idx << '\n';
+       s << "\tmax_long_term_frame_idx_plus1 = " << value.max_long_term_frame_idx_plus1 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefMemMgmtCtrlOperations& value)
+{
+       s << "StdVideoEncodeH264RefMemMgmtCtrlOperations = {\n";
+       s << "\tflags = " << value.flags << '\n';
+       s << "\trefList0ModOpCount = " << value.refList0ModOpCount << '\n';
+       s << "\tpRefList0ModOperations = " << value.pRefList0ModOperations << '\n';
+       s << "\trefList1ModOpCount = " << value.refList1ModOpCount << '\n';
+       s << "\tpRefList1ModOperations = " << value.pRefList1ModOperations << '\n';
+       s << "\trefPicMarkingOpCount = " << value.refPicMarkingOpCount << '\n';
+       s << "\tpRefPicMarkingOperations = " << value.pRefPicMarkingOperations << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264PictureInfo& value)
+{
+       s << "StdVideoEncodeH264PictureInfo = {\n";
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tpictureType = " << value.pictureType << '\n';
+       s << "\tframeNum = " << value.frameNum << '\n';
+       s << "\tpictureOrderCount = " << value.pictureOrderCount << '\n';
+       s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
+       s << "\tlong_term_frame_idx = " << value.long_term_frame_idx << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264SliceHeader& value)
+{
+       s << "StdVideoEncodeH264SliceHeader = {\n";
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tslice_type = " << value.slice_type << '\n';
+       s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
+       s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
+       s << "\tidr_pic_id = " << value.idr_pic_id << '\n';
+       s << "\tnum_ref_idx_l0_active_minus1 = " << value.num_ref_idx_l0_active_minus1 << '\n';
+       s << "\tnum_ref_idx_l1_active_minus1 = " << value.num_ref_idx_l1_active_minus1 << '\n';
+       s << "\tcabac_init_idc = " << value.cabac_init_idc << '\n';
+       s << "\tdisable_deblocking_filter_idc = " << value.disable_deblocking_filter_idc << '\n';
+       s << "\tslice_alpha_c0_offset_div2 = " << value.slice_alpha_c0_offset_div2 << '\n';
+       s << "\tslice_beta_offset_div2 = " << value.slice_beta_offset_div2 << '\n';
+       s << "\tpMemMgmtCtrlOperations = " << value.pMemMgmtCtrlOperations << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264CapabilitiesEXT& value)
+{
+       s << "VkVideoEncodeH264CapabilitiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoEncodeH264CapabilityFlagsEXTStr(value.flags) << '\n';
+       s << "\tinputModeFlags = " << getVideoEncodeH264InputModeFlagsEXTStr(value.inputModeFlags) << '\n';
+       s << "\toutputModeFlags = " << getVideoEncodeH264OutputModeFlagsEXTStr(value.outputModeFlags) << '\n';
+       s << "\tminPictureSizeInMbs = " << value.minPictureSizeInMbs << '\n';
+       s << "\tmaxPictureSizeInMbs = " << value.maxPictureSizeInMbs << '\n';
+       s << "\tinputImageDataAlignment = " << value.inputImageDataAlignment << '\n';
+       s << "\tmaxNumL0ReferenceForP = " << value.maxNumL0ReferenceForP << '\n';
+       s << "\tmaxNumL0ReferenceForB = " << value.maxNumL0ReferenceForB << '\n';
+       s << "\tmaxNumL1Reference = " << value.maxNumL1Reference << '\n';
+       s << "\tqualityLevelCount = " << value.qualityLevelCount << '\n';
+       s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionCreateInfoEXT& value)
+{
+       s << "VkVideoEncodeH264SessionCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoEncodeH264CreateFlagsEXTStr(value.flags) << '\n';
+       s << "\tmaxPictureSizeInMbs = " << value.maxPictureSizeInMbs << '\n';
+       s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionParametersAddInfoEXT& value)
+{
+       s << "VkVideoEncodeH264SessionParametersAddInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tspsStdCount = " << value.spsStdCount << '\n';
+       s << "\tpSpsStd = " << value.pSpsStd << '\n';
+       s << "\tppsStdCount = " << value.ppsStdCount << '\n';
+       s << "\tpPpsStd = " << value.pPpsStd << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionParametersCreateInfoEXT& value)
+{
+       s << "VkVideoEncodeH264SessionParametersCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
+       s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
+       s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264DpbSlotInfoEXT& value)
+{
+       s << "VkVideoEncodeH264DpbSlotInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tslotIndex = " << value.slotIndex << '\n';
+       s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264NaluSliceEXT& value)
+{
+       s << "VkVideoEncodeH264NaluSliceEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpSliceHeaderStd = " << value.pSliceHeaderStd << '\n';
+       s << "\tmbCount = " << value.mbCount << '\n';
+       s << "\trefFinalList0EntryCount = " << value.refFinalList0EntryCount << '\n';
+       s << "\tpRefFinalList0Entries = " << value.pRefFinalList0Entries << '\n';
+       s << "\trefFinalList1EntryCount = " << value.refFinalList1EntryCount << '\n';
+       s << "\tpRefFinalList1Entries = " << value.pRefFinalList1Entries << '\n';
+       s << "\tprecedingNaluBytes = " << value.precedingNaluBytes << '\n';
+       s << "\tminQp = " << value.minQp << '\n';
+       s << "\tmaxQp = " << value.maxQp << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264VclFrameInfoEXT& value)
+{
+       s << "VkVideoEncodeH264VclFrameInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\trefDefaultFinalList0EntryCount = " << value.refDefaultFinalList0EntryCount << '\n';
+       s << "\tpRefDefaultFinalList0Entries = " << value.pRefDefaultFinalList0Entries << '\n';
+       s << "\trefDefaultFinalList1EntryCount = " << value.refDefaultFinalList1EntryCount << '\n';
+       s << "\tpRefDefaultFinalList1Entries = " << value.pRefDefaultFinalList1Entries << '\n';
+       s << "\tnaluSliceEntryCount = " << value.naluSliceEntryCount << '\n';
+       s << "\tpNaluSliceEntries = " << value.pNaluSliceEntries << '\n';
+       s << "\tpCurrentPictureInfo = " << value.pCurrentPictureInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264EmitPictureParametersEXT& value)
+{
+       s << "VkVideoEncodeH264EmitPictureParametersEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tspsId = " << value.spsId << '\n';
+       s << "\temitSpsEnable = " << value.emitSpsEnable << '\n';
+       s << "\tppsIdEntryCount = " << value.ppsIdEntryCount << '\n';
+       s << "\tppsIdEntries = " << value.ppsIdEntries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264ProfileEXT& value)
+{
+       s << "VkVideoEncodeH264ProfileEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264PictureInfoFlags& value)
+{
+       s << "StdVideoDecodeH264PictureInfoFlags = {\n";
+       s << "\tfield_pic_flag = " << value.field_pic_flag << '\n';
+       s << "\tis_intra = " << value.is_intra << '\n';
+       s << "\tbottom_field_flag = " << value.bottom_field_flag << '\n';
+       s << "\tis_reference = " << value.is_reference << '\n';
+       s << "\tcomplementary_field_pair = " << value.complementary_field_pair << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264PictureInfo& value)
+{
+       s << "StdVideoDecodeH264PictureInfo = {\n";
+       s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
+       s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
+       s << "\treserved = " << value.reserved << '\n';
+       s << "\tframe_num = " << value.frame_num << '\n';
+       s << "\tidr_pic_id = " << value.idr_pic_id << '\n';
+       s << "\tPicOrderCnt = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PicOrderCnt), DE_ARRAY_END(value.PicOrderCnt)) << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264ReferenceInfoFlags& value)
+{
+       s << "StdVideoDecodeH264ReferenceInfoFlags = {\n";
+       s << "\ttop_field_flag = " << value.top_field_flag << '\n';
+       s << "\tbottom_field_flag = " << value.bottom_field_flag << '\n';
+       s << "\tis_long_term = " << value.is_long_term << '\n';
+       s << "\tis_non_existing = " << value.is_non_existing << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264ReferenceInfo& value)
+{
+       s << "StdVideoDecodeH264ReferenceInfo = {\n";
+       s << "\tFrameNum = " << value.FrameNum << '\n';
+       s << "\treserved = " << value.reserved << '\n';
+       s << "\tPicOrderCnt = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PicOrderCnt), DE_ARRAY_END(value.PicOrderCnt)) << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264MvcElementFlags& value)
+{
+       s << "StdVideoDecodeH264MvcElementFlags = {\n";
+       s << "\tnon_idr = " << value.non_idr << '\n';
+       s << "\tanchor_pic = " << value.anchor_pic << '\n';
+       s << "\tinter_view = " << value.inter_view << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264MvcElement& value)
+{
+       s << "StdVideoDecodeH264MvcElement = {\n";
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tviewOrderIndex = " << value.viewOrderIndex << '\n';
+       s << "\tviewId = " << value.viewId << '\n';
+       s << "\ttemporalId = " << value.temporalId << '\n';
+       s << "\tpriorityId = " << value.priorityId << '\n';
+       s << "\tnumOfAnchorRefsInL0 = " << value.numOfAnchorRefsInL0 << '\n';
+       s << "\tviewIdOfAnchorRefsInL0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfAnchorRefsInL0), DE_ARRAY_END(value.viewIdOfAnchorRefsInL0)) << '\n';
+       s << "\tnumOfAnchorRefsInL1 = " << value.numOfAnchorRefsInL1 << '\n';
+       s << "\tviewIdOfAnchorRefsInL1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfAnchorRefsInL1), DE_ARRAY_END(value.viewIdOfAnchorRefsInL1)) << '\n';
+       s << "\tnumOfNonAnchorRefsInL0 = " << value.numOfNonAnchorRefsInL0 << '\n';
+       s << "\tviewIdOfNonAnchorRefsInL0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfNonAnchorRefsInL0), DE_ARRAY_END(value.viewIdOfNonAnchorRefsInL0)) << '\n';
+       s << "\tnumOfNonAnchorRefsInL1 = " << value.numOfNonAnchorRefsInL1 << '\n';
+       s << "\tviewIdOfNonAnchorRefsInL1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfNonAnchorRefsInL1), DE_ARRAY_END(value.viewIdOfNonAnchorRefsInL1)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264Mvc& value)
+{
+       s << "StdVideoDecodeH264Mvc = {\n";
+       s << "\tviewId0 = " << value.viewId0 << '\n';
+       s << "\tmvcElementCount = " << value.mvcElementCount << '\n';
+       s << "\tpMvcElements = " << value.pMvcElements << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264ProfileEXT& value)
+{
+       s << "VkVideoDecodeH264ProfileEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
+       s << "\tpictureLayout = " << getVideoDecodeH264PictureLayoutFlagsEXTStr(value.pictureLayout) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264CapabilitiesEXT& value)
+{
+       s << "VkVideoDecodeH264CapabilitiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxLevel = " << value.maxLevel << '\n';
+       s << "\tfieldOffsetGranularity = " << value.fieldOffsetGranularity << '\n';
+       s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionCreateInfoEXT& value)
+{
+       s << "VkVideoDecodeH264SessionCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoDecodeH264CreateFlagsEXTStr(value.flags) << '\n';
+       s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionParametersAddInfoEXT& value)
+{
+       s << "VkVideoDecodeH264SessionParametersAddInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tspsStdCount = " << value.spsStdCount << '\n';
+       s << "\tpSpsStd = " << value.pSpsStd << '\n';
+       s << "\tppsStdCount = " << value.ppsStdCount << '\n';
+       s << "\tpPpsStd = " << value.pPpsStd << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionParametersCreateInfoEXT& value)
+{
+       s << "VkVideoDecodeH264SessionParametersCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
+       s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
+       s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264PictureInfoEXT& value)
+{
+       s << "VkVideoDecodeH264PictureInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
+       s << "\tslicesCount = " << value.slicesCount << '\n';
+       s << "\tpSlicesDataOffsets = " << value.pSlicesDataOffsets << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264MvcEXT& value)
+{
+       s << "VkVideoDecodeH264MvcEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpStdMvc = " << value.pStdMvc << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264DpbSlotInfoEXT& value)
+{
+       s << "VkVideoDecodeH264DpbSlotInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpStdReferenceInfo = " << value.pStdReferenceInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265DecPicBufMgr& value)
+{
+       s << "StdVideoH265DecPicBufMgr = {\n";
+       s << "\tmax_latency_increase_plus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.max_latency_increase_plus1), DE_ARRAY_END(value.max_latency_increase_plus1)) << '\n';
+       s << "\tmax_dec_pic_buffering_minus1 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.max_dec_pic_buffering_minus1)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.max_dec_pic_buffering_minus1))) << '\n';
+       s << "\tmax_num_reorder_pics = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.max_num_reorder_pics)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.max_num_reorder_pics))) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265SubLayerHrdParameters& value)
+{
+       s << "StdVideoH265SubLayerHrdParameters = {\n";
+       s << "\tbit_rate_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_value_minus1), DE_ARRAY_END(value.bit_rate_value_minus1)) << '\n';
+       s << "\tcpb_size_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_value_minus1), DE_ARRAY_END(value.cpb_size_value_minus1)) << '\n';
+       s << "\tcpb_size_du_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_du_value_minus1), DE_ARRAY_END(value.cpb_size_du_value_minus1)) << '\n';
+       s << "\tbit_rate_du_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_du_value_minus1), DE_ARRAY_END(value.bit_rate_du_value_minus1)) << '\n';
+       s << "\tcbr_flag = " << value.cbr_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265HrdFlags& value)
+{
+       s << "StdVideoH265HrdFlags = {\n";
+       s << "\tnal_hrd_parameters_present_flag = " << value.nal_hrd_parameters_present_flag << '\n';
+       s << "\tvcl_hrd_parameters_present_flag = " << value.vcl_hrd_parameters_present_flag << '\n';
+       s << "\tsub_pic_hrd_params_present_flag = " << value.sub_pic_hrd_params_present_flag << '\n';
+       s << "\tsub_pic_cpb_params_in_pic_timing_sei_flag = " << value.sub_pic_cpb_params_in_pic_timing_sei_flag << '\n';
+       s << "\tfixed_pic_rate_general_flag = " << value.fixed_pic_rate_general_flag << '\n';
+       s << "\tfixed_pic_rate_within_cvs_flag = " << value.fixed_pic_rate_within_cvs_flag << '\n';
+       s << "\tlow_delay_hrd_flag = " << value.low_delay_hrd_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265HrdParameters& value)
+{
+       s << "StdVideoH265HrdParameters = {\n";
+       s << "\ttick_divisor_minus2 = " << value.tick_divisor_minus2 << '\n';
+       s << "\tdu_cpb_removal_delay_increment_length_minus1 = " << value.du_cpb_removal_delay_increment_length_minus1 << '\n';
+       s << "\tdpb_output_delay_du_length_minus1 = " << value.dpb_output_delay_du_length_minus1 << '\n';
+       s << "\tbit_rate_scale = " << value.bit_rate_scale << '\n';
+       s << "\tcpb_size_scale = " << value.cpb_size_scale << '\n';
+       s << "\tcpb_size_du_scale = " << value.cpb_size_du_scale << '\n';
+       s << "\tinitial_cpb_removal_delay_length_minus1 = " << value.initial_cpb_removal_delay_length_minus1 << '\n';
+       s << "\tau_cpb_removal_delay_length_minus1 = " << value.au_cpb_removal_delay_length_minus1 << '\n';
+       s << "\tdpb_output_delay_length_minus1 = " << value.dpb_output_delay_length_minus1 << '\n';
+       s << "\tcpb_cnt_minus1 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.cpb_cnt_minus1)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.cpb_cnt_minus1))) << '\n';
+       s << "\telemental_duration_in_tc_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.elemental_duration_in_tc_minus1), DE_ARRAY_END(value.elemental_duration_in_tc_minus1)) << '\n';
+       s << "\tSubLayerHrdParametersNal = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.SubLayerHrdParametersNal), DE_ARRAY_END(value.SubLayerHrdParametersNal)) << '\n';
+       s << "\tSubLayerHrdParametersVcl = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.SubLayerHrdParametersVcl), DE_ARRAY_END(value.SubLayerHrdParametersVcl)) << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265VpsFlags& value)
+{
+       s << "StdVideoH265VpsFlags = {\n";
+       s << "\tvps_temporal_id_nesting_flag = " << value.vps_temporal_id_nesting_flag << '\n';
+       s << "\tvps_sub_layer_ordering_info_present_flag = " << value.vps_sub_layer_ordering_info_present_flag << '\n';
+       s << "\tvps_timing_info_present_flag = " << value.vps_timing_info_present_flag << '\n';
+       s << "\tvps_poc_proportional_to_timing_flag = " << value.vps_poc_proportional_to_timing_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265VideoParameterSet& value)
+{
+       s << "StdVideoH265VideoParameterSet = {\n";
+       s << "\tvps_video_parameter_set_id = " << value.vps_video_parameter_set_id << '\n';
+       s << "\tvps_max_sub_layers_minus1 = " << value.vps_max_sub_layers_minus1 << '\n';
+       s << "\tvps_num_units_in_tick = " << value.vps_num_units_in_tick << '\n';
+       s << "\tvps_time_scale = " << value.vps_time_scale << '\n';
+       s << "\tvps_num_ticks_poc_diff_one_minus1 = " << value.vps_num_ticks_poc_diff_one_minus1 << '\n';
+       s << "\tpDecPicBufMgr = " << value.pDecPicBufMgr << '\n';
+       s << "\thrd_parameters = " << value.hrd_parameters << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265ScalingLists& value)
+{
+       s << "StdVideoH265ScalingLists = {\n";
+       s << "\tScalingList4x4 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList4x4), DE_ARRAY_END(value.ScalingList4x4)) << '\n';
+       s << "\tScalingList8x8 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList8x8), DE_ARRAY_END(value.ScalingList8x8)) << '\n';
+       s << "\tScalingList16x16 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList16x16), DE_ARRAY_END(value.ScalingList16x16)) << '\n';
+       s << "\tScalingList32x32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList32x32), DE_ARRAY_END(value.ScalingList32x32)) << '\n';
+       s << "\tScalingListDCCoef16x16 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.ScalingListDCCoef16x16)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.ScalingListDCCoef16x16))) << '\n';
+       s << "\tScalingListDCCoef32x32 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.ScalingListDCCoef32x32)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.ScalingListDCCoef32x32))) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265SpsVuiFlags& value)
+{
+       s << "StdVideoH265SpsVuiFlags = {\n";
+       s << "\taspect_ratio_info_present_flag = " << value.aspect_ratio_info_present_flag << '\n';
+       s << "\toverscan_info_present_flag = " << value.overscan_info_present_flag << '\n';
+       s << "\toverscan_appropriate_flag = " << value.overscan_appropriate_flag << '\n';
+       s << "\tvideo_signal_type_present_flag = " << value.video_signal_type_present_flag << '\n';
+       s << "\tvideo_full_range_flag = " << value.video_full_range_flag << '\n';
+       s << "\tcolour_description_present_flag = " << value.colour_description_present_flag << '\n';
+       s << "\tchroma_loc_info_present_flag = " << value.chroma_loc_info_present_flag << '\n';
+       s << "\tneutral_chroma_indication_flag = " << value.neutral_chroma_indication_flag << '\n';
+       s << "\tfield_seq_flag = " << value.field_seq_flag << '\n';
+       s << "\tframe_field_info_present_flag = " << value.frame_field_info_present_flag << '\n';
+       s << "\tdefault_display_window_flag = " << value.default_display_window_flag << '\n';
+       s << "\tvui_timing_info_present_flag = " << value.vui_timing_info_present_flag << '\n';
+       s << "\tvui_poc_proportional_to_timing_flag = " << value.vui_poc_proportional_to_timing_flag << '\n';
+       s << "\tvui_hrd_parameters_present_flag = " << value.vui_hrd_parameters_present_flag << '\n';
+       s << "\tbitstream_restriction_flag = " << value.bitstream_restriction_flag << '\n';
+       s << "\ttiles_fixed_structure_flag = " << value.tiles_fixed_structure_flag << '\n';
+       s << "\tmotion_vectors_over_pic_boundaries_flag = " << value.motion_vectors_over_pic_boundaries_flag << '\n';
+       s << "\trestricted_ref_pic_lists_flag = " << value.restricted_ref_pic_lists_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265SequenceParameterSetVui& value)
+{
+       s << "StdVideoH265SequenceParameterSetVui = {\n";
+       s << "\taspect_ratio_idc = " << value.aspect_ratio_idc << '\n';
+       s << "\tsar_width = " << value.sar_width << '\n';
+       s << "\tsar_height = " << value.sar_height << '\n';
+       s << "\tvideo_format = " << value.video_format << '\n';
+       s << "\tcolour_primaries = " << value.colour_primaries << '\n';
+       s << "\ttransfer_characteristics = " << value.transfer_characteristics << '\n';
+       s << "\tmatrix_coeffs = " << value.matrix_coeffs << '\n';
+       s << "\tchroma_sample_loc_type_top_field = " << value.chroma_sample_loc_type_top_field << '\n';
+       s << "\tchroma_sample_loc_type_bottom_field = " << value.chroma_sample_loc_type_bottom_field << '\n';
+       s << "\tdef_disp_win_left_offset = " << value.def_disp_win_left_offset << '\n';
+       s << "\tdef_disp_win_right_offset = " << value.def_disp_win_right_offset << '\n';
+       s << "\tdef_disp_win_top_offset = " << value.def_disp_win_top_offset << '\n';
+       s << "\tdef_disp_win_bottom_offset = " << value.def_disp_win_bottom_offset << '\n';
+       s << "\tvui_num_units_in_tick = " << value.vui_num_units_in_tick << '\n';
+       s << "\tvui_time_scale = " << value.vui_time_scale << '\n';
+       s << "\tvui_num_ticks_poc_diff_one_minus1 = " << value.vui_num_ticks_poc_diff_one_minus1 << '\n';
+       s << "\thrd_parameters = " << value.hrd_parameters << '\n';
+       s << "\tmin_spatial_segmentation_idc = " << value.min_spatial_segmentation_idc << '\n';
+       s << "\tmax_bytes_per_pic_denom = " << value.max_bytes_per_pic_denom << '\n';
+       s << "\tmax_bits_per_min_cu_denom = " << value.max_bits_per_min_cu_denom << '\n';
+       s << "\tlog2_max_mv_length_horizontal = " << value.log2_max_mv_length_horizontal << '\n';
+       s << "\tlog2_max_mv_length_vertical = " << value.log2_max_mv_length_vertical << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265PredictorPaletteEntries& value)
+{
+       s << "StdVideoH265PredictorPaletteEntries = {\n";
+       s << "\tPredictorPaletteEntries = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PredictorPaletteEntries), DE_ARRAY_END(value.PredictorPaletteEntries)) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265SpsFlags& value)
+{
+       s << "StdVideoH265SpsFlags = {\n";
+       s << "\tsps_temporal_id_nesting_flag = " << value.sps_temporal_id_nesting_flag << '\n';
+       s << "\tseparate_colour_plane_flag = " << value.separate_colour_plane_flag << '\n';
+       s << "\tscaling_list_enabled_flag = " << value.scaling_list_enabled_flag << '\n';
+       s << "\tsps_scaling_list_data_present_flag = " << value.sps_scaling_list_data_present_flag << '\n';
+       s << "\tamp_enabled_flag = " << value.amp_enabled_flag << '\n';
+       s << "\tsample_adaptive_offset_enabled_flag = " << value.sample_adaptive_offset_enabled_flag << '\n';
+       s << "\tpcm_enabled_flag = " << value.pcm_enabled_flag << '\n';
+       s << "\tpcm_loop_filter_disabled_flag = " << value.pcm_loop_filter_disabled_flag << '\n';
+       s << "\tlong_term_ref_pics_present_flag = " << value.long_term_ref_pics_present_flag << '\n';
+       s << "\tsps_temporal_mvp_enabled_flag = " << value.sps_temporal_mvp_enabled_flag << '\n';
+       s << "\tstrong_intra_smoothing_enabled_flag = " << value.strong_intra_smoothing_enabled_flag << '\n';
+       s << "\tvui_parameters_present_flag = " << value.vui_parameters_present_flag << '\n';
+       s << "\tsps_extension_present_flag = " << value.sps_extension_present_flag << '\n';
+       s << "\tsps_range_extension_flag = " << value.sps_range_extension_flag << '\n';
+       s << "\ttransform_skip_rotation_enabled_flag = " << value.transform_skip_rotation_enabled_flag << '\n';
+       s << "\ttransform_skip_context_enabled_flag = " << value.transform_skip_context_enabled_flag << '\n';
+       s << "\timplicit_rdpcm_enabled_flag = " << value.implicit_rdpcm_enabled_flag << '\n';
+       s << "\texplicit_rdpcm_enabled_flag = " << value.explicit_rdpcm_enabled_flag << '\n';
+       s << "\textended_precision_processing_flag = " << value.extended_precision_processing_flag << '\n';
+       s << "\tintra_smoothing_disabled_flag = " << value.intra_smoothing_disabled_flag << '\n';
+       s << "\thigh_precision_offsets_enabled_flag = " << value.high_precision_offsets_enabled_flag << '\n';
+       s << "\tpersistent_rice_adaptation_enabled_flag = " << value.persistent_rice_adaptation_enabled_flag << '\n';
+       s << "\tcabac_bypass_alignment_enabled_flag = " << value.cabac_bypass_alignment_enabled_flag << '\n';
+       s << "\tsps_curr_pic_ref_enabled_flag = " << value.sps_curr_pic_ref_enabled_flag << '\n';
+       s << "\tpalette_mode_enabled_flag = " << value.palette_mode_enabled_flag << '\n';
+       s << "\tsps_palette_predictor_initializer_present_flag = " << value.sps_palette_predictor_initializer_present_flag << '\n';
+       s << "\tintra_boundary_filtering_disabled_flag = " << value.intra_boundary_filtering_disabled_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265SequenceParameterSet& value)
+{
+       s << "StdVideoH265SequenceParameterSet = {\n";
+       s << "\tprofile_idc = " << value.profile_idc << '\n';
+       s << "\tlevel_idc = " << value.level_idc << '\n';
+       s << "\tpic_width_in_luma_samples = " << value.pic_width_in_luma_samples << '\n';
+       s << "\tpic_height_in_luma_samples = " << value.pic_height_in_luma_samples << '\n';
+       s << "\tsps_video_parameter_set_id = " << value.sps_video_parameter_set_id << '\n';
+       s << "\tsps_max_sub_layers_minus1 = " << value.sps_max_sub_layers_minus1 << '\n';
+       s << "\tsps_seq_parameter_set_id = " << value.sps_seq_parameter_set_id << '\n';
+       s << "\tchroma_format_idc = " << value.chroma_format_idc << '\n';
+       s << "\tbit_depth_luma_minus8 = " << value.bit_depth_luma_minus8 << '\n';
+       s << "\tbit_depth_chroma_minus8 = " << value.bit_depth_chroma_minus8 << '\n';
+       s << "\tlog2_max_pic_order_cnt_lsb_minus4 = " << value.log2_max_pic_order_cnt_lsb_minus4 << '\n';
+       s << "\tsps_max_dec_pic_buffering_minus1 = " << value.sps_max_dec_pic_buffering_minus1 << '\n';
+       s << "\tlog2_min_luma_coding_block_size_minus3 = " << value.log2_min_luma_coding_block_size_minus3 << '\n';
+       s << "\tlog2_diff_max_min_luma_coding_block_size = " << value.log2_diff_max_min_luma_coding_block_size << '\n';
+       s << "\tlog2_min_luma_transform_block_size_minus2 = " << value.log2_min_luma_transform_block_size_minus2 << '\n';
+       s << "\tlog2_diff_max_min_luma_transform_block_size = " << value.log2_diff_max_min_luma_transform_block_size << '\n';
+       s << "\tmax_transform_hierarchy_depth_inter = " << value.max_transform_hierarchy_depth_inter << '\n';
+       s << "\tmax_transform_hierarchy_depth_intra = " << value.max_transform_hierarchy_depth_intra << '\n';
+       s << "\tnum_short_term_ref_pic_sets = " << value.num_short_term_ref_pic_sets << '\n';
+       s << "\tnum_long_term_ref_pics_sps = " << value.num_long_term_ref_pics_sps << '\n';
+       s << "\tpcm_sample_bit_depth_luma_minus1 = " << value.pcm_sample_bit_depth_luma_minus1 << '\n';
+       s << "\tpcm_sample_bit_depth_chroma_minus1 = " << value.pcm_sample_bit_depth_chroma_minus1 << '\n';
+       s << "\tlog2_min_pcm_luma_coding_block_size_minus3 = " << value.log2_min_pcm_luma_coding_block_size_minus3 << '\n';
+       s << "\tlog2_diff_max_min_pcm_luma_coding_block_size = " << value.log2_diff_max_min_pcm_luma_coding_block_size << '\n';
+       s << "\tconf_win_left_offset = " << value.conf_win_left_offset << '\n';
+       s << "\tconf_win_right_offset = " << value.conf_win_right_offset << '\n';
+       s << "\tconf_win_top_offset = " << value.conf_win_top_offset << '\n';
+       s << "\tconf_win_bottom_offset = " << value.conf_win_bottom_offset << '\n';
+       s << "\tpDecPicBufMgr = " << value.pDecPicBufMgr << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tpScalingLists = " << value.pScalingLists << '\n';
+       s << "\tpSequenceParameterSetVui = " << value.pSequenceParameterSetVui << '\n';
+       s << "\tpalette_max_size = " << value.palette_max_size << '\n';
+       s << "\tdelta_palette_max_predictor_size = " << value.delta_palette_max_predictor_size << '\n';
+       s << "\tmotion_vector_resolution_control_idc = " << value.motion_vector_resolution_control_idc << '\n';
+       s << "\tsps_num_palette_predictor_initializer_minus1 = " << value.sps_num_palette_predictor_initializer_minus1 << '\n';
+       s << "\tpPredictorPaletteEntries = " << value.pPredictorPaletteEntries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265PpsFlags& value)
+{
+       s << "StdVideoH265PpsFlags = {\n";
+       s << "\tdependent_slice_segments_enabled_flag = " << value.dependent_slice_segments_enabled_flag << '\n';
+       s << "\toutput_flag_present_flag = " << value.output_flag_present_flag << '\n';
+       s << "\tsign_data_hiding_enabled_flag = " << value.sign_data_hiding_enabled_flag << '\n';
+       s << "\tcabac_init_present_flag = " << value.cabac_init_present_flag << '\n';
+       s << "\tconstrained_intra_pred_flag = " << value.constrained_intra_pred_flag << '\n';
+       s << "\ttransform_skip_enabled_flag = " << value.transform_skip_enabled_flag << '\n';
+       s << "\tcu_qp_delta_enabled_flag = " << value.cu_qp_delta_enabled_flag << '\n';
+       s << "\tpps_slice_chroma_qp_offsets_present_flag = " << value.pps_slice_chroma_qp_offsets_present_flag << '\n';
+       s << "\tweighted_pred_flag = " << value.weighted_pred_flag << '\n';
+       s << "\tweighted_bipred_flag = " << value.weighted_bipred_flag << '\n';
+       s << "\ttransquant_bypass_enabled_flag = " << value.transquant_bypass_enabled_flag << '\n';
+       s << "\ttiles_enabled_flag = " << value.tiles_enabled_flag << '\n';
+       s << "\tentropy_coding_sync_enabled_flag = " << value.entropy_coding_sync_enabled_flag << '\n';
+       s << "\tuniform_spacing_flag = " << value.uniform_spacing_flag << '\n';
+       s << "\tloop_filter_across_tiles_enabled_flag = " << value.loop_filter_across_tiles_enabled_flag << '\n';
+       s << "\tpps_loop_filter_across_slices_enabled_flag = " << value.pps_loop_filter_across_slices_enabled_flag << '\n';
+       s << "\tdeblocking_filter_control_present_flag = " << value.deblocking_filter_control_present_flag << '\n';
+       s << "\tdeblocking_filter_override_enabled_flag = " << value.deblocking_filter_override_enabled_flag << '\n';
+       s << "\tpps_deblocking_filter_disabled_flag = " << value.pps_deblocking_filter_disabled_flag << '\n';
+       s << "\tpps_scaling_list_data_present_flag = " << value.pps_scaling_list_data_present_flag << '\n';
+       s << "\tlists_modification_present_flag = " << value.lists_modification_present_flag << '\n';
+       s << "\tslice_segment_header_extension_present_flag = " << value.slice_segment_header_extension_present_flag << '\n';
+       s << "\tpps_extension_present_flag = " << value.pps_extension_present_flag << '\n';
+       s << "\tcross_component_prediction_enabled_flag = " << value.cross_component_prediction_enabled_flag << '\n';
+       s << "\tchroma_qp_offset_list_enabled_flag = " << value.chroma_qp_offset_list_enabled_flag << '\n';
+       s << "\tpps_curr_pic_ref_enabled_flag = " << value.pps_curr_pic_ref_enabled_flag << '\n';
+       s << "\tresidual_adaptive_colour_transform_enabled_flag = " << value.residual_adaptive_colour_transform_enabled_flag << '\n';
+       s << "\tpps_slice_act_qp_offsets_present_flag = " << value.pps_slice_act_qp_offsets_present_flag << '\n';
+       s << "\tpps_palette_predictor_initializer_present_flag = " << value.pps_palette_predictor_initializer_present_flag << '\n';
+       s << "\tmonochrome_palette_flag = " << value.monochrome_palette_flag << '\n';
+       s << "\tpps_range_extension_flag = " << value.pps_range_extension_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoH265PictureParameterSet& value)
+{
+       s << "StdVideoH265PictureParameterSet = {\n";
+       s << "\tpps_pic_parameter_set_id = " << value.pps_pic_parameter_set_id << '\n';
+       s << "\tpps_seq_parameter_set_id = " << value.pps_seq_parameter_set_id << '\n';
+       s << "\tnum_extra_slice_header_bits = " << value.num_extra_slice_header_bits << '\n';
+       s << "\tnum_ref_idx_l0_default_active_minus1 = " << value.num_ref_idx_l0_default_active_minus1 << '\n';
+       s << "\tnum_ref_idx_l1_default_active_minus1 = " << value.num_ref_idx_l1_default_active_minus1 << '\n';
+       s << "\tinit_qp_minus26 = " << value.init_qp_minus26 << '\n';
+       s << "\tdiff_cu_qp_delta_depth = " << value.diff_cu_qp_delta_depth << '\n';
+       s << "\tpps_cb_qp_offset = " << value.pps_cb_qp_offset << '\n';
+       s << "\tpps_cr_qp_offset = " << value.pps_cr_qp_offset << '\n';
+       s << "\tnum_tile_columns_minus1 = " << value.num_tile_columns_minus1 << '\n';
+       s << "\tnum_tile_rows_minus1 = " << value.num_tile_rows_minus1 << '\n';
+       s << "\tcolumn_width_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.column_width_minus1), DE_ARRAY_END(value.column_width_minus1)) << '\n';
+       s << "\trow_height_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.row_height_minus1), DE_ARRAY_END(value.row_height_minus1)) << '\n';
+       s << "\tpps_beta_offset_div2 = " << value.pps_beta_offset_div2 << '\n';
+       s << "\tpps_tc_offset_div2 = " << value.pps_tc_offset_div2 << '\n';
+       s << "\tlog2_parallel_merge_level_minus2 = " << value.log2_parallel_merge_level_minus2 << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << "\tpScalingLists = " << value.pScalingLists << '\n';
+       s << "\tlog2_max_transform_skip_block_size_minus2 = " << value.log2_max_transform_skip_block_size_minus2 << '\n';
+       s << "\tdiff_cu_chroma_qp_offset_depth = " << value.diff_cu_chroma_qp_offset_depth << '\n';
+       s << "\tchroma_qp_offset_list_len_minus1 = " << value.chroma_qp_offset_list_len_minus1 << '\n';
+       s << "\tcb_qp_offset_list = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cb_qp_offset_list), DE_ARRAY_END(value.cb_qp_offset_list)) << '\n';
+       s << "\tcr_qp_offset_list = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cr_qp_offset_list), DE_ARRAY_END(value.cr_qp_offset_list)) << '\n';
+       s << "\tlog2_sao_offset_scale_luma = " << value.log2_sao_offset_scale_luma << '\n';
+       s << "\tlog2_sao_offset_scale_chroma = " << value.log2_sao_offset_scale_chroma << '\n';
+       s << "\tpps_act_y_qp_offset_plus5 = " << value.pps_act_y_qp_offset_plus5 << '\n';
+       s << "\tpps_act_cb_qp_offset_plus5 = " << value.pps_act_cb_qp_offset_plus5 << '\n';
+       s << "\tpps_act_cr_qp_offset_plus5 = " << value.pps_act_cr_qp_offset_plus5 << '\n';
+       s << "\tpps_num_palette_predictor_initializer = " << value.pps_num_palette_predictor_initializer << '\n';
+       s << "\tluma_bit_depth_entry_minus8 = " << value.luma_bit_depth_entry_minus8 << '\n';
+       s << "\tchroma_bit_depth_entry_minus8 = " << value.chroma_bit_depth_entry_minus8 << '\n';
+       s << "\tpPredictorPaletteEntries = " << value.pPredictorPaletteEntries << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265PictureInfoFlags& value)
+{
+       s << "StdVideoDecodeH265PictureInfoFlags = {\n";
+       s << "\tIrapPicFlag = " << value.IrapPicFlag << '\n';
+       s << "\tIdrPicFlag = " << value.IdrPicFlag << '\n';
+       s << "\tIsReference = " << value.IsReference << '\n';
+       s << "\tshort_term_ref_pic_set_sps_flag = " << value.short_term_ref_pic_set_sps_flag << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265PictureInfo& value)
+{
+       s << "StdVideoDecodeH265PictureInfo = {\n";
+       s << "\tvps_video_parameter_set_id = " << value.vps_video_parameter_set_id << '\n';
+       s << "\tsps_seq_parameter_set_id = " << value.sps_seq_parameter_set_id << '\n';
+       s << "\tpps_pic_parameter_set_id = " << value.pps_pic_parameter_set_id << '\n';
+       s << "\tnum_short_term_ref_pic_sets = " << value.num_short_term_ref_pic_sets << '\n';
+       s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
+       s << "\tNumBitsForSTRefPicSetInSlice = " << value.NumBitsForSTRefPicSetInSlice << '\n';
+       s << "\tNumDeltaPocsOfRefRpsIdx = " << value.NumDeltaPocsOfRefRpsIdx << '\n';
+       s << "\tRefPicSetStCurrBefore = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.RefPicSetStCurrBefore)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.RefPicSetStCurrBefore))) << '\n';
+       s << "\tRefPicSetStCurrAfter = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.RefPicSetStCurrAfter)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.RefPicSetStCurrAfter))) << '\n';
+       s << "\tRefPicSetLtCurr = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.RefPicSetLtCurr)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.RefPicSetLtCurr))) << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265ReferenceInfoFlags& value)
+{
+       s << "StdVideoDecodeH265ReferenceInfoFlags = {\n";
+       s << "\tis_long_term = " << value.is_long_term << '\n';
+       s << "\tis_non_existing = " << value.is_non_existing << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265ReferenceInfo& value)
+{
+       s << "StdVideoDecodeH265ReferenceInfo = {\n";
+       s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
+       s << "\tflags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265ProfileEXT& value)
+{
+       s << "VkVideoDecodeH265ProfileEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265CapabilitiesEXT& value)
+{
+       s << "VkVideoDecodeH265CapabilitiesEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxLevel = " << value.maxLevel << '\n';
+       s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionCreateInfoEXT& value)
+{
+       s << "VkVideoDecodeH265SessionCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getVideoDecodeH265CreateFlagsEXTStr(value.flags) << '\n';
+       s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionParametersAddInfoEXT& value)
+{
+       s << "VkVideoDecodeH265SessionParametersAddInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tspsStdCount = " << value.spsStdCount << '\n';
+       s << "\tpSpsStd = " << value.pSpsStd << '\n';
+       s << "\tppsStdCount = " << value.ppsStdCount << '\n';
+       s << "\tpPpsStd = " << value.pPpsStd << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionParametersCreateInfoEXT& value)
+{
+       s << "VkVideoDecodeH265SessionParametersCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
+       s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
+       s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265PictureInfoEXT& value)
+{
+       s << "VkVideoDecodeH265PictureInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
+       s << "\tslicesCount = " << value.slicesCount << '\n';
+       s << "\tpSlicesDataOffsets = " << value.pSlicesDataOffsets << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265DpbSlotInfoEXT& value)
+{
+       s << "VkVideoDecodeH265DpbSlotInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpStdReferenceInfo = " << value.pStdReferenceInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value)
+{
+       s << "VkImagePipeSurfaceCreateInfoFUCHSIA = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getImagePipeSurfaceCreateFlagsFUCHSIAStr(value.flags) << '\n';
+       s << "\timagePipeHandle = " << value.imagePipeHandle << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryZirconHandleInfoFUCHSIA& value)
+{
+       s << "VkImportMemoryZirconHandleInfoFUCHSIA = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
+       s << "\thandle = " << value.handle << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryZirconHandlePropertiesFUCHSIA& value)
+{
+       s << "VkMemoryZirconHandlePropertiesFUCHSIA = {\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 VkMemoryGetZirconHandleInfoFUCHSIA& value)
+{
+       s << "VkMemoryGetZirconHandleInfoFUCHSIA = {\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 VkImportSemaphoreZirconHandleInfoFUCHSIA& value)
+{
+       s << "VkImportSemaphoreZirconHandleInfoFUCHSIA = {\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 << "\tzirconHandle = " << value.zirconHandle << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetZirconHandleInfoFUCHSIA& value)
+{
+       s << "VkSemaphoreGetZirconHandleInfoFUCHSIA = {\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 VkStreamDescriptorSurfaceCreateInfoGGP& value)
+{
+       s << "VkStreamDescriptorSurfaceCreateInfoGGP = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getStreamDescriptorSurfaceCreateFlagsGGPStr(value.flags) << '\n';
+       s << "\tstreamDescriptor = " << value.streamDescriptor << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentFrameTokenGGP& value)
+{
+       s << "VkPresentFrameTokenGGP = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tframeToken = " << value.frameToken << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
+{
+       s << "VkIOSSurfaceCreateInfoMVK = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
+       s << "\tpView = " << value.pView << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
+{
+       s << "VkMacOSSurfaceCreateInfoMVK = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
+       s << "\tpView = " << value.pView << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMetalSurfaceCreateInfoEXT& value)
+{
+       s << "VkMetalSurfaceCreateInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getMetalSurfaceCreateFlagsEXTStr(value.flags) << '\n';
+       s << "\tpLayer = " << value.pLayer << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
+{
+       s << "VkViSurfaceCreateInfoNN = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
+       s << "\twindow = " << value.window << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
+{
+       s << "VkWaylandSurfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tdisplay = " << value.display << '\n';
+       s << "\tsurface = " << value.surface << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
+{
+       s << "VkWin32SurfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\thinstance = " << value.hinstance << '\n';
+       s << "\thwnd = " << value.hwnd << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
+{
+       s << "VkImportMemoryWin32HandleInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
+       s << "\thandle = " << value.handle << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
+{
+       s << "VkExportMemoryWin32HandleInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpAttributes = " << value.pAttributes << '\n';
+       s << "\tdwAccess = " << value.dwAccess << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
+{
+       s << "VkMemoryWin32HandlePropertiesKHR = {\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 VkMemoryGetWin32HandleInfoKHR& value)
+{
+       s << "VkMemoryGetWin32HandleInfoKHR = {\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 VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
+{
+       s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tacquireCount = " << value.acquireCount << '\n';
+       s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
+       s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
+       s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
+       s << "\treleaseCount = " << value.releaseCount << '\n';
+       s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
+       s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
+{
+       s << "VkImportSemaphoreWin32HandleInfoKHR = {\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 << "\thandle = " << value.handle << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
+{
+       s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpAttributes = " << value.pAttributes << '\n';
+       s << "\tdwAccess = " << value.dwAccess << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
+{
+       s << "VkD3D12FenceSubmitInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
+       s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
+       s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
+       s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
+{
+       s << "VkSemaphoreGetWin32HandleInfoKHR = {\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 VkImportFenceWin32HandleInfoKHR& value)
+{
+       s << "VkImportFenceWin32HandleInfoKHR = {\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 << "\thandle = " << value.handle << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
+{
+       s << "VkExportFenceWin32HandleInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpAttributes = " << value.pAttributes << '\n';
+       s << "\tdwAccess = " << value.dwAccess << '\n';
+       s << "\tname = " << getWStr(value.name) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
+{
+       s << "VkFenceGetWin32HandleInfoKHR = {\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 VkImportMemoryWin32HandleInfoNV& value)
+{
+       s << "VkImportMemoryWin32HandleInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
+       s << "\thandle = " << value.handle << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
+{
+       s << "VkExportMemoryWin32HandleInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tpAttributes = " << value.pAttributes << '\n';
+       s << "\tdwAccess = " << value.dwAccess << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
+{
+       s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tacquireCount = " << value.acquireCount << '\n';
+       s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
+       s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
+       s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
+       s << "\treleaseCount = " << value.releaseCount << '\n';
+       s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
+       s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveInfoEXT& value)
+{
+       s << "VkSurfaceFullScreenExclusiveInfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfullScreenExclusive = " << value.fullScreenExclusive << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesFullScreenExclusiveEXT& value)
+{
+       s << "VkSurfaceCapabilitiesFullScreenExclusiveEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfullScreenExclusiveSupported = " << value.fullScreenExclusiveSupported << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveWin32InfoEXT& value)
+{
+       s << "VkSurfaceFullScreenExclusiveWin32InfoEXT = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\thmonitor = " << value.hmonitor << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
+{
+       s << "VkXcbSurfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tconnection = " << value.connection << '\n';
+       s << "\twindow = " << value.window << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
+{
+       s << "VkXlibSurfaceCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tdpy = " << value.dpy << '\n';
+       s << "\twindow = " << value.window << '\n';
+       s << '}';
+       return s;
+}
diff --git a/external/vulkancts/framework/vulkan/vkStructTypes.inl b/external/vulkancts/framework/vulkan/vkStructTypes.inl
new file mode 100644 (file)
index 0000000..da77794
--- /dev/null
@@ -0,0 +1,7284 @@
+/* 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 VkPipelineCacheHeaderVersionOne
+{
+       deUint32                                                headerSize;
+       VkPipelineCacheHeaderVersion    headerVersion;
+       deUint32                                                vendorID;
+       deUint32                                                deviceID;
+       deUint8                                                 pipelineCacheUUID[VK_UUID_SIZE];
+};
+
+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 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;
+};
+
+struct VkImageSubresource
+{
+       VkImageAspectFlags      aspectMask;
+       deUint32                        mipLevel;
+       deUint32                        arrayLayer;
+};
+
+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 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 VkShaderModuleCreateInfo
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkShaderModuleCreateFlags       flags;
+       deUintptr                                       codeSize;
+       const deUint32*                         pCode;
+};
+
+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 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 VkDeviceGroupBindSparseInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                resourceDeviceIndex;
+       deUint32                memoryDeviceIndex;
+};
+
+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 VkImageSparseMemoryRequirementsInfo2
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkImage                 image;
+};
+
+struct VkMemoryRequirements2
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkMemoryRequirements    memoryRequirements;
+};
+
+struct VkSparseImageMemoryRequirements2
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkSparseImageMemoryRequirements memoryRequirements;
+};
+
+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;
+};
+
+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 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 VkDescriptorUpdateTemplateEntry
+{
+       deUint32                        dstBinding;
+       deUint32                        dstArrayElement;
+       deUint32                        descriptorCount;
+       VkDescriptorType        descriptorType;
+       deUintptr                       offset;
+       deUintptr                       stride;
+};
+
+struct VkDescriptorUpdateTemplateCreateInfo
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkDescriptorUpdateTemplateCreateFlags   flags;
+       deUint32                                                                descriptorUpdateEntryCount;
+       const VkDescriptorUpdateTemplateEntry*  pDescriptorUpdateEntries;
+       VkDescriptorUpdateTemplateType                  templateType;
+       VkDescriptorSetLayout                                   descriptorSetLayout;
+       VkPipelineBindPoint                                             pipelineBindPoint;
+       VkPipelineLayout                                                pipelineLayout;
+       deUint32                                                                set;
+};
+
+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 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;
+       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 VkPhysicalDevicePushDescriptorPropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxPushDescriptors;
+};
+
+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;
+       void*                                                   pNext;
+       VkPerformanceCounterUnitKHR             unit;
+       VkPerformanceCounterScopeKHR    scope;
+       VkPerformanceCounterStorageKHR  storage;
+       deUint8                                                 uuid[VK_UUID_SIZE];
+};
+
+struct VkPerformanceCounterDescriptionKHR
+{
+       VkStructureType                                                 sType;
+       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 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 VkSurfaceProtectedCapabilitiesKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                supportsProtected;
+};
+
+struct VkPhysicalDevicePresentWaitFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                presentWait;
+};
+
+struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                pipelineExecutableInfo;
+};
+
+struct VkPipelineInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkPipeline              pipeline;
+};
+
+struct VkPipelineExecutablePropertiesKHR
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       VkShaderStageFlags      stages;
+       char                            name[VK_MAX_DESCRIPTION_SIZE];
+       char                            description[VK_MAX_DESCRIPTION_SIZE];
+       deUint32                        subgroupSize;
+};
+
+struct VkPipelineExecutableInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkPipeline              pipeline;
+       deUint32                executableIndex;
+};
+
+union VkPipelineExecutableStatisticValueKHR
+{
+       VkBool32        b32;
+       deInt64         i64;
+       deUint64        u64;
+       double          f64;
+};
+
+struct VkPipelineExecutableStatisticKHR
+{
+       VkStructureType                                                 sType;
+       void*                                                                   pNext;
+       char                                                                    name[VK_MAX_DESCRIPTION_SIZE];
+       char                                                                    description[VK_MAX_DESCRIPTION_SIZE];
+       VkPipelineExecutableStatisticFormatKHR  format;
+       VkPipelineExecutableStatisticValueKHR   value;
+};
+
+struct VkPipelineExecutableInternalRepresentationKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       char                    name[VK_MAX_DESCRIPTION_SIZE];
+       char                    description[VK_MAX_DESCRIPTION_SIZE];
+       VkBool32                isText;
+       deUintptr               dataSize;
+       void*                   pData;
+};
+
+struct VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderIntegerDotProduct;
+};
+
+struct VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                integerDotProduct8BitUnsignedAccelerated;
+       VkBool32                integerDotProduct8BitSignedAccelerated;
+       VkBool32                integerDotProduct8BitMixedSignednessAccelerated;
+       VkBool32                integerDotProduct4x8BitPackedUnsignedAccelerated;
+       VkBool32                integerDotProduct4x8BitPackedSignedAccelerated;
+       VkBool32                integerDotProduct4x8BitPackedMixedSignednessAccelerated;
+       VkBool32                integerDotProduct16BitUnsignedAccelerated;
+       VkBool32                integerDotProduct16BitSignedAccelerated;
+       VkBool32                integerDotProduct16BitMixedSignednessAccelerated;
+       VkBool32                integerDotProduct32BitUnsignedAccelerated;
+       VkBool32                integerDotProduct32BitSignedAccelerated;
+       VkBool32                integerDotProduct32BitMixedSignednessAccelerated;
+       VkBool32                integerDotProduct64BitUnsignedAccelerated;
+       VkBool32                integerDotProduct64BitSignedAccelerated;
+       VkBool32                integerDotProduct64BitMixedSignednessAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating8BitSignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating16BitSignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating32BitSignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating64BitSignedAccelerated;
+       VkBool32                integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
+};
+
+struct VkPipelineLibraryCreateInfoKHR
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       deUint32                        libraryCount;
+       const VkPipeline*       pLibraries;
+};
+
+struct VkPresentIdKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                swapchainCount;
+       const deUint64* pPresentIds;
+};
+
+struct VkPhysicalDevicePresentIdFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                presentId;
+};
+
+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 VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderSubgroupUniformControlFlow;
+};
+
+struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderZeroInitializeWorkgroupMemory;
+};
+
+struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                workgroupMemoryExplicitLayout;
+       VkBool32                workgroupMemoryExplicitLayoutScalarBlockLayout;
+       VkBool32                workgroupMemoryExplicitLayout8BitAccess;
+       VkBool32                workgroupMemoryExplicitLayout16BitAccess;
+};
+
+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 VkDebugReportCallbackCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkDebugReportFlagsEXT                   flags;
+       PFN_vkDebugReportCallbackEXT    pfnCallback;
+       void*                                                   pUserData;
+};
+
+struct VkPipelineRasterizationStateRasterizationOrderAMD
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkRasterizationOrderAMD rasterizationOrder;
+};
+
+struct VkDebugMarkerObjectNameInfoEXT
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkDebugReportObjectTypeEXT      objectType;
+       deUint64                                        object;
+       const char*                                     pObjectName;
+};
+
+struct VkDebugMarkerObjectTagInfoEXT
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkDebugReportObjectTypeEXT      objectType;
+       deUint64                                        object;
+       deUint64                                        tagName;
+       deUintptr                                       tagSize;
+       const void*                                     pTag;
+};
+
+struct VkDebugMarkerMarkerInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       const char*             pMarkerName;
+       float                   color[4];
+};
+
+struct VkDedicatedAllocationImageCreateInfoNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                dedicatedAllocation;
+};
+
+struct VkDedicatedAllocationBufferCreateInfoNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                dedicatedAllocation;
+};
+
+struct VkDedicatedAllocationMemoryAllocateInfoNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkImage                 image;
+       VkBuffer                buffer;
+};
+
+struct VkPhysicalDeviceTransformFeedbackFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                transformFeedback;
+       VkBool32                geometryStreams;
+};
+
+struct VkPhysicalDeviceTransformFeedbackPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxTransformFeedbackStreams;
+       deUint32                maxTransformFeedbackBuffers;
+       VkDeviceSize    maxTransformFeedbackBufferSize;
+       deUint32                maxTransformFeedbackStreamDataSize;
+       deUint32                maxTransformFeedbackBufferDataSize;
+       deUint32                maxTransformFeedbackBufferDataStride;
+       VkBool32                transformFeedbackQueries;
+       VkBool32                transformFeedbackStreamsLinesTriangles;
+       VkBool32                transformFeedbackRasterizationStreamSelect;
+       VkBool32                transformFeedbackDraw;
+};
+
+struct VkPipelineRasterizationStateStreamCreateInfoEXT
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       VkPipelineRasterizationStateStreamCreateFlagsEXT        flags;
+       deUint32                                                                                        rasterizationStream;
+};
+
+struct VkCuModuleCreateInfoNVX
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUintptr               dataSize;
+       const void*             pData;
+};
+
+struct VkCuFunctionCreateInfoNVX
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkCuModuleNVX   module;
+       const char*             pName;
+};
+
+struct VkCuLaunchInfoNVX
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkCuFunctionNVX         function;
+       deUint32                        gridDimX;
+       deUint32                        gridDimY;
+       deUint32                        gridDimZ;
+       deUint32                        blockDimX;
+       deUint32                        blockDimY;
+       deUint32                        blockDimZ;
+       deUint32                        sharedMemBytes;
+       deUintptr                       paramCount;
+       const void* const *     pParams;
+       deUintptr                       extraCount;
+       const void* const *     pExtras;
+};
+
+struct VkImageViewHandleInfoNVX
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkImageView                     imageView;
+       VkDescriptorType        descriptorType;
+       VkSampler                       sampler;
+};
+
+struct VkImageViewAddressPropertiesNVX
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkDeviceAddress deviceAddress;
+       VkDeviceSize    size;
+};
+
+struct VkTextureLODGatherFormatPropertiesAMD
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                supportsTextureGatherLODBiasAMD;
+};
+
+struct VkShaderResourceUsageAMD
+{
+       deUint32        numUsedVgprs;
+       deUint32        numUsedSgprs;
+       deUint32        ldsSizePerLocalWorkGroup;
+       deUintptr       ldsUsageSizeInBytes;
+       deUintptr       scratchMemUsageInBytes;
+};
+
+struct VkShaderStatisticsInfoAMD
+{
+       VkShaderStageFlags                      shaderStageMask;
+       VkShaderResourceUsageAMD        resourceUsage;
+       deUint32                                        numPhysicalVgprs;
+       deUint32                                        numPhysicalSgprs;
+       deUint32                                        numAvailableVgprs;
+       deUint32                                        numAvailableSgprs;
+       deUint32                                        computeWorkGroupSize[3];
+};
+
+struct VkPhysicalDeviceCornerSampledImageFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                cornerSampledImage;
+};
+
+struct VkExternalImageFormatPropertiesNV
+{
+       VkImageFormatProperties                         imageFormatProperties;
+       VkExternalMemoryFeatureFlagsNV          externalMemoryFeatures;
+       VkExternalMemoryHandleTypeFlagsNV       exportFromImportedHandleTypes;
+       VkExternalMemoryHandleTypeFlagsNV       compatibleHandleTypes;
+};
+
+struct VkExternalMemoryImageCreateInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkExternalMemoryHandleTypeFlagsNV       handleTypes;
+};
+
+struct VkExportMemoryAllocateInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkExternalMemoryHandleTypeFlagsNV       handleTypes;
+};
+
+struct VkValidationFlagsEXT
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       deUint32                                        disabledValidationCheckCount;
+       const VkValidationCheckEXT*     pDisabledValidationChecks;
+};
+
+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 VkConditionalRenderingBeginInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkBuffer                                                buffer;
+       VkDeviceSize                                    offset;
+       VkConditionalRenderingFlagsEXT  flags;
+};
+
+struct VkPhysicalDeviceConditionalRenderingFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                conditionalRendering;
+       VkBool32                inheritedConditionalRendering;
+};
+
+struct VkCommandBufferInheritanceConditionalRenderingInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                conditionalRenderingEnable;
+};
+
+struct VkViewportWScalingNV
+{
+       float   xcoeff;
+       float   ycoeff;
+};
+
+struct VkPipelineViewportWScalingStateCreateInfoNV
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkBool32                                        viewportWScalingEnable;
+       deUint32                                        viewportCount;
+       const VkViewportWScalingNV*     pViewportWScalings;
+};
+
+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 VkRefreshCycleDurationGOOGLE
+{
+       deUint64        refreshDuration;
+};
+
+struct VkPastPresentationTimingGOOGLE
+{
+       deUint32        presentID;
+       deUint64        desiredPresentTime;
+       deUint64        actualPresentTime;
+       deUint64        earliestPresentTime;
+       deUint64        presentMargin;
+};
+
+struct VkPresentTimeGOOGLE
+{
+       deUint32        presentID;
+       deUint64        desiredPresentTime;
+};
+
+struct VkPresentTimesInfoGOOGLE
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       deUint32                                        swapchainCount;
+       const VkPresentTimeGOOGLE*      pTimes;
+};
+
+struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                perViewPositionAllComponents;
+};
+
+struct VkViewportSwizzleNV
+{
+       VkViewportCoordinateSwizzleNV   x;
+       VkViewportCoordinateSwizzleNV   y;
+       VkViewportCoordinateSwizzleNV   z;
+       VkViewportCoordinateSwizzleNV   w;
+};
+
+struct VkPipelineViewportSwizzleStateCreateInfoNV
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       VkPipelineViewportSwizzleStateCreateFlagsNV     flags;
+       deUint32                                                                        viewportCount;
+       const VkViewportSwizzleNV*                                      pViewportSwizzles;
+};
+
+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 VkPhysicalDeviceInlineUniformBlockFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                inlineUniformBlock;
+       VkBool32                descriptorBindingInlineUniformBlockUpdateAfterBind;
+};
+
+struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxInlineUniformBlockSize;
+       deUint32                maxPerStageDescriptorInlineUniformBlocks;
+       deUint32                maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
+       deUint32                maxDescriptorSetInlineUniformBlocks;
+       deUint32                maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+};
+
+struct VkWriteDescriptorSetInlineUniformBlockEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                dataSize;
+       const void*             pData;
+};
+
+struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                maxInlineUniformBlockBindings;
+};
+
+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 VkPipelineCoverageToColorStateCreateInfoNV
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       VkPipelineCoverageToColorStateCreateFlagsNV     flags;
+       VkBool32                                                                        coverageToColorEnable;
+       deUint32                                                                        coverageToColorLocation;
+};
+
+struct VkPipelineCoverageModulationStateCreateInfoNV
+{
+       VkStructureType                                                                 sType;
+       const void*                                                                             pNext;
+       VkPipelineCoverageModulationStateCreateFlagsNV  flags;
+       VkCoverageModulationModeNV                                              coverageModulationMode;
+       VkBool32                                                                                coverageModulationTableEnable;
+       deUint32                                                                                coverageModulationTableCount;
+       const float*                                                                    pCoverageModulationTable;
+};
+
+struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                shaderSMCount;
+       deUint32                shaderWarpsPerSM;
+};
+
+struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderSMBuiltins;
+};
+
+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 VkValidationCacheCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkValidationCacheCreateFlagsEXT flags;
+       deUintptr                                               initialDataSize;
+       const void*                                             pInitialData;
+};
+
+struct VkShaderModuleValidationCacheCreateInfoEXT
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkValidationCacheEXT    validationCache;
+};
+
+struct VkShadingRatePaletteNV
+{
+       deUint32                                                        shadingRatePaletteEntryCount;
+       const VkShadingRatePaletteEntryNV*      pShadingRatePaletteEntries;
+};
+
+struct VkPipelineViewportShadingRateImageStateCreateInfoNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkBool32                                                shadingRateImageEnable;
+       deUint32                                                viewportCount;
+       const VkShadingRatePaletteNV*   pShadingRatePalettes;
+};
+
+struct VkPhysicalDeviceShadingRateImageFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shadingRateImage;
+       VkBool32                shadingRateCoarseSampleOrder;
+};
+
+struct VkPhysicalDeviceShadingRateImagePropertiesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkExtent2D              shadingRateTexelSize;
+       deUint32                shadingRatePaletteSize;
+       deUint32                shadingRateMaxCoarseSamples;
+};
+
+struct VkCoarseSampleLocationNV
+{
+       deUint32        pixelX;
+       deUint32        pixelY;
+       deUint32        sample;
+};
+
+struct VkCoarseSampleOrderCustomNV
+{
+       VkShadingRatePaletteEntryNV             shadingRate;
+       deUint32                                                sampleCount;
+       deUint32                                                sampleLocationCount;
+       const VkCoarseSampleLocationNV* pSampleLocations;
+};
+
+struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkCoarseSampleOrderTypeNV                       sampleOrderType;
+       deUint32                                                        customSampleOrderCount;
+       const VkCoarseSampleOrderCustomNV*      pCustomSampleOrders;
+};
+
+struct VkRayTracingShaderGroupCreateInfoNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkRayTracingShaderGroupTypeKHR  type;
+       deUint32                                                generalShader;
+       deUint32                                                closestHitShader;
+       deUint32                                                anyHitShader;
+       deUint32                                                intersectionShader;
+};
+
+struct VkRayTracingPipelineCreateInfoNV
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       VkPipelineCreateFlags                                           flags;
+       deUint32                                                                        stageCount;
+       const VkPipelineShaderStageCreateInfo*          pStages;
+       deUint32                                                                        groupCount;
+       const VkRayTracingShaderGroupCreateInfoNV*      pGroups;
+       deUint32                                                                        maxRecursionDepth;
+       VkPipelineLayout                                                        layout;
+       VkPipeline                                                                      basePipelineHandle;
+       deInt32                                                                         basePipelineIndex;
+};
+
+struct VkGeometryTrianglesNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBuffer                vertexData;
+       VkDeviceSize    vertexOffset;
+       deUint32                vertexCount;
+       VkDeviceSize    vertexStride;
+       VkFormat                vertexFormat;
+       VkBuffer                indexData;
+       VkDeviceSize    indexOffset;
+       deUint32                indexCount;
+       VkIndexType             indexType;
+       VkBuffer                transformData;
+       VkDeviceSize    transformOffset;
+};
+
+struct VkGeometryAABBNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBuffer                aabbData;
+       deUint32                numAABBs;
+       deUint32                stride;
+       VkDeviceSize    offset;
+};
+
+struct VkGeometryDataNV
+{
+       VkGeometryTrianglesNV   triangles;
+       VkGeometryAABBNV                aabbs;
+};
+
+struct VkGeometryNV
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkGeometryTypeKHR       geometryType;
+       VkGeometryDataNV        geometry;
+       VkGeometryFlagsKHR      flags;
+};
+
+struct VkAccelerationStructureInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkAccelerationStructureTypeNV           type;
+       VkBuildAccelerationStructureFlagsNV     flags;
+       deUint32                                                        instanceCount;
+       deUint32                                                        geometryCount;
+       const VkGeometryNV*                                     pGeometries;
+};
+
+struct VkAccelerationStructureCreateInfoNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkDeviceSize                                    compactedSize;
+       VkAccelerationStructureInfoNV   info;
+};
+
+struct VkBindAccelerationStructureMemoryInfoNV
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkAccelerationStructureNV       accelerationStructure;
+       VkDeviceMemory                          memory;
+       VkDeviceSize                            memoryOffset;
+       deUint32                                        deviceIndexCount;
+       const deUint32*                         pDeviceIndices;
+};
+
+struct VkWriteDescriptorSetAccelerationStructureNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       deUint32                                                        accelerationStructureCount;
+       const VkAccelerationStructureNV*        pAccelerationStructures;
+};
+
+struct VkAccelerationStructureMemoryRequirementsInfoNV
+{
+       VkStructureType                                                                 sType;
+       const void*                                                                             pNext;
+       VkAccelerationStructureMemoryRequirementsTypeNV type;
+       VkAccelerationStructureNV                                               accelerationStructure;
+};
+
+struct VkPhysicalDeviceRayTracingPropertiesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                shaderGroupHandleSize;
+       deUint32                maxRecursionDepth;
+       deUint32                maxShaderGroupStride;
+       deUint32                shaderGroupBaseAlignment;
+       deUint64                maxGeometryCount;
+       deUint64                maxInstanceCount;
+       deUint64                maxTriangleCount;
+       deUint32                maxDescriptorSetAccelerationStructures;
+};
+
+struct VkTransformMatrixKHR
+{
+       float   matrix[3][4];
+};
+
+struct VkAabbPositionsKHR
+{
+       float   minX;
+       float   minY;
+       float   minZ;
+       float   maxX;
+       float   maxY;
+       float   maxZ;
+};
+
+struct VkAccelerationStructureInstanceKHR
+{
+       VkTransformMatrixKHR            transform;
+       deUint32                                        instanceCustomIndex:24;
+       deUint32                                        mask:8;
+       deUint32                                        instanceShaderBindingTableRecordOffset:24;
+       VkGeometryInstanceFlagsKHR      flags:8;
+       deUint64                                        accelerationStructureReference;
+};
+
+struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                representativeFragmentTest;
+};
+
+struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                representativeFragmentTestEnable;
+};
+
+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 VkPipelineCompilerControlCreateInfoAMD
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkPipelineCompilerControlFlagsAMD       compilerControlFlags;
+};
+
+struct VkCalibratedTimestampInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkTimeDomainEXT timeDomain;
+};
+
+struct VkPhysicalDeviceShaderCorePropertiesAMD
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                shaderEngineCount;
+       deUint32                shaderArraysPerEngineCount;
+       deUint32                computeUnitsPerShaderArray;
+       deUint32                simdPerComputeUnit;
+       deUint32                wavefrontsPerSimd;
+       deUint32                wavefrontSize;
+       deUint32                sgprsPerSimd;
+       deUint32                minSgprAllocation;
+       deUint32                maxSgprAllocation;
+       deUint32                sgprAllocationGranularity;
+       deUint32                vgprsPerSimd;
+       deUint32                minVgprAllocation;
+       deUint32                maxVgprAllocation;
+       deUint32                vgprAllocationGranularity;
+};
+
+struct VkDeviceMemoryOverallocationCreateInfoAMD
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkMemoryOverallocationBehaviorAMD       overallocationBehavior;
+};
+
+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 VkPipelineCreationFeedbackEXT
+{
+       VkPipelineCreationFeedbackFlagsEXT      flags;
+       deUint64                                                        duration;
+};
+
+struct VkPipelineCreationFeedbackCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPipelineCreationFeedbackEXT*  pPipelineCreationFeedback;
+       deUint32                                                pipelineStageCreationFeedbackCount;
+       VkPipelineCreationFeedbackEXT*  pPipelineStageCreationFeedbacks;
+};
+
+struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                computeDerivativeGroupQuads;
+       VkBool32                computeDerivativeGroupLinear;
+};
+
+struct VkPhysicalDeviceMeshShaderFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                taskShader;
+       VkBool32                meshShader;
+};
+
+struct VkPhysicalDeviceMeshShaderPropertiesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxDrawMeshTasksCount;
+       deUint32                maxTaskWorkGroupInvocations;
+       deUint32                maxTaskWorkGroupSize[3];
+       deUint32                maxTaskTotalMemorySize;
+       deUint32                maxTaskOutputCount;
+       deUint32                maxMeshWorkGroupInvocations;
+       deUint32                maxMeshWorkGroupSize[3];
+       deUint32                maxMeshTotalMemorySize;
+       deUint32                maxMeshOutputVertices;
+       deUint32                maxMeshOutputPrimitives;
+       deUint32                maxMeshMultiviewViewCount;
+       deUint32                meshOutputPerVertexGranularity;
+       deUint32                meshOutputPerPrimitiveGranularity;
+};
+
+struct VkDrawMeshTasksIndirectCommandNV
+{
+       deUint32        taskCount;
+       deUint32        firstTask;
+};
+
+struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fragmentShaderBarycentric;
+};
+
+struct VkPhysicalDeviceShaderImageFootprintFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                imageFootprint;
+};
+
+struct VkPipelineViewportExclusiveScissorStateCreateInfoNV
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                exclusiveScissorCount;
+       const VkRect2D* pExclusiveScissors;
+};
+
+struct VkPhysicalDeviceExclusiveScissorFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                exclusiveScissor;
+};
+
+struct VkQueueFamilyCheckpointPropertiesNV
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkPipelineStageFlags    checkpointExecutionStageMask;
+};
+
+struct VkCheckpointDataNV
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkPipelineStageFlagBits stage;
+       void*                                   pCheckpointMarker;
+};
+
+struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderIntegerFunctions2;
+};
+
+union VkPerformanceValueDataINTEL
+{
+       deUint32        value32;
+       deUint64        value64;
+       float           valueFloat;
+       VkBool32        valueBool;
+       const char*     valueString;
+};
+
+struct VkPerformanceValueINTEL
+{
+       VkPerformanceValueTypeINTEL     type;
+       VkPerformanceValueDataINTEL     data;
+};
+
+struct VkInitializePerformanceApiInfoINTEL
+{
+       VkStructureType sType;
+       const void*             pNext;
+       void*                   pUserData;
+};
+
+struct VkQueryPoolPerformanceQueryCreateInfoINTEL
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkQueryPoolSamplingModeINTEL    performanceCountersSampling;
+};
+
+struct VkPerformanceMarkerInfoINTEL
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint64                marker;
+};
+
+struct VkPerformanceStreamMarkerInfoINTEL
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                marker;
+};
+
+struct VkPerformanceOverrideInfoINTEL
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPerformanceOverrideTypeINTEL  type;
+       VkBool32                                                enable;
+       deUint64                                                parameter;
+};
+
+struct VkPerformanceConfigurationAcquireInfoINTEL
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkPerformanceConfigurationTypeINTEL     type;
+};
+
+struct VkPhysicalDevicePCIBusInfoPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                pciDomain;
+       deUint32                pciBus;
+       deUint32                pciDevice;
+       deUint32                pciFunction;
+};
+
+struct VkDisplayNativeHdrSurfaceCapabilitiesAMD
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                localDimmingSupport;
+};
+
+struct VkSwapchainDisplayNativeHdrCreateInfoAMD
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                localDimmingEnable;
+};
+
+struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fragmentDensityMap;
+       VkBool32                fragmentDensityMapDynamic;
+       VkBool32                fragmentDensityMapNonSubsampledImages;
+};
+
+struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkExtent2D              minFragmentDensityTexelSize;
+       VkExtent2D              maxFragmentDensityTexelSize;
+       VkBool32                fragmentDensityInvocations;
+};
+
+struct VkRenderPassFragmentDensityMapCreateInfoEXT
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkAttachmentReference   fragmentDensityMapAttachment;
+};
+
+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 VkPhysicalDeviceShaderCoreProperties2AMD
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkShaderCorePropertiesFlagsAMD  shaderCoreFeatures;
+       deUint32                                                activeComputeUnitCount;
+};
+
+struct VkPhysicalDeviceCoherentMemoryFeaturesAMD
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                deviceCoherentMemory;
+};
+
+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 VkPhysicalDeviceMemoryPriorityFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                memoryPriority;
+};
+
+struct VkMemoryPriorityAllocateInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       float                   priority;
+};
+
+struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                dedicatedAllocationImageAliasing;
+};
+
+struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                bufferDeviceAddress;
+       VkBool32                bufferDeviceAddressCaptureReplay;
+       VkBool32                bufferDeviceAddressMultiDevice;
+};
+
+struct VkBufferDeviceAddressCreateInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkDeviceAddress deviceAddress;
+};
+
+struct VkPhysicalDeviceToolPropertiesEXT
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       char                                    name[VK_MAX_EXTENSION_NAME_SIZE];
+       char                                    version[VK_MAX_EXTENSION_NAME_SIZE];
+       VkToolPurposeFlagsEXT   purposes;
+       char                                    description[VK_MAX_DESCRIPTION_SIZE];
+       char                                    layer[VK_MAX_EXTENSION_NAME_SIZE];
+};
+
+struct VkValidationFeaturesEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                enabledValidationFeatureCount;
+       const VkValidationFeatureEnableEXT*             pEnabledValidationFeatures;
+       deUint32                                                                disabledValidationFeatureCount;
+       const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
+};
+
+struct VkCooperativeMatrixPropertiesNV
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       deUint32                        MSize;
+       deUint32                        NSize;
+       deUint32                        KSize;
+       VkComponentTypeNV       AType;
+       VkComponentTypeNV       BType;
+       VkComponentTypeNV       CType;
+       VkComponentTypeNV       DType;
+       VkScopeNV                       scope;
+};
+
+struct VkPhysicalDeviceCooperativeMatrixFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                cooperativeMatrix;
+       VkBool32                cooperativeMatrixRobustBufferAccess;
+};
+
+struct VkPhysicalDeviceCooperativeMatrixPropertiesNV
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       VkShaderStageFlags      cooperativeMatrixSupportedStages;
+};
+
+struct VkPhysicalDeviceCoverageReductionModeFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                coverageReductionMode;
+};
+
+struct VkPipelineCoverageReductionStateCreateInfoNV
+{
+       VkStructureType                                                                 sType;
+       const void*                                                                             pNext;
+       VkPipelineCoverageReductionStateCreateFlagsNV   flags;
+       VkCoverageReductionModeNV                                               coverageReductionMode;
+};
+
+struct VkFramebufferMixedSamplesCombinationNV
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkCoverageReductionModeNV       coverageReductionMode;
+       VkSampleCountFlagBits           rasterizationSamples;
+       VkSampleCountFlags                      depthStencilSamples;
+       VkSampleCountFlags                      colorSamples;
+};
+
+struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fragmentShaderSampleInterlock;
+       VkBool32                fragmentShaderPixelInterlock;
+       VkBool32                fragmentShaderShadingRateInterlock;
+};
+
+struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                ycbcrImageArrays;
+};
+
+struct VkPhysicalDeviceProvokingVertexFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                provokingVertexLast;
+       VkBool32                transformFeedbackPreservesProvokingVertex;
+};
+
+struct VkPhysicalDeviceProvokingVertexPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                provokingVertexModePerPipeline;
+       VkBool32                transformFeedbackPreservesTriangleFanProvokingVertex;
+};
+
+struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkProvokingVertexModeEXT        provokingVertexMode;
+};
+
+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 VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderBufferFloat16Atomics;
+       VkBool32                shaderBufferFloat16AtomicAdd;
+       VkBool32                shaderBufferFloat16AtomicMinMax;
+       VkBool32                shaderBufferFloat32AtomicMinMax;
+       VkBool32                shaderBufferFloat64AtomicMinMax;
+       VkBool32                shaderSharedFloat16Atomics;
+       VkBool32                shaderSharedFloat16AtomicAdd;
+       VkBool32                shaderSharedFloat16AtomicMinMax;
+       VkBool32                shaderSharedFloat32AtomicMinMax;
+       VkBool32                shaderSharedFloat64AtomicMinMax;
+       VkBool32                shaderImageFloat32AtomicMinMax;
+       VkBool32                sparseImageFloat32AtomicMinMax;
+};
+
+struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderDemoteToHelperInvocation;
+};
+
+struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxGraphicsShaderGroupCount;
+       deUint32                maxIndirectSequenceCount;
+       deUint32                maxIndirectCommandsTokenCount;
+       deUint32                maxIndirectCommandsStreamCount;
+       deUint32                maxIndirectCommandsTokenOffset;
+       deUint32                maxIndirectCommandsStreamStride;
+       deUint32                minSequencesCountBufferOffsetAlignment;
+       deUint32                minSequencesIndexBufferOffsetAlignment;
+       deUint32                minIndirectCommandsBufferOffsetAlignment;
+};
+
+struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                deviceGeneratedCommands;
+};
+
+struct VkGraphicsShaderGroupCreateInfoNV
+{
+       VkStructureType                                                                 sType;
+       const void*                                                                             pNext;
+       deUint32                                                                                stageCount;
+       const VkPipelineShaderStageCreateInfo*                  pStages;
+       const VkPipelineVertexInputStateCreateInfo*             pVertexInputState;
+       const VkPipelineTessellationStateCreateInfo*    pTessellationState;
+};
+
+struct VkGraphicsPipelineShaderGroupsCreateInfoNV
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       deUint32                                                                        groupCount;
+       const VkGraphicsShaderGroupCreateInfoNV*        pGroups;
+       deUint32                                                                        pipelineCount;
+       const VkPipeline*                                                       pPipelines;
+};
+
+struct VkBindShaderGroupIndirectCommandNV
+{
+       deUint32        groupIndex;
+};
+
+struct VkBindIndexBufferIndirectCommandNV
+{
+       VkDeviceAddress bufferAddress;
+       deUint32                size;
+       VkIndexType             indexType;
+};
+
+struct VkBindVertexBufferIndirectCommandNV
+{
+       VkDeviceAddress bufferAddress;
+       deUint32                size;
+       deUint32                stride;
+};
+
+struct VkSetStateFlagsIndirectCommandNV
+{
+       deUint32        data;
+};
+
+struct VkIndirectCommandsStreamNV
+{
+       VkBuffer                buffer;
+       VkDeviceSize    offset;
+};
+
+struct VkIndirectCommandsLayoutTokenNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkIndirectCommandsTokenTypeNV   tokenType;
+       deUint32                                                stream;
+       deUint32                                                offset;
+       deUint32                                                vertexBindingUnit;
+       VkBool32                                                vertexDynamicStride;
+       VkPipelineLayout                                pushconstantPipelineLayout;
+       VkShaderStageFlags                              pushconstantShaderStageFlags;
+       deUint32                                                pushconstantOffset;
+       deUint32                                                pushconstantSize;
+       VkIndirectStateFlagsNV                  indirectStateFlags;
+       deUint32                                                indexTypeCount;
+       const VkIndexType*                              pIndexTypes;
+       const deUint32*                                 pIndexTypeValues;
+};
+
+struct VkIndirectCommandsLayoutCreateInfoNV
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkIndirectCommandsLayoutUsageFlagsNV    flags;
+       VkPipelineBindPoint                                             pipelineBindPoint;
+       deUint32                                                                tokenCount;
+       const VkIndirectCommandsLayoutTokenNV*  pTokens;
+       deUint32                                                                streamCount;
+       const deUint32*                                                 pStreamStrides;
+};
+
+struct VkGeneratedCommandsInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkPipelineBindPoint                                     pipelineBindPoint;
+       VkPipeline                                                      pipeline;
+       VkIndirectCommandsLayoutNV                      indirectCommandsLayout;
+       deUint32                                                        streamCount;
+       const VkIndirectCommandsStreamNV*       pStreams;
+       deUint32                                                        sequencesCount;
+       VkBuffer                                                        preprocessBuffer;
+       VkDeviceSize                                            preprocessOffset;
+       VkDeviceSize                                            preprocessSize;
+       VkBuffer                                                        sequencesCountBuffer;
+       VkDeviceSize                                            sequencesCountOffset;
+       VkBuffer                                                        sequencesIndexBuffer;
+       VkDeviceSize                                            sequencesIndexOffset;
+};
+
+struct VkGeneratedCommandsMemoryRequirementsInfoNV
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkPipelineBindPoint                     pipelineBindPoint;
+       VkPipeline                                      pipeline;
+       VkIndirectCommandsLayoutNV      indirectCommandsLayout;
+       deUint32                                        maxSequencesCount;
+};
+
+struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                inheritedViewportScissor2D;
+};
+
+struct VkCommandBufferInheritanceViewportScissorInfoNV
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkBool32                        viewportScissor2D;
+       deUint32                        viewportDepthCount;
+       const VkViewport*       pViewportDepths;
+};
+
+struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                texelBufferAlignment;
+};
+
+struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkDeviceSize    storageTexelBufferOffsetAlignmentBytes;
+       VkBool32                storageTexelBufferOffsetSingleTexelAlignment;
+       VkDeviceSize    uniformTexelBufferOffsetAlignmentBytes;
+       VkBool32                uniformTexelBufferOffsetSingleTexelAlignment;
+};
+
+struct VkRenderPassTransformBeginInfoQCOM
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkSurfaceTransformFlagBitsKHR   transform;
+};
+
+struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkSurfaceTransformFlagBitsKHR   transform;
+       VkRect2D                                                renderArea;
+};
+
+struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                deviceMemoryReport;
+};
+
+struct VkDeviceMemoryReportCallbackDataEXT
+{
+       VkStructureType                                         sType;
+       void*                                                           pNext;
+       VkDeviceMemoryReportFlagsEXT            flags;
+       VkDeviceMemoryReportEventTypeEXT        type;
+       deUint64                                                        memoryObjectId;
+       VkDeviceSize                                            size;
+       VkObjectType                                            objectType;
+       deUint64                                                        objectHandle;
+       deUint32                                                        heapIndex;
+};
+
+struct VkDeviceDeviceMemoryReportCreateInfoEXT
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceMemoryReportFlagsEXT            flags;
+       PFN_vkDeviceMemoryReportCallbackEXT     pfnUserCallback;
+       void*                                                           pUserData;
+};
+
+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 VkPhysicalDevicePrivateDataFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                privateData;
+};
+
+struct VkDevicePrivateDataCreateInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                privateDataSlotRequestCount;
+};
+
+struct VkPrivateDataSlotCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPrivateDataSlotCreateFlagsEXT flags;
+};
+
+struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                pipelineCreationCacheControl;
+};
+
+struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                diagnosticsConfig;
+};
+
+struct VkDeviceDiagnosticsConfigCreateInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceDiagnosticsConfigFlagsNV        flags;
+};
+
+struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fragmentShadingRateEnums;
+       VkBool32                supersampleFragmentShadingRates;
+       VkBool32                noInvocationFragmentShadingRates;
+};
+
+struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkSampleCountFlagBits   maxFragmentShadingRateInvocationCount;
+};
+
+struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkFragmentShadingRateTypeNV                     shadingRateType;
+       VkFragmentShadingRateNV                         shadingRate;
+       VkFragmentShadingRateCombinerOpKHR      combinerOps[2];
+};
+
+union VkDeviceOrHostAddressConstKHR
+{
+       VkDeviceAddress deviceAddress;
+       const void*             hostAddress;
+};
+
+struct VkAccelerationStructureGeometryMotionTrianglesDataNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkDeviceOrHostAddressConstKHR   vertexData;
+};
+
+struct VkAccelerationStructureMotionInfoNV
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       deUint32                                                                        maxInstances;
+       VkAccelerationStructureMotionInfoFlagsNV        flags;
+};
+
+struct VkAccelerationStructureMatrixMotionInstanceNV
+{
+       VkTransformMatrixKHR            transformT0;
+       VkTransformMatrixKHR            transformT1;
+       deUint32                                        instanceCustomIndex:24;
+       deUint32                                        mask:8;
+       deUint32                                        instanceShaderBindingTableRecordOffset:24;
+       VkGeometryInstanceFlagsKHR      flags:8;
+       deUint64                                        accelerationStructureReference;
+};
+
+struct VkSRTDataNV
+{
+       float   sx;
+       float   a;
+       float   b;
+       float   pvx;
+       float   sy;
+       float   c;
+       float   pvy;
+       float   sz;
+       float   pvz;
+       float   qx;
+       float   qy;
+       float   qz;
+       float   qw;
+       float   tx;
+       float   ty;
+       float   tz;
+};
+
+struct VkAccelerationStructureSRTMotionInstanceNV
+{
+       VkSRTDataNV                                     transformT0;
+       VkSRTDataNV                                     transformT1;
+       deUint32                                        instanceCustomIndex:24;
+       deUint32                                        mask:8;
+       deUint32                                        instanceShaderBindingTableRecordOffset:24;
+       VkGeometryInstanceFlagsKHR      flags:8;
+       deUint64                                        accelerationStructureReference;
+};
+
+union VkAccelerationStructureMotionInstanceDataNV
+{
+       VkAccelerationStructureInstanceKHR                              staticInstance;
+       VkAccelerationStructureMatrixMotionInstanceNV   matrixMotionInstance;
+       VkAccelerationStructureSRTMotionInstanceNV              srtMotionInstance;
+};
+
+struct VkAccelerationStructureMotionInstanceNV
+{
+       VkAccelerationStructureMotionInstanceTypeNV             type;
+       VkAccelerationStructureMotionInstanceFlagsNV    flags;
+       VkAccelerationStructureMotionInstanceDataNV             data;
+};
+
+struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                rayTracingMotionBlur;
+       VkBool32                rayTracingMotionBlurPipelineTraceRaysIndirect;
+};
+
+struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                ycbcr2plane444Formats;
+};
+
+struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fragmentDensityMapDeferred;
+};
+
+struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                subsampledLoads;
+       VkBool32                subsampledCoarseReconstructionEarlyAccess;
+       deUint32                maxSubsampledArrayLayers;
+       deUint32                maxDescriptorSetSubsampledSamplers;
+};
+
+struct VkCopyCommandTransformInfoQCOM
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkSurfaceTransformFlagBitsKHR   transform;
+};
+
+struct VkPhysicalDeviceImageRobustnessFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                robustImageAccess;
+};
+
+struct VkPhysicalDevice4444FormatsFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                formatA4R4G4B4;
+       VkBool32                formatA4B4G4R4;
+};
+
+struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                mutableDescriptorType;
+};
+
+struct VkMutableDescriptorTypeListVALVE
+{
+       deUint32                                descriptorTypeCount;
+       const VkDescriptorType* pDescriptorTypes;
+};
+
+struct VkMutableDescriptorTypeCreateInfoVALVE
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                mutableDescriptorTypeListCount;
+       const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists;
+};
+
+struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                vertexInputDynamicState;
+};
+
+struct VkVertexInputBindingDescription2EXT
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       deUint32                        binding;
+       deUint32                        stride;
+       VkVertexInputRate       inputRate;
+       deUint32                        divisor;
+};
+
+struct VkVertexInputAttributeDescription2EXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                location;
+       deUint32                binding;
+       VkFormat                format;
+       deUint32                offset;
+};
+
+struct VkPhysicalDeviceDrmPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                hasPrimary;
+       VkBool32                hasRender;
+       deInt64                 primaryMajor;
+       deInt64                 primaryMinor;
+       deInt64                 renderMajor;
+       deInt64                 renderMinor;
+};
+
+struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                primitiveTopologyListRestart;
+       VkBool32                primitiveTopologyPatchListRestart;
+};
+
+struct VkSubpassShadingPipelineCreateInfoHUAWEI
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkRenderPass    renderPass;
+       deUint32                subpass;
+};
+
+struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                subpassShading;
+};
+
+struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxSubpassShadingWorkgroupSizeAspectRatio;
+};
+
+struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                invocationMask;
+};
+
+struct VkMemoryGetRemoteAddressInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceMemory                                          memory;
+       VkExternalMemoryHandleTypeFlagBits      handleType;
+};
+
+struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                externalMemoryRDMA;
+};
+
+struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                extendedDynamicState2;
+       VkBool32                extendedDynamicState2LogicOp;
+       VkBool32                extendedDynamicState2PatchControlPoints;
+};
+
+struct VkPhysicalDeviceColorWriteEnableFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                colorWriteEnable;
+};
+
+struct VkPipelineColorWriteCreateInfoEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                attachmentCount;
+       const VkBool32* pColorWriteEnables;
+};
+
+struct VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                globalPriorityQuery;
+};
+
+struct VkQueueFamilyGlobalPriorityPropertiesEXT
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       deUint32                                        priorityCount;
+       VkQueueGlobalPriorityEXT        priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_EXT];
+};
+
+struct VkPhysicalDeviceMultiDrawFeaturesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                multiDraw;
+};
+
+struct VkPhysicalDeviceMultiDrawPropertiesEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxMultiDrawCount;
+};
+
+struct VkMultiDrawInfoEXT
+{
+       deUint32        firstVertex;
+       deUint32        vertexCount;
+};
+
+struct VkMultiDrawIndexedInfoEXT
+{
+       deUint32        firstIndex;
+       deUint32        indexCount;
+       deInt32         vertexOffset;
+};
+
+union VkDeviceOrHostAddressKHR
+{
+       VkDeviceAddress deviceAddress;
+       void*                   hostAddress;
+};
+
+struct VkAccelerationStructureBuildRangeInfoKHR
+{
+       deUint32        primitiveCount;
+       deUint32        primitiveOffset;
+       deUint32        firstVertex;
+       deUint32        transformOffset;
+};
+
+struct VkAccelerationStructureGeometryTrianglesDataKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkFormat                                                vertexFormat;
+       VkDeviceOrHostAddressConstKHR   vertexData;
+       VkDeviceSize                                    vertexStride;
+       deUint32                                                maxVertex;
+       VkIndexType                                             indexType;
+       VkDeviceOrHostAddressConstKHR   indexData;
+       VkDeviceOrHostAddressConstKHR   transformData;
+};
+
+struct VkAccelerationStructureGeometryAabbsDataKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkDeviceOrHostAddressConstKHR   data;
+       VkDeviceSize                                    stride;
+};
+
+struct VkAccelerationStructureGeometryInstancesDataKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkBool32                                                arrayOfPointers;
+       VkDeviceOrHostAddressConstKHR   data;
+};
+
+union VkAccelerationStructureGeometryDataKHR
+{
+       VkAccelerationStructureGeometryTrianglesDataKHR triangles;
+       VkAccelerationStructureGeometryAabbsDataKHR             aabbs;
+       VkAccelerationStructureGeometryInstancesDataKHR instances;
+};
+
+struct VkAccelerationStructureGeometryKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkGeometryTypeKHR                                               geometryType;
+       VkAccelerationStructureGeometryDataKHR  geometry;
+       VkGeometryFlagsKHR                                              flags;
+};
+
+struct VkAccelerationStructureBuildGeometryInfoKHR
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       VkAccelerationStructureTypeKHR                                          type;
+       VkBuildAccelerationStructureFlagsKHR                            flags;
+       VkBuildAccelerationStructureModeKHR                                     mode;
+       VkAccelerationStructureKHR                                                      srcAccelerationStructure;
+       VkAccelerationStructureKHR                                                      dstAccelerationStructure;
+       deUint32                                                                                        geometryCount;
+       const VkAccelerationStructureGeometryKHR*                       pGeometries;
+       const VkAccelerationStructureGeometryKHR* const*        ppGeometries;
+       VkDeviceOrHostAddressKHR                                                        scratchData;
+};
+
+struct VkAccelerationStructureCreateInfoKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkAccelerationStructureCreateFlagsKHR   createFlags;
+       VkBuffer                                                                buffer;
+       VkDeviceSize                                                    offset;
+       VkDeviceSize                                                    size;
+       VkAccelerationStructureTypeKHR                  type;
+       VkDeviceAddress                                                 deviceAddress;
+};
+
+struct VkWriteDescriptorSetAccelerationStructureKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       deUint32                                                        accelerationStructureCount;
+       const VkAccelerationStructureKHR*       pAccelerationStructures;
+};
+
+struct VkPhysicalDeviceAccelerationStructureFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                accelerationStructure;
+       VkBool32                accelerationStructureCaptureReplay;
+       VkBool32                accelerationStructureIndirectBuild;
+       VkBool32                accelerationStructureHostCommands;
+       VkBool32                descriptorBindingAccelerationStructureUpdateAfterBind;
+};
+
+struct VkPhysicalDeviceAccelerationStructurePropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint64                maxGeometryCount;
+       deUint64                maxInstanceCount;
+       deUint64                maxPrimitiveCount;
+       deUint32                maxPerStageDescriptorAccelerationStructures;
+       deUint32                maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
+       deUint32                maxDescriptorSetAccelerationStructures;
+       deUint32                maxDescriptorSetUpdateAfterBindAccelerationStructures;
+       deUint32                minAccelerationStructureScratchOffsetAlignment;
+};
+
+struct VkAccelerationStructureDeviceAddressInfoKHR
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkAccelerationStructureKHR      accelerationStructure;
+};
+
+struct VkAccelerationStructureVersionInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       const deUint8*  pVersionData;
+};
+
+struct VkCopyAccelerationStructureToMemoryInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkAccelerationStructureKHR                      src;
+       VkDeviceOrHostAddressKHR                        dst;
+       VkCopyAccelerationStructureModeKHR      mode;
+};
+
+struct VkCopyMemoryToAccelerationStructureInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceOrHostAddressConstKHR           src;
+       VkAccelerationStructureKHR                      dst;
+       VkCopyAccelerationStructureModeKHR      mode;
+};
+
+struct VkCopyAccelerationStructureInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkAccelerationStructureKHR                      src;
+       VkAccelerationStructureKHR                      dst;
+       VkCopyAccelerationStructureModeKHR      mode;
+};
+
+struct VkAccelerationStructureBuildSizesInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkDeviceSize    accelerationStructureSize;
+       VkDeviceSize    updateScratchSize;
+       VkDeviceSize    buildScratchSize;
+};
+
+struct VkRayTracingShaderGroupCreateInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkRayTracingShaderGroupTypeKHR  type;
+       deUint32                                                generalShader;
+       deUint32                                                closestHitShader;
+       deUint32                                                anyHitShader;
+       deUint32                                                intersectionShader;
+       const void*                                             pShaderGroupCaptureReplayHandle;
+};
+
+struct VkRayTracingPipelineInterfaceCreateInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                maxPipelineRayPayloadSize;
+       deUint32                maxPipelineRayHitAttributeSize;
+};
+
+struct VkRayTracingPipelineCreateInfoKHR
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       VkPipelineCreateFlags                                                           flags;
+       deUint32                                                                                        stageCount;
+       const VkPipelineShaderStageCreateInfo*                          pStages;
+       deUint32                                                                                        groupCount;
+       const VkRayTracingShaderGroupCreateInfoKHR*                     pGroups;
+       deUint32                                                                                        maxPipelineRayRecursionDepth;
+       const VkPipelineLibraryCreateInfoKHR*                           pLibraryInfo;
+       const VkRayTracingPipelineInterfaceCreateInfoKHR*       pLibraryInterface;
+       const VkPipelineDynamicStateCreateInfo*                         pDynamicState;
+       VkPipelineLayout                                                                        layout;
+       VkPipeline                                                                                      basePipelineHandle;
+       deInt32                                                                                         basePipelineIndex;
+};
+
+struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                rayTracingPipeline;
+       VkBool32                rayTracingPipelineShaderGroupHandleCaptureReplay;
+       VkBool32                rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
+       VkBool32                rayTracingPipelineTraceRaysIndirect;
+       VkBool32                rayTraversalPrimitiveCulling;
+};
+
+struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                shaderGroupHandleSize;
+       deUint32                maxRayRecursionDepth;
+       deUint32                maxShaderGroupStride;
+       deUint32                shaderGroupBaseAlignment;
+       deUint32                shaderGroupHandleCaptureReplaySize;
+       deUint32                maxRayDispatchInvocationCount;
+       deUint32                shaderGroupHandleAlignment;
+       deUint32                maxRayHitAttributeSize;
+};
+
+struct VkStridedDeviceAddressRegionKHR
+{
+       VkDeviceAddress deviceAddress;
+       VkDeviceSize    stride;
+       VkDeviceSize    size;
+};
+
+struct VkTraceRaysIndirectCommandKHR
+{
+       deUint32        width;
+       deUint32        height;
+       deUint32        depth;
+};
+
+struct VkPhysicalDeviceRayQueryFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                rayQuery;
+};
+
+struct VkAndroidSurfaceCreateInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkAndroidSurfaceCreateFlagsKHR          flags;
+       struct pt::AndroidNativeWindowPtr       window;
+};
+
+struct VkAndroidHardwareBufferUsageANDROID
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint64                androidHardwareBufferUsage;
+};
+
+struct VkAndroidHardwareBufferPropertiesANDROID
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkDeviceSize    allocationSize;
+       deUint32                memoryTypeBits;
+};
+
+struct VkAndroidHardwareBufferFormatPropertiesANDROID
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkFormat                                                format;
+       deUint64                                                externalFormat;
+       VkFormatFeatureFlags                    formatFeatures;
+       VkComponentMapping                              samplerYcbcrConversionComponents;
+       VkSamplerYcbcrModelConversion   suggestedYcbcrModel;
+       VkSamplerYcbcrRange                             suggestedYcbcrRange;
+       VkChromaLocation                                suggestedXChromaOffset;
+       VkChromaLocation                                suggestedYChromaOffset;
+};
+
+struct VkImportAndroidHardwareBufferInfoANDROID
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       struct pt::AndroidHardwareBufferPtr     buffer;
+};
+
+struct VkMemoryGetAndroidHardwareBufferInfoANDROID
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkDeviceMemory  memory;
+};
+
+struct VkExternalFormatANDROID
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint64                externalFormat;
+};
+
+struct VkVideoQueueFamilyProperties2KHR
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkVideoCodecOperationFlagsKHR   videoCodecOperations;
+};
+
+struct VkVideoProfileKHR
+{
+       VkStructureType                                         sType;
+       void*                                                           pNext;
+       VkVideoCodecOperationFlagBitsKHR        videoCodecOperation;
+       VkVideoChromaSubsamplingFlagsKHR        chromaSubsampling;
+       VkVideoComponentBitDepthFlagsKHR        lumaBitDepth;
+       VkVideoComponentBitDepthFlagsKHR        chromaBitDepth;
+};
+
+struct VkVideoProfilesKHR
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       deUint32                                        profileCount;
+       const VkVideoProfileKHR*        pProfiles;
+};
+
+struct VkVideoCapabilitiesKHR
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkVideoCapabilityFlagsKHR       capabilityFlags;
+       VkDeviceSize                            minBitstreamBufferOffsetAlignment;
+       VkDeviceSize                            minBitstreamBufferSizeAlignment;
+       VkExtent2D                                      videoPictureExtentGranularity;
+       VkExtent2D                                      minExtent;
+       VkExtent2D                                      maxExtent;
+       deUint32                                        maxReferencePicturesSlotsCount;
+       deUint32                                        maxReferencePicturesActiveCount;
+};
+
+struct VkPhysicalDeviceVideoFormatInfoKHR
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkImageUsageFlags                       imageUsage;
+       const VkVideoProfilesKHR*       pVideoProfiles;
+};
+
+struct VkVideoFormatPropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkFormat                format;
+};
+
+struct VkVideoPictureResourceKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkOffset2D              codedOffset;
+       VkExtent2D              codedExtent;
+       deUint32                baseArrayLayer;
+       VkImageView             imageViewBinding;
+};
+
+struct VkVideoReferenceSlotKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       deInt8                                                          slotIndex;
+       const VkVideoPictureResourceKHR*        pPictureResource;
+};
+
+struct VkVideoGetMemoryPropertiesKHR
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                memoryBindIndex;
+       VkMemoryRequirements2*  pMemoryRequirements;
+};
+
+struct VkVideoBindMemoryKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                memoryBindIndex;
+       VkDeviceMemory  memory;
+       VkDeviceSize    memoryOffset;
+       VkDeviceSize    memorySize;
+};
+
+struct VkVideoSessionCreateInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       deUint32                                                queueFamilyIndex;
+       VkVideoSessionCreateFlagsKHR    flags;
+       const VkVideoProfileKHR*                pVideoProfile;
+       VkFormat                                                pictureFormat;
+       VkExtent2D                                              maxCodedExtent;
+       VkFormat                                                referencePicturesFormat;
+       deUint32                                                maxReferencePicturesSlotsCount;
+       deUint32                                                maxReferencePicturesActiveCount;
+};
+
+struct VkVideoSessionParametersCreateInfoKHR
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkVideoSessionParametersKHR     videoSessionParametersTemplate;
+       VkVideoSessionKHR                       videoSession;
+};
+
+struct VkVideoSessionParametersUpdateInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                updateSequenceCount;
+};
+
+struct VkVideoBeginCodingInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkVideoBeginCodingFlagsKHR                      flags;
+       VkVideoCodingQualityPresetFlagsKHR      codecQualityPreset;
+       VkVideoSessionKHR                                       videoSession;
+       VkVideoSessionParametersKHR                     videoSessionParameters;
+       deUint32                                                        referenceSlotCount;
+       const VkVideoReferenceSlotKHR*          pReferenceSlots;
+};
+
+struct VkVideoEndCodingInfoKHR
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkVideoEndCodingFlagsKHR        flags;
+};
+
+struct VkVideoCodingControlInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoCodingControlFlagsKHR    flags;
+};
+
+struct VkVideoDecodeInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoDecodeFlagsKHR                   flags;
+       VkOffset2D                                              codedOffset;
+       VkExtent2D                                              codedExtent;
+       VkBuffer                                                srcBuffer;
+       VkDeviceSize                                    srcBufferOffset;
+       VkDeviceSize                                    srcBufferRange;
+       VkVideoPictureResourceKHR               dstPictureResource;
+       const VkVideoReferenceSlotKHR*  pSetupReferenceSlot;
+       deUint32                                                referenceSlotCount;
+       const VkVideoReferenceSlotKHR*  pReferenceSlots;
+};
+
+struct VkPhysicalDevicePortabilitySubsetFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                constantAlphaColorBlendFactors;
+       VkBool32                events;
+       VkBool32                imageViewFormatReinterpretation;
+       VkBool32                imageViewFormatSwizzle;
+       VkBool32                imageView2DOn3DImage;
+       VkBool32                multisampleArrayImage;
+       VkBool32                mutableComparisonSamplers;
+       VkBool32                pointPolygons;
+       VkBool32                samplerMipLodBias;
+       VkBool32                separateStencilMaskRef;
+       VkBool32                shaderSampleRateInterpolationFunctions;
+       VkBool32                tessellationIsolines;
+       VkBool32                tessellationPointMode;
+       VkBool32                triangleFans;
+       VkBool32                vertexAttributeAccessBeyondStride;
+};
+
+struct VkPhysicalDevicePortabilitySubsetPropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                minVertexInputBindingStrideAlignment;
+};
+
+struct VkVideoEncodeInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoEncodeFlagsKHR                   flags;
+       deUint32                                                qualityLevel;
+       VkExtent2D                                              codedExtent;
+       VkBuffer                                                dstBitstreamBuffer;
+       VkDeviceSize                                    dstBitstreamBufferOffset;
+       VkDeviceSize                                    dstBitstreamBufferMaxRange;
+       VkVideoPictureResourceKHR               srcPictureResource;
+       const VkVideoReferenceSlotKHR*  pSetupReferenceSlot;
+       deUint32                                                referenceSlotCount;
+       const VkVideoReferenceSlotKHR*  pReferenceSlots;
+};
+
+struct VkVideoEncodeRateControlInfoKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkVideoEncodeRateControlFlagsKHR                flags;
+       VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode;
+       deUint32                                                                averageBitrate;
+       deUint16                                                                peakToAverageBitrateRatio;
+       deUint16                                                                frameRateNumerator;
+       deUint16                                                                frameRateDenominator;
+       deUint32                                                                virtualBufferSizeInMs;
+};
+
+struct StdVideoH264SpsVuiFlags
+{
+       deUint32        aspect_ratio_info_present_flag:1;
+       deUint32        overscan_info_present_flag:1;
+       deUint32        overscan_appropriate_flag:1;
+       deUint32        video_signal_type_present_flag:1;
+       deUint32        video_full_range_flag:1;
+       deUint32        color_description_present_flag:1;
+       deUint32        chroma_loc_info_present_flag:1;
+       deUint32        timing_info_present_flag:1;
+       deUint32        fixed_frame_rate_flag:1;
+       deUint32        bitstream_restriction_flag:1;
+       deUint32        nal_hrd_parameters_present_flag:1;
+       deUint32        vcl_hrd_parameters_present_flag:1;
+};
+
+struct StdVideoH264HrdParameters
+{
+       deUint8         cpb_cnt_minus1;
+       deUint8         bit_rate_scale;
+       deUint8         cpb_size_scale;
+       deUint32        bit_rate_value_minus1[32];
+       deUint32        cpb_size_value_minus1[32];
+       deUint8         cbr_flag[32];
+       deUint32        initial_cpb_removal_delay_length_minus1;
+       deUint32        cpb_removal_delay_length_minus1;
+       deUint32        dpb_output_delay_length_minus1;
+       deUint32        time_offset_length;
+};
+
+struct StdVideoH264SequenceParameterSetVui
+{
+       StdVideoH264AspectRatioIdc      aspect_ratio_idc;
+       deUint16                                        sar_width;
+       deUint16                                        sar_height;
+       deUint8                                         video_format;
+       deUint8                                         color_primaries;
+       deUint8                                         transfer_characteristics;
+       deUint8                                         matrix_coefficients;
+       deUint32                                        num_units_in_tick;
+       deUint32                                        time_scale;
+       StdVideoH264HrdParameters       hrd_parameters;
+       deUint8                                         num_reorder_frames;
+       deUint8                                         max_dec_frame_buffering;
+       StdVideoH264SpsVuiFlags         flags;
+};
+
+struct StdVideoH264SpsFlags
+{
+       deUint32        constraint_set0_flag:1;
+       deUint32        constraint_set1_flag:1;
+       deUint32        constraint_set2_flag:1;
+       deUint32        constraint_set3_flag:1;
+       deUint32        constraint_set4_flag:1;
+       deUint32        constraint_set5_flag:1;
+       deUint32        direct_8x8_inference_flag:1;
+       deUint32        mb_adaptive_frame_field_flag:1;
+       deUint32        frame_mbs_only_flag:1;
+       deUint32        delta_pic_order_always_zero_flag:1;
+       deUint32        residual_colour_transform_flag:1;
+       deUint32        gaps_in_frame_num_value_allowed_flag:1;
+       deUint32        first_picture_after_seek_flag:1;
+       deUint32        qpprime_y_zero_transform_bypass_flag:1;
+       deUint32        frame_cropping_flag:1;
+       deUint32        scaling_matrix_present_flag:1;
+       deUint32        vui_parameters_present_flag:1;
+};
+
+struct StdVideoH264ScalingLists
+{
+       deUint8 scaling_list_present_mask;
+       deUint8 use_default_scaling_matrix_mask;
+       deUint8 ScalingList4x4[6][16];
+       deUint8 ScalingList8x8[2][64];
+};
+
+struct StdVideoH264SequenceParameterSet
+{
+       StdVideoH264ProfileIdc                                  profile_idc;
+       StdVideoH264Level                                               level_idc;
+       deUint8                                                                 seq_parameter_set_id;
+       StdVideoH264ChromaFormatIdc                             chroma_format_idc;
+       deUint8                                                                 bit_depth_luma_minus8;
+       deUint8                                                                 bit_depth_chroma_minus8;
+       deUint8                                                                 log2_max_frame_num_minus4;
+       StdVideoH264PocType                                             pic_order_cnt_type;
+       deUint8                                                                 log2_max_pic_order_cnt_lsb_minus4;
+       deInt32                                                                 offset_for_non_ref_pic;
+       deInt32                                                                 offset_for_top_to_bottom_field;
+       deUint8                                                                 num_ref_frames_in_pic_order_cnt_cycle;
+       deUint8                                                                 max_num_ref_frames;
+       deUint32                                                                pic_width_in_mbs_minus1;
+       deUint32                                                                pic_height_in_map_units_minus1;
+       deUint32                                                                frame_crop_left_offset;
+       deUint32                                                                frame_crop_right_offset;
+       deUint32                                                                frame_crop_top_offset;
+       deUint32                                                                frame_crop_bottom_offset;
+       StdVideoH264SpsFlags                                    flags;
+       deInt32                                                                 offset_for_ref_frame[255];
+       StdVideoH264ScalingLists*                               pScalingLists;
+       StdVideoH264SequenceParameterSetVui*    pSequenceParameterSetVui;
+};
+
+struct StdVideoH264PpsFlags
+{
+       deUint32        transform_8x8_mode_flag:1;
+       deUint32        redundant_pic_cnt_present_flag:1;
+       deUint32        constrained_intra_pred_flag:1;
+       deUint32        deblocking_filter_control_present_flag:1;
+       deUint32        weighted_bipred_idc_flag:1;
+       deUint32        weighted_pred_flag:1;
+       deUint32        pic_order_present_flag:1;
+       deUint32        entropy_coding_mode_flag:1;
+       deUint32        scaling_matrix_present_flag:1;
+};
+
+struct StdVideoH264PictureParameterSet
+{
+       deUint8                                                 seq_parameter_set_id;
+       deUint8                                                 pic_parameter_set_id;
+       deUint8                                                 num_ref_idx_l0_default_active_minus1;
+       deUint8                                                 num_ref_idx_l1_default_active_minus1;
+       StdVideoH264WeightedBiPredIdc   weighted_bipred_idc;
+       deInt8                                                  pic_init_qp_minus26;
+       deInt8                                                  pic_init_qs_minus26;
+       deInt8                                                  chroma_qp_index_offset;
+       deInt8                                                  second_chroma_qp_index_offset;
+       StdVideoH264PpsFlags                    flags;
+       StdVideoH264ScalingLists*               pScalingLists;
+};
+
+struct StdVideoEncodeH264SliceHeaderFlags
+{
+       deUint32        idr_flag:1;
+       deUint32        is_reference_flag:1;
+       deUint32        num_ref_idx_active_override_flag:1;
+       deUint32        no_output_of_prior_pics_flag:1;
+       deUint32        long_term_reference_flag:1;
+       deUint32        adaptive_ref_pic_marking_mode_flag:1;
+       deUint32        no_prior_references_available_flag:1;
+};
+
+struct StdVideoEncodeH264PictureInfoFlags
+{
+       deUint32        idr_flag:1;
+       deUint32        is_reference_flag:1;
+       deUint32        long_term_reference_flag:1;
+};
+
+struct StdVideoEncodeH264RefMgmtFlags
+{
+       deUint32        ref_pic_list_modification_l0_flag:1;
+       deUint32        ref_pic_list_modification_l1_flag:1;
+};
+
+struct StdVideoEncodeH264RefListModEntry
+{
+       StdVideoH264ModificationOfPicNumsIdc    modification_of_pic_nums_idc;
+       deUint16                                                                abs_diff_pic_num_minus1;
+       deUint16                                                                long_term_pic_num;
+};
+
+struct StdVideoEncodeH264RefPicMarkingEntry
+{
+       StdVideoH264MemMgmtControlOp    operation;
+       deUint16                                                difference_of_pic_nums_minus1;
+       deUint16                                                long_term_pic_num;
+       deUint16                                                long_term_frame_idx;
+       deUint16                                                max_long_term_frame_idx_plus1;
+};
+
+struct StdVideoEncodeH264RefMemMgmtCtrlOperations
+{
+       StdVideoEncodeH264RefMgmtFlags                  flags;
+       deUint8                                                                 refList0ModOpCount;
+       StdVideoEncodeH264RefListModEntry*              pRefList0ModOperations;
+       deUint8                                                                 refList1ModOpCount;
+       StdVideoEncodeH264RefListModEntry*              pRefList1ModOperations;
+       deUint8                                                                 refPicMarkingOpCount;
+       StdVideoEncodeH264RefPicMarkingEntry*   pRefPicMarkingOperations;
+};
+
+struct StdVideoEncodeH264PictureInfo
+{
+       StdVideoEncodeH264PictureInfoFlags      flags;
+       StdVideoH264PictureType                         pictureType;
+       deUint32                                                        frameNum;
+       deUint32                                                        pictureOrderCount;
+       deUint16                                                        long_term_pic_num;
+       deUint16                                                        long_term_frame_idx;
+};
+
+struct StdVideoEncodeH264SliceHeader
+{
+       StdVideoEncodeH264SliceHeaderFlags                      flags;
+       StdVideoH264SliceType                                           slice_type;
+       deUint8                                                                         seq_parameter_set_id;
+       deUint8                                                                         pic_parameter_set_id;
+       deUint16                                                                        idr_pic_id;
+       deUint8                                                                         num_ref_idx_l0_active_minus1;
+       deUint8                                                                         num_ref_idx_l1_active_minus1;
+       StdVideoH264CabacInitIdc                                        cabac_init_idc;
+       StdVideoH264DisableDeblockingFilterIdc          disable_deblocking_filter_idc;
+       deInt8                                                                          slice_alpha_c0_offset_div2;
+       deInt8                                                                          slice_beta_offset_div2;
+       StdVideoEncodeH264RefMemMgmtCtrlOperations*     pMemMgmtCtrlOperations;
+};
+
+struct VkVideoEncodeH264CapabilitiesEXT
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkVideoEncodeH264CapabilityFlagsEXT     flags;
+       VkVideoEncodeH264InputModeFlagsEXT      inputModeFlags;
+       VkVideoEncodeH264OutputModeFlagsEXT     outputModeFlags;
+       VkExtent2D                                                      minPictureSizeInMbs;
+       VkExtent2D                                                      maxPictureSizeInMbs;
+       VkExtent2D                                                      inputImageDataAlignment;
+       deUint8                                                         maxNumL0ReferenceForP;
+       deUint8                                                         maxNumL0ReferenceForB;
+       deUint8                                                         maxNumL1Reference;
+       deUint8                                                         qualityLevelCount;
+       VkExtensionProperties                           stdExtensionVersion;
+};
+
+struct VkVideoEncodeH264SessionCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoEncodeH264CreateFlagsEXT flags;
+       VkExtent2D                                              maxPictureSizeInMbs;
+       const VkExtensionProperties*    pStdExtensionVersion;
+};
+
+struct VkVideoEncodeH264SessionParametersAddInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                spsStdCount;
+       const StdVideoH264SequenceParameterSet* pSpsStd;
+       deUint32                                                                ppsStdCount;
+       const StdVideoH264PictureParameterSet*  pPpsStd;
+};
+
+struct VkVideoEncodeH264SessionParametersCreateInfoEXT
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       deUint32                                                                                        maxSpsStdCount;
+       deUint32                                                                                        maxPpsStdCount;
+       const VkVideoEncodeH264SessionParametersAddInfoEXT*     pParametersAddInfo;
+};
+
+struct VkVideoEncodeH264DpbSlotInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deInt8                                                                  slotIndex;
+       const StdVideoEncodeH264PictureInfo*    pStdPictureInfo;
+};
+
+struct VkVideoEncodeH264NaluSliceEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       const StdVideoEncodeH264SliceHeader*    pSliceHeaderStd;
+       deUint32                                                                mbCount;
+       deUint8                                                                 refFinalList0EntryCount;
+       const VkVideoEncodeH264DpbSlotInfoEXT*  pRefFinalList0Entries;
+       deUint8                                                                 refFinalList1EntryCount;
+       const VkVideoEncodeH264DpbSlotInfoEXT*  pRefFinalList1Entries;
+       deUint32                                                                precedingNaluBytes;
+       deUint8                                                                 minQp;
+       deUint8                                                                 maxQp;
+};
+
+struct VkVideoEncodeH264VclFrameInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint8                                                                 refDefaultFinalList0EntryCount;
+       const VkVideoEncodeH264DpbSlotInfoEXT*  pRefDefaultFinalList0Entries;
+       deUint8                                                                 refDefaultFinalList1EntryCount;
+       const VkVideoEncodeH264DpbSlotInfoEXT*  pRefDefaultFinalList1Entries;
+       deUint32                                                                naluSliceEntryCount;
+       const VkVideoEncodeH264NaluSliceEXT*    pNaluSliceEntries;
+       const VkVideoEncodeH264DpbSlotInfoEXT*  pCurrentPictureInfo;
+};
+
+struct VkVideoEncodeH264EmitPictureParametersEXT
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint8                 spsId;
+       VkBool32                emitSpsEnable;
+       deUint32                ppsIdEntryCount;
+       const deUint8*  ppsIdEntries;
+};
+
+struct VkVideoEncodeH264ProfileEXT
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       StdVideoH264ProfileIdc  stdProfileIdc;
+};
+
+struct StdVideoDecodeH264PictureInfoFlags
+{
+       deUint32        field_pic_flag:1;
+       deUint32        is_intra:1;
+       deUint32        bottom_field_flag:1;
+       deUint32        is_reference:1;
+       deUint32        complementary_field_pair:1;
+};
+
+struct StdVideoDecodeH264PictureInfo
+{
+       deUint8                                                         seq_parameter_set_id;
+       deUint8                                                         pic_parameter_set_id;
+       deUint16                                                        reserved;
+       deUint16                                                        frame_num;
+       deUint16                                                        idr_pic_id;
+       deInt32                                                         PicOrderCnt[2];
+       StdVideoDecodeH264PictureInfoFlags      flags;
+};
+
+struct StdVideoDecodeH264ReferenceInfoFlags
+{
+       deUint32        top_field_flag:1;
+       deUint32        bottom_field_flag:1;
+       deUint32        is_long_term:1;
+       deUint32        is_non_existing:1;
+};
+
+struct StdVideoDecodeH264ReferenceInfo
+{
+       deUint16                                                                FrameNum;
+       deUint16                                                                reserved;
+       deInt32                                                                 PicOrderCnt[2];
+       StdVideoDecodeH264ReferenceInfoFlags    flags;
+};
+
+struct StdVideoDecodeH264MvcElementFlags
+{
+       deUint32        non_idr:1;
+       deUint32        anchor_pic:1;
+       deUint32        inter_view:1;
+};
+
+struct StdVideoDecodeH264MvcElement
+{
+       StdVideoDecodeH264MvcElementFlags       flags;
+       deUint16                                                        viewOrderIndex;
+       deUint16                                                        viewId;
+       deUint16                                                        temporalId;
+       deUint16                                                        priorityId;
+       deUint16                                                        numOfAnchorRefsInL0;
+       deUint16                                                        viewIdOfAnchorRefsInL0[15];
+       deUint16                                                        numOfAnchorRefsInL1;
+       deUint16                                                        viewIdOfAnchorRefsInL1[15];
+       deUint16                                                        numOfNonAnchorRefsInL0;
+       deUint16                                                        viewIdOfNonAnchorRefsInL0[15];
+       deUint16                                                        numOfNonAnchorRefsInL1;
+       deUint16                                                        viewIdOfNonAnchorRefsInL1[15];
+};
+
+struct StdVideoDecodeH264Mvc
+{
+       deUint32                                                viewId0;
+       deUint32                                                mvcElementCount;
+       StdVideoDecodeH264MvcElement*   pMvcElements;
+};
+
+struct VkVideoDecodeH264ProfileEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       StdVideoH264ProfileIdc                                  stdProfileIdc;
+       VkVideoDecodeH264PictureLayoutFlagsEXT  pictureLayout;
+};
+
+struct VkVideoDecodeH264CapabilitiesEXT
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       deUint32                                maxLevel;
+       VkOffset2D                              fieldOffsetGranularity;
+       VkExtensionProperties   stdExtensionVersion;
+};
+
+struct VkVideoDecodeH264SessionCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoDecodeH264CreateFlagsEXT flags;
+       const VkExtensionProperties*    pStdExtensionVersion;
+};
+
+struct VkVideoDecodeH264SessionParametersAddInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                spsStdCount;
+       const StdVideoH264SequenceParameterSet* pSpsStd;
+       deUint32                                                                ppsStdCount;
+       const StdVideoH264PictureParameterSet*  pPpsStd;
+};
+
+struct VkVideoDecodeH264SessionParametersCreateInfoEXT
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       deUint32                                                                                        maxSpsStdCount;
+       deUint32                                                                                        maxPpsStdCount;
+       const VkVideoDecodeH264SessionParametersAddInfoEXT*     pParametersAddInfo;
+};
+
+struct VkVideoDecodeH264PictureInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
+       deUint32                                                                slicesCount;
+       const deUint32*                                                 pSlicesDataOffsets;
+};
+
+struct VkVideoDecodeH264MvcEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       const StdVideoDecodeH264Mvc*    pStdMvc;
+};
+
+struct VkVideoDecodeH264DpbSlotInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       const StdVideoDecodeH264ReferenceInfo*  pStdReferenceInfo;
+};
+
+struct StdVideoH265DecPicBufMgr
+{
+       deUint32        max_latency_increase_plus1[7];
+       deUint8         max_dec_pic_buffering_minus1[7];
+       deUint8         max_num_reorder_pics[7];
+};
+
+struct StdVideoH265SubLayerHrdParameters
+{
+       deUint32        bit_rate_value_minus1[32];
+       deUint32        cpb_size_value_minus1[32];
+       deUint32        cpb_size_du_value_minus1[32];
+       deUint32        bit_rate_du_value_minus1[32];
+       deUint32        cbr_flag;
+};
+
+struct StdVideoH265HrdFlags
+{
+       deUint32        nal_hrd_parameters_present_flag:1;
+       deUint32        vcl_hrd_parameters_present_flag:1;
+       deUint32        sub_pic_hrd_params_present_flag:1;
+       deUint32        sub_pic_cpb_params_in_pic_timing_sei_flag:1;
+       deUint8         fixed_pic_rate_general_flag;
+       deUint8         fixed_pic_rate_within_cvs_flag;
+       deUint8         low_delay_hrd_flag;
+};
+
+struct StdVideoH265HrdParameters
+{
+       deUint8                                                         tick_divisor_minus2;
+       deUint8                                                         du_cpb_removal_delay_increment_length_minus1;
+       deUint8                                                         dpb_output_delay_du_length_minus1;
+       deUint8                                                         bit_rate_scale;
+       deUint8                                                         cpb_size_scale;
+       deUint8                                                         cpb_size_du_scale;
+       deUint8                                                         initial_cpb_removal_delay_length_minus1;
+       deUint8                                                         au_cpb_removal_delay_length_minus1;
+       deUint8                                                         dpb_output_delay_length_minus1;
+       deUint8                                                         cpb_cnt_minus1[7];
+       deUint16                                                        elemental_duration_in_tc_minus1[7];
+       StdVideoH265SubLayerHrdParameters*      SubLayerHrdParametersNal[7];
+       StdVideoH265SubLayerHrdParameters*      SubLayerHrdParametersVcl[7];
+       StdVideoH265HrdFlags                            flags;
+};
+
+struct StdVideoH265VpsFlags
+{
+       deUint32        vps_temporal_id_nesting_flag:1;
+       deUint32        vps_sub_layer_ordering_info_present_flag:1;
+       deUint32        vps_timing_info_present_flag:1;
+       deUint32        vps_poc_proportional_to_timing_flag:1;
+};
+
+struct StdVideoH265VideoParameterSet
+{
+       deUint8                                         vps_video_parameter_set_id;
+       deUint8                                         vps_max_sub_layers_minus1;
+       deUint32                                        vps_num_units_in_tick;
+       deUint32                                        vps_time_scale;
+       deUint32                                        vps_num_ticks_poc_diff_one_minus1;
+       StdVideoH265DecPicBufMgr*       pDecPicBufMgr;
+       StdVideoH265HrdParameters*      hrd_parameters;
+       StdVideoH265VpsFlags            flags;
+};
+
+struct StdVideoH265ScalingLists
+{
+       deUint8 ScalingList4x4[6][16];
+       deUint8 ScalingList8x8[6][64];
+       deUint8 ScalingList16x16[6][64];
+       deUint8 ScalingList32x32[2][64];
+       deUint8 ScalingListDCCoef16x16[6];
+       deUint8 ScalingListDCCoef32x32[2];
+};
+
+struct StdVideoH265SpsVuiFlags
+{
+       deUint32        aspect_ratio_info_present_flag:1;
+       deUint32        overscan_info_present_flag:1;
+       deUint32        overscan_appropriate_flag:1;
+       deUint32        video_signal_type_present_flag:1;
+       deUint32        video_full_range_flag:1;
+       deUint32        colour_description_present_flag:1;
+       deUint32        chroma_loc_info_present_flag:1;
+       deUint32        neutral_chroma_indication_flag:1;
+       deUint32        field_seq_flag:1;
+       deUint32        frame_field_info_present_flag:1;
+       deUint32        default_display_window_flag:1;
+       deUint32        vui_timing_info_present_flag:1;
+       deUint32        vui_poc_proportional_to_timing_flag:1;
+       deUint32        vui_hrd_parameters_present_flag:1;
+       deUint32        bitstream_restriction_flag:1;
+       deUint32        tiles_fixed_structure_flag:1;
+       deUint32        motion_vectors_over_pic_boundaries_flag:1;
+       deUint32        restricted_ref_pic_lists_flag:1;
+};
+
+struct StdVideoH265SequenceParameterSetVui
+{
+       deUint8                                         aspect_ratio_idc;
+       deUint16                                        sar_width;
+       deUint16                                        sar_height;
+       deUint8                                         video_format;
+       deUint8                                         colour_primaries;
+       deUint8                                         transfer_characteristics;
+       deUint8                                         matrix_coeffs;
+       deUint8                                         chroma_sample_loc_type_top_field;
+       deUint8                                         chroma_sample_loc_type_bottom_field;
+       deUint16                                        def_disp_win_left_offset;
+       deUint16                                        def_disp_win_right_offset;
+       deUint16                                        def_disp_win_top_offset;
+       deUint16                                        def_disp_win_bottom_offset;
+       deUint32                                        vui_num_units_in_tick;
+       deUint32                                        vui_time_scale;
+       deUint32                                        vui_num_ticks_poc_diff_one_minus1;
+       StdVideoH265HrdParameters*      hrd_parameters;
+       deUint16                                        min_spatial_segmentation_idc;
+       deUint8                                         max_bytes_per_pic_denom;
+       deUint8                                         max_bits_per_min_cu_denom;
+       deUint8                                         log2_max_mv_length_horizontal;
+       deUint8                                         log2_max_mv_length_vertical;
+       StdVideoH265SpsVuiFlags         flags;
+};
+
+struct StdVideoH265PredictorPaletteEntries
+{
+       deUint16        PredictorPaletteEntries[3][128];
+};
+
+struct StdVideoH265SpsFlags
+{
+       deUint32        sps_temporal_id_nesting_flag:1;
+       deUint32        separate_colour_plane_flag:1;
+       deUint32        scaling_list_enabled_flag:1;
+       deUint32        sps_scaling_list_data_present_flag:1;
+       deUint32        amp_enabled_flag:1;
+       deUint32        sample_adaptive_offset_enabled_flag:1;
+       deUint32        pcm_enabled_flag:1;
+       deUint32        pcm_loop_filter_disabled_flag:1;
+       deUint32        long_term_ref_pics_present_flag:1;
+       deUint32        sps_temporal_mvp_enabled_flag:1;
+       deUint32        strong_intra_smoothing_enabled_flag:1;
+       deUint32        vui_parameters_present_flag:1;
+       deUint32        sps_extension_present_flag:1;
+       deUint32        sps_range_extension_flag:1;
+       deUint32        transform_skip_rotation_enabled_flag:1;
+       deUint32        transform_skip_context_enabled_flag:1;
+       deUint32        implicit_rdpcm_enabled_flag:1;
+       deUint32        explicit_rdpcm_enabled_flag:1;
+       deUint32        extended_precision_processing_flag:1;
+       deUint32        intra_smoothing_disabled_flag:1;
+       deUint32        high_precision_offsets_enabled_flag:1;
+       deUint32        persistent_rice_adaptation_enabled_flag:1;
+       deUint32        cabac_bypass_alignment_enabled_flag:1;
+       deUint32        sps_curr_pic_ref_enabled_flag:1;
+       deUint32        palette_mode_enabled_flag:1;
+       deUint32        sps_palette_predictor_initializer_present_flag:1;
+       deUint32        intra_boundary_filtering_disabled_flag:1;
+};
+
+struct StdVideoH265SequenceParameterSet
+{
+       StdVideoH265ProfileIdc                                  profile_idc;
+       StdVideoH265Level                                               level_idc;
+       deUint32                                                                pic_width_in_luma_samples;
+       deUint32                                                                pic_height_in_luma_samples;
+       deUint8                                                                 sps_video_parameter_set_id;
+       deUint8                                                                 sps_max_sub_layers_minus1;
+       deUint8                                                                 sps_seq_parameter_set_id;
+       deUint8                                                                 chroma_format_idc;
+       deUint8                                                                 bit_depth_luma_minus8;
+       deUint8                                                                 bit_depth_chroma_minus8;
+       deUint8                                                                 log2_max_pic_order_cnt_lsb_minus4;
+       deUint8                                                                 sps_max_dec_pic_buffering_minus1;
+       deUint8                                                                 log2_min_luma_coding_block_size_minus3;
+       deUint8                                                                 log2_diff_max_min_luma_coding_block_size;
+       deUint8                                                                 log2_min_luma_transform_block_size_minus2;
+       deUint8                                                                 log2_diff_max_min_luma_transform_block_size;
+       deUint8                                                                 max_transform_hierarchy_depth_inter;
+       deUint8                                                                 max_transform_hierarchy_depth_intra;
+       deUint8                                                                 num_short_term_ref_pic_sets;
+       deUint8                                                                 num_long_term_ref_pics_sps;
+       deUint8                                                                 pcm_sample_bit_depth_luma_minus1;
+       deUint8                                                                 pcm_sample_bit_depth_chroma_minus1;
+       deUint8                                                                 log2_min_pcm_luma_coding_block_size_minus3;
+       deUint8                                                                 log2_diff_max_min_pcm_luma_coding_block_size;
+       deUint32                                                                conf_win_left_offset;
+       deUint32                                                                conf_win_right_offset;
+       deUint32                                                                conf_win_top_offset;
+       deUint32                                                                conf_win_bottom_offset;
+       StdVideoH265DecPicBufMgr*                               pDecPicBufMgr;
+       StdVideoH265SpsFlags                                    flags;
+       StdVideoH265ScalingLists*                               pScalingLists;
+       StdVideoH265SequenceParameterSetVui*    pSequenceParameterSetVui;
+       deUint8                                                                 palette_max_size;
+       deUint8                                                                 delta_palette_max_predictor_size;
+       deUint8                                                                 motion_vector_resolution_control_idc;
+       deUint8                                                                 sps_num_palette_predictor_initializer_minus1;
+       StdVideoH265PredictorPaletteEntries*    pPredictorPaletteEntries;
+};
+
+struct StdVideoH265PpsFlags
+{
+       deUint32        dependent_slice_segments_enabled_flag:1;
+       deUint32        output_flag_present_flag:1;
+       deUint32        sign_data_hiding_enabled_flag:1;
+       deUint32        cabac_init_present_flag:1;
+       deUint32        constrained_intra_pred_flag:1;
+       deUint32        transform_skip_enabled_flag:1;
+       deUint32        cu_qp_delta_enabled_flag:1;
+       deUint32        pps_slice_chroma_qp_offsets_present_flag:1;
+       deUint32        weighted_pred_flag:1;
+       deUint32        weighted_bipred_flag:1;
+       deUint32        transquant_bypass_enabled_flag:1;
+       deUint32        tiles_enabled_flag:1;
+       deUint32        entropy_coding_sync_enabled_flag:1;
+       deUint32        uniform_spacing_flag:1;
+       deUint32        loop_filter_across_tiles_enabled_flag:1;
+       deUint32        pps_loop_filter_across_slices_enabled_flag:1;
+       deUint32        deblocking_filter_control_present_flag:1;
+       deUint32        deblocking_filter_override_enabled_flag:1;
+       deUint32        pps_deblocking_filter_disabled_flag:1;
+       deUint32        pps_scaling_list_data_present_flag:1;
+       deUint32        lists_modification_present_flag:1;
+       deUint32        slice_segment_header_extension_present_flag:1;
+       deUint32        pps_extension_present_flag:1;
+       deUint32        cross_component_prediction_enabled_flag:1;
+       deUint32        chroma_qp_offset_list_enabled_flag:1;
+       deUint32        pps_curr_pic_ref_enabled_flag:1;
+       deUint32        residual_adaptive_colour_transform_enabled_flag:1;
+       deUint32        pps_slice_act_qp_offsets_present_flag:1;
+       deUint32        pps_palette_predictor_initializer_present_flag:1;
+       deUint32        monochrome_palette_flag:1;
+       deUint32        pps_range_extension_flag:1;
+};
+
+struct StdVideoH265PictureParameterSet
+{
+       deUint8                                                                 pps_pic_parameter_set_id;
+       deUint8                                                                 pps_seq_parameter_set_id;
+       deUint8                                                                 num_extra_slice_header_bits;
+       deUint8                                                                 num_ref_idx_l0_default_active_minus1;
+       deUint8                                                                 num_ref_idx_l1_default_active_minus1;
+       deInt8                                                                  init_qp_minus26;
+       deUint8                                                                 diff_cu_qp_delta_depth;
+       deInt8                                                                  pps_cb_qp_offset;
+       deInt8                                                                  pps_cr_qp_offset;
+       deUint8                                                                 num_tile_columns_minus1;
+       deUint8                                                                 num_tile_rows_minus1;
+       deUint16                                                                column_width_minus1[19];
+       deUint16                                                                row_height_minus1[21];
+       deInt8                                                                  pps_beta_offset_div2;
+       deInt8                                                                  pps_tc_offset_div2;
+       deUint8                                                                 log2_parallel_merge_level_minus2;
+       StdVideoH265PpsFlags                                    flags;
+       StdVideoH265ScalingLists*                               pScalingLists;
+       deUint8                                                                 log2_max_transform_skip_block_size_minus2;
+       deUint8                                                                 diff_cu_chroma_qp_offset_depth;
+       deUint8                                                                 chroma_qp_offset_list_len_minus1;
+       deInt8                                                                  cb_qp_offset_list[6];
+       deInt8                                                                  cr_qp_offset_list[6];
+       deUint8                                                                 log2_sao_offset_scale_luma;
+       deUint8                                                                 log2_sao_offset_scale_chroma;
+       deInt8                                                                  pps_act_y_qp_offset_plus5;
+       deInt8                                                                  pps_act_cb_qp_offset_plus5;
+       deInt8                                                                  pps_act_cr_qp_offset_plus5;
+       deUint8                                                                 pps_num_palette_predictor_initializer;
+       deUint8                                                                 luma_bit_depth_entry_minus8;
+       deUint8                                                                 chroma_bit_depth_entry_minus8;
+       StdVideoH265PredictorPaletteEntries*    pPredictorPaletteEntries;
+};
+
+struct StdVideoDecodeH265PictureInfoFlags
+{
+       deUint32        IrapPicFlag:1;
+       deUint32        IdrPicFlag:1;
+       deUint32        IsReference:1;
+       deUint32        short_term_ref_pic_set_sps_flag:1;
+};
+
+struct StdVideoDecodeH265PictureInfo
+{
+       deUint8                                                         vps_video_parameter_set_id;
+       deUint8                                                         sps_seq_parameter_set_id;
+       deUint8                                                         pps_pic_parameter_set_id;
+       deUint8                                                         num_short_term_ref_pic_sets;
+       deInt32                                                         PicOrderCntVal;
+       deUint16                                                        NumBitsForSTRefPicSetInSlice;
+       deUint8                                                         NumDeltaPocsOfRefRpsIdx;
+       deUint8                                                         RefPicSetStCurrBefore[8];
+       deUint8                                                         RefPicSetStCurrAfter[8];
+       deUint8                                                         RefPicSetLtCurr[8];
+       StdVideoDecodeH265PictureInfoFlags      flags;
+};
+
+struct StdVideoDecodeH265ReferenceInfoFlags
+{
+       deUint32        is_long_term:1;
+       deUint32        is_non_existing:1;
+};
+
+struct StdVideoDecodeH265ReferenceInfo
+{
+       deInt32                                                                 PicOrderCntVal;
+       StdVideoDecodeH265ReferenceInfoFlags    flags;
+};
+
+struct VkVideoDecodeH265ProfileEXT
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       StdVideoH265ProfileIdc  stdProfileIdc;
+};
+
+struct VkVideoDecodeH265CapabilitiesEXT
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       deUint32                                maxLevel;
+       VkExtensionProperties   stdExtensionVersion;
+};
+
+struct VkVideoDecodeH265SessionCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkVideoDecodeH265CreateFlagsEXT flags;
+       const VkExtensionProperties*    pStdExtensionVersion;
+};
+
+struct VkVideoDecodeH265SessionParametersAddInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                spsStdCount;
+       const StdVideoH265SequenceParameterSet* pSpsStd;
+       deUint32                                                                ppsStdCount;
+       const StdVideoH265PictureParameterSet*  pPpsStd;
+};
+
+struct VkVideoDecodeH265SessionParametersCreateInfoEXT
+{
+       VkStructureType                                                                         sType;
+       const void*                                                                                     pNext;
+       deUint32                                                                                        maxSpsStdCount;
+       deUint32                                                                                        maxPpsStdCount;
+       const VkVideoDecodeH265SessionParametersAddInfoEXT*     pParametersAddInfo;
+};
+
+struct VkVideoDecodeH265PictureInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       StdVideoDecodeH265PictureInfo*  pStdPictureInfo;
+       deUint32                                                slicesCount;
+       const deUint32*                                 pSlicesDataOffsets;
+};
+
+struct VkVideoDecodeH265DpbSlotInfoEXT
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       const StdVideoDecodeH265ReferenceInfo*  pStdReferenceInfo;
+};
+
+struct VkImagePipeSurfaceCreateInfoFUCHSIA
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkImagePipeSurfaceCreateFlagsFUCHSIA    flags;
+       pt::zx_handle_t                                                 imagePipeHandle;
+};
+
+struct VkImportMemoryZirconHandleInfoFUCHSIA
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkExternalMemoryHandleTypeFlagBits      handleType;
+       pt::zx_handle_t                                         handle;
+};
+
+struct VkMemoryZirconHandlePropertiesFUCHSIA
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                memoryTypeBits;
+};
+
+struct VkMemoryGetZirconHandleInfoFUCHSIA
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceMemory                                          memory;
+       VkExternalMemoryHandleTypeFlagBits      handleType;
+};
+
+struct VkImportSemaphoreZirconHandleInfoFUCHSIA
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkSemaphore                                                             semaphore;
+       VkSemaphoreImportFlags                                  flags;
+       VkExternalSemaphoreHandleTypeFlagBits   handleType;
+       pt::zx_handle_t                                                 zirconHandle;
+};
+
+struct VkSemaphoreGetZirconHandleInfoFUCHSIA
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkSemaphore                                                             semaphore;
+       VkExternalSemaphoreHandleTypeFlagBits   handleType;
+};
+
+struct VkStreamDescriptorSurfaceCreateInfoGGP
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkStreamDescriptorSurfaceCreateFlagsGGP flags;
+       pt::GgpStreamDescriptor                                 streamDescriptor;
+};
+
+struct VkPresentFrameTokenGGP
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       pt::GgpFrameToken       frameToken;
+};
+
+struct VkIOSSurfaceCreateInfoMVK
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkIOSSurfaceCreateFlagsMVK      flags;
+       const void*                                     pView;
+};
+
+struct VkMacOSSurfaceCreateInfoMVK
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkMacOSSurfaceCreateFlagsMVK    flags;
+       const void*                                             pView;
+};
+
+struct VkMetalSurfaceCreateInfoEXT
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkMetalSurfaceCreateFlagsEXT    flags;
+       const pt::CAMetalLayer*                 pLayer;
+};
+
+struct VkViSurfaceCreateInfoNN
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkViSurfaceCreateFlagsNN        flags;
+       void*                                           window;
+};
+
+struct VkWaylandSurfaceCreateInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkWaylandSurfaceCreateFlagsKHR  flags;
+       pt::WaylandDisplayPtr                   display;
+       pt::WaylandSurfacePtr                   surface;
+};
+
+struct VkWin32SurfaceCreateInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkWin32SurfaceCreateFlagsKHR    flags;
+       pt::Win32InstanceHandle                 hinstance;
+       pt::Win32WindowHandle                   hwnd;
+};
+
+struct VkImportMemoryWin32HandleInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkExternalMemoryHandleTypeFlagBits      handleType;
+       pt::Win32Handle                                         handle;
+       pt::Win32LPCWSTR                                        name;
+};
+
+struct VkExportMemoryWin32HandleInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       pt::Win32SecurityAttributesPtr  pAttributes;
+       deUint32                                                dwAccess;
+       pt::Win32LPCWSTR                                name;
+};
+
+struct VkMemoryWin32HandlePropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                memoryTypeBits;
+};
+
+struct VkMemoryGetWin32HandleInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkDeviceMemory                                          memory;
+       VkExternalMemoryHandleTypeFlagBits      handleType;
+};
+
+struct VkWin32KeyedMutexAcquireReleaseInfoKHR
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                acquireCount;
+       const VkDeviceMemory*   pAcquireSyncs;
+       const deUint64*                 pAcquireKeys;
+       const deUint32*                 pAcquireTimeouts;
+       deUint32                                releaseCount;
+       const VkDeviceMemory*   pReleaseSyncs;
+       const deUint64*                 pReleaseKeys;
+};
+
+struct VkImportSemaphoreWin32HandleInfoKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkSemaphore                                                             semaphore;
+       VkSemaphoreImportFlags                                  flags;
+       VkExternalSemaphoreHandleTypeFlagBits   handleType;
+       pt::Win32Handle                                                 handle;
+       pt::Win32LPCWSTR                                                name;
+};
+
+struct VkExportSemaphoreWin32HandleInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       pt::Win32SecurityAttributesPtr  pAttributes;
+       deUint32                                                dwAccess;
+       pt::Win32LPCWSTR                                name;
+};
+
+struct VkD3D12FenceSubmitInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                waitSemaphoreValuesCount;
+       const deUint64* pWaitSemaphoreValues;
+       deUint32                signalSemaphoreValuesCount;
+       const deUint64* pSignalSemaphoreValues;
+};
+
+struct VkSemaphoreGetWin32HandleInfoKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkSemaphore                                                             semaphore;
+       VkExternalSemaphoreHandleTypeFlagBits   handleType;
+};
+
+struct VkImportFenceWin32HandleInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkFence                                                         fence;
+       VkFenceImportFlags                                      flags;
+       VkExternalFenceHandleTypeFlagBits       handleType;
+       pt::Win32Handle                                         handle;
+       pt::Win32LPCWSTR                                        name;
+};
+
+struct VkExportFenceWin32HandleInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       pt::Win32SecurityAttributesPtr  pAttributes;
+       deUint32                                                dwAccess;
+       pt::Win32LPCWSTR                                name;
+};
+
+struct VkFenceGetWin32HandleInfoKHR
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkFence                                                         fence;
+       VkExternalFenceHandleTypeFlagBits       handleType;
+};
+
+struct VkImportMemoryWin32HandleInfoNV
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       VkExternalMemoryHandleTypeFlagsNV       handleType;
+       pt::Win32Handle                                         handle;
+};
+
+struct VkExportMemoryWin32HandleInfoNV
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       pt::Win32SecurityAttributesPtr  pAttributes;
+       deUint32                                                dwAccess;
+};
+
+struct VkWin32KeyedMutexAcquireReleaseInfoNV
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                acquireCount;
+       const VkDeviceMemory*   pAcquireSyncs;
+       const deUint64*                 pAcquireKeys;
+       const deUint32*                 pAcquireTimeoutMilliseconds;
+       deUint32                                releaseCount;
+       const VkDeviceMemory*   pReleaseSyncs;
+       const deUint64*                 pReleaseKeys;
+};
+
+struct VkSurfaceFullScreenExclusiveInfoEXT
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkFullScreenExclusiveEXT        fullScreenExclusive;
+};
+
+struct VkSurfaceCapabilitiesFullScreenExclusiveEXT
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                fullScreenExclusiveSupported;
+};
+
+struct VkSurfaceFullScreenExclusiveWin32InfoEXT
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       pt::Win32MonitorHandle  hmonitor;
+};
+
+struct VkXcbSurfaceCreateInfoKHR
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkXcbSurfaceCreateFlagsKHR      flags;
+       pt::XcbConnectionPtr            connection;
+       pt::XcbWindow                           window;
+};
+
+struct VkXlibSurfaceCreateInfoKHR
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkXlibSurfaceCreateFlagsKHR     flags;
+       pt::XlibDisplayPtr                      dpy;
+       pt::XlibWindow                          window;
+};
+
+typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
+
+typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
+
+typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
+
+typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
+
+typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
+
+typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
+
+typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
+
+typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
+
+typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
+
+typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
+
+typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
+
+typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
+
+typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
+
+typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
+
+typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
+
+typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
+
+typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
+
+typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
+
+typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
+
+typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
+
+typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
+
+typedef VkFormatProperties2 VkFormatProperties2KHR;
+
+typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
+
+typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
+
+typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
+
+typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
+
+typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
+
+typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
+
+typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
+
+typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
+
+typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
+
+typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
+
+typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
+
+typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
+
+typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
+
+typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
+
+typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
+
+typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
+
+typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
+
+typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
+
+typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
+
+typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
+
+typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
+
+typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
+
+typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
+
+typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
+
+typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
+
+typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
+
+typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
+
+typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
+
+typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
+
+typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
+
+typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
+
+typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
+
+typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
+
+typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
+
+typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
+
+typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
+
+typedef VkConformanceVersion VkConformanceVersionKHR;
+
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
+
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
+
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
+
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
+
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
+
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
+
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
+
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
+
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
+
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
+
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
+
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
+
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
+
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
+
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
+
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
+
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
+
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
+
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
+
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
+
+typedef VkTransformMatrixKHR VkTransformMatrixNV;
+
+typedef VkAabbPositionsKHR VkAabbPositionsNV;
+
+typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV;
+
+typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL;
+
+typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
+
diff --git a/external/vulkancts/framework/vulkan/vkSupportedExtensions.inl b/external/vulkancts/framework/vulkan/vkSupportedExtensions.inl
new file mode 100644 (file)
index 0000000..0b50966
--- /dev/null
@@ -0,0 +1,68 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+
+void getCoreDeviceExtensionsImpl (deUint32 coreVersion, ::std::vector<const char*>& dst)
+{
+       if (coreVersion >= VK_API_VERSION_1_2)
+       {
+               dst.push_back("VK_KHR_sampler_mirror_clamp_to_edge");
+               dst.push_back("VK_KHR_shader_float16_int8");
+               dst.push_back("VK_KHR_imageless_framebuffer");
+               dst.push_back("VK_KHR_create_renderpass2");
+               dst.push_back("VK_KHR_image_format_list");
+               dst.push_back("VK_KHR_draw_indirect_count");
+               dst.push_back("VK_KHR_shader_subgroup_extended_types");
+               dst.push_back("VK_KHR_8bit_storage");
+               dst.push_back("VK_KHR_shader_atomic_int64");
+               dst.push_back("VK_KHR_driver_properties");
+               dst.push_back("VK_KHR_shader_float_controls");
+               dst.push_back("VK_KHR_depth_stencil_resolve");
+               dst.push_back("VK_KHR_timeline_semaphore");
+               dst.push_back("VK_KHR_vulkan_memory_model");
+               dst.push_back("VK_KHR_spirv_1_4");
+               dst.push_back("VK_KHR_separate_depth_stencil_layouts");
+               dst.push_back("VK_KHR_uniform_buffer_standard_layout");
+               dst.push_back("VK_KHR_buffer_device_address");
+               dst.push_back("VK_EXT_sampler_filter_minmax");
+               dst.push_back("VK_EXT_descriptor_indexing");
+               dst.push_back("VK_EXT_shader_viewport_index_layer");
+               dst.push_back("VK_EXT_scalar_block_layout");
+               dst.push_back("VK_EXT_separate_stencil_usage");
+               dst.push_back("VK_EXT_host_query_reset");
+       }
+       if (coreVersion >= VK_API_VERSION_1_1)
+       {
+               dst.push_back("VK_KHR_multiview");
+               dst.push_back("VK_KHR_device_group");
+               dst.push_back("VK_KHR_shader_draw_parameters");
+               dst.push_back("VK_KHR_maintenance1");
+               dst.push_back("VK_KHR_external_memory");
+               dst.push_back("VK_KHR_external_semaphore");
+               dst.push_back("VK_KHR_16bit_storage");
+               dst.push_back("VK_KHR_descriptor_update_template");
+               dst.push_back("VK_KHR_external_fence");
+               dst.push_back("VK_KHR_maintenance2");
+               dst.push_back("VK_KHR_variable_pointers");
+               dst.push_back("VK_KHR_dedicated_allocation");
+               dst.push_back("VK_KHR_storage_buffer_storage_class");
+               dst.push_back("VK_KHR_relaxed_block_layout");
+               dst.push_back("VK_KHR_get_memory_requirements2");
+               dst.push_back("VK_KHR_sampler_ycbcr_conversion");
+               dst.push_back("VK_KHR_bind_memory2");
+               dst.push_back("VK_KHR_maintenance3");
+       }
+}
+
+void getCoreInstanceExtensionsImpl (deUint32 coreVersion, ::std::vector<const char*>& dst)
+{
+       if (coreVersion >= VK_API_VERSION_1_1)
+       {
+               dst.push_back("VK_KHR_get_physical_device_properties2");
+               dst.push_back("VK_KHR_device_group_creation");
+               dst.push_back("VK_KHR_external_memory_capabilities");
+               dst.push_back("VK_KHR_external_semaphore_capabilities");
+               dst.push_back("VK_KHR_external_fence_capabilities");
+       }
+}
+
diff --git a/external/vulkancts/framework/vulkan/vkTypeUtil.inl b/external/vulkancts/framework/vulkan/vkTypeUtil.inl
new file mode 100644 (file)
index 0000000..b21e888
--- /dev/null
@@ -0,0 +1,720 @@
+/* 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 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;
+}
+
+inline VkImageSubresource makeImageSubresource (VkImageAspectFlags aspectMask, deUint32 mipLevel, deUint32 arrayLayer)
+{
+       VkImageSubresource res;
+       res.aspectMask  = aspectMask;
+       res.mipLevel    = mipLevel;
+       res.arrayLayer  = arrayLayer;
+       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 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 VkDescriptorUpdateTemplateEntry makeDescriptorUpdateTemplateEntry (deUint32 dstBinding, deUint32 dstArrayElement, deUint32 descriptorCount, VkDescriptorType descriptorType, deUintptr offset, deUintptr stride)
+{
+       VkDescriptorUpdateTemplateEntry res;
+       res.dstBinding          = dstBinding;
+       res.dstArrayElement     = dstArrayElement;
+       res.descriptorCount     = descriptorCount;
+       res.descriptorType      = descriptorType;
+       res.offset                      = offset;
+       res.stride                      = stride;
+       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 VkShaderResourceUsageAMD makeShaderResourceUsageAMD (deUint32 numUsedVgprs, deUint32 numUsedSgprs, deUint32 ldsSizePerLocalWorkGroup, deUintptr ldsUsageSizeInBytes, deUintptr scratchMemUsageInBytes)
+{
+       VkShaderResourceUsageAMD res;
+       res.numUsedVgprs                                = numUsedVgprs;
+       res.numUsedSgprs                                = numUsedSgprs;
+       res.ldsSizePerLocalWorkGroup    = ldsSizePerLocalWorkGroup;
+       res.ldsUsageSizeInBytes                 = ldsUsageSizeInBytes;
+       res.scratchMemUsageInBytes              = scratchMemUsageInBytes;
+       return res;
+}
+
+inline VkViewportWScalingNV makeViewportWScalingNV (float xcoeff, float ycoeff)
+{
+       VkViewportWScalingNV res;
+       res.xcoeff      = xcoeff;
+       res.ycoeff      = ycoeff;
+       return res;
+}
+
+inline VkRefreshCycleDurationGOOGLE makeRefreshCycleDurationGOOGLE (deUint64 refreshDuration)
+{
+       VkRefreshCycleDurationGOOGLE res;
+       res.refreshDuration     = refreshDuration;
+       return res;
+}
+
+inline VkPastPresentationTimingGOOGLE makePastPresentationTimingGOOGLE (deUint32 presentID, deUint64 desiredPresentTime, deUint64 actualPresentTime, deUint64 earliestPresentTime, deUint64 presentMargin)
+{
+       VkPastPresentationTimingGOOGLE res;
+       res.presentID                   = presentID;
+       res.desiredPresentTime  = desiredPresentTime;
+       res.actualPresentTime   = actualPresentTime;
+       res.earliestPresentTime = earliestPresentTime;
+       res.presentMargin               = presentMargin;
+       return res;
+}
+
+inline VkPresentTimeGOOGLE makePresentTimeGOOGLE (deUint32 presentID, deUint64 desiredPresentTime)
+{
+       VkPresentTimeGOOGLE res;
+       res.presentID                   = presentID;
+       res.desiredPresentTime  = desiredPresentTime;
+       return res;
+}
+
+inline VkViewportSwizzleNV makeViewportSwizzleNV (VkViewportCoordinateSwizzleNV x, VkViewportCoordinateSwizzleNV y, VkViewportCoordinateSwizzleNV z, VkViewportCoordinateSwizzleNV w)
+{
+       VkViewportSwizzleNV res;
+       res.x   = x;
+       res.y   = y;
+       res.z   = z;
+       res.w   = w;
+       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 VkShadingRatePaletteNV makeShadingRatePaletteNV (deUint32 shadingRatePaletteEntryCount, const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries)
+{
+       VkShadingRatePaletteNV res;
+       res.shadingRatePaletteEntryCount        = shadingRatePaletteEntryCount;
+       res.pShadingRatePaletteEntries          = pShadingRatePaletteEntries;
+       return res;
+}
+
+inline VkCoarseSampleLocationNV makeCoarseSampleLocationNV (deUint32 pixelX, deUint32 pixelY, deUint32 sample)
+{
+       VkCoarseSampleLocationNV res;
+       res.pixelX      = pixelX;
+       res.pixelY      = pixelY;
+       res.sample      = sample;
+       return res;
+}
+
+inline VkCoarseSampleOrderCustomNV makeCoarseSampleOrderCustomNV (VkShadingRatePaletteEntryNV shadingRate, deUint32 sampleCount, deUint32 sampleLocationCount, const VkCoarseSampleLocationNV* pSampleLocations)
+{
+       VkCoarseSampleOrderCustomNV res;
+       res.shadingRate                 = shadingRate;
+       res.sampleCount                 = sampleCount;
+       res.sampleLocationCount = sampleLocationCount;
+       res.pSampleLocations    = pSampleLocations;
+       return res;
+}
+
+inline VkAabbPositionsKHR makeAabbPositionsKHR (float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
+{
+       VkAabbPositionsKHR res;
+       res.minX        = minX;
+       res.minY        = minY;
+       res.minZ        = minZ;
+       res.maxX        = maxX;
+       res.maxY        = maxY;
+       res.maxZ        = maxZ;
+       return res;
+}
+
+inline VkVertexInputBindingDivisorDescriptionEXT makeVertexInputBindingDivisorDescriptionEXT (deUint32 binding, deUint32 divisor)
+{
+       VkVertexInputBindingDivisorDescriptionEXT res;
+       res.binding     = binding;
+       res.divisor     = divisor;
+       return res;
+}
+
+inline VkPipelineCreationFeedbackEXT makePipelineCreationFeedbackEXT (VkPipelineCreationFeedbackFlagsEXT flags, deUint64 duration)
+{
+       VkPipelineCreationFeedbackEXT res;
+       res.flags               = flags;
+       res.duration    = duration;
+       return res;
+}
+
+inline VkDrawMeshTasksIndirectCommandNV makeDrawMeshTasksIndirectCommandNV (deUint32 taskCount, deUint32 firstTask)
+{
+       VkDrawMeshTasksIndirectCommandNV res;
+       res.taskCount   = taskCount;
+       res.firstTask   = firstTask;
+       return res;
+}
+
+inline VkBindShaderGroupIndirectCommandNV makeBindShaderGroupIndirectCommandNV (deUint32 groupIndex)
+{
+       VkBindShaderGroupIndirectCommandNV res;
+       res.groupIndex  = groupIndex;
+       return res;
+}
+
+inline VkBindIndexBufferIndirectCommandNV makeBindIndexBufferIndirectCommandNV (VkDeviceAddress bufferAddress, deUint32 size, VkIndexType indexType)
+{
+       VkBindIndexBufferIndirectCommandNV res;
+       res.bufferAddress       = bufferAddress;
+       res.size                        = size;
+       res.indexType           = indexType;
+       return res;
+}
+
+inline VkBindVertexBufferIndirectCommandNV makeBindVertexBufferIndirectCommandNV (VkDeviceAddress bufferAddress, deUint32 size, deUint32 stride)
+{
+       VkBindVertexBufferIndirectCommandNV res;
+       res.bufferAddress       = bufferAddress;
+       res.size                        = size;
+       res.stride                      = stride;
+       return res;
+}
+
+inline VkSetStateFlagsIndirectCommandNV makeSetStateFlagsIndirectCommandNV (deUint32 data)
+{
+       VkSetStateFlagsIndirectCommandNV res;
+       res.data        = data;
+       return res;
+}
+
+inline VkIndirectCommandsStreamNV makeIndirectCommandsStreamNV (VkBuffer buffer, VkDeviceSize offset)
+{
+       VkIndirectCommandsStreamNV res;
+       res.buffer      = buffer;
+       res.offset      = offset;
+       return res;
+}
+
+inline VkSRTDataNV makeSRTDataNV (float sx, float a, float b, float pvx, float sy, float c, float pvy, float sz, float pvz, float qx, float qy, float qz, float qw, float tx, float ty, float tz)
+{
+       VkSRTDataNV res;
+       res.sx  = sx;
+       res.a   = a;
+       res.b   = b;
+       res.pvx = pvx;
+       res.sy  = sy;
+       res.c   = c;
+       res.pvy = pvy;
+       res.sz  = sz;
+       res.pvz = pvz;
+       res.qx  = qx;
+       res.qy  = qy;
+       res.qz  = qz;
+       res.qw  = qw;
+       res.tx  = tx;
+       res.ty  = ty;
+       res.tz  = tz;
+       return res;
+}
+
+inline VkMutableDescriptorTypeListVALVE makeMutableDescriptorTypeListVALVE (deUint32 descriptorTypeCount, const VkDescriptorType* pDescriptorTypes)
+{
+       VkMutableDescriptorTypeListVALVE res;
+       res.descriptorTypeCount = descriptorTypeCount;
+       res.pDescriptorTypes    = pDescriptorTypes;
+       return res;
+}
+
+inline VkMultiDrawInfoEXT makeMultiDrawInfoEXT (deUint32 firstVertex, deUint32 vertexCount)
+{
+       VkMultiDrawInfoEXT res;
+       res.firstVertex = firstVertex;
+       res.vertexCount = vertexCount;
+       return res;
+}
+
+inline VkMultiDrawIndexedInfoEXT makeMultiDrawIndexedInfoEXT (deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset)
+{
+       VkMultiDrawIndexedInfoEXT res;
+       res.firstIndex          = firstIndex;
+       res.indexCount          = indexCount;
+       res.vertexOffset        = vertexOffset;
+       return res;
+}
+
+inline VkAccelerationStructureBuildRangeInfoKHR makeAccelerationStructureBuildRangeInfoKHR (deUint32 primitiveCount, deUint32 primitiveOffset, deUint32 firstVertex, deUint32 transformOffset)
+{
+       VkAccelerationStructureBuildRangeInfoKHR res;
+       res.primitiveCount      = primitiveCount;
+       res.primitiveOffset     = primitiveOffset;
+       res.firstVertex         = firstVertex;
+       res.transformOffset     = transformOffset;
+       return res;
+}
+
+inline VkStridedDeviceAddressRegionKHR makeStridedDeviceAddressRegionKHR (VkDeviceAddress deviceAddress, VkDeviceSize stride, VkDeviceSize size)
+{
+       VkStridedDeviceAddressRegionKHR res;
+       res.deviceAddress       = deviceAddress;
+       res.stride                      = stride;
+       res.size                        = size;
+       return res;
+}
+
+inline VkTraceRaysIndirectCommandKHR makeTraceRaysIndirectCommandKHR (deUint32 width, deUint32 height, deUint32 depth)
+{
+       VkTraceRaysIndirectCommandKHR res;
+       res.width       = width;
+       res.height      = height;
+       res.depth       = depth;
+       return res;
+}
+
+inline StdVideoEncodeH264RefListModEntry makeStdVideoEncodeH264RefListModEntry (StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc, deUint16 abs_diff_pic_num_minus1, deUint16 long_term_pic_num)
+{
+       StdVideoEncodeH264RefListModEntry res;
+       res.modification_of_pic_nums_idc        = modification_of_pic_nums_idc;
+       res.abs_diff_pic_num_minus1                     = abs_diff_pic_num_minus1;
+       res.long_term_pic_num                           = long_term_pic_num;
+       return res;
+}
+
+inline StdVideoEncodeH264RefPicMarkingEntry makeStdVideoEncodeH264RefPicMarkingEntry (StdVideoH264MemMgmtControlOp operation, deUint16 difference_of_pic_nums_minus1, deUint16 long_term_pic_num, deUint16 long_term_frame_idx, deUint16 max_long_term_frame_idx_plus1)
+{
+       StdVideoEncodeH264RefPicMarkingEntry res;
+       res.operation                                           = operation;
+       res.difference_of_pic_nums_minus1       = difference_of_pic_nums_minus1;
+       res.long_term_pic_num                           = long_term_pic_num;
+       res.long_term_frame_idx                         = long_term_frame_idx;
+       res.max_long_term_frame_idx_plus1       = max_long_term_frame_idx_plus1;
+       return res;
+}
+
+inline StdVideoDecodeH264Mvc makeStdVideoDecodeH264Mvc (deUint32 viewId0, deUint32 mvcElementCount, StdVideoDecodeH264MvcElement* pMvcElements)
+{
+       StdVideoDecodeH264Mvc res;
+       res.viewId0                     = viewId0;
+       res.mvcElementCount     = mvcElementCount;
+       res.pMvcElements        = pMvcElements;
+       return res;
+}
diff --git a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
new file mode 100644 (file)
index 0000000..aa971c0
--- /dev/null
@@ -0,0 +1,366 @@
+/* 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 void                           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) 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                           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;
+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 void                           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) 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                       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const = 0;
+virtual void                           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, 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                       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const = 0;
+virtual VkResult                       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) 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 void                           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) 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 void                           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) 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 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 void                           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const = 0;
+virtual void                           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) 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 VkResult                       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const = 0;
+virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const = 0;
+virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const = 0;
+virtual void                           cmdDrawIndirectCount                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawIndexedIndirectCount                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual VkResult                       createRenderPass2                                                               (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
+virtual void                           cmdBeginRenderPass2                                                             (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const = 0;
+virtual void                           cmdNextSubpass2                                                                 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void                           cmdEndRenderPass2                                                               (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void                           resetQueryPool                                                                  (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
+virtual VkResult                       getSemaphoreCounterValue                                                (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const = 0;
+virtual VkResult                       waitSemaphores                                                                  (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const = 0;
+virtual VkResult                       signalSemaphore                                                                 (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const = 0;
+virtual VkDeviceAddress                getBufferDeviceAddress                                                  (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t                       getBufferOpaqueCaptureAddress                                   (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t                       getDeviceMemoryOpaqueCaptureAddress                             (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const = 0;
+virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
+virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
+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 void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0;
+virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0;
+virtual VkResult                       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 VkResult                       waitForPresentKHR                                                               (VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout) const = 0;
+virtual VkResult                       createDeferredOperationKHR                                              (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation) const = 0;
+virtual void                           destroyDeferredOperationKHR                                             (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual uint32_t                       getDeferredOperationMaxConcurrencyKHR                   (VkDevice device, VkDeferredOperationKHR operation) const = 0;
+virtual VkResult                       getDeferredOperationResultKHR                                   (VkDevice device, VkDeferredOperationKHR operation) const = 0;
+virtual VkResult                       deferredOperationJoinKHR                                                (VkDevice device, VkDeferredOperationKHR operation) const = 0;
+virtual VkResult                       getPipelineExecutablePropertiesKHR                              (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const = 0;
+virtual VkResult                       getPipelineExecutableStatisticsKHR                              (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const = 0;
+virtual VkResult                       getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const = 0;
+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                       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
+virtual VkResult                       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
+virtual void                           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
+virtual void                           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const = 0;
+virtual void                           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
+virtual void                           cmdBindTransformFeedbackBuffersEXT                              (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const = 0;
+virtual void                           cmdBeginTransformFeedbackEXT                                    (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const = 0;
+virtual void                           cmdEndTransformFeedbackEXT                                              (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const = 0;
+virtual void                           cmdBeginQueryIndexedEXT                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const = 0;
+virtual void                           cmdEndQueryIndexedEXT                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const = 0;
+virtual void                           cmdDrawIndirectByteCountEXT                                             (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const = 0;
+virtual VkResult                       createCuModuleNVX                                                               (VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule) const = 0;
+virtual VkResult                       createCuFunctionNVX                                                             (VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction) const = 0;
+virtual void                           destroyCuModuleNVX                                                              (VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           destroyCuFunctionNVX                                                    (VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           cmdCuLaunchKernelNVX                                                    (VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) const = 0;
+virtual uint32_t                       getImageViewHandleNVX                                                   (VkDevice device, const VkImageViewHandleInfoNVX* pInfo) const = 0;
+virtual VkResult                       getImageViewAddressNVX                                                  (VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) const = 0;
+virtual void                           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual VkResult                       getShaderInfoAMD                                                                (VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo) const = 0;
+virtual void                           cmdBeginConditionalRenderingEXT                                 (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) const = 0;
+virtual void                           cmdEndConditionalRenderingEXT                                   (VkCommandBuffer commandBuffer) const = 0;
+virtual void                           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) 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 VkResult                       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const = 0;
+virtual VkResult                       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) 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                       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const = 0;
+virtual void                           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const = 0;
+virtual VkResult                       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const = 0;
+virtual void                           cmdBindShadingRateImageNV                                               (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const = 0;
+virtual void                           cmdSetViewportShadingRatePaletteNV                              (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes) const = 0;
+virtual void                           cmdSetCoarseSampleOrderNV                                               (VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) const = 0;
+virtual VkResult                       createAccelerationStructureNV                                   (VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) const = 0;
+virtual void                           destroyAccelerationStructureNV                                  (VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           getAccelerationStructureMemoryRequirementsNV    (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const = 0;
+virtual VkResult                       bindAccelerationStructureMemoryNV                               (VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) const = 0;
+virtual void                           cmdBuildAccelerationStructureNV                                 (VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset) const = 0;
+virtual void                           cmdCopyAccelerationStructureNV                                  (VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode) const = 0;
+virtual void                           cmdTraceRaysNV                                                                  (VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth) const = 0;
+virtual VkResult                       createRayTracingPipelinesNV                                             (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
+virtual VkResult                       getRayTracingShaderGroupHandlesKHR                              (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const = 0;
+virtual VkResult                       getRayTracingShaderGroupHandlesNV                               (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const = 0;
+virtual VkResult                       getAccelerationStructureHandleNV                                (VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData) const = 0;
+virtual void                           cmdWriteAccelerationStructuresPropertiesNV              (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const = 0;
+virtual VkResult                       compileDeferredNV                                                               (VkDevice device, VkPipeline pipeline, deUint32 shader) const = 0;
+virtual VkResult                       getMemoryHostPointerPropertiesEXT                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const = 0;
+virtual void                           cmdWriteBufferMarkerAMD                                                 (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const = 0;
+virtual VkResult                       getCalibratedTimestampsEXT                                              (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation) const = 0;
+virtual void                           cmdDrawMeshTasksNV                                                              (VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask) const = 0;
+virtual void                           cmdDrawMeshTasksIndirectNV                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawMeshTasksIndirectCountNV                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void                           cmdSetExclusiveScissorNV                                                (VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors) const = 0;
+virtual void                           cmdSetCheckpointNV                                                              (VkCommandBuffer commandBuffer, const void* pCheckpointMarker) const = 0;
+virtual void                           getQueueCheckpointDataNV                                                (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) const = 0;
+virtual VkResult                       initializePerformanceApiINTEL                                   (VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) const = 0;
+virtual void                           uninitializePerformanceApiINTEL                                 (VkDevice device) const = 0;
+virtual VkResult                       cmdSetPerformanceMarkerINTEL                                    (VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) const = 0;
+virtual VkResult                       cmdSetPerformanceStreamMarkerINTEL                              (VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) const = 0;
+virtual VkResult                       cmdSetPerformanceOverrideINTEL                                  (VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) const = 0;
+virtual VkResult                       acquirePerformanceConfigurationINTEL                    (VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration) const = 0;
+virtual VkResult                       releasePerformanceConfigurationINTEL                    (VkDevice device, VkPerformanceConfigurationINTEL configuration) const = 0;
+virtual VkResult                       queueSetPerformanceConfigurationINTEL                   (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const = 0;
+virtual VkResult                       getPerformanceParameterINTEL                                    (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const = 0;
+virtual void                           setLocalDimmingAMD                                                              (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const = 0;
+virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) 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                           getGeneratedCommandsMemoryRequirementsNV                (VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
+virtual void                           cmdPreprocessGeneratedCommandsNV                                (VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const = 0;
+virtual void                           cmdExecuteGeneratedCommandsNV                                   (VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) const = 0;
+virtual void                           cmdBindPipelineShaderGroupNV                                    (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex) const = 0;
+virtual VkResult                       createIndirectCommandsLayoutNV                                  (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) const = 0;
+virtual void                           destroyIndirectCommandsLayoutNV                                 (VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createPrivateDataSlotEXT                                                (VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot) const = 0;
+virtual void                           destroyPrivateDataSlotEXT                                               (VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       setPrivateDataEXT                                                               (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data) const = 0;
+virtual void                           getPrivateDataEXT                                                               (VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData) const = 0;
+virtual void                           cmdSetFragmentShadingRateEnumNV                                 (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const = 0;
+virtual void                           cmdSetVertexInputEXT                                                    (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const = 0;
+virtual VkResult                       getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   (VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize) const = 0;
+virtual void                           cmdSubpassShadingHUAWEI                                                 (VkCommandBuffer commandBuffer) const = 0;
+virtual void                           cmdBindInvocationMaskHUAWEI                                             (VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) const = 0;
+virtual VkResult                       getMemoryRemoteAddressNV                                                (VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress) 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;
+virtual void                           cmdDrawMultiEXT                                                                 (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride) const = 0;
+virtual void                           cmdDrawMultiIndexedEXT                                                  (VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset) const = 0;
+virtual VkResult                       createAccelerationStructureKHR                                  (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const = 0;
+virtual void                           destroyAccelerationStructureKHR                                 (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           cmdBuildAccelerationStructuresKHR                               (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const = 0;
+virtual void                           cmdBuildAccelerationStructuresIndirectKHR               (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts) const = 0;
+virtual VkResult                       buildAccelerationStructuresKHR                                  (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const = 0;
+virtual VkResult                       copyAccelerationStructureKHR                                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo) const = 0;
+virtual VkResult                       copyAccelerationStructureToMemoryKHR                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const = 0;
+virtual VkResult                       copyMemoryToAccelerationStructureKHR                    (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const = 0;
+virtual VkResult                       writeAccelerationStructuresPropertiesKHR                (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride) const = 0;
+virtual void                           cmdCopyAccelerationStructureKHR                                 (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) const = 0;
+virtual void                           cmdCopyAccelerationStructureToMemoryKHR                 (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const = 0;
+virtual void                           cmdCopyMemoryToAccelerationStructureKHR                 (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const = 0;
+virtual VkDeviceAddress                getAccelerationStructureDeviceAddressKHR                (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) const = 0;
+virtual void                           cmdWriteAccelerationStructuresPropertiesKHR             (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const = 0;
+virtual void                           getDeviceAccelerationStructureCompatibilityKHR  (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility) const = 0;
+virtual void                           getAccelerationStructureBuildSizesKHR                   (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) const = 0;
+virtual void                           cmdTraceRaysKHR                                                                 (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth) const = 0;
+virtual VkResult                       createRayTracingPipelinesKHR                                    (VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
+virtual VkResult                       getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const = 0;
+virtual void                           cmdTraceRaysIndirectKHR                                                 (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) const = 0;
+virtual VkDeviceSize           getRayTracingShaderGroupStackSizeKHR                    (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader) const = 0;
+virtual void                           cmdSetRayTracingPipelineStackSizeKHR                    (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize) const = 0;
+virtual VkResult                       getAndroidHardwareBufferPropertiesANDROID               (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
+virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
+virtual VkResult                       createVideoSessionKHR                                                   (VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) const = 0;
+virtual void                           destroyVideoSessionKHR                                                  (VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getVideoSessionMemoryRequirementsKHR                    (VkDevice device, VkVideoSessionKHR videoSession, deUint32* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements) const = 0;
+virtual VkResult                       bindVideoSessionMemoryKHR                                               (VkDevice device, VkVideoSessionKHR videoSession, deUint32 videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories) const = 0;
+virtual VkResult                       createVideoSessionParametersKHR                                 (VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters) const = 0;
+virtual VkResult                       updateVideoSessionParametersKHR                                 (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) const = 0;
+virtual void                           destroyVideoSessionParametersKHR                                (VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           cmdBeginVideoCodingKHR                                                  (VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) const = 0;
+virtual void                           cmdEndVideoCodingKHR                                                    (VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) const = 0;
+virtual void                           cmdControlVideoCodingKHR                                                (VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) const = 0;
+virtual void                           cmdDecodeVideoKHR                                                               (VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo) const = 0;
+virtual void                           cmdEncodeVideoKHR                                                               (VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) const = 0;
+virtual VkResult                       getMemoryZirconHandleFUCHSIA                                    (VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const = 0;
+virtual VkResult                       getMemoryZirconHandlePropertiesFUCHSIA                  (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) const = 0;
+virtual VkResult                       importSemaphoreZirconHandleFUCHSIA                              (VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) const = 0;
+virtual VkResult                       getSemaphoreZirconHandleFUCHSIA                                 (VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, pt::zx_handle_t* pZirconHandle) const = 0;
+virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const = 0;
+virtual VkResult                       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const = 0;
+virtual VkResult                       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const = 0;
+virtual VkResult                       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       acquireFullScreenExclusiveModeEXT                               (VkDevice device, VkSwapchainKHR swapchain) const = 0;
+virtual VkResult                       releaseFullScreenExclusiveModeEXT                               (VkDevice device, VkSwapchainKHR swapchain) const = 0;
+virtual VkResult                       getDeviceGroupSurfacePresentModes2EXT                   (VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) const = 0;
diff --git a/external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl
new file mode 100644 (file)
index 0000000..a42251e
--- /dev/null
@@ -0,0 +1,87 @@
+/* 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 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       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       createDebugReportCallbackEXT                                                                    (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
+virtual void           destroyDebugReportCallbackEXT                                                                   (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void           debugReportMessageEXT                                                                                   (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) 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       getPhysicalDeviceToolPropertiesEXT                                                              (VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties) const = 0;
+virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations) const = 0;
+virtual VkResult       createHeadlessSurfaceEXT                                                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       acquireDrmDisplayEXT                                                                                    (VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display) const = 0;
+virtual VkResult       getDrmDisplayEXT                                                                                                (VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display) const = 0;
+virtual VkResult       acquireWinrtDisplayNV                                                                                   (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
+virtual VkResult       getWinrtDisplayNV                                                                                               (VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay) const = 0;
+virtual VkResult       createAndroidSurfaceKHR                                                                                 (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       getPhysicalDeviceVideoCapabilitiesKHR                                                   (VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities) const = 0;
+virtual VkResult       getPhysicalDeviceVideoFormatPropertiesKHR                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, deUint32* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties) const = 0;
+virtual VkResult       createImagePipeSurfaceFUCHSIA                                                                   (VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createStreamDescriptorSurfaceGGP                                                                (VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createIOSSurfaceMVK                                                                                             (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createMacOSSurfaceMVK                                                                                   (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createMetalSurfaceEXT                                                                                   (VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createViSurfaceNN                                                                                               (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createWaylandSurfaceKHR                                                                                 (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR                                  (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const = 0;
+virtual VkResult       createWin32SurfaceKHR                                                                                   (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
+virtual VkResult       getPhysicalDeviceSurfacePresentModes2EXT                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
+virtual VkResult       createXcbSurfaceKHR                                                                                             (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const = 0;
+virtual VkResult       createXlibSurfaceKHR                                                                                    (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                                             (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const = 0;
+virtual VkResult       acquireXlibDisplayEXT                                                                                   (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const = 0;
+virtual VkResult       getRandROutputDisplayEXT                                                                                (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const = 0;
diff --git a/external/vulkancts/framework/vulkan/vkVirtualPlatformInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualPlatformInterface.inl
new file mode 100644 (file)
index 0000000..3e71695
--- /dev/null
@@ -0,0 +1,8 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+virtual VkResult                       createInstance                                                  (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) const = 0;
+virtual PFN_vkVoidFunction     getInstanceProcAddr                                             (VkInstance instance, const char* pName) const = 0;
+virtual VkResult                       enumerateInstanceExtensionProperties    (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
+virtual VkResult                       enumerateInstanceLayerProperties                (deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
+virtual VkResult                       enumerateInstanceVersion                                (deUint32* pApiVersion) const = 0;
diff --git a/external/vulkancts/framework/vulkan/vkVulkan_c.inl b/external/vulkancts/framework/vulkan/vkVulkan_c.inl
new file mode 100644 (file)
index 0000000..8de0991
--- /dev/null
@@ -0,0 +1,14083 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+/*
+** Copyright (c) 2019-2021 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_COMMON_H_
+#define VULKAN_VIDEO_CODEC_COMMON_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
+    ((((deUint32)(major)) << 22) | (((deUint32)(minor)) << 12) | ((deUint32)(patch)))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_COMMON_H_
+/*
+** Copyright (c) 2019-2021 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
+#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// Vulkan 0.9 provisional Vulkan video H.264 encode and decode std specification version number
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 0) // Patch version should always be set to 0
+
+// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION   VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264"
+
+// *************************************************
+// Video H.264 common definitions:
+// *************************************************
+
+typedef enum StdVideoH264ChromaFormatIdc {
+    std_video_h264_chroma_format_idc_monochrome  = 0,
+    std_video_h264_chroma_format_idc_420         = 1,
+    std_video_h264_chroma_format_idc_422         = 2,
+    std_video_h264_chroma_format_idc_444         = 3,
+} StdVideoH264ChromaFormatIdc;
+
+typedef enum StdVideoH264ProfileIdc {
+    std_video_h264_profile_idc_baseline             = 66, /* Only constrained baseline is supported */
+    std_video_h264_profile_idc_main                 = 77,
+    std_video_h264_profile_idc_high                 = 100,
+    std_video_h264_profile_idc_high_444_predictive  = 244,
+    std_video_h264_profile_idc_invalid              = 0x7FFFFFFF
+} StdVideoH264ProfileIdc;
+
+typedef enum StdVideoH264Level {
+    std_video_h264_level_1_0 = 0,
+    std_video_h264_level_1_1 = 1,
+    std_video_h264_level_1_2 = 2,
+    std_video_h264_level_1_3 = 3,
+    std_video_h264_level_2_0 = 4,
+    std_video_h264_level_2_1 = 5,
+    std_video_h264_level_2_2 = 6,
+    std_video_h264_level_3_0 = 7,
+    std_video_h264_level_3_1 = 8,
+    std_video_h264_level_3_2 = 9,
+    std_video_h264_level_4_0 = 10,
+    std_video_h264_level_4_1 = 11,
+    std_video_h264_level_4_2 = 12,
+    std_video_h264_level_5_0 = 13,
+    std_video_h264_level_5_1 = 14,
+    std_video_h264_level_5_2 = 15,
+    std_video_h264_level_6_0 = 16,
+    std_video_h264_level_6_1 = 17,
+    std_video_h264_level_6_2 = 18,
+    std_video_h264_level_invalid = 0x7FFFFFFF
+} StdVideoH264Level;
+
+typedef enum StdVideoH264PocType {
+    std_video_h264_poc_type_0 = 0,
+    std_video_h264_poc_type_1 = 1,
+    std_video_h264_poc_type_2 = 2,
+    std_video_h264_poc_type_invalid = 0x7FFFFFFF
+} StdVideoH264PocType;
+
+typedef enum StdVideoH264AspectRatioIdc {
+    std_video_h264_aspect_ratio_idc_unspecified = 0,
+    std_video_h264_aspect_ratio_idc_square = 1,
+    std_video_h264_aspect_ratio_idc_12_11 = 2,
+    std_video_h264_aspect_ratio_idc_10_11 = 3,
+    std_video_h264_aspect_ratio_idc_16_11 = 4,
+    std_video_h264_aspect_ratio_idc_40_33 = 5,
+    std_video_h264_aspect_ratio_idc_24_11 = 6,
+    std_video_h264_aspect_ratio_idc_20_11 = 7,
+    std_video_h264_aspect_ratio_idc_32_11 = 8,
+    std_video_h264_aspect_ratio_idc_80_33 = 9,
+    std_video_h264_aspect_ratio_idc_18_11 = 10,
+    std_video_h264_aspect_ratio_idc_15_11 = 11,
+    std_video_h264_aspect_ratio_idc_64_33 = 12,
+    std_video_h264_aspect_ratio_idc_160_99 = 13,
+    std_video_h264_aspect_ratio_idc_4_3 = 14,
+    std_video_h264_aspect_ratio_idc_3_2 = 15,
+    std_video_h264_aspect_ratio_idc_2_1 = 16,
+    std_video_h264_aspect_ratio_idc_extended_sar = 255,
+    std_video_h264_aspect_ratio_idc_invalid = 0x7FFFFFFF
+} StdVideoH264AspectRatioIdc;
+
+typedef enum StdVideoH264WeightedBiPredIdc {
+    std_video_h264_default_weighted_b_slices_prediction_idc = 0,
+    std_video_h264_explicit_weighted_b_slices_prediction_idc = 1,
+    std_video_h264_implicit_weighted_b_slices_prediction_idc = 2,
+    std_video_h264_invalid_weighted_b_slices_prediction_idc = 0x7FFFFFFF
+} StdVideoH264WeightedBiPredIdc;
+
+typedef enum StdVideoH264ModificationOfPicNumsIdc {
+    std_video_h264_modification_of_pic_nums_idc_short_term_subtract = 0,
+    std_video_h264_modification_of_pic_nums_idc_short_term_add = 1,
+    std_video_h264_modification_of_pic_nums_idc_long_term = 2,
+    std_video_h264_modification_of_pic_nums_idc_end = 3,
+    std_video_h264_modification_of_pic_nums_idc_invalid = 0x7FFFFFFF
+} StdVideoH264ModificationOfPicNumsIdc;
+
+typedef enum StdVideoH264MemMgmtControlOp {
+    std_video_h264_mem_mgmt_control_op_end = 0,
+    std_video_h264_mem_mgmt_control_op_unmark_short_term = 1,
+    std_video_h264_mem_mgmt_control_op_unmark_long_term = 2,
+    std_video_h264_mem_mgmt_control_op_mark_long_term = 3,
+    std_video_h264_mem_mgmt_control_op_set_max_long_term_index = 4,
+    std_video_h264_mem_mgmt_control_op_unmark_all = 5,
+    std_video_h264_mem_mgmt_control_op_mark_current_as_long_term = 6,
+    std_video_h264_mem_mgmt_control_op_invalid = 0x7FFFFFFF
+} StdVideoH264MemMgmtControlOp;
+
+typedef enum StdVideoH264CabacInitIdc {
+    std_video_h264_cabac_init_idc_0 = 0,
+    std_video_h264_cabac_init_idc_1 = 1,
+    std_video_h264_cabac_init_idc_2 = 2,
+    std_video_h264_cabac_init_idc_invalid = 0x7FFFFFFF
+} StdVideoH264CabacInitIdc;
+
+typedef enum StdVideoH264DisableDeblockingFilterIdc {
+    std_video_h264_disable_deblocking_filter_idc_disabled = 0,
+    std_video_h264_disable_deblocking_filter_idc_enabled = 1,
+    std_video_h264_disable_deblocking_filter_idc_partial = 2,
+    std_video_h264_disable_deblocking_filter_idc_invalid = 0x7FFFFFFF
+} StdVideoH264DisableDeblockingFilterIdc;
+
+typedef enum StdVideoH264PictureType {
+    std_video_h264_picture_type_i = 0,
+    std_video_h264_picture_type_p = 1,
+    std_video_h264_picture_type_b = 2,
+    std_video_h264_picture_type_invalid = 0x7FFFFFFF
+} StdVideoH264PictureType;
+
+typedef enum StdVideoH264SliceType {
+    std_video_h264_slice_type_i = 0,
+    std_video_h264_slice_type_p = 1,
+    std_video_h264_slice_type_b = 2,
+    std_video_h264_slice_type_invalid = 0x7FFFFFFF
+} StdVideoH264SliceType;
+
+typedef enum StdVideoH264NonVclNaluType {
+    std_video_h264_non_vcl_nalu_type_sps = 0,
+    std_video_h264_non_vcl_nalu_type_pps = 1,
+    std_video_h264_non_vcl_nalu_type_aud = 2,
+    std_video_h264_non_vcl_nalu_type_prefix = 3,
+    std_video_h264_non_vcl_nalu_type_end_of_sequence = 4,
+    std_video_h264_non_vcl_nalu_type_end_of_stream = 5,
+    std_video_h264_non_vcl_nalu_type_precoded = 6,
+    std_video_h264_non_vcl_nalu_type_invalid = 0x7FFFFFFF
+} StdVideoH264NonVclNaluType;
+
+typedef struct StdVideoH264SpsVuiFlags {
+    deUint32 aspect_ratio_info_present_flag:1;
+    deUint32 overscan_info_present_flag:1;
+    deUint32 overscan_appropriate_flag:1;
+    deUint32 video_signal_type_present_flag:1;
+    deUint32 video_full_range_flag:1;
+    deUint32 color_description_present_flag:1;
+    deUint32 chroma_loc_info_present_flag:1;
+    deUint32 timing_info_present_flag:1;
+    deUint32 fixed_frame_rate_flag:1;
+    deUint32 bitstream_restriction_flag:1;
+    deUint32 nal_hrd_parameters_present_flag:1;
+    deUint32 vcl_hrd_parameters_present_flag:1;
+} StdVideoH264SpsVuiFlags;
+
+typedef struct StdVideoH264HrdParameters {
+    deUint8                    cpb_cnt_minus1;
+    deUint8                    bit_rate_scale;
+    deUint8                    cpb_size_scale;
+    deUint32                   bit_rate_value_minus1[32];
+    deUint32                   cpb_size_value_minus1[32];
+    deUint8                    cbr_flag[32];
+    deUint32                   initial_cpb_removal_delay_length_minus1;
+    deUint32                   cpb_removal_delay_length_minus1;
+    deUint32                   dpb_output_delay_length_minus1;
+    deUint32                   time_offset_length;
+} StdVideoH264HrdParameters;
+
+typedef struct StdVideoH264SequenceParameterSetVui {
+    StdVideoH264AspectRatioIdc  aspect_ratio_idc;
+    deUint16                    sar_width;
+    deUint16                    sar_height;
+    deUint8                     video_format;
+    deUint8                     color_primaries;
+    deUint8                     transfer_characteristics;
+    deUint8                     matrix_coefficients;
+    deUint32                    num_units_in_tick;
+    deUint32                    time_scale;
+    StdVideoH264HrdParameters   hrd_parameters;
+    deUint8                     num_reorder_frames;
+    deUint8                     max_dec_frame_buffering;
+    StdVideoH264SpsVuiFlags     flags;
+} StdVideoH264SequenceParameterSetVui;
+
+typedef struct StdVideoH264SpsFlags {
+    deUint32 constraint_set0_flag:1;
+    deUint32 constraint_set1_flag:1;
+    deUint32 constraint_set2_flag:1;
+    deUint32 constraint_set3_flag:1;
+    deUint32 constraint_set4_flag:1;
+    deUint32 constraint_set5_flag:1;
+    deUint32 direct_8x8_inference_flag:1;
+    deUint32 mb_adaptive_frame_field_flag:1;
+    deUint32 frame_mbs_only_flag:1;
+    deUint32 delta_pic_order_always_zero_flag:1;
+    deUint32 residual_colour_transform_flag:1;
+    deUint32 gaps_in_frame_num_value_allowed_flag:1;
+    deUint32 first_picture_after_seek_flag:1; // where is this being documented?
+    deUint32 qpprime_y_zero_transform_bypass_flag:1;
+    deUint32 frame_cropping_flag:1;
+    deUint32 scaling_matrix_present_flag:1;
+    deUint32 vui_parameters_present_flag:1;
+} StdVideoH264SpsFlags;
+
+typedef struct StdVideoH264ScalingLists
+{
+    // scaling_list_present_mask has one bit for each
+    // seq_scaling_list_present_flag[i] for SPS OR
+    // pic_scaling_list_present_flag[i] for PPS,
+    // bit 0 - 5 are for each entry of ScalingList4x4
+    // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
+    deUint8 scaling_list_present_mask;
+    // use_default_scaling_matrix_mask has one bit for each
+    // UseDefaultScalingMatrix4x4Flag[ i ] and
+    // UseDefaultScalingMatrix8x8Flag[ i - 6 ] for SPS OR PPS
+    // bit 0 - 5 are for each entry of ScalingList4x4
+    // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
+    deUint8 use_default_scaling_matrix_mask;
+    deUint8 ScalingList4x4[6][16];
+    deUint8 ScalingList8x8[2][64];
+} StdVideoH264ScalingLists;
+
+typedef struct StdVideoH264SequenceParameterSet
+{
+    StdVideoH264ProfileIdc               profile_idc;
+    StdVideoH264Level                    level_idc;
+    deUint8                              seq_parameter_set_id;
+    StdVideoH264ChromaFormatIdc          chroma_format_idc;
+    deUint8                              bit_depth_luma_minus8;
+    deUint8                              bit_depth_chroma_minus8;
+    deUint8                              log2_max_frame_num_minus4;
+    StdVideoH264PocType                  pic_order_cnt_type;
+    deUint8                              log2_max_pic_order_cnt_lsb_minus4;
+    deInt32                              offset_for_non_ref_pic;
+    deInt32                              offset_for_top_to_bottom_field;
+    deUint8                              num_ref_frames_in_pic_order_cnt_cycle;
+    deUint8                              max_num_ref_frames;
+    deUint32                             pic_width_in_mbs_minus1;
+    deUint32                             pic_height_in_map_units_minus1;
+    deUint32                             frame_crop_left_offset;
+    deUint32                             frame_crop_right_offset;
+    deUint32                             frame_crop_top_offset;
+    deUint32                             frame_crop_bottom_offset;
+    StdVideoH264SpsFlags                 flags;
+    deInt32                              offset_for_ref_frame[255]; // The number of valid values are defined by the num_ref_frames_in_pic_order_cnt_cycle
+    StdVideoH264ScalingLists*            pScalingLists;             // Must be a valid pointer if scaling_matrix_present_flag is set
+    StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui;  // Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set
+} StdVideoH264SequenceParameterSet;
+
+typedef struct StdVideoH264PpsFlags {
+    deUint32 transform_8x8_mode_flag:1;
+    deUint32 redundant_pic_cnt_present_flag:1;
+    deUint32 constrained_intra_pred_flag:1;
+    deUint32 deblocking_filter_control_present_flag:1;
+    deUint32 weighted_bipred_idc_flag:1;
+    deUint32 weighted_pred_flag:1;
+    deUint32 pic_order_present_flag:1;
+    deUint32 entropy_coding_mode_flag:1;
+    deUint32 scaling_matrix_present_flag:1;
+} StdVideoH264PpsFlags;
+
+typedef struct StdVideoH264PictureParameterSet
+{
+    deUint8                       seq_parameter_set_id;
+    deUint8                       pic_parameter_set_id;
+    deUint8                       num_ref_idx_l0_default_active_minus1;
+    deUint8                       num_ref_idx_l1_default_active_minus1;
+    StdVideoH264WeightedBiPredIdc weighted_bipred_idc;
+    deInt8                        pic_init_qp_minus26;
+    deInt8                        pic_init_qs_minus26;
+    deInt8                        chroma_qp_index_offset;
+    deInt8                        second_chroma_qp_index_offset;
+    StdVideoH264PpsFlags          flags;
+    StdVideoH264ScalingLists*     pScalingLists; // Must be a valid pointer if  StdVideoH264PpsFlags::scaling_matrix_present_flag is set.
+} StdVideoH264PictureParameterSet;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_H264STD_H_
+/*
+** Copyright (c) 2019-2021 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
+#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// *************************************************
+// Video H.264 Encode related parameters:
+// *************************************************
+
+typedef struct StdVideoEncodeH264SliceHeaderFlags {
+    deUint32 idr_flag:1;
+    deUint32 is_reference_flag:1;
+    deUint32 num_ref_idx_active_override_flag:1;
+    deUint32 no_output_of_prior_pics_flag:1;
+    deUint32 long_term_reference_flag:1;
+    deUint32 adaptive_ref_pic_marking_mode_flag:1;
+    deUint32 no_prior_references_available_flag:1;
+} StdVideoEncodeH264SliceHeaderFlags;
+
+typedef struct StdVideoEncodeH264PictureInfoFlags {
+    deUint32 idr_flag:1;
+    deUint32 is_reference_flag:1;
+    deUint32 long_term_reference_flag:1;
+} StdVideoEncodeH264PictureInfoFlags;
+
+typedef struct StdVideoEncodeH264RefMgmtFlags {
+    deUint32 ref_pic_list_modification_l0_flag:1;
+    deUint32 ref_pic_list_modification_l1_flag:1;
+} StdVideoEncodeH264RefMgmtFlags;
+
+typedef struct StdVideoEncodeH264RefListModEntry {
+    StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
+    deUint16                             abs_diff_pic_num_minus1;
+    deUint16                             long_term_pic_num;
+} StdVideoEncodeH264RefListModEntry;
+
+typedef struct StdVideoEncodeH264RefPicMarkingEntry {
+    StdVideoH264MemMgmtControlOp  operation;
+    deUint16                      difference_of_pic_nums_minus1;
+    deUint16                      long_term_pic_num;
+    deUint16                      long_term_frame_idx;
+    deUint16                      max_long_term_frame_idx_plus1;
+} StdVideoEncodeH264RefPicMarkingEntry;
+
+typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
+    StdVideoEncodeH264RefMgmtFlags        flags;
+    deUint8                               refList0ModOpCount;
+    StdVideoEncodeH264RefListModEntry*    pRefList0ModOperations;
+    deUint8                               refList1ModOpCount;
+    StdVideoEncodeH264RefListModEntry*    pRefList1ModOperations;
+    deUint8                               refPicMarkingOpCount;
+    StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
+} StdVideoEncodeH264RefMemMgmtCtrlOperations;
+
+typedef struct StdVideoEncodeH264PictureInfo {
+    StdVideoEncodeH264PictureInfoFlags   flags;
+    StdVideoH264PictureType              pictureType;
+    deUint32                             frameNum;
+    deUint32                             pictureOrderCount;
+    deUint16                             long_term_pic_num;
+    deUint16                             long_term_frame_idx;
+} StdVideoEncodeH264PictureInfo;
+
+typedef struct StdVideoEncodeH264SliceHeader {
+    StdVideoEncodeH264SliceHeaderFlags          flags;
+    StdVideoH264SliceType                       slice_type;
+    deUint8                                     seq_parameter_set_id;
+    deUint8                                     pic_parameter_set_id;
+    deUint16                                    idr_pic_id;
+    deUint8                                     num_ref_idx_l0_active_minus1;
+    deUint8                                     num_ref_idx_l1_active_minus1;
+    StdVideoH264CabacInitIdc                    cabac_init_idc;
+    StdVideoH264DisableDeblockingFilterIdc      disable_deblocking_filter_idc;
+    deInt8                                      slice_alpha_c0_offset_div2;
+    deInt8                                      slice_beta_offset_div2;
+    StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations;
+} StdVideoEncodeH264SliceHeader;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
+/*
+** Copyright (c) 2019-2021 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
+#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// Vulkan 0.5 version number WIP
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 VK_MAKE_VIDEO_STD_VERSION(0, 5, 0) // Patch version should always be set to 0
+
+// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION   VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265"
+
+typedef enum StdVideoH265ChromaFormatIdc {
+    std_video_h265_chroma_format_idc_monochrome  = 0,
+    std_video_h265_chroma_format_idc_420         = 1,
+    std_video_h265_chroma_format_idc_422         = 2,
+    std_video_h265_chroma_format_idc_444         = 3,
+} StdVideoH265ChromaFormatIdc;
+
+typedef enum StdVideoH265ProfileIdc {
+    std_video_h265_profile_idc_main                     = 1,
+    std_video_h265_profile_idc_main_10                  = 2,
+    std_video_h265_profile_idc_main_still_picture       = 3,
+    std_video_h265_profile_idc_format_range_extensions  = 4,
+    std_video_h265_profile_idc_scc_extensions           = 9,
+    std_video_h265_profile_idc_invalid                  = 0x7FFFFFFF
+} StdVideoH265ProfileIdc;
+
+typedef enum StdVideoH265Level {
+    std_video_h265_level_1_0 = 0,
+    std_video_h265_level_2_0 = 1,
+    std_video_h265_level_2_1 = 2,
+    std_video_h265_level_3_0 = 3,
+    std_video_h265_level_3_1 = 4,
+    std_video_h265_level_4_0 = 5,
+    std_video_h265_level_4_1 = 6,
+    std_video_h265_level_5_0 = 7,
+    std_video_h265_level_5_1 = 8,
+    std_video_h265_level_5_2 = 9,
+    std_video_h265_level_6_0 = 10,
+    std_video_h265_level_6_1 = 11,
+    std_video_h265_level_6_2 = 12,
+    std_video_h265_level_invalid = 0x7FFFFFFF
+} StdVideoH265Level;
+
+
+typedef struct StdVideoH265DecPicBufMgr
+{
+    deUint32 max_latency_increase_plus1[7];
+    deUint8  max_dec_pic_buffering_minus1[7];
+    deUint8  max_num_reorder_pics[7];
+} StdVideoH265DecPicBufMgr;
+
+typedef struct StdVideoH265SubLayerHrdParameters {
+    deUint32 bit_rate_value_minus1[32];
+    deUint32 cpb_size_value_minus1[32];
+    deUint32 cpb_size_du_value_minus1[32];
+    deUint32 bit_rate_du_value_minus1[32];
+    deUint32 cbr_flag; // each bit represents a range of CpbCounts (bit 0 - cpb_cnt_minus1) per sub-layer
+} StdVideoH265SubLayerHrdParameters;
+
+typedef struct StdVideoH265HrdFlags {
+    deUint32 nal_hrd_parameters_present_flag : 1;
+    deUint32 vcl_hrd_parameters_present_flag : 1;
+    deUint32 sub_pic_hrd_params_present_flag : 1;
+    deUint32 sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
+    deUint8  fixed_pic_rate_general_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
+    deUint8  fixed_pic_rate_within_cvs_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
+    deUint8  low_delay_hrd_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
+} StdVideoH265HrdFlags;
+
+typedef struct StdVideoH265HrdParameters {
+    deUint8                            tick_divisor_minus2;
+    deUint8                            du_cpb_removal_delay_increment_length_minus1;
+    deUint8                            dpb_output_delay_du_length_minus1;
+    deUint8                            bit_rate_scale;
+    deUint8                            cpb_size_scale;
+    deUint8                            cpb_size_du_scale;
+    deUint8                            initial_cpb_removal_delay_length_minus1;
+    deUint8                            au_cpb_removal_delay_length_minus1;
+    deUint8                            dpb_output_delay_length_minus1;
+    deUint8                            cpb_cnt_minus1[7];
+    deUint16                           elemental_duration_in_tc_minus1[7];
+    StdVideoH265SubLayerHrdParameters* SubLayerHrdParametersNal[7];
+    StdVideoH265SubLayerHrdParameters* SubLayerHrdParametersVcl[7];
+    StdVideoH265HrdFlags               flags;
+} StdVideoH265HrdParameters;
+
+typedef struct StdVideoH265VpsFlags {
+    deUint32 vps_temporal_id_nesting_flag : 1;
+    deUint32 vps_sub_layer_ordering_info_present_flag : 1;
+    deUint32 vps_timing_info_present_flag : 1;
+    deUint32 vps_poc_proportional_to_timing_flag : 1;
+} StdVideoH265VpsFlags;
+
+typedef struct StdVideoH265VideoParameterSet
+{
+    deUint8                      vps_video_parameter_set_id;
+    deUint8                      vps_max_sub_layers_minus1;
+    deUint32                     vps_num_units_in_tick;
+    deUint32                     vps_time_scale;
+    deUint32                     vps_num_ticks_poc_diff_one_minus1;
+    StdVideoH265DecPicBufMgr*    pDecPicBufMgr;
+    StdVideoH265HrdParameters*   hrd_parameters;
+    StdVideoH265VpsFlags         flags;
+} StdVideoH265VideoParameterSet;
+
+typedef struct StdVideoH265ScalingLists
+{
+    deUint8 ScalingList4x4[6][16];       // ScalingList[ 0 ][ MatrixID ][ i ] (sizeID = 0)
+    deUint8 ScalingList8x8[6][64];       // ScalingList[ 1 ][ MatrixID ][ i ] (sizeID = 1)
+    deUint8 ScalingList16x16[6][64];     // ScalingList[ 2 ][ MatrixID ][ i ] (sizeID = 2)
+    deUint8 ScalingList32x32[2][64];     // ScalingList[ 3 ][ MatrixID ][ i ] (sizeID = 3)
+    deUint8 ScalingListDCCoef16x16[6];   // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8, sizeID = 2
+    deUint8 ScalingListDCCoef32x32[2];   // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8. sizeID = 3
+} StdVideoH265ScalingLists;
+
+typedef struct StdVideoH265SpsVuiFlags {
+    deUint32 aspect_ratio_info_present_flag : 1;
+    deUint32 overscan_info_present_flag : 1;
+    deUint32 overscan_appropriate_flag : 1;
+    deUint32 video_signal_type_present_flag : 1;
+    deUint32 video_full_range_flag : 1;
+    deUint32 colour_description_present_flag : 1;
+    deUint32 chroma_loc_info_present_flag : 1;
+    deUint32 neutral_chroma_indication_flag : 1;
+    deUint32 field_seq_flag : 1;
+    deUint32 frame_field_info_present_flag : 1;
+    deUint32 default_display_window_flag : 1;
+    deUint32 vui_timing_info_present_flag : 1;
+    deUint32 vui_poc_proportional_to_timing_flag : 1;
+    deUint32 vui_hrd_parameters_present_flag : 1;
+    deUint32 bitstream_restriction_flag : 1;
+    deUint32 tiles_fixed_structure_flag : 1;
+    deUint32 motion_vectors_over_pic_boundaries_flag : 1;
+    deUint32 restricted_ref_pic_lists_flag : 1;
+} StdVideoH265SpsVuiFlags;
+
+typedef struct StdVideoH265SequenceParameterSetVui {
+    deUint8                     aspect_ratio_idc;
+    deUint16                    sar_width;
+    deUint16                    sar_height;
+    deUint8                     video_format;
+    deUint8                     colour_primaries;
+    deUint8                     transfer_characteristics;
+    deUint8                     matrix_coeffs;
+    deUint8                     chroma_sample_loc_type_top_field;
+    deUint8                     chroma_sample_loc_type_bottom_field;
+    deUint16                    def_disp_win_left_offset;
+    deUint16                    def_disp_win_right_offset;
+    deUint16                    def_disp_win_top_offset;
+    deUint16                    def_disp_win_bottom_offset;
+    deUint32                    vui_num_units_in_tick;
+    deUint32                    vui_time_scale;
+    deUint32                    vui_num_ticks_poc_diff_one_minus1;
+    StdVideoH265HrdParameters*  hrd_parameters;
+    deUint16                    min_spatial_segmentation_idc;
+    deUint8                     max_bytes_per_pic_denom;
+    deUint8                     max_bits_per_min_cu_denom;
+    deUint8                     log2_max_mv_length_horizontal;
+    deUint8                     log2_max_mv_length_vertical;
+    StdVideoH265SpsVuiFlags     flags;
+} StdVideoH265SequenceParameterSetVui;
+
+typedef struct StdVideoH265PredictorPaletteEntries
+{
+    deUint16 PredictorPaletteEntries[3][128];
+} StdVideoH265PredictorPaletteEntries;
+
+
+typedef struct StdVideoH265SpsFlags {
+    deUint32 sps_temporal_id_nesting_flag : 1;
+    deUint32 separate_colour_plane_flag : 1;
+    deUint32 scaling_list_enabled_flag : 1;
+    deUint32 sps_scaling_list_data_present_flag : 1;
+    deUint32 amp_enabled_flag : 1;
+    deUint32 sample_adaptive_offset_enabled_flag : 1;
+    deUint32 pcm_enabled_flag : 1;
+    deUint32 pcm_loop_filter_disabled_flag : 1;
+    deUint32 long_term_ref_pics_present_flag : 1;
+    deUint32 sps_temporal_mvp_enabled_flag : 1;
+    deUint32 strong_intra_smoothing_enabled_flag : 1;
+    deUint32 vui_parameters_present_flag : 1;
+    deUint32 sps_extension_present_flag : 1;
+    deUint32 sps_range_extension_flag : 1;
+
+    // extension SPS flags, valid when std_video_h265_profile_idc_format_range_extensions is set
+    deUint32 transform_skip_rotation_enabled_flag : 1;
+    deUint32 transform_skip_context_enabled_flag : 1;
+    deUint32 implicit_rdpcm_enabled_flag : 1;
+    deUint32 explicit_rdpcm_enabled_flag : 1;
+    deUint32 extended_precision_processing_flag : 1;
+    deUint32 intra_smoothing_disabled_flag : 1;
+    deUint32 high_precision_offsets_enabled_flag : 1;
+    deUint32 persistent_rice_adaptation_enabled_flag : 1;
+    deUint32 cabac_bypass_alignment_enabled_flag : 1;
+
+    // extension SPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
+    deUint32 sps_curr_pic_ref_enabled_flag : 1;
+    deUint32 palette_mode_enabled_flag : 1;
+    deUint32 sps_palette_predictor_initializer_present_flag : 1;
+    deUint32 intra_boundary_filtering_disabled_flag : 1;
+} StdVideoH265SpsFlags;
+
+typedef struct StdVideoH265SequenceParameterSet
+{
+    StdVideoH265ProfileIdc               profile_idc;
+    StdVideoH265Level                    level_idc;
+    deUint32                             pic_width_in_luma_samples;
+    deUint32                             pic_height_in_luma_samples;
+    deUint8                              sps_video_parameter_set_id;
+    deUint8                              sps_max_sub_layers_minus1;
+    deUint8                              sps_seq_parameter_set_id;
+    deUint8                              chroma_format_idc;
+    deUint8                              bit_depth_luma_minus8;
+    deUint8                              bit_depth_chroma_minus8;
+    deUint8                              log2_max_pic_order_cnt_lsb_minus4;
+    deUint8                              sps_max_dec_pic_buffering_minus1;
+    deUint8                              log2_min_luma_coding_block_size_minus3;
+    deUint8                              log2_diff_max_min_luma_coding_block_size;
+    deUint8                              log2_min_luma_transform_block_size_minus2;
+    deUint8                              log2_diff_max_min_luma_transform_block_size;
+    deUint8                              max_transform_hierarchy_depth_inter;
+    deUint8                              max_transform_hierarchy_depth_intra;
+    deUint8                              num_short_term_ref_pic_sets;
+    deUint8                              num_long_term_ref_pics_sps;
+    deUint8                              pcm_sample_bit_depth_luma_minus1;
+    deUint8                              pcm_sample_bit_depth_chroma_minus1;
+    deUint8                              log2_min_pcm_luma_coding_block_size_minus3;
+    deUint8                              log2_diff_max_min_pcm_luma_coding_block_size;
+    deUint32                             conf_win_left_offset;
+    deUint32                             conf_win_right_offset;
+    deUint32                             conf_win_top_offset;
+    deUint32                             conf_win_bottom_offset;
+    StdVideoH265DecPicBufMgr*            pDecPicBufMgr;
+    StdVideoH265SpsFlags                 flags;
+    StdVideoH265ScalingLists*            pScalingLists;             // Must be a valid pointer if sps_scaling_list_data_present_flag is set
+    StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui;  // Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size;
+
+    // extension SPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
+    deUint8                              palette_max_size;
+    deUint8                              delta_palette_max_predictor_size;
+    deUint8                              motion_vector_resolution_control_idc;
+    deUint8                              sps_num_palette_predictor_initializer_minus1;
+    StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;  // Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set
+} StdVideoH265SequenceParameterSet;
+
+
+typedef struct StdVideoH265PpsFlags {
+    deUint32 dependent_slice_segments_enabled_flag : 1;
+    deUint32 output_flag_present_flag : 1;
+    deUint32 sign_data_hiding_enabled_flag : 1;
+    deUint32 cabac_init_present_flag : 1;
+    deUint32 constrained_intra_pred_flag : 1;
+    deUint32 transform_skip_enabled_flag : 1;
+    deUint32 cu_qp_delta_enabled_flag : 1;
+    deUint32 pps_slice_chroma_qp_offsets_present_flag : 1;
+    deUint32 weighted_pred_flag : 1;
+    deUint32 weighted_bipred_flag : 1;
+    deUint32 transquant_bypass_enabled_flag : 1;
+    deUint32 tiles_enabled_flag : 1;
+    deUint32 entropy_coding_sync_enabled_flag : 1;
+    deUint32 uniform_spacing_flag : 1;
+    deUint32 loop_filter_across_tiles_enabled_flag : 1;
+    deUint32 pps_loop_filter_across_slices_enabled_flag : 1;
+    deUint32 deblocking_filter_control_present_flag : 1;
+    deUint32 deblocking_filter_override_enabled_flag : 1;
+    deUint32 pps_deblocking_filter_disabled_flag : 1;
+    deUint32 pps_scaling_list_data_present_flag : 1;
+    deUint32 lists_modification_present_flag : 1;
+    deUint32 slice_segment_header_extension_present_flag : 1;
+    deUint32 pps_extension_present_flag : 1;
+
+    // extension PPS flags, valid when std_video_h265_profile_idc_format_range_extensions is set
+    deUint32 cross_component_prediction_enabled_flag : 1;
+    deUint32 chroma_qp_offset_list_enabled_flag : 1;
+
+    // extension PPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
+    deUint32 pps_curr_pic_ref_enabled_flag : 1;
+    deUint32 residual_adaptive_colour_transform_enabled_flag : 1;
+    deUint32 pps_slice_act_qp_offsets_present_flag : 1;
+    deUint32 pps_palette_predictor_initializer_present_flag : 1;
+    deUint32 monochrome_palette_flag : 1;
+    deUint32 pps_range_extension_flag : 1;
+} StdVideoH265PpsFlags;
+
+typedef struct StdVideoH265PictureParameterSet
+{
+    deUint8                              pps_pic_parameter_set_id;
+    deUint8                              pps_seq_parameter_set_id;
+    deUint8                              num_extra_slice_header_bits;
+    deUint8                              num_ref_idx_l0_default_active_minus1;
+    deUint8                              num_ref_idx_l1_default_active_minus1;
+    deInt8                               init_qp_minus26;
+    deUint8                              diff_cu_qp_delta_depth;
+    deInt8                               pps_cb_qp_offset;
+    deInt8                               pps_cr_qp_offset;
+    deUint8                              num_tile_columns_minus1;
+    deUint8                              num_tile_rows_minus1;
+    deUint16                             column_width_minus1[19];
+    deUint16                             row_height_minus1[21];
+    deInt8                               pps_beta_offset_div2;
+    deInt8                               pps_tc_offset_div2;
+    deUint8                              log2_parallel_merge_level_minus2;
+    StdVideoH265PpsFlags                 flags;
+    StdVideoH265ScalingLists*            pScalingLists; // Must be a valid pointer if pps_scaling_list_data_present_flag is set
+
+    // extension PPS, valid when std_video_h265_profile_idc_format_range_extensions is set
+    deUint8                              log2_max_transform_skip_block_size_minus2;
+    deUint8                              diff_cu_chroma_qp_offset_depth;
+    deUint8                              chroma_qp_offset_list_len_minus1;
+    deInt8                               cb_qp_offset_list[6];
+    deInt8                               cr_qp_offset_list[6];
+    deUint8                              log2_sao_offset_scale_luma;
+    deUint8                              log2_sao_offset_scale_chroma;
+
+    // extension PPS, valid when std_video_h265_profile_idc_scc_extensions is set
+    deInt8                               pps_act_y_qp_offset_plus5;
+    deInt8                               pps_act_cb_qp_offset_plus5;
+    deInt8                               pps_act_cr_qp_offset_plus5;
+    deUint8                              pps_num_palette_predictor_initializer;
+    deUint8                              luma_bit_depth_entry_minus8;
+    deUint8                              chroma_bit_depth_entry_minus8;
+    StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;  // Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set
+} StdVideoH265PictureParameterSet;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_H265STD_H_
+/*
+** Copyright (c) 2019-2020 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
+#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// *************************************************
+// Video H.264 Decode related parameters:
+// *************************************************
+
+typedef struct StdVideoDecodeH264PictureInfoFlags {
+    deUint32 field_pic_flag:1;             // Is field picture
+    deUint32 is_intra:1;                   // Is intra picture
+    deUint32 bottom_field_flag:1;          // bottom (true) or top (false) field if field_pic_flag is set.
+    deUint32 is_reference:1;               // This only applies to picture info, and not to the DPB lists.
+    deUint32 complementary_field_pair:1;   // complementary field pair, complementary non-reference field pair, complementary reference field pair
+} StdVideoDecodeH264PictureInfoFlags;
+
+typedef struct StdVideoDecodeH264PictureInfo {
+    deUint8  seq_parameter_set_id;          // Selecting SPS from the Picture Parameters
+    deUint8  pic_parameter_set_id;          // Selecting PPS from the Picture Parameters and the SPS
+    deUint16 reserved;                      // for structure members 32-bit packing/alignment
+    deUint16 frame_num;                     // 7.4.3 Slice header semantics
+    deUint16 idr_pic_id;                    // 7.4.3 Slice header semantics
+    // PicOrderCnt is based on TopFieldOrderCnt and BottomFieldOrderCnt. See 8.2.1 Decoding process for picture order count type 0 - 2
+    deInt32  PicOrderCnt[2];                // TopFieldOrderCnt and BottomFieldOrderCnt fields.
+    StdVideoDecodeH264PictureInfoFlags flags;
+} StdVideoDecodeH264PictureInfo;
+
+typedef struct StdVideoDecodeH264ReferenceInfoFlags {
+    deUint32 top_field_flag:1;             // Reference is used for top field reference.
+    deUint32 bottom_field_flag:1;          // Reference is used for bottom field reference.
+    deUint32 is_long_term:1;               // this is a long term reference
+    deUint32 is_non_existing:1;            // Must be handled in accordance with 8.2.5.2: Decoding process for gaps in frame_num
+} StdVideoDecodeH264ReferenceInfoFlags;
+
+typedef struct StdVideoDecodeH264ReferenceInfo {
+    // FrameNum = is_long_term ?  long_term_frame_idx : frame_num
+    deUint16 FrameNum;                     // 7.4.3.3 Decoded reference picture marking semantics
+    deUint16 reserved;                     // for structure members 32-bit packing/alignment
+    deInt32  PicOrderCnt[2];               // TopFieldOrderCnt and BottomFieldOrderCnt fields.
+    StdVideoDecodeH264ReferenceInfoFlags flags;
+} StdVideoDecodeH264ReferenceInfo;
+
+typedef struct StdVideoDecodeH264MvcElementFlags {
+    deUint32 non_idr:1;
+    deUint32 anchor_pic:1;
+    deUint32 inter_view:1;
+} StdVideoDecodeH264MvcElementFlags;
+
+typedef struct StdVideoDecodeH264MvcElement {
+    StdVideoDecodeH264MvcElementFlags flags;
+    deUint16 viewOrderIndex;
+    deUint16 viewId;
+    deUint16 temporalId; // move out?
+    deUint16 priorityId; // move out?
+    deUint16 numOfAnchorRefsInL0;
+    deUint16 viewIdOfAnchorRefsInL0[15];
+    deUint16 numOfAnchorRefsInL1;
+    deUint16 viewIdOfAnchorRefsInL1[15];
+    deUint16 numOfNonAnchorRefsInL0;
+    deUint16 viewIdOfNonAnchorRefsInL0[15];
+    deUint16 numOfNonAnchorRefsInL1;
+    deUint16 viewIdOfNonAnchorRefsInL1[15];
+} StdVideoDecodeH264MvcElement;
+
+typedef struct StdVideoDecodeH264Mvc {
+    deUint32 viewId0;
+    deUint32 mvcElementCount;
+    StdVideoDecodeH264MvcElement* pMvcElements;
+} StdVideoDecodeH264Mvc;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
+/*
+** Copyright (c) 2019-2021 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
+#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// *************************************************
+// Video h265 Decode related parameters:
+// *************************************************
+
+typedef struct StdVideoDecodeH265PictureInfoFlags {
+    deUint32 IrapPicFlag : 1;
+    deUint32 IdrPicFlag  : 1;
+    deUint32 IsReference : 1;
+    deUint32 short_term_ref_pic_set_sps_flag : 1;
+} StdVideoDecodeH265PictureInfoFlags;
+
+typedef struct StdVideoDecodeH265PictureInfo {
+    deUint8                            vps_video_parameter_set_id;
+    deUint8                            sps_seq_parameter_set_id;
+    deUint8                            pps_pic_parameter_set_id;
+    deUint8                            num_short_term_ref_pic_sets;
+    deInt32                            PicOrderCntVal;
+    deUint16                           NumBitsForSTRefPicSetInSlice; // number of bits used in st_ref_pic_set()
+                                                                     //when short_term_ref_pic_set_sps_flag is 0; otherwise set to 0.
+    deUint8                            NumDeltaPocsOfRefRpsIdx;      // NumDeltaPocs[ RefRpsIdx ] when short_term_ref_pic_set_sps_flag = 1, otherwise 0
+    deUint8                            RefPicSetStCurrBefore[8];     // slotIndex as used in VkVideoReferenceSlotKHR structures representing
+                                                                     //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
+    deUint8                            RefPicSetStCurrAfter[8];      // slotIndex as used in VkVideoReferenceSlotKHR structures representing
+                                                                     //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
+    deUint8                            RefPicSetLtCurr[8];           // slotIndex as used in VkVideoReferenceSlotKHR structures representing
+                                                                     //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
+    StdVideoDecodeH265PictureInfoFlags flags;
+} StdVideoDecodeH265PictureInfo;
+
+typedef struct StdVideoDecodeH265ReferenceInfoFlags {
+    deUint32 is_long_term : 1;
+    deUint32 is_non_existing : 1;
+} StdVideoDecodeH265ReferenceInfoFlags;
+
+typedef struct StdVideoDecodeH265ReferenceInfo {
+    deInt32                              PicOrderCntVal;
+    StdVideoDecodeH265ReferenceInfoFlags flags;
+} StdVideoDecodeH265ReferenceInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
+#ifndef VULKAN_CORE_H_
+#define VULKAN_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;
+
+
+#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
+
+
+#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
+
+// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead.
+#define VK_MAKE_VERSION(major, minor, patch) \
+    ((((deUint32)(major)) << 22) | (((deUint32)(minor)) << 12) | ((deUint32)(patch)))
+
+// 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_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_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_HEADER_VERSION 190
+
+// Complete version of this file
+#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 2, VK_HEADER_VERSION)
+
+// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead.
+#define VK_VERSION_MAJOR(version) ((deUint32)(version) >> 22)
+
+// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead.
+#define VK_VERSION_MINOR(version) (((deUint32)(version) >> 12) & 0x3FFU)
+
+// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead.
+#define VK_VERSION_PATCH(version) ((deUint32)(version) & 0xFFFU)
+
+#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_UUID_SIZE                      16U
+#define VK_ATTACHMENT_UNUSED              (~0U)
+#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_TRUE                           1U
+#define VK_WHOLE_SIZE                     (~0ULL)
+#define VK_MAX_MEMORY_TYPES               32U
+#define VK_MAX_MEMORY_HEAPS               16U
+#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256U
+#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_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_VALIDATION_FAILED_EXT = -1000011001,
+    VK_ERROR_INVALID_SHADER_NV = -1000012000,
+    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
+    VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
+    VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
+    VK_THREAD_IDLE_KHR = 1000268000,
+    VK_THREAD_DONE_KHR = 1000268001,
+    VK_OPERATION_DEFERRED_KHR = 1000268002,
+    VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
+    VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000,
+    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
+    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+    VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+    VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED_EXT,
+    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_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
+    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_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
+    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
+    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_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
+    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_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
+    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_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_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
+    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
+    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
+    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
+    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
+    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
+    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000,
+#endif
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
+    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
+    VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000,
+    VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001,
+    VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038002,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038003,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038004,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038005,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038006,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038007,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038008,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT = 1000040001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040002,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040003,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040004,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040005,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040006,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040007,
+#endif
+    VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
+    VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
+    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
+    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
+    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
+    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_WIN32_HANDLE_INFO_KHR = 1000073000,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
+    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
+    VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
+    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_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
+    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
+    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
+    VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
+    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
+    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
+    VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
+    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
+    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_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
+    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_WIN32_HANDLE_INFO_KHR = 1000114000,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
+    VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
+    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_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_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
+    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
+    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_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
+    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
+    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
+    VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
+    VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
+    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003,
+    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_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009,
+    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010,
+    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011,
+    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001,
+    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015,
+    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016,
+    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013,
+    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001,
+    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_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
+    VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001,
+#endif
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,
+    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,
+    VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003,
+    VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004,
+    VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005,
+    VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,
+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,
+    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
+    VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
+    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_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
+    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT = 1000187001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187002,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187003,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187004,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187005,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187006,
+#endif
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
+    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_PRESENT_FRAME_TOKEN_GGP = 1000191000,
+    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,
+    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
+    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
+    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000,
+    VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
+    VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002,
+    VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
+    VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
+    VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
+    VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
+    VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
+    VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000,
+    VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
+    VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_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_CORE_PROPERTIES_2_AMD = 1000227000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,
+    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_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
+    VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
+    VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000,
+    VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
+    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000,
+    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000,
+    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002,
+    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
+    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
+    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
+    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_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
+    VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
+    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,
+    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,
+    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,
+    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000,
+    VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001,
+    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002,
+    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003,
+    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004,
+    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005,
+    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000,
+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001,
+    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_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000,
+    VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000,
+    VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002,
+    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_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000,
+    VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000,
+    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001,
+    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001,
+#endif
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
+    VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
+    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_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001,
+    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001,
+    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
+    VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,
+    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_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000,
+    VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002,
+    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_DRM_PROPERTIES_EXT = 1000353000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000,
+    VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000,
+    VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001,
+    VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002,
+    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000,
+    VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001,
+    VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,
+    VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
+    VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,
+    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_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001,
+    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_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
+    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
+    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
+    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
+    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
+    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
+    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} 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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002,
+#endif
+    VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
+    VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
+    VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002,
+#endif
+    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000,
+    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
+} 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_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
+    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_REPORT_CALLBACK_EXT = 1000011000,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001,
+#endif
+    VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000,
+    VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001,
+    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
+    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
+    VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
+    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
+    VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000,
+    VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,
+    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000,
+    VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000,
+    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkObjectType;
+
+typedef enum VkPipelineCacheHeaderVersion {
+    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
+    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineCacheHeaderVersion;
+
+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 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_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
+    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
+    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
+    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
+    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
+    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
+    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
+    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
+    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_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
+    VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+    VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
+    VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+    VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
+    VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+    VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
+    VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+    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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
+#endif
+    VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
+    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
+    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
+    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,
+    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
+    VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
+#endif
+    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_VIEWPORT_W_SCALING_NV = 1000087000,
+    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
+    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
+    VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000,
+    VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
+    VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
+    VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,
+    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_FILL_RECTANGLE_NV = 1000153000,
+    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_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
+    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_INLINE_UNIFORM_BLOCK_EXT = 1000138000,
+    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
+    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
+    VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000,
+    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_NONE_EXT = 1000400000,
+    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_NONE_EXT = 1000301000,
+    VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE_EXT,
+    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_RAY_TRACING_KHR = 1000165000,
+    VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003,
+    VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
+    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_NONE_KHR = 1000165000,
+    VK_INDEX_TYPE_UINT8_EXT = 1000265000,
+    VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR,
+    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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,
+    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,
+    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,
+    VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
+    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
+    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000,
+    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000,
+    VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,
+    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
+    VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000,
+    VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000,
+    VK_ACCESS_NONE_KHR = 0,
+    VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
+    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
+    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
+    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_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
+    VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
+    VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
+    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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,
+#endif
+    VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,
+    VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
+    VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000,
+#endif
+    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
+    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
+    VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
+    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+    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_CORNER_SAMPLED_BIT_NV = 0x00002000,
+    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
+    VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000,
+    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
+    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+    VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
+    VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
+    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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000,
+#endif
+    VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,
+    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000,
+#endif
+    VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000,
+    VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
+    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,
+    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+    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_DEVICE_COHERENT_BIT_AMD = 0x00000040,
+    VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,
+    VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100,
+    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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040,
+#endif
+    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_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,
+    VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
+    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000,
+    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000,
+    VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000,
+    VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000,
+    VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,
+    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,
+    VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000,
+    VK_PIPELINE_STAGE_NONE_KHR = 0,
+    VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
+    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
+    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
+    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkPipelineStageFlagBits;
+typedef VkFlags VkPipelineStageFlags;
+typedef VkFlags VkMemoryMapFlags;
+
+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;
+
+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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010,
+#endif
+    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_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkBufferCreateFlagBits;
+typedef VkFlags VkBufferCreateFlags;
+
+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,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000,
+#endif
+    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
+    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
+    VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
+    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000,
+    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000,
+    VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+    VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000,
+#endif
+    VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkBufferUsageFlagBits;
+typedef VkFlags VkBufferUsageFlags;
+typedef VkFlags VkBufferViewCreateFlags;
+
+typedef enum VkImageViewCreateFlagBits {
+    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001,
+    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002,
+    VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkImageViewCreateFlagBits;
+typedef VkFlags VkImageViewCreateFlags;
+typedef VkFlags VkShaderModuleCreateFlags;
+
+typedef enum VkPipelineCacheCreateFlagBits {
+    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 0x00000001,
+    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_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000,
+    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000,
+    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000,
+    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000,
+    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000,
+    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000,
+    VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000,
+    VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
+    VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,
+    VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,
+    VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000,
+    VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800,
+    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 0x00000100,
+    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 0x00000200,
+    VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000,
+    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
+    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+    VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
+    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_RAYGEN_BIT_KHR = 0x00000100,
+    VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200,
+    VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400,
+    VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800,
+    VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000,
+    VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000,
+    VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040,
+    VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080,
+    VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000,
+    VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR,
+    VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
+    VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
+    VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR,
+    VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
+    VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR,
+    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_SUBSAMPLED_BIT_EXT = 0x00000001,
+    VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002,
+    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_HOST_ONLY_BIT_VALVE = 0x00000004,
+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
+    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorPoolCreateFlagBits;
+typedef VkFlags VkDescriptorPoolCreateFlags;
+typedef VkFlags VkDescriptorPoolResetFlags;
+
+typedef enum VkDescriptorSetLayoutCreateFlagBits {
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorSetLayoutCreateFlagBits;
+typedef VkFlags VkDescriptorSetLayoutCreateFlags;
+
+typedef enum 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_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
+    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
+    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDependencyFlagBits;
+typedef VkFlags VkDependencyFlags;
+
+typedef enum VkFramebufferCreateFlagBits {
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
+    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkFramebufferCreateFlagBits;
+typedef VkFlags VkFramebufferCreateFlags;
+
+typedef enum VkRenderPassCreateFlagBits {
+    VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002,
+    VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkRenderPassCreateFlagBits;
+typedef VkFlags VkRenderPassCreateFlags;
+
+typedef enum VkSubpassDescriptionFlagBits {
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
+    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
+    VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004,
+    VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008,
+    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 struct VkPipelineCacheHeaderVersionOne {
+    deUint32                        headerSize;
+    VkPipelineCacheHeaderVersion    headerVersion;
+    deUint32                        vendorID;
+    deUint32                        deviceID;
+    deUint8                         pipelineCacheUUID[VK_UUID_SIZE];
+} VkPipelineCacheHeaderVersionOne;
+
+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 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;
+
+typedef struct VkImageSubresource {
+    VkImageAspectFlags    aspectMask;
+    deUint32              mipLevel;
+    deUint32              arrayLayer;
+} VkImageSubresource;
+
+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 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 VkShaderModuleCreateInfo {
+    VkStructureType              sType;
+    const void*                  pNext;
+    VkShaderModuleCreateFlags    flags;
+    deUintptr                       codeSize;
+    const deUint32*              pCode;
+} VkShaderModuleCreateInfo;
+
+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 void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
+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);
+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 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 void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
+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_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
+typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, 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_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData);
+typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
+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 void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
+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 void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
+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 void VKAPI_CALL vkFreeMemory(
+    VkDevice                                    device,
+    VkDeviceMemory                              memory,
+    const VkAllocationCallbacks*                pAllocator);
+
+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);
+
+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);
+
+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 void VKAPI_CALL vkDestroyQueryPool(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+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 vkCreateShaderModule(
+    VkDevice                                    device,
+    const VkShaderModuleCreateInfo*             pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkShaderModule*                             pShaderModule);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
+    VkDevice                                    device,
+    VkShaderModule                              shaderModule,
+    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 vkGetPipelineCacheData(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    deUintptr*                                     pDataSize,
+    void*                                       pData);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
+    VkDevice                                    device,
+    VkPipelineCache                             dstCache,
+    deUint32                                    srcCacheCount,
+    const VkPipelineCache*                      pSrcCaches);
+
+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 void VKAPI_CALL vkDestroyDescriptorPool(
+    VkDevice                                    device,
+    VkDescriptorPool                            descriptorPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+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 void VKAPI_CALL vkDestroyCommandPool(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    const VkAllocationCallbacks*                pAllocator);
+
+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_VERSION_1_1 1
+// Vulkan 1.1 version number
+#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)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
+#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_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
+    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
+    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_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
+    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
+    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_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
+    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_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
+    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
+    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_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
+    VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
+    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
+} VkChromaLocation;
+
+typedef enum VkDescriptorUpdateTemplateType {
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorUpdateTemplateType;
+
+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_PARTITIONED_BIT_NV = 0x00000100,
+    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_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
+    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
+    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
+    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
+    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_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkMemoryAllocateFlagBits;
+typedef VkFlags VkMemoryAllocateFlags;
+typedef VkFlags VkCommandPoolTrimFlags;
+typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
+
+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_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
+    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_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
+    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_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
+    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_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
+    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_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
+    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_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
+    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkFenceImportFlagBits;
+typedef VkFlags VkFenceImportFlags;
+
+typedef enum VkSemaphoreImportFlagBits {
+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
+    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_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_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_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
+    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
+    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 VkDeviceGroupBindSparseInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           resourceDeviceIndex;
+    deUint32           memoryDeviceIndex;
+} VkDeviceGroupBindSparseInfo;
+
+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 VkImageSparseMemoryRequirementsInfo2 {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+} VkImageSparseMemoryRequirementsInfo2;
+
+typedef struct VkMemoryRequirements2 {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkMemoryRequirements    memoryRequirements;
+} VkMemoryRequirements2;
+
+typedef struct VkSparseImageMemoryRequirements2 {
+    VkStructureType                    sType;
+    void*                              pNext;
+    VkSparseImageMemoryRequirements    memoryRequirements;
+} VkSparseImageMemoryRequirements2;
+
+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 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 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 VkDescriptorUpdateTemplateEntry {
+    deUint32            dstBinding;
+    deUint32            dstArrayElement;
+    deUint32            descriptorCount;
+    VkDescriptorType    descriptorType;
+    deUintptr              offset;
+    deUintptr              stride;
+} VkDescriptorUpdateTemplateEntry;
+
+typedef struct VkDescriptorUpdateTemplateCreateInfo {
+    VkStructureType                           sType;
+    const void*                               pNext;
+    VkDescriptorUpdateTemplateCreateFlags     flags;
+    deUint32                                  descriptorUpdateEntryCount;
+    const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries;
+    VkDescriptorUpdateTemplateType            templateType;
+    VkDescriptorSetLayout                     descriptorSetLayout;
+    VkPipelineBindPoint                       pipelineBindPoint;
+    VkPipelineLayout                          pipelineLayout;
+    deUint32                                  set;
+} VkDescriptorUpdateTemplateCreateInfo;
+
+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_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+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);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+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 VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+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 vkGetImageSparseMemoryRequirements2(
+    VkDevice                                    device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    deUint32*                                   pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
+
+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);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    deUint32*                                   pPropertyCount,
+    VkSparseImageFormatProperties2*             pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolTrimFlags                      flags);
+
+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 VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
+    VkDevice                                    device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
+    VkDevice                                    device,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
+    VkDevice                                    device,
+    VkDescriptorSet                             descriptorSet,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const void*                                 pData);
+
+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_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
+
+#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_JUICE_PROPRIETARY = 16,
+    VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
+    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+    VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
+} VkDriverId;
+
+typedef enum VkShaderFloatControlsIndependence {
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
+} VkShaderFloatControlsIndependence;
+
+typedef enum VkSamplerReductionMode {
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+    VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+    VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerReductionMode;
+
+typedef enum VkSemaphoreType {
+    VK_SEMAPHORE_TYPE_BINARY = 0,
+    VK_SEMAPHORE_TYPE_TIMELINE = 1,
+    VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+    VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreType;
+
+typedef enum VkResolveModeFlagBits {
+    VK_RESOLVE_MODE_NONE = 0,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+    VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+    VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+    VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+    VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+    VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+    VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkResolveModeFlagBits;
+typedef VkFlags VkResolveModeFlags;
+
+typedef enum VkDescriptorBindingFlagBits {
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorBindingFlagBits;
+typedef VkFlags VkDescriptorBindingFlags;
+
+typedef enum VkSemaphoreWaitFlagBits {
+    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreWaitFlagBits;
+typedef VkFlags VkSemaphoreWaitFlags;
+typedef struct VkPhysicalDeviceVulkan11Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer16BitAccess;
+    VkBool32           uniformAndStorageBuffer16BitAccess;
+    VkBool32           storagePushConstant16;
+    VkBool32           storageInputOutput16;
+    VkBool32           multiview;
+    VkBool32           multiviewGeometryShader;
+    VkBool32           multiviewTessellationShader;
+    VkBool32           variablePointersStorageBuffer;
+    VkBool32           variablePointers;
+    VkBool32           protectedMemory;
+    VkBool32           samplerYcbcrConversion;
+    VkBool32           shaderDrawParameters;
+} VkPhysicalDeviceVulkan11Features;
+
+typedef struct VkPhysicalDeviceVulkan11Properties {
+    VkStructureType            sType;
+    void*                      pNext;
+    deUint8                    deviceUUID[VK_UUID_SIZE];
+    deUint8                    driverUUID[VK_UUID_SIZE];
+    deUint8                    deviceLUID[VK_LUID_SIZE];
+    deUint32                   deviceNodeMask;
+    VkBool32                   deviceLUIDValid;
+    deUint32                   subgroupSize;
+    VkShaderStageFlags         subgroupSupportedStages;
+    VkSubgroupFeatureFlags     subgroupSupportedOperations;
+    VkBool32                   subgroupQuadOperationsInAllStages;
+    VkPointClippingBehavior    pointClippingBehavior;
+    deUint32                   maxMultiviewViewCount;
+    deUint32                   maxMultiviewInstanceIndex;
+    VkBool32                   protectedNoFault;
+    deUint32                   maxPerSetDescriptors;
+    VkDeviceSize               maxMemoryAllocationSize;
+} VkPhysicalDeviceVulkan11Properties;
+
+typedef struct VkPhysicalDeviceVulkan12Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           samplerMirrorClampToEdge;
+    VkBool32           drawIndirectCount;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+    VkBool32           descriptorIndexing;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+    VkBool32           samplerFilterMinmax;
+    VkBool32           scalarBlockLayout;
+    VkBool32           imagelessFramebuffer;
+    VkBool32           uniformBufferStandardLayout;
+    VkBool32           shaderSubgroupExtendedTypes;
+    VkBool32           separateDepthStencilLayouts;
+    VkBool32           hostQueryReset;
+    VkBool32           timelineSemaphore;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+    VkBool32           shaderOutputViewportIndex;
+    VkBool32           shaderOutputLayer;
+    VkBool32           subgroupBroadcastDynamicId;
+} VkPhysicalDeviceVulkan12Features;
+
+typedef struct VkConformanceVersion {
+    deUint8    major;
+    deUint8    minor;
+    deUint8    subminor;
+    deUint8    patch;
+} VkConformanceVersion;
+
+typedef struct VkPhysicalDeviceVulkan12Properties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkDriverId                           driverID;
+    char                                 driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                                 driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion                 conformanceVersion;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+    deUint32                             maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32                             shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32                             robustBufferAccessUpdateAfterBind;
+    VkBool32                             quadDivergentImplicitLod;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindSamplers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindSampledImages;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindStorageImages;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    deUint32                             maxPerStageUpdateAfterBindResources;
+    deUint32                             maxDescriptorSetUpdateAfterBindSamplers;
+    deUint32                             maxDescriptorSetUpdateAfterBindUniformBuffers;
+    deUint32                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageBuffers;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    deUint32                             maxDescriptorSetUpdateAfterBindSampledImages;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageImages;
+    deUint32                             maxDescriptorSetUpdateAfterBindInputAttachments;
+    VkResolveModeFlags                   supportedDepthResolveModes;
+    VkResolveModeFlags                   supportedStencilResolveModes;
+    VkBool32                             independentResolveNone;
+    VkBool32                             independentResolve;
+    VkBool32                             filterMinmaxSingleComponentFormats;
+    VkBool32                             filterMinmaxImageComponentMapping;
+    deUint64                             maxTimelineSemaphoreValueDifference;
+    VkSampleCountFlags                   framebufferIntegerColorSampleCounts;
+} VkPhysicalDeviceVulkan12Properties;
+
+typedef struct VkImageFormatListCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           viewFormatCount;
+    const VkFormat*    pViewFormats;
+} VkImageFormatListCreateInfo;
+
+typedef struct VkAttachmentDescription2 {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkAttachmentDescriptionFlags    flags;
+    VkFormat                        format;
+    VkSampleCountFlagBits           samples;
+    VkAttachmentLoadOp              loadOp;
+    VkAttachmentStoreOp             storeOp;
+    VkAttachmentLoadOp              stencilLoadOp;
+    VkAttachmentStoreOp             stencilStoreOp;
+    VkImageLayout                   initialLayout;
+    VkImageLayout                   finalLayout;
+} VkAttachmentDescription2;
+
+typedef struct VkAttachmentReference2 {
+    VkStructureType       sType;
+    const void*           pNext;
+    deUint32              attachment;
+    VkImageLayout         layout;
+    VkImageAspectFlags    aspectMask;
+} VkAttachmentReference2;
+
+typedef struct VkSubpassDescription2 {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkSubpassDescriptionFlags        flags;
+    VkPipelineBindPoint              pipelineBindPoint;
+    deUint32                         viewMask;
+    deUint32                         inputAttachmentCount;
+    const VkAttachmentReference2*    pInputAttachments;
+    deUint32                         colorAttachmentCount;
+    const VkAttachmentReference2*    pColorAttachments;
+    const VkAttachmentReference2*    pResolveAttachments;
+    const VkAttachmentReference2*    pDepthStencilAttachment;
+    deUint32                         preserveAttachmentCount;
+    const deUint32*                  pPreserveAttachments;
+} VkSubpassDescription2;
+
+typedef struct VkSubpassDependency2 {
+    VkStructureType         sType;
+    const void*             pNext;
+    deUint32                srcSubpass;
+    deUint32                dstSubpass;
+    VkPipelineStageFlags    srcStageMask;
+    VkPipelineStageFlags    dstStageMask;
+    VkAccessFlags           srcAccessMask;
+    VkAccessFlags           dstAccessMask;
+    VkDependencyFlags       dependencyFlags;
+    deInt32                 viewOffset;
+} VkSubpassDependency2;
+
+typedef struct VkRenderPassCreateInfo2 {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkRenderPassCreateFlags            flags;
+    deUint32                           attachmentCount;
+    const VkAttachmentDescription2*    pAttachments;
+    deUint32                           subpassCount;
+    const VkSubpassDescription2*       pSubpasses;
+    deUint32                           dependencyCount;
+    const VkSubpassDependency2*        pDependencies;
+    deUint32                           correlatedViewMaskCount;
+    const deUint32*                    pCorrelatedViewMasks;
+} VkRenderPassCreateInfo2;
+
+typedef struct VkSubpassBeginInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkSubpassContents    contents;
+} VkSubpassBeginInfo;
+
+typedef struct VkSubpassEndInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+} VkSubpassEndInfo;
+
+typedef struct VkPhysicalDevice8BitStorageFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+} VkPhysicalDevice8BitStorageFeatures;
+
+typedef struct VkPhysicalDeviceDriverProperties {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkDriverId              driverID;
+    char                    driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion    conformanceVersion;
+} VkPhysicalDeviceDriverProperties;
+
+typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+} VkPhysicalDeviceShaderAtomicInt64Features;
+
+typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+} VkPhysicalDeviceShaderFloat16Int8Features;
+
+typedef struct VkPhysicalDeviceFloatControlsProperties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+} VkPhysicalDeviceFloatControlsProperties;
+
+typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    deUint32                           bindingCount;
+    const VkDescriptorBindingFlags*    pBindingFlags;
+} VkDescriptorSetLayoutBindingFlagsCreateInfo;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+} VkPhysicalDeviceDescriptorIndexingFeatures;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32           robustBufferAccessUpdateAfterBind;
+    VkBool32           quadDivergentImplicitLod;
+    deUint32           maxPerStageDescriptorUpdateAfterBindSamplers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindSampledImages;
+    deUint32           maxPerStageDescriptorUpdateAfterBindStorageImages;
+    deUint32           maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    deUint32           maxPerStageUpdateAfterBindResources;
+    deUint32           maxDescriptorSetUpdateAfterBindSamplers;
+    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffers;
+    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffers;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    deUint32           maxDescriptorSetUpdateAfterBindSampledImages;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageImages;
+    deUint32           maxDescriptorSetUpdateAfterBindInputAttachments;
+} VkPhysicalDeviceDescriptorIndexingProperties;
+
+typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           descriptorSetCount;
+    const deUint32*    pDescriptorCounts;
+} VkDescriptorSetVariableDescriptorCountAllocateInfo;
+
+typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxVariableDescriptorCount;
+} VkDescriptorSetVariableDescriptorCountLayoutSupport;
+
+typedef struct VkSubpassDescriptionDepthStencilResolve {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkResolveModeFlagBits            depthResolveMode;
+    VkResolveModeFlagBits            stencilResolveMode;
+    const VkAttachmentReference2*    pDepthStencilResolveAttachment;
+} VkSubpassDescriptionDepthStencilResolve;
+
+typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkResolveModeFlags    supportedDepthResolveModes;
+    VkResolveModeFlags    supportedStencilResolveModes;
+    VkBool32              independentResolveNone;
+    VkBool32              independentResolve;
+} VkPhysicalDeviceDepthStencilResolveProperties;
+
+typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           scalarBlockLayout;
+} VkPhysicalDeviceScalarBlockLayoutFeatures;
+
+typedef struct VkImageStencilUsageCreateInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkImageUsageFlags    stencilUsage;
+} VkImageStencilUsageCreateInfo;
+
+typedef struct VkSamplerReductionModeCreateInfo {
+    VkStructureType           sType;
+    const void*               pNext;
+    VkSamplerReductionMode    reductionMode;
+} VkSamplerReductionModeCreateInfo;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           filterMinmaxSingleComponentFormats;
+    VkBool32           filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxProperties;
+
+typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+} VkPhysicalDeviceVulkanMemoryModelFeatures;
+
+typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           imagelessFramebuffer;
+} VkPhysicalDeviceImagelessFramebufferFeatures;
+
+typedef struct VkFramebufferAttachmentImageInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkImageCreateFlags    flags;
+    VkImageUsageFlags     usage;
+    deUint32              width;
+    deUint32              height;
+    deUint32              layerCount;
+    deUint32              viewFormatCount;
+    const VkFormat*       pViewFormats;
+} VkFramebufferAttachmentImageInfo;
+
+typedef struct VkFramebufferAttachmentsCreateInfo {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    deUint32                                   attachmentImageInfoCount;
+    const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
+} VkFramebufferAttachmentsCreateInfo;
+
+typedef struct VkRenderPassAttachmentBeginInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    deUint32              attachmentCount;
+    const VkImageView*    pAttachments;
+} VkRenderPassAttachmentBeginInfo;
+
+typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           uniformBufferStandardLayout;
+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
+
+typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderSubgroupExtendedTypes;
+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+
+typedef struct VkAttachmentReferenceStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilLayout;
+} VkAttachmentReferenceStencilLayout;
+
+typedef struct VkAttachmentDescriptionStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilInitialLayout;
+    VkImageLayout      stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayout;
+
+typedef struct VkPhysicalDeviceHostQueryResetFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           hostQueryReset;
+} VkPhysicalDeviceHostQueryResetFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           timelineSemaphore;
+} VkPhysicalDeviceTimelineSemaphoreFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint64           maxTimelineSemaphoreValueDifference;
+} VkPhysicalDeviceTimelineSemaphoreProperties;
+
+typedef struct VkSemaphoreTypeCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphoreType    semaphoreType;
+    deUint64           initialValue;
+} VkSemaphoreTypeCreateInfo;
+
+typedef struct VkTimelineSemaphoreSubmitInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           waitSemaphoreValueCount;
+    const deUint64*    pWaitSemaphoreValues;
+    deUint32           signalSemaphoreValueCount;
+    const deUint64*    pSignalSemaphoreValues;
+} VkTimelineSemaphoreSubmitInfo;
+
+typedef struct VkSemaphoreWaitInfo {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkSemaphoreWaitFlags    flags;
+    deUint32                semaphoreCount;
+    const VkSemaphore*      pSemaphores;
+    const deUint64*         pValues;
+} VkSemaphoreWaitInfo;
+
+typedef struct VkSemaphoreSignalInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphore        semaphore;
+    deUint64           value;
+} VkSemaphoreSignalInfo;
+
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeatures;
+
+typedef struct VkBufferDeviceAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           buffer;
+} VkBufferDeviceAddressInfo;
+
+typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint64           opaqueCaptureAddress;
+} VkBufferOpaqueCaptureAddressCreateInfo;
+
+typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint64           opaqueCaptureAddress;
+} VkMemoryOpaqueCaptureAddressAllocateInfo;
+
+typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceMemory     memory;
+} VkDeviceMemoryOpaqueCaptureAddressInfo;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
+    VkDevice                                    device,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkRenderPass*                               pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkRenderPassBeginInfo*                pRenderPassBegin,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    deUint32                                    firstQuery,
+    deUint32                                    queryCount);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
+    VkDevice                                    device,
+    VkSemaphore                                 semaphore,
+    deUint64*                                   pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
+    VkDevice                                    device,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
+    deUint64                                    timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
+    VkDevice                                    device,
+    const VkSemaphoreSignalInfo*                pSignalInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
+#define VK_KHR_surface 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
+#define VK_KHR_SURFACE_SPEC_VERSION       25
+#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_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000,
+    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;
+    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 void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
+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 void VKAPI_CALL vkDestroySwapchainKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    const VkAllocationCallbacks*                pAllocator);
+
+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_sampler_mirror_clamp_to_edge 1
+#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3
+#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
+
+
+#define VK_KHR_multiview 1
+#define VK_KHR_MULTIVIEW_SPEC_VERSION     1
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
+typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
+
+typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
+
+typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
+
+
+
+#define VK_KHR_get_physical_device_properties2 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
+typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
+
+typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
+
+typedef VkFormatProperties2 VkFormatProperties2KHR;
+
+typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
+
+typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
+
+typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
+
+typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
+
+typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceFeatures2*                  pFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceProperties2*                pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkFormatProperties2*                        pFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
+    VkImageFormatProperties2*                   pImageFormatProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32*                                   pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    deUint32*                                   pPropertyCount,
+    VkSparseImageFormatProperties2*             pProperties);
+#endif
+
+
+#define VK_KHR_device_group 1
+#define VK_KHR_DEVICE_GROUP_SPEC_VERSION  4
+#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
+typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
+
+typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
+
+typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
+
+typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
+
+typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
+
+typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
+
+typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
+
+typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
+
+typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
+
+typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
+
+typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, deUint32 deviceMask);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
+    VkDevice                                    device,
+    deUint32                                    heapIndex,
+    deUint32                                    localDeviceIndex,
+    deUint32                                    remoteDeviceIndex,
+    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    deviceMask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    baseGroupX,
+    deUint32                                    baseGroupY,
+    deUint32                                    baseGroupZ,
+    deUint32                                    groupCountX,
+    deUint32                                    groupCountY,
+    deUint32                                    groupCountZ);
+#endif
+
+
+#define VK_KHR_shader_draw_parameters 1
+#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
+#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
+
+
+#define VK_KHR_maintenance1 1
+#define VK_KHR_MAINTENANCE1_SPEC_VERSION  2
+#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
+typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
+
+typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolTrimFlags                      flags);
+#endif
+
+
+#define VK_KHR_device_group_creation 1
+#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
+#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
+#define VK_MAX_DEVICE_GROUP_SIZE_KHR      VK_MAX_DEVICE_GROUP_SIZE
+typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
+
+typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
+    VkInstance                                  instance,
+    deUint32*                                   pPhysicalDeviceGroupCount,
+    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
+#endif
+
+
+#define VK_KHR_external_memory_capabilities 1
+#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
+#define VK_LUID_SIZE_KHR                  VK_LUID_SIZE
+typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
+
+typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
+
+typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
+
+typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
+
+typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
+
+typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
+
+typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
+
+typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
+
+typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
+    VkExternalBufferProperties*                 pExternalBufferProperties);
+#endif
+
+
+#define VK_KHR_external_memory 1
+#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
+#define VK_QUEUE_FAMILY_EXTERNAL_KHR      VK_QUEUE_FAMILY_EXTERNAL
+typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
+
+typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
+
+typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
+
+
+
+#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_capabilities 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
+typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
+
+typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
+
+typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
+
+typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
+
+typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
+
+typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
+#endif
+
+
+#define VK_KHR_external_semaphore 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
+typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
+
+typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
+
+typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
+
+
+
+#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_push_descriptor 1
+#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxPushDescriptors;
+} VkPhysicalDevicePushDescriptorPropertiesKHR;
+
+typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
+typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineBindPoint                         pipelineBindPoint,
+    VkPipelineLayout                            layout,
+    deUint32                                    set,
+    deUint32                                    descriptorWriteCount,
+    const VkWriteDescriptorSet*                 pDescriptorWrites);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    VkPipelineLayout                            layout,
+    deUint32                                    set,
+    const void*                                 pData);
+#endif
+
+
+#define VK_KHR_shader_float16_int8 1
+#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
+#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
+
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
+
+
+
+#define VK_KHR_16bit_storage 1
+#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
+#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
+typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
+
+
+
+#define VK_KHR_incremental_present 1
+#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_descriptor_update_template 1
+typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
+
+#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
+#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
+typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
+
+typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
+
+typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
+
+typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
+    VkDevice                                    device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
+    VkDevice                                    device,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
+    VkDevice                                    device,
+    VkDescriptorSet                             descriptorSet,
+    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
+    const void*                                 pData);
+#endif
+
+
+#define VK_KHR_imageless_framebuffer 1
+#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
+#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
+
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
+
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
+
+
+
+#define VK_KHR_create_renderpass2 1
+#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
+#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
+
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
+
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
+
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
+
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
+
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
+    VkDevice                                    device,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkRenderPass*                               pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkRenderPassBeginInfo*                pRenderPassBegin,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+#endif
+
+
+#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_capabilities 1
+#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
+typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
+
+typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
+
+typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
+
+typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
+
+typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
+
+typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
+    VkExternalFenceProperties*                  pExternalFenceProperties);
+#endif
+
+
+#define VK_KHR_external_fence 1
+#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
+#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
+typedef VkFenceImportFlags VkFenceImportFlagsKHR;
+
+typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
+
+typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
+
+
+
+#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;
+    void*                             pNext;
+    VkPerformanceCounterUnitKHR       unit;
+    VkPerformanceCounterScopeKHR      scope;
+    VkPerformanceCounterStorageKHR    storage;
+    deUint8                           uuid[VK_UUID_SIZE];
+} VkPerformanceCounterKHR;
+
+typedef struct VkPerformanceCounterDescriptionKHR {
+    VkStructureType                            sType;
+    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 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_maintenance2 1
+#define VK_KHR_MAINTENANCE2_SPEC_VERSION  1
+#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
+typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
+
+typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
+
+typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
+
+typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
+
+typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
+
+typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
+
+typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
+
+
+
+#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_variable_pointers 1
+#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
+#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
+typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
+
+typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;
+
+
+
+#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_dedicated_allocation 1
+#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
+#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
+typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
+
+typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
+
+
+
+#define VK_KHR_storage_buffer_storage_class 1
+#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
+#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
+
+
+#define VK_KHR_relaxed_block_layout 1
+#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
+
+
+#define VK_KHR_get_memory_requirements2 1
+#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
+#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
+typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
+
+typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
+
+typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
+
+typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
+
+typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkImageMemoryRequirementsInfo2*       pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkBufferMemoryRequirementsInfo2*      pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
+    VkDevice                                    device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    deUint32*                                   pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
+#endif
+
+
+#define VK_KHR_image_format_list 1
+#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
+#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
+
+
+
+#define VK_KHR_sampler_ycbcr_conversion 1
+typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
+
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14
+#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
+typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
+
+typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
+
+typedef VkChromaLocation VkChromaLocationKHR;
+
+typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
+
+typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
+
+typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
+
+typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
+
+typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
+
+typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
+    VkDevice                                    device,
+    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkSamplerYcbcrConversion*                   pYcbcrConversion);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
+    VkDevice                                    device,
+    VkSamplerYcbcrConversion                    ycbcrConversion,
+    const VkAllocationCallbacks*                pAllocator);
+#endif
+
+
+#define VK_KHR_bind_memory2 1
+#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
+#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
+typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
+
+typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
+    VkDevice                                    device,
+    deUint32                                    bindInfoCount,
+    const VkBindBufferMemoryInfo*               pBindInfos);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
+    VkDevice                                    device,
+    deUint32                                    bindInfoCount,
+    const VkBindImageMemoryInfo*                pBindInfos);
+#endif
+
+
+#define VK_KHR_maintenance3 1
+#define VK_KHR_MAINTENANCE3_SPEC_VERSION  1
+#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
+typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
+
+typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
+
+typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
+    VkDevice                                    device,
+    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
+    VkDescriptorSetLayoutSupport*               pSupport);
+#endif
+
+
+#define VK_KHR_draw_indirect_count 1
+#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
+#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count"
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+#endif
+
+
+#define VK_KHR_shader_subgroup_extended_types 1
+#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
+#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+
+
+
+#define VK_KHR_8bit_storage 1
+#define VK_KHR_8BIT_STORAGE_SPEC_VERSION  1
+#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
+
+
+
+#define VK_KHR_shader_atomic_int64 1
+#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
+#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+
+
+
+#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_driver_properties 1
+#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
+#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_MAX_DRIVER_NAME_SIZE_KHR       VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR       VK_MAX_DRIVER_INFO_SIZE
+typedef VkDriverId VkDriverIdKHR;
+
+typedef VkConformanceVersion VkConformanceVersionKHR;
+
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
+
+
+
+#define VK_KHR_shader_float_controls 1
+#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
+#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
+
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
+
+
+
+#define VK_KHR_depth_stencil_resolve 1
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
+
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
+
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+
+
+
+#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_timeline_semaphore 1
+#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
+#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
+
+typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
+
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
+
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
+
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
+    VkDevice                                    device,
+    VkSemaphore                                 semaphore,
+    deUint64*                                   pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
+    VkDevice                                    device,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
+    deUint64                                    timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
+    VkDevice                                    device,
+    const VkSemaphoreSignalInfo*                pSignalInfo);
+#endif
+
+
+#define VK_KHR_vulkan_memory_model 1
+#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
+#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+
+
+
+#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_spirv_1_4 1
+#define VK_KHR_SPIRV_1_4_SPEC_VERSION     1
+#define VK_KHR_SPIRV_1_4_EXTENSION_NAME   "VK_KHR_spirv_1_4"
+
+
+#define VK_KHR_surface_protected_capabilities 1
+#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
+#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities"
+typedef struct VkSurfaceProtectedCapabilitiesKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           supportsProtected;
+} VkSurfaceProtectedCapabilitiesKHR;
+
+
+
+#define VK_KHR_separate_depth_stencil_layouts 1
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
+
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
+
+
+
+#define VK_KHR_present_wait 1
+#define VK_KHR_PRESENT_WAIT_SPEC_VERSION  1
+#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait"
+typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           presentWait;
+} VkPhysicalDevicePresentWaitFeaturesKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, deUint64 presentId, deUint64 timeout);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    deUint64                                    presentId,
+    deUint64                                    timeout);
+#endif
+
+
+#define VK_KHR_uniform_buffer_standard_layout 1
+#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+
+
+#define VK_KHR_buffer_device_address 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
+
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
+#define VK_KHR_deferred_host_operations 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
+#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4
+#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);
+typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);
+typedef deUint32 (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation);
+typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR(
+    VkDevice                                    device,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDeferredOperationKHR*                     pDeferredOperation);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      operation,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR deUint32 VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      operation);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      operation);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      operation);
+#endif
+
+
+#define VK_KHR_pipeline_executable_properties 1
+#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
+#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
+
+typedef enum VkPipelineExecutableStatisticFormatKHR {
+    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,
+    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1,
+    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2,
+    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3,
+    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPipelineExecutableStatisticFormatKHR;
+typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           pipelineExecutableInfo;
+} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
+
+typedef struct VkPipelineInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkPipeline         pipeline;
+} VkPipelineInfoKHR;
+
+typedef struct VkPipelineExecutablePropertiesKHR {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkShaderStageFlags    stages;
+    char                  name[VK_MAX_DESCRIPTION_SIZE];
+    char                  description[VK_MAX_DESCRIPTION_SIZE];
+    deUint32              subgroupSize;
+} VkPipelineExecutablePropertiesKHR;
+
+typedef struct VkPipelineExecutableInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkPipeline         pipeline;
+    deUint32           executableIndex;
+} VkPipelineExecutableInfoKHR;
+
+typedef union VkPipelineExecutableStatisticValueKHR {
+    VkBool32    b32;
+    deInt64     i64;
+    deUint64    u64;
+    double      f64;
+} VkPipelineExecutableStatisticValueKHR;
+
+typedef struct VkPipelineExecutableStatisticKHR {
+    VkStructureType                           sType;
+    void*                                     pNext;
+    char                                      name[VK_MAX_DESCRIPTION_SIZE];
+    char                                      description[VK_MAX_DESCRIPTION_SIZE];
+    VkPipelineExecutableStatisticFormatKHR    format;
+    VkPipelineExecutableStatisticValueKHR     value;
+} VkPipelineExecutableStatisticKHR;
+
+typedef struct VkPipelineExecutableInternalRepresentationKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    char               name[VK_MAX_DESCRIPTION_SIZE];
+    char               description[VK_MAX_DESCRIPTION_SIZE];
+    VkBool32           isText;
+    deUintptr             dataSize;
+    void*              pData;
+} VkPipelineExecutableInternalRepresentationKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice                        device, const VkPipelineInfoKHR*        pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice                        device, const VkPipelineExecutableInfoKHR*  pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice                        device, const VkPipelineExecutableInfoKHR*  pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
+    VkDevice                                    device,
+    const VkPipelineInfoKHR*                    pPipelineInfo,
+    deUint32*                                   pExecutableCount,
+    VkPipelineExecutablePropertiesKHR*          pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
+    VkDevice                                    device,
+    const VkPipelineExecutableInfoKHR*          pExecutableInfo,
+    deUint32*                                   pStatisticCount,
+    VkPipelineExecutableStatisticKHR*           pStatistics);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
+    VkDevice                                    device,
+    const VkPipelineExecutableInfoKHR*          pExecutableInfo,
+    deUint32*                                   pInternalRepresentationCount,
+    VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
+#endif
+
+
+#define VK_KHR_shader_integer_dot_product 1
+#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
+#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
+typedef struct VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderIntegerDotProduct;
+} VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
+
+typedef struct VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           integerDotProduct8BitUnsignedAccelerated;
+    VkBool32           integerDotProduct8BitSignedAccelerated;
+    VkBool32           integerDotProduct8BitMixedSignednessAccelerated;
+    VkBool32           integerDotProduct4x8BitPackedUnsignedAccelerated;
+    VkBool32           integerDotProduct4x8BitPackedSignedAccelerated;
+    VkBool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated;
+    VkBool32           integerDotProduct16BitUnsignedAccelerated;
+    VkBool32           integerDotProduct16BitSignedAccelerated;
+    VkBool32           integerDotProduct16BitMixedSignednessAccelerated;
+    VkBool32           integerDotProduct32BitUnsignedAccelerated;
+    VkBool32           integerDotProduct32BitSignedAccelerated;
+    VkBool32           integerDotProduct32BitMixedSignednessAccelerated;
+    VkBool32           integerDotProduct64BitUnsignedAccelerated;
+    VkBool32           integerDotProduct64BitSignedAccelerated;
+    VkBool32           integerDotProduct64BitMixedSignednessAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated;
+    VkBool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
+} VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
+
+
+
+#define VK_KHR_pipeline_library 1
+#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
+#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
+typedef struct VkPipelineLibraryCreateInfoKHR {
+    VkStructureType      sType;
+    const void*          pNext;
+    deUint32             libraryCount;
+    const VkPipeline*    pLibraries;
+} VkPipelineLibraryCreateInfoKHR;
+
+
+
+#define VK_KHR_shader_non_semantic_info 1
+#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1
+#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info"
+
+
+#define VK_KHR_present_id 1
+#define VK_KHR_PRESENT_ID_SPEC_VERSION    1
+#define VK_KHR_PRESENT_ID_EXTENSION_NAME  "VK_KHR_present_id"
+typedef struct VkPresentIdKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           swapchainCount;
+    const deUint64*    pPresentIds;
+} VkPresentIdKHR;
+
+typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           presentId;
+} VkPhysicalDevicePresentIdFeaturesKHR;
+
+
+
+#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 = 0x00001000ULL;
+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;
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL;
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL;
+#endif
+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 = 0x00400000ULL;
+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 = 0x00200000ULL;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL;
+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;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL;
+static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
+
+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;
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL;
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL;
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL;
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL;
+#endif
+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 = 0x00800000ULL;
+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 = 0x00200000ULL;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL;
+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;
+static const VkAccessFlagBits2KHR VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL;
+
+
+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 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 struct VkQueueFamilyCheckpointProperties2NV {
+    VkStructureType             sType;
+    void*                       pNext;
+    VkPipelineStageFlags2KHR    checkpointExecutionStageMask;
+} VkQueueFamilyCheckpointProperties2NV;
+
+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_shader_subgroup_uniform_control_flow 1
+#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1
+#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow"
+typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderSubgroupUniformControlFlow;
+} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
+
+
+
+#define VK_KHR_zero_initialize_workgroup_memory 1
+#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1
+#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory"
+typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderZeroInitializeWorkgroupMemory;
+} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
+
+
+
+#define VK_KHR_workgroup_memory_explicit_layout 1
+#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout"
+typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           workgroupMemoryExplicitLayout;
+    VkBool32           workgroupMemoryExplicitLayoutScalarBlockLayout;
+    VkBool32           workgroupMemoryExplicitLayout8BitAccess;
+    VkBool32           workgroupMemoryExplicitLayout16BitAccess;
+} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
+
+
+
+#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_EXT_debug_report 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
+#define VK_EXT_DEBUG_REPORT_SPEC_VERSION  10
+#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
+
+typedef enum VkDebugReportObjectTypeEXT {
+    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
+    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
+    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
+    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
+    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
+    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
+    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
+    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
+    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
+    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
+    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
+    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
+    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
+    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
+    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
+    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001,
+    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
+    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugReportObjectTypeEXT;
+
+typedef enum VkDebugReportFlagBitsEXT {
+    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
+    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
+    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
+    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
+    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
+    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDebugReportFlagBitsEXT;
+typedef VkFlags VkDebugReportFlagsEXT;
+typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
+    VkDebugReportFlagsEXT                       flags,
+    VkDebugReportObjectTypeEXT                  objectType,
+    deUint64                                    object,
+    deUintptr                                      location,
+    deInt32                                     messageCode,
+    const char*                                 pLayerPrefix,
+    const char*                                 pMessage,
+    void*                                       pUserData);
+
+typedef struct VkDebugReportCallbackCreateInfoEXT {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkDebugReportFlagsEXT           flags;
+    PFN_vkDebugReportCallbackEXT    pfnCallback;
+    void*                           pUserData;
+} VkDebugReportCallbackCreateInfoEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
+typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
+    VkInstance                                  instance,
+    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkDebugReportCallbackEXT*                   pCallback);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
+    VkInstance                                  instance,
+    VkDebugReportCallbackEXT                    callback,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
+    VkInstance                                  instance,
+    VkDebugReportFlagsEXT                       flags,
+    VkDebugReportObjectTypeEXT                  objectType,
+    deUint64                                    object,
+    deUintptr                                      location,
+    deInt32                                     messageCode,
+    const char*                                 pLayerPrefix,
+    const char*                                 pMessage);
+#endif
+
+
+#define VK_NV_glsl_shader 1
+#define VK_NV_GLSL_SHADER_SPEC_VERSION    1
+#define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
+
+
+#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_IMG_filter_cubic 1
+#define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
+#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
+
+
+#define VK_AMD_rasterization_order 1
+#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
+#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
+
+typedef enum VkRasterizationOrderAMD {
+    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
+    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
+    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkRasterizationOrderAMD;
+typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
+    VkStructureType            sType;
+    const void*                pNext;
+    VkRasterizationOrderAMD    rasterizationOrder;
+} VkPipelineRasterizationStateRasterizationOrderAMD;
+
+
+
+#define VK_AMD_shader_trinary_minmax 1
+#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
+#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
+
+
+#define VK_AMD_shader_explicit_vertex_parameter 1
+#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
+#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
+
+
+#define VK_EXT_debug_marker 1
+#define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
+#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
+typedef struct VkDebugMarkerObjectNameInfoEXT {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkDebugReportObjectTypeEXT    objectType;
+    deUint64                      object;
+    const char*                   pObjectName;
+} VkDebugMarkerObjectNameInfoEXT;
+
+typedef struct VkDebugMarkerObjectTagInfoEXT {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkDebugReportObjectTypeEXT    objectType;
+    deUint64                      object;
+    deUint64                      tagName;
+    deUintptr                        tagSize;
+    const void*                   pTag;
+} VkDebugMarkerObjectTagInfoEXT;
+
+typedef struct VkDebugMarkerMarkerInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    const char*        pMarkerName;
+    float              color[4];
+} VkDebugMarkerMarkerInfoEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
+typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
+    VkDevice                                    device,
+    const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
+    VkDevice                                    device,
+    const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
+    VkCommandBuffer                             commandBuffer);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
+#endif
+
+
+#define VK_AMD_gcn_shader 1
+#define VK_AMD_GCN_SHADER_SPEC_VERSION    1
+#define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
+
+
+#define VK_NV_dedicated_allocation 1
+#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
+#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
+typedef struct VkDedicatedAllocationImageCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           dedicatedAllocation;
+} VkDedicatedAllocationImageCreateInfoNV;
+
+typedef struct VkDedicatedAllocationBufferCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           dedicatedAllocation;
+} VkDedicatedAllocationBufferCreateInfoNV;
+
+typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkImage            image;
+    VkBuffer           buffer;
+} VkDedicatedAllocationMemoryAllocateInfoNV;
+
+
+
+#define VK_EXT_transform_feedback 1
+#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
+#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
+typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;
+typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           transformFeedback;
+    VkBool32           geometryStreams;
+} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
+
+typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxTransformFeedbackStreams;
+    deUint32           maxTransformFeedbackBuffers;
+    VkDeviceSize       maxTransformFeedbackBufferSize;
+    deUint32           maxTransformFeedbackStreamDataSize;
+    deUint32           maxTransformFeedbackBufferDataSize;
+    deUint32           maxTransformFeedbackBufferDataStride;
+    VkBool32           transformFeedbackQueries;
+    VkBool32           transformFeedbackStreamsLinesTriangles;
+    VkBool32           transformFeedbackRasterizationStreamSelect;
+    VkBool32           transformFeedbackDraw;
+} VkPhysicalDeviceTransformFeedbackPropertiesEXT;
+
+typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT {
+    VkStructureType                                     sType;
+    const void*                                         pNext;
+    VkPipelineRasterizationStateStreamCreateFlagsEXT    flags;
+    deUint32                                            rasterizationStream;
+} VkPipelineRasterizationStateStreamCreateInfoEXT;
+
+typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index);
+typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstBinding,
+    deUint32                                    bindingCount,
+    const VkBuffer*                             pBuffers,
+    const VkDeviceSize*                         pOffsets,
+    const VkDeviceSize*                         pSizes);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstCounterBuffer,
+    deUint32                                    counterBufferCount,
+    const VkBuffer*                             pCounterBuffers,
+    const VkDeviceSize*                         pCounterBufferOffsets);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstCounterBuffer,
+    deUint32                                    counterBufferCount,
+    const VkBuffer*                             pCounterBuffers,
+    const VkDeviceSize*                         pCounterBufferOffsets);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    deUint32                                    query,
+    VkQueryControlFlags                         flags,
+    deUint32                                    index);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT(
+    VkCommandBuffer                             commandBuffer,
+    VkQueryPool                                 queryPool,
+    deUint32                                    query,
+    deUint32                                    index);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    instanceCount,
+    deUint32                                    firstInstance,
+    VkBuffer                                    counterBuffer,
+    VkDeviceSize                                counterBufferOffset,
+    deUint32                                    counterOffset,
+    deUint32                                    vertexStride);
+#endif
+
+
+#define VK_NVX_binary_import 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX)
+#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1
+#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import"
+typedef struct VkCuModuleCreateInfoNVX {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUintptr             dataSize;
+    const void*        pData;
+} VkCuModuleCreateInfoNVX;
+
+typedef struct VkCuFunctionCreateInfoNVX {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkCuModuleNVX      module;
+    const char*        pName;
+} VkCuFunctionCreateInfoNVX;
+
+typedef struct VkCuLaunchInfoNVX {
+    VkStructureType        sType;
+    const void*            pNext;
+    VkCuFunctionNVX        function;
+    deUint32               gridDimX;
+    deUint32               gridDimY;
+    deUint32               gridDimZ;
+    deUint32               blockDimX;
+    deUint32               blockDimY;
+    deUint32               blockDimZ;
+    deUint32               sharedMemBytes;
+    deUintptr                 paramCount;
+    const void* const *    pParams;
+    deUintptr                 extraCount;
+    const void* const *    pExtras;
+} VkCuLaunchInfoNVX;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction);
+typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX(
+    VkDevice                                    device,
+    const VkCuModuleCreateInfoNVX*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkCuModuleNVX*                              pModule);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX(
+    VkDevice                                    device,
+    const VkCuFunctionCreateInfoNVX*            pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkCuFunctionNVX*                            pFunction);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX(
+    VkDevice                                    device,
+    VkCuModuleNVX                               module,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX(
+    VkDevice                                    device,
+    VkCuFunctionNVX                             function,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX(
+    VkCommandBuffer                             commandBuffer,
+    const VkCuLaunchInfoNVX*                    pLaunchInfo);
+#endif
+
+
+#define VK_NVX_image_view_handle 1
+#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2
+#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle"
+typedef struct VkImageViewHandleInfoNVX {
+    VkStructureType     sType;
+    const void*         pNext;
+    VkImageView         imageView;
+    VkDescriptorType    descriptorType;
+    VkSampler           sampler;
+} VkImageViewHandleInfoNVX;
+
+typedef struct VkImageViewAddressPropertiesNVX {
+    VkStructureType    sType;
+    void*              pNext;
+    VkDeviceAddress    deviceAddress;
+    VkDeviceSize       size;
+} VkImageViewAddressPropertiesNVX;
+
+typedef deUint32 (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR deUint32 VKAPI_CALL vkGetImageViewHandleNVX(
+    VkDevice                                    device,
+    const VkImageViewHandleInfoNVX*             pInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX(
+    VkDevice                                    device,
+    VkImageView                                 imageView,
+    VkImageViewAddressPropertiesNVX*            pProperties);
+#endif
+
+
+#define VK_AMD_draw_indirect_count 1
+#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2
+#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+#endif
+
+
+#define VK_AMD_negative_viewport_height 1
+#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
+#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
+
+
+#define VK_AMD_gpu_shader_half_float 1
+#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2
+#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
+
+
+#define VK_AMD_shader_ballot 1
+#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
+#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
+
+
+#define VK_AMD_texture_gather_bias_lod 1
+#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
+#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
+typedef struct VkTextureLODGatherFormatPropertiesAMD {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           supportsTextureGatherLODBiasAMD;
+} VkTextureLODGatherFormatPropertiesAMD;
+
+
+
+#define VK_AMD_shader_info 1
+#define VK_AMD_SHADER_INFO_SPEC_VERSION   1
+#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
+
+typedef enum VkShaderInfoTypeAMD {
+    VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
+    VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
+    VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
+    VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkShaderInfoTypeAMD;
+typedef struct VkShaderResourceUsageAMD {
+    deUint32    numUsedVgprs;
+    deUint32    numUsedSgprs;
+    deUint32    ldsSizePerLocalWorkGroup;
+    deUintptr      ldsUsageSizeInBytes;
+    deUintptr      scratchMemUsageInBytes;
+} VkShaderResourceUsageAMD;
+
+typedef struct VkShaderStatisticsInfoAMD {
+    VkShaderStageFlags          shaderStageMask;
+    VkShaderResourceUsageAMD    resourceUsage;
+    deUint32                    numPhysicalVgprs;
+    deUint32                    numPhysicalSgprs;
+    deUint32                    numAvailableVgprs;
+    deUint32                    numAvailableSgprs;
+    deUint32                    computeWorkGroupSize[3];
+} VkShaderStatisticsInfoAMD;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    VkShaderStageFlagBits                       shaderStage,
+    VkShaderInfoTypeAMD                         infoType,
+    deUintptr*                                     pInfoSize,
+    void*                                       pInfo);
+#endif
+
+
+#define VK_AMD_shader_image_load_store_lod 1
+#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
+#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
+
+
+#define VK_NV_corner_sampled_image 1
+#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2
+#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image"
+typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           cornerSampledImage;
+} VkPhysicalDeviceCornerSampledImageFeaturesNV;
+
+
+
+#define VK_IMG_format_pvrtc 1
+#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
+#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
+
+
+#define VK_NV_external_memory_capabilities 1
+#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
+
+typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkExternalMemoryHandleTypeFlagBitsNV;
+typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
+
+typedef enum VkExternalMemoryFeatureFlagBitsNV {
+    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
+    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
+    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
+    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkExternalMemoryFeatureFlagBitsNV;
+typedef VkFlags VkExternalMemoryFeatureFlagsNV;
+typedef struct VkExternalImageFormatPropertiesNV {
+    VkImageFormatProperties              imageFormatProperties;
+    VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
+    VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
+    VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
+} VkExternalImageFormatPropertiesNV;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkImageType                                 type,
+    VkImageTiling                               tiling,
+    VkImageUsageFlags                           usage,
+    VkImageCreateFlags                          flags,
+    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
+    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
+#endif
+
+
+#define VK_NV_external_memory 1
+#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
+typedef struct VkExternalMemoryImageCreateInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
+} VkExternalMemoryImageCreateInfoNV;
+
+typedef struct VkExportMemoryAllocateInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
+} VkExportMemoryAllocateInfoNV;
+
+
+
+#define VK_EXT_validation_flags 1
+#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2
+#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
+
+typedef enum VkValidationCheckEXT {
+    VK_VALIDATION_CHECK_ALL_EXT = 0,
+    VK_VALIDATION_CHECK_SHADERS_EXT = 1,
+    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkValidationCheckEXT;
+typedef struct VkValidationFlagsEXT {
+    VkStructureType                sType;
+    const void*                    pNext;
+    deUint32                       disabledValidationCheckCount;
+    const VkValidationCheckEXT*    pDisabledValidationChecks;
+} VkValidationFlagsEXT;
+
+
+
+#define VK_EXT_shader_subgroup_ballot 1
+#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
+#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
+
+
+#define VK_EXT_shader_subgroup_vote 1
+#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
+#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
+
+
+#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_conditional_rendering 1
+#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2
+#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
+
+typedef enum VkConditionalRenderingFlagBitsEXT {
+    VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
+    VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkConditionalRenderingFlagBitsEXT;
+typedef VkFlags VkConditionalRenderingFlagsEXT;
+typedef struct VkConditionalRenderingBeginInfoEXT {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkBuffer                          buffer;
+    VkDeviceSize                      offset;
+    VkConditionalRenderingFlagsEXT    flags;
+} VkConditionalRenderingBeginInfoEXT;
+
+typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           conditionalRendering;
+    VkBool32           inheritedConditionalRendering;
+} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
+
+typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           conditionalRenderingEnable;
+} VkCommandBufferInheritanceConditionalRenderingInfoEXT;
+
+typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT(
+    VkCommandBuffer                             commandBuffer,
+    const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT(
+    VkCommandBuffer                             commandBuffer);
+#endif
+
+
+#define VK_NV_clip_space_w_scaling 1
+#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
+#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
+typedef struct VkViewportWScalingNV {
+    float    xcoeff;
+    float    ycoeff;
+} VkViewportWScalingNV;
+
+typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
+    VkStructureType                sType;
+    const void*                    pNext;
+    VkBool32                       viewportWScalingEnable;
+    deUint32                       viewportCount;
+    const VkViewportWScalingNV*    pViewportWScalings;
+} VkPipelineViewportWScalingStateCreateInfoNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstViewport,
+    deUint32                                    viewportCount,
+    const VkViewportWScalingNV*                 pViewportWScalings);
+#endif
+
+
+#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_GOOGLE_display_timing 1
+#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
+#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
+typedef struct VkRefreshCycleDurationGOOGLE {
+    deUint64    refreshDuration;
+} VkRefreshCycleDurationGOOGLE;
+
+typedef struct VkPastPresentationTimingGOOGLE {
+    deUint32    presentID;
+    deUint64    desiredPresentTime;
+    deUint64    actualPresentTime;
+    deUint64    earliestPresentTime;
+    deUint64    presentMargin;
+} VkPastPresentationTimingGOOGLE;
+
+typedef struct VkPresentTimeGOOGLE {
+    deUint32    presentID;
+    deUint64    desiredPresentTime;
+} VkPresentTimeGOOGLE;
+
+typedef struct VkPresentTimesInfoGOOGLE {
+    VkStructureType               sType;
+    const void*                   pNext;
+    deUint32                      swapchainCount;
+    const VkPresentTimeGOOGLE*    pTimes;
+} VkPresentTimesInfoGOOGLE;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapchain,
+    deUint32*                                   pPresentationTimingCount,
+    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
+#endif
+
+
+#define VK_NV_sample_mask_override_coverage 1
+#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
+#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
+
+
+#define VK_NV_geometry_shader_passthrough 1
+#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
+#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
+
+
+#define VK_NV_viewport_array2 1
+#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
+
+
+#define VK_NVX_multiview_per_view_attributes 1
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
+typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           perViewPositionAllComponents;
+} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
+
+
+
+#define VK_NV_viewport_swizzle 1
+#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
+#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
+
+typedef enum VkViewportCoordinateSwizzleNV {
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
+    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkViewportCoordinateSwizzleNV;
+typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
+typedef struct VkViewportSwizzleNV {
+    VkViewportCoordinateSwizzleNV    x;
+    VkViewportCoordinateSwizzleNV    y;
+    VkViewportCoordinateSwizzleNV    z;
+    VkViewportCoordinateSwizzleNV    w;
+} VkViewportSwizzleNV;
+
+typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
+    VkStructureType                                sType;
+    const void*                                    pNext;
+    VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
+    deUint32                                       viewportCount;
+    const VkViewportSwizzleNV*                     pViewportSwizzles;
+} VkPipelineViewportSwizzleStateCreateInfoNV;
+
+
+
+#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_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_sampler_filter_minmax 1
+#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
+#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
+
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
+
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+
+
+
+#define VK_AMD_gpu_shader_int16 1
+#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2
+#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
+
+
+#define VK_AMD_mixed_attachment_samples 1
+#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
+#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
+
+
+#define VK_AMD_shader_fragment_mask 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
+#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
+
+
+#define VK_EXT_inline_uniform_block 1
+#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1
+#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
+typedef struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           inlineUniformBlock;
+    VkBool32           descriptorBindingInlineUniformBlockUpdateAfterBind;
+} VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
+
+typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxInlineUniformBlockSize;
+    deUint32           maxPerStageDescriptorInlineUniformBlocks;
+    deUint32           maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
+    deUint32           maxDescriptorSetInlineUniformBlocks;
+    deUint32           maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+} VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
+
+typedef struct VkWriteDescriptorSetInlineUniformBlockEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           dataSize;
+    const void*        pData;
+} VkWriteDescriptorSetInlineUniformBlockEXT;
+
+typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           maxInlineUniformBlockBindings;
+} VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
+
+
+
+#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_NV_fragment_coverage_to_color 1
+#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
+#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
+typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
+typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
+    VkStructureType                                sType;
+    const void*                                    pNext;
+    VkPipelineCoverageToColorStateCreateFlagsNV    flags;
+    VkBool32                                       coverageToColorEnable;
+    deUint32                                       coverageToColorLocation;
+} VkPipelineCoverageToColorStateCreateInfoNV;
+
+
+
+#define VK_NV_framebuffer_mixed_samples 1
+#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
+#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
+
+typedef enum VkCoverageModulationModeNV {
+    VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
+    VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
+    VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
+    VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
+    VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkCoverageModulationModeNV;
+typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
+typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
+    VkStructureType                                   sType;
+    const void*                                       pNext;
+    VkPipelineCoverageModulationStateCreateFlagsNV    flags;
+    VkCoverageModulationModeNV                        coverageModulationMode;
+    VkBool32                                          coverageModulationTableEnable;
+    deUint32                                          coverageModulationTableCount;
+    const float*                                      pCoverageModulationTable;
+} VkPipelineCoverageModulationStateCreateInfoNV;
+
+
+
+#define VK_NV_fill_rectangle 1
+#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
+#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
+
+
+#define VK_NV_shader_sm_builtins 1
+#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
+#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
+typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           shaderSMCount;
+    deUint32           shaderWarpsPerSM;
+} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
+
+typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderSMBuiltins;
+} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
+
+
+
+#define VK_EXT_post_depth_coverage 1
+#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
+#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
+
+
+#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_validation_cache 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
+#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
+#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
+
+typedef enum VkValidationCacheHeaderVersionEXT {
+    VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
+    VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkValidationCacheHeaderVersionEXT;
+typedef VkFlags VkValidationCacheCreateFlagsEXT;
+typedef struct VkValidationCacheCreateInfoEXT {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkValidationCacheCreateFlagsEXT    flags;
+    deUintptr                             initialDataSize;
+    const void*                        pInitialData;
+} VkValidationCacheCreateInfoEXT;
+
+typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkValidationCacheEXT    validationCache;
+} VkShaderModuleValidationCacheCreateInfoEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
+typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
+typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
+    VkDevice                                    device,
+    const VkValidationCacheCreateInfoEXT*       pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkValidationCacheEXT*                       pValidationCache);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        validationCache,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        dstCache,
+    deUint32                                    srcCacheCount,
+    const VkValidationCacheEXT*                 pSrcCaches);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
+    VkDevice                                    device,
+    VkValidationCacheEXT                        validationCache,
+    deUintptr*                                     pDataSize,
+    void*                                       pData);
+#endif
+
+
+#define VK_EXT_descriptor_indexing 1
+#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
+#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
+
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
+
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+
+
+
+#define VK_EXT_shader_viewport_index_layer 1
+#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
+#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
+
+
+#define VK_NV_shading_rate_image 1
+#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3
+#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
+
+typedef enum VkShadingRatePaletteEntryNV {
+    VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0,
+    VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1,
+    VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2,
+    VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3,
+    VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10,
+    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11,
+    VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF
+} VkShadingRatePaletteEntryNV;
+
+typedef enum VkCoarseSampleOrderTypeNV {
+    VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0,
+    VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1,
+    VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2,
+    VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3,
+    VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkCoarseSampleOrderTypeNV;
+typedef struct VkShadingRatePaletteNV {
+    deUint32                              shadingRatePaletteEntryCount;
+    const VkShadingRatePaletteEntryNV*    pShadingRatePaletteEntries;
+} VkShadingRatePaletteNV;
+
+typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkBool32                         shadingRateImageEnable;
+    deUint32                         viewportCount;
+    const VkShadingRatePaletteNV*    pShadingRatePalettes;
+} VkPipelineViewportShadingRateImageStateCreateInfoNV;
+
+typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shadingRateImage;
+    VkBool32           shadingRateCoarseSampleOrder;
+} VkPhysicalDeviceShadingRateImageFeaturesNV;
+
+typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkExtent2D         shadingRateTexelSize;
+    deUint32           shadingRatePaletteSize;
+    deUint32           shadingRateMaxCoarseSamples;
+} VkPhysicalDeviceShadingRateImagePropertiesNV;
+
+typedef struct VkCoarseSampleLocationNV {
+    deUint32    pixelX;
+    deUint32    pixelY;
+    deUint32    sample;
+} VkCoarseSampleLocationNV;
+
+typedef struct VkCoarseSampleOrderCustomNV {
+    VkShadingRatePaletteEntryNV        shadingRate;
+    deUint32                           sampleCount;
+    deUint32                           sampleLocationCount;
+    const VkCoarseSampleLocationNV*    pSampleLocations;
+} VkCoarseSampleOrderCustomNV;
+
+typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkCoarseSampleOrderTypeNV             sampleOrderType;
+    deUint32                              customSampleOrderCount;
+    const VkCoarseSampleOrderCustomNV*    pCustomSampleOrders;
+} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
+typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
+typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV(
+    VkCommandBuffer                             commandBuffer,
+    VkImageView                                 imageView,
+    VkImageLayout                               imageLayout);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstViewport,
+    deUint32                                    viewportCount,
+    const VkShadingRatePaletteNV*               pShadingRatePalettes);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
+    VkCommandBuffer                             commandBuffer,
+    VkCoarseSampleOrderTypeNV                   sampleOrderType,
+    deUint32                                    customSampleOrderCount,
+    const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders);
+#endif
+
+
+#define VK_NV_ray_tracing 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
+#define VK_NV_RAY_TRACING_SPEC_VERSION    3
+#define VK_NV_RAY_TRACING_EXTENSION_NAME  "VK_NV_ray_tracing"
+#define VK_SHADER_UNUSED_KHR              (~0U)
+#define VK_SHADER_UNUSED_NV               VK_SHADER_UNUSED_KHR
+
+typedef enum VkRayTracingShaderGroupTypeKHR {
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,
+    VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkRayTracingShaderGroupTypeKHR;
+typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV;
+
+
+typedef enum VkGeometryTypeKHR {
+    VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,
+    VK_GEOMETRY_TYPE_AABBS_KHR = 1,
+    VK_GEOMETRY_TYPE_INSTANCES_KHR = 2,
+    VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR,
+    VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR,
+    VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkGeometryTypeKHR;
+typedef VkGeometryTypeKHR VkGeometryTypeNV;
+
+
+typedef enum VkAccelerationStructureTypeKHR {
+    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,
+    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
+    VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,
+    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,
+    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,
+    VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkAccelerationStructureTypeKHR;
+typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV;
+
+
+typedef enum VkCopyAccelerationStructureModeKHR {
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,
+    VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkCopyAccelerationStructureModeKHR;
+typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;
+
+
+typedef enum VkAccelerationStructureMemoryRequirementsTypeNV {
+    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0,
+    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1,
+    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2,
+    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkAccelerationStructureMemoryRequirementsTypeNV;
+
+typedef enum VkGeometryFlagBitsKHR {
+    VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001,
+    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002,
+    VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR,
+    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,
+    VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkGeometryFlagBitsKHR;
+typedef VkFlags VkGeometryFlagsKHR;
+typedef VkGeometryFlagsKHR VkGeometryFlagsNV;
+
+typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV;
+
+
+typedef enum VkGeometryInstanceFlagBitsKHR {
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001,
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002,
+    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004,
+    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008,
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,
+    VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,
+    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,
+    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,
+    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,
+    VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkGeometryInstanceFlagBitsKHR;
+typedef VkFlags VkGeometryInstanceFlagsKHR;
+typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV;
+
+typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV;
+
+
+typedef enum VkBuildAccelerationStructureFlagBitsKHR {
+    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001,
+    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002,
+    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004,
+    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008,
+    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010,
+    VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020,
+    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,
+    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,
+    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,
+    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,
+    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,
+    VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkBuildAccelerationStructureFlagBitsKHR;
+typedef VkFlags VkBuildAccelerationStructureFlagsKHR;
+typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV;
+
+typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV;
+
+typedef struct VkRayTracingShaderGroupCreateInfoNV {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkRayTracingShaderGroupTypeKHR    type;
+    deUint32                          generalShader;
+    deUint32                          closestHitShader;
+    deUint32                          anyHitShader;
+    deUint32                          intersectionShader;
+} VkRayTracingShaderGroupCreateInfoNV;
+
+typedef struct VkRayTracingPipelineCreateInfoNV {
+    VkStructureType                               sType;
+    const void*                                   pNext;
+    VkPipelineCreateFlags                         flags;
+    deUint32                                      stageCount;
+    const VkPipelineShaderStageCreateInfo*        pStages;
+    deUint32                                      groupCount;
+    const VkRayTracingShaderGroupCreateInfoNV*    pGroups;
+    deUint32                                      maxRecursionDepth;
+    VkPipelineLayout                              layout;
+    VkPipeline                                    basePipelineHandle;
+    deInt32                                       basePipelineIndex;
+} VkRayTracingPipelineCreateInfoNV;
+
+typedef struct VkGeometryTrianglesNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           vertexData;
+    VkDeviceSize       vertexOffset;
+    deUint32           vertexCount;
+    VkDeviceSize       vertexStride;
+    VkFormat           vertexFormat;
+    VkBuffer           indexData;
+    VkDeviceSize       indexOffset;
+    deUint32           indexCount;
+    VkIndexType        indexType;
+    VkBuffer           transformData;
+    VkDeviceSize       transformOffset;
+} VkGeometryTrianglesNV;
+
+typedef struct VkGeometryAABBNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           aabbData;
+    deUint32           numAABBs;
+    deUint32           stride;
+    VkDeviceSize       offset;
+} VkGeometryAABBNV;
+
+typedef struct VkGeometryDataNV {
+    VkGeometryTrianglesNV    triangles;
+    VkGeometryAABBNV         aabbs;
+} VkGeometryDataNV;
+
+typedef struct VkGeometryNV {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkGeometryTypeKHR     geometryType;
+    VkGeometryDataNV      geometry;
+    VkGeometryFlagsKHR    flags;
+} VkGeometryNV;
+
+typedef struct VkAccelerationStructureInfoNV {
+    VkStructureType                        sType;
+    const void*                            pNext;
+    VkAccelerationStructureTypeNV          type;
+    VkBuildAccelerationStructureFlagsNV    flags;
+    deUint32                               instanceCount;
+    deUint32                               geometryCount;
+    const VkGeometryNV*                    pGeometries;
+} VkAccelerationStructureInfoNV;
+
+typedef struct VkAccelerationStructureCreateInfoNV {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkDeviceSize                     compactedSize;
+    VkAccelerationStructureInfoNV    info;
+} VkAccelerationStructureCreateInfoNV;
+
+typedef struct VkBindAccelerationStructureMemoryInfoNV {
+    VkStructureType              sType;
+    const void*                  pNext;
+    VkAccelerationStructureNV    accelerationStructure;
+    VkDeviceMemory               memory;
+    VkDeviceSize                 memoryOffset;
+    deUint32                     deviceIndexCount;
+    const deUint32*              pDeviceIndices;
+} VkBindAccelerationStructureMemoryInfoNV;
+
+typedef struct VkWriteDescriptorSetAccelerationStructureNV {
+    VkStructureType                     sType;
+    const void*                         pNext;
+    deUint32                            accelerationStructureCount;
+    const VkAccelerationStructureNV*    pAccelerationStructures;
+} VkWriteDescriptorSetAccelerationStructureNV;
+
+typedef struct VkAccelerationStructureMemoryRequirementsInfoNV {
+    VkStructureType                                    sType;
+    const void*                                        pNext;
+    VkAccelerationStructureMemoryRequirementsTypeNV    type;
+    VkAccelerationStructureNV                          accelerationStructure;
+} VkAccelerationStructureMemoryRequirementsInfoNV;
+
+typedef struct VkPhysicalDeviceRayTracingPropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           shaderGroupHandleSize;
+    deUint32           maxRecursionDepth;
+    deUint32           maxShaderGroupStride;
+    deUint32           shaderGroupBaseAlignment;
+    deUint64           maxGeometryCount;
+    deUint64           maxInstanceCount;
+    deUint64           maxTriangleCount;
+    deUint32           maxDescriptorSetAccelerationStructures;
+} VkPhysicalDeviceRayTracingPropertiesNV;
+
+typedef struct VkTransformMatrixKHR {
+    float    matrix[3][4];
+} VkTransformMatrixKHR;
+
+typedef VkTransformMatrixKHR VkTransformMatrixNV;
+
+typedef struct VkAabbPositionsKHR {
+    float    minX;
+    float    minY;
+    float    minZ;
+    float    maxX;
+    float    maxY;
+    float    maxZ;
+} VkAabbPositionsKHR;
+
+typedef VkAabbPositionsKHR VkAabbPositionsNV;
+
+typedef struct VkAccelerationStructureInstanceKHR {
+    VkTransformMatrixKHR          transform;
+    deUint32                      instanceCustomIndex:24;
+    deUint32                      mask:8;
+    deUint32                      instanceShaderBindingTableRecordOffset:24;
+    VkGeometryInstanceFlagsKHR    flags:8;
+    deUint64                      accelerationStructureReference;
+} VkAccelerationStructureInstanceKHR;
+
+typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
+typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
+typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
+typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode);
+typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData);
+typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery);
+typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, deUint32 shader);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
+    VkDevice                                    device,
+    const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkAccelerationStructureNV*                  pAccelerationStructure);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(
+    VkDevice                                    device,
+    VkAccelerationStructureNV                   accelerationStructure,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
+    VkDevice                                    device,
+    const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
+    VkMemoryRequirements2KHR*                   pMemoryRequirements);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
+    VkDevice                                    device,
+    deUint32                                    bindInfoCount,
+    const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
+    VkCommandBuffer                             commandBuffer,
+    const VkAccelerationStructureInfoNV*        pInfo,
+    VkBuffer                                    instanceData,
+    VkDeviceSize                                instanceOffset,
+    VkBool32                                    update,
+    VkAccelerationStructureNV                   dst,
+    VkAccelerationStructureNV                   src,
+    VkBuffer                                    scratch,
+    VkDeviceSize                                scratchOffset);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
+    VkCommandBuffer                             commandBuffer,
+    VkAccelerationStructureNV                   dst,
+    VkAccelerationStructureNV                   src,
+    VkCopyAccelerationStructureModeKHR          mode);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    raygenShaderBindingTableBuffer,
+    VkDeviceSize                                raygenShaderBindingOffset,
+    VkBuffer                                    missShaderBindingTableBuffer,
+    VkDeviceSize                                missShaderBindingOffset,
+    VkDeviceSize                                missShaderBindingStride,
+    VkBuffer                                    hitShaderBindingTableBuffer,
+    VkDeviceSize                                hitShaderBindingOffset,
+    VkDeviceSize                                hitShaderBindingStride,
+    VkBuffer                                    callableShaderBindingTableBuffer,
+    VkDeviceSize                                callableShaderBindingOffset,
+    VkDeviceSize                                callableShaderBindingStride,
+    deUint32                                    width,
+    deUint32                                    height,
+    deUint32                                    depth);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    deUint32                                    createInfoCount,
+    const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipeline*                                 pPipelines);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    deUint32                                    firstGroup,
+    deUint32                                    groupCount,
+    deUintptr                                      dataSize,
+    void*                                       pData);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    deUint32                                    firstGroup,
+    deUint32                                    groupCount,
+    deUintptr                                      dataSize,
+    void*                                       pData);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
+    VkDevice                                    device,
+    VkAccelerationStructureNV                   accelerationStructure,
+    deUintptr                                      dataSize,
+    void*                                       pData);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    accelerationStructureCount,
+    const VkAccelerationStructureNV*            pAccelerationStructures,
+    VkQueryType                                 queryType,
+    VkQueryPool                                 queryPool,
+    deUint32                                    firstQuery);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    deUint32                                    shader);
+#endif
+
+
+#define VK_NV_representative_fragment_test 1
+#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2
+#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
+typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           representativeFragmentTest;
+} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
+
+typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           representativeFragmentTestEnable;
+} VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
+
+
+
+#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_QCOM_render_pass_shader_resolve 1
+#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4
+#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve"
+
+
+#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_AMD_buffer_marker 1
+#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
+#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
+typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineStageFlagBits                     pipelineStage,
+    VkBuffer                                    dstBuffer,
+    VkDeviceSize                                dstOffset,
+    deUint32                                    marker);
+#endif
+
+
+#define VK_AMD_pipeline_compiler_control 1
+#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1
+#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control"
+
+typedef enum VkPipelineCompilerControlFlagBitsAMD {
+    VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkPipelineCompilerControlFlagBitsAMD;
+typedef VkFlags VkPipelineCompilerControlFlagsAMD;
+typedef struct VkPipelineCompilerControlCreateInfoAMD {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkPipelineCompilerControlFlagsAMD    compilerControlFlags;
+} VkPipelineCompilerControlCreateInfoAMD;
+
+
+
+#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_AMD_shader_core_properties 1
+#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2
+#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
+typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           shaderEngineCount;
+    deUint32           shaderArraysPerEngineCount;
+    deUint32           computeUnitsPerShaderArray;
+    deUint32           simdPerComputeUnit;
+    deUint32           wavefrontsPerSimd;
+    deUint32           wavefrontSize;
+    deUint32           sgprsPerSimd;
+    deUint32           minSgprAllocation;
+    deUint32           maxSgprAllocation;
+    deUint32           sgprAllocationGranularity;
+    deUint32           vgprsPerSimd;
+    deUint32           minVgprAllocation;
+    deUint32           maxVgprAllocation;
+    deUint32           vgprAllocationGranularity;
+} VkPhysicalDeviceShaderCorePropertiesAMD;
+
+
+
+#define VK_AMD_memory_overallocation_behavior 1
+#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1
+#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior"
+
+typedef enum VkMemoryOverallocationBehaviorAMD {
+    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0,
+    VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1,
+    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2,
+    VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkMemoryOverallocationBehaviorAMD;
+typedef struct VkDeviceMemoryOverallocationCreateInfoAMD {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkMemoryOverallocationBehaviorAMD    overallocationBehavior;
+} VkDeviceMemoryOverallocationCreateInfoAMD;
+
+
+
+#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_pipeline_creation_feedback 1
+#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1
+#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback"
+
+typedef enum VkPipelineCreationFeedbackFlagBitsEXT {
+    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 0x00000001,
+    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 0x00000002,
+    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 0x00000004,
+    VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkPipelineCreationFeedbackFlagBitsEXT;
+typedef VkFlags VkPipelineCreationFeedbackFlagsEXT;
+typedef struct VkPipelineCreationFeedbackEXT {
+    VkPipelineCreationFeedbackFlagsEXT    flags;
+    deUint64                              duration;
+} VkPipelineCreationFeedbackEXT;
+
+typedef struct VkPipelineCreationFeedbackCreateInfoEXT {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkPipelineCreationFeedbackEXT*    pPipelineCreationFeedback;
+    deUint32                          pipelineStageCreationFeedbackCount;
+    VkPipelineCreationFeedbackEXT*    pPipelineStageCreationFeedbacks;
+} VkPipelineCreationFeedbackCreateInfoEXT;
+
+
+
+#define VK_NV_shader_subgroup_partitioned 1
+#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
+#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned"
+
+
+#define VK_NV_compute_shader_derivatives 1
+#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1
+#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
+typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           computeDerivativeGroupQuads;
+    VkBool32           computeDerivativeGroupLinear;
+} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
+
+
+
+#define VK_NV_mesh_shader 1
+#define VK_NV_MESH_SHADER_SPEC_VERSION    1
+#define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
+typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           taskShader;
+    VkBool32           meshShader;
+} VkPhysicalDeviceMeshShaderFeaturesNV;
+
+typedef struct VkPhysicalDeviceMeshShaderPropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxDrawMeshTasksCount;
+    deUint32           maxTaskWorkGroupInvocations;
+    deUint32           maxTaskWorkGroupSize[3];
+    deUint32           maxTaskTotalMemorySize;
+    deUint32           maxTaskOutputCount;
+    deUint32           maxMeshWorkGroupInvocations;
+    deUint32           maxMeshWorkGroupSize[3];
+    deUint32           maxMeshTotalMemorySize;
+    deUint32           maxMeshOutputVertices;
+    deUint32           maxMeshOutputPrimitives;
+    deUint32           maxMeshMultiviewViewCount;
+    deUint32           meshOutputPerVertexGranularity;
+    deUint32           meshOutputPerPrimitiveGranularity;
+} VkPhysicalDeviceMeshShaderPropertiesNV;
+
+typedef struct VkDrawMeshTasksIndirectCommandNV {
+    deUint32    taskCount;
+    deUint32    firstTask;
+} VkDrawMeshTasksIndirectCommandNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    taskCount,
+    deUint32                                    firstTask);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    deUint32                                    drawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+#endif
+
+
+#define VK_NV_fragment_shader_barycentric 1
+#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
+#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric"
+typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           fragmentShaderBarycentric;
+} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
+
+
+
+#define VK_NV_shader_image_footprint 1
+#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2
+#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
+typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           imageFootprint;
+} VkPhysicalDeviceShaderImageFootprintFeaturesNV;
+
+
+
+#define VK_NV_scissor_exclusive 1
+#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1
+#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive"
+typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           exclusiveScissorCount;
+    const VkRect2D*    pExclusiveScissors;
+} VkPipelineViewportExclusiveScissorStateCreateInfoNV;
+
+typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           exclusiveScissor;
+} VkPhysicalDeviceExclusiveScissorFeaturesNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    firstExclusiveScissor,
+    deUint32                                    exclusiveScissorCount,
+    const VkRect2D*                             pExclusiveScissors);
+#endif
+
+
+#define VK_NV_device_diagnostic_checkpoints 1
+#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2
+#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints"
+typedef struct VkQueueFamilyCheckpointPropertiesNV {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkPipelineStageFlags    checkpointExecutionStageMask;
+} VkQueueFamilyCheckpointPropertiesNV;
+
+typedef struct VkCheckpointDataNV {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkPipelineStageFlagBits    stage;
+    void*                      pCheckpointMarker;
+} VkCheckpointDataNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
+typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV(
+    VkCommandBuffer                             commandBuffer,
+    const void*                                 pCheckpointMarker);
+
+VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
+    VkQueue                                     queue,
+    deUint32*                                   pCheckpointDataCount,
+    VkCheckpointDataNV*                         pCheckpointData);
+#endif
+
+
+#define VK_INTEL_shader_integer_functions2 1
+#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1
+#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
+typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderIntegerFunctions2;
+} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
+
+
+
+#define VK_INTEL_performance_query 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL)
+#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2
+#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query"
+
+typedef enum VkPerformanceConfigurationTypeINTEL {
+    VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0,
+    VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
+} VkPerformanceConfigurationTypeINTEL;
+
+typedef enum VkQueryPoolSamplingModeINTEL {
+    VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0,
+    VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF
+} VkQueryPoolSamplingModeINTEL;
+
+typedef enum VkPerformanceOverrideTypeINTEL {
+    VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0,
+    VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1,
+    VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
+} VkPerformanceOverrideTypeINTEL;
+
+typedef enum VkPerformanceParameterTypeINTEL {
+    VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0,
+    VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1,
+    VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
+} VkPerformanceParameterTypeINTEL;
+
+typedef enum VkPerformanceValueTypeINTEL {
+    VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0,
+    VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1,
+    VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2,
+    VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3,
+    VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4,
+    VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
+} VkPerformanceValueTypeINTEL;
+typedef union VkPerformanceValueDataINTEL {
+    deUint32       value32;
+    deUint64       value64;
+    float          valueFloat;
+    VkBool32       valueBool;
+    const char*    valueString;
+} VkPerformanceValueDataINTEL;
+
+typedef struct VkPerformanceValueINTEL {
+    VkPerformanceValueTypeINTEL    type;
+    VkPerformanceValueDataINTEL    data;
+} VkPerformanceValueINTEL;
+
+typedef struct VkInitializePerformanceApiInfoINTEL {
+    VkStructureType    sType;
+    const void*        pNext;
+    void*              pUserData;
+} VkInitializePerformanceApiInfoINTEL;
+
+typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkQueryPoolSamplingModeINTEL    performanceCountersSampling;
+} VkQueryPoolPerformanceQueryCreateInfoINTEL;
+
+typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL;
+
+typedef struct VkPerformanceMarkerInfoINTEL {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint64           marker;
+} VkPerformanceMarkerInfoINTEL;
+
+typedef struct VkPerformanceStreamMarkerInfoINTEL {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           marker;
+} VkPerformanceStreamMarkerInfoINTEL;
+
+typedef struct VkPerformanceOverrideInfoINTEL {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkPerformanceOverrideTypeINTEL    type;
+    VkBool32                          enable;
+    deUint64                          parameter;
+} VkPerformanceOverrideInfoINTEL;
+
+typedef struct VkPerformanceConfigurationAcquireInfoINTEL {
+    VkStructureType                        sType;
+    const void*                            pNext;
+    VkPerformanceConfigurationTypeINTEL    type;
+} VkPerformanceConfigurationAcquireInfoINTEL;
+
+typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
+typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device);
+typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);
+typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration);
+typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL(
+    VkDevice                                    device,
+    const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL(
+    VkDevice                                    device);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL(
+    VkCommandBuffer                             commandBuffer,
+    const VkPerformanceMarkerInfoINTEL*         pMarkerInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL(
+    VkCommandBuffer                             commandBuffer,
+    const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL(
+    VkCommandBuffer                             commandBuffer,
+    const VkPerformanceOverrideInfoINTEL*       pOverrideInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL(
+    VkDevice                                    device,
+    const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
+    VkPerformanceConfigurationINTEL*            pConfiguration);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL(
+    VkDevice                                    device,
+    VkPerformanceConfigurationINTEL             configuration);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL(
+    VkQueue                                     queue,
+    VkPerformanceConfigurationINTEL             configuration);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL(
+    VkDevice                                    device,
+    VkPerformanceParameterTypeINTEL             parameter,
+    VkPerformanceValueINTEL*                    pValue);
+#endif
+
+
+#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_AMD_display_native_hdr 1
+#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1
+#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr"
+typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           localDimmingSupport;
+} VkDisplayNativeHdrSurfaceCapabilitiesAMD;
+
+typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBool32           localDimmingEnable;
+} VkSwapchainDisplayNativeHdrCreateInfoAMD;
+
+typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD(
+    VkDevice                                    device,
+    VkSwapchainKHR                              swapChain,
+    VkBool32                                    localDimmingEnable);
+#endif
+
+
+#define VK_EXT_fragment_density_map 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
+typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           fragmentDensityMap;
+    VkBool32           fragmentDensityMapDynamic;
+    VkBool32           fragmentDensityMapNonSubsampledImages;
+} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
+
+typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkExtent2D         minFragmentDensityTexelSize;
+    VkExtent2D         maxFragmentDensityTexelSize;
+    VkBool32           fragmentDensityInvocations;
+} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
+
+typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkAttachmentReference    fragmentDensityMapAttachment;
+} VkRenderPassFragmentDensityMapCreateInfoEXT;
+
+
+
+#define VK_EXT_scalar_block_layout 1
+#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
+#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+
+
+
+#define VK_GOOGLE_hlsl_functionality1 1
+#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1
+#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
+
+
+#define VK_GOOGLE_decorate_string 1
+#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
+#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
+
+
+#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_AMD_shader_core_properties2 1
+#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1
+#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2"
+
+typedef enum VkShaderCorePropertiesFlagBitsAMD {
+    VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkShaderCorePropertiesFlagBitsAMD;
+typedef VkFlags VkShaderCorePropertiesFlagsAMD;
+typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
+    VkStructureType                   sType;
+    void*                             pNext;
+    VkShaderCorePropertiesFlagsAMD    shaderCoreFeatures;
+    deUint32                          activeComputeUnitCount;
+} VkPhysicalDeviceShaderCoreProperties2AMD;
+
+
+
+#define VK_AMD_device_coherent_memory 1
+#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1
+#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory"
+typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           deviceCoherentMemory;
+} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
+
+
+
+#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_memory_priority 1
+#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1
+#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority"
+typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           memoryPriority;
+} VkPhysicalDeviceMemoryPriorityFeaturesEXT;
+
+typedef struct VkMemoryPriorityAllocateInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    float              priority;
+} VkMemoryPriorityAllocateInfoEXT;
+
+
+
+#define VK_NV_dedicated_allocation_image_aliasing 1
+#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
+#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
+typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           dedicatedAllocationImageAliasing;
+} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
+
+
+
+#define VK_EXT_buffer_device_address 1
+#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
+#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
+
+typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
+
+typedef struct VkBufferDeviceAddressCreateInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceAddress    deviceAddress;
+} VkBufferDeviceAddressCreateInfoEXT;
+
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+#endif
+
+
+#define VK_EXT_tooling_info 1
+#define VK_EXT_TOOLING_INFO_SPEC_VERSION  1
+#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info"
+
+typedef enum VkToolPurposeFlagBitsEXT {
+    VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 0x00000001,
+    VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 0x00000002,
+    VK_TOOL_PURPOSE_TRACING_BIT_EXT = 0x00000004,
+    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 0x00000008,
+    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 0x00000010,
+    VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,
+    VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,
+    VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkToolPurposeFlagBitsEXT;
+typedef VkFlags VkToolPurposeFlagsEXT;
+typedef struct VkPhysicalDeviceToolPropertiesEXT {
+    VkStructureType          sType;
+    void*                    pNext;
+    char                     name[VK_MAX_EXTENSION_NAME_SIZE];
+    char                     version[VK_MAX_EXTENSION_NAME_SIZE];
+    VkToolPurposeFlagsEXT    purposes;
+    char                     description[VK_MAX_DESCRIPTION_SIZE];
+    char                     layer[VK_MAX_EXTENSION_NAME_SIZE];
+} VkPhysicalDeviceToolPropertiesEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32*                                   pToolCount,
+    VkPhysicalDeviceToolPropertiesEXT*          pToolProperties);
+#endif
+
+
+#define VK_EXT_separate_stencil_usage 1
+#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
+#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
+
+
+
+#define VK_EXT_validation_features 1
+#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5
+#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_SHADER_VALIDATION_CACHE_EXT = 7,
+    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_NV_cooperative_matrix 1
+#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1
+#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
+
+typedef enum VkComponentTypeNV {
+    VK_COMPONENT_TYPE_FLOAT16_NV = 0,
+    VK_COMPONENT_TYPE_FLOAT32_NV = 1,
+    VK_COMPONENT_TYPE_FLOAT64_NV = 2,
+    VK_COMPONENT_TYPE_SINT8_NV = 3,
+    VK_COMPONENT_TYPE_SINT16_NV = 4,
+    VK_COMPONENT_TYPE_SINT32_NV = 5,
+    VK_COMPONENT_TYPE_SINT64_NV = 6,
+    VK_COMPONENT_TYPE_UINT8_NV = 7,
+    VK_COMPONENT_TYPE_UINT16_NV = 8,
+    VK_COMPONENT_TYPE_UINT32_NV = 9,
+    VK_COMPONENT_TYPE_UINT64_NV = 10,
+    VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkComponentTypeNV;
+
+typedef enum VkScopeNV {
+    VK_SCOPE_DEVICE_NV = 1,
+    VK_SCOPE_WORKGROUP_NV = 2,
+    VK_SCOPE_SUBGROUP_NV = 3,
+    VK_SCOPE_QUEUE_FAMILY_NV = 5,
+    VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkScopeNV;
+typedef struct VkCooperativeMatrixPropertiesNV {
+    VkStructureType      sType;
+    void*                pNext;
+    deUint32             MSize;
+    deUint32             NSize;
+    deUint32             KSize;
+    VkComponentTypeNV    AType;
+    VkComponentTypeNV    BType;
+    VkComponentTypeNV    CType;
+    VkComponentTypeNV    DType;
+    VkScopeNV            scope;
+} VkCooperativeMatrixPropertiesNV;
+
+typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           cooperativeMatrix;
+    VkBool32           cooperativeMatrixRobustBufferAccess;
+} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
+
+typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkShaderStageFlags    cooperativeMatrixSupportedStages;
+} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32*                                   pPropertyCount,
+    VkCooperativeMatrixPropertiesNV*            pProperties);
+#endif
+
+
+#define VK_NV_coverage_reduction_mode 1
+#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1
+#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode"
+
+typedef enum VkCoverageReductionModeNV {
+    VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0,
+    VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1,
+    VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkCoverageReductionModeNV;
+typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV;
+typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           coverageReductionMode;
+} VkPhysicalDeviceCoverageReductionModeFeaturesNV;
+
+typedef struct VkPipelineCoverageReductionStateCreateInfoNV {
+    VkStructureType                                  sType;
+    const void*                                      pNext;
+    VkPipelineCoverageReductionStateCreateFlagsNV    flags;
+    VkCoverageReductionModeNV                        coverageReductionMode;
+} VkPipelineCoverageReductionStateCreateInfoNV;
+
+typedef struct VkFramebufferMixedSamplesCombinationNV {
+    VkStructureType              sType;
+    void*                        pNext;
+    VkCoverageReductionModeNV    coverageReductionMode;
+    VkSampleCountFlagBits        rasterizationSamples;
+    VkSampleCountFlags           depthStencilSamples;
+    VkSampleCountFlags           colorSamples;
+} VkFramebufferMixedSamplesCombinationNV;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32*                                   pCombinationCount,
+    VkFramebufferMixedSamplesCombinationNV*     pCombinations);
+#endif
+
+
+#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_provoking_vertex 1
+#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1
+#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
+
+typedef enum VkProvokingVertexModeEXT {
+    VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0,
+    VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1,
+    VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkProvokingVertexModeEXT;
+typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           provokingVertexLast;
+    VkBool32           transformFeedbackPreservesProvokingVertex;
+} VkPhysicalDeviceProvokingVertexFeaturesEXT;
+
+typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           provokingVertexModePerPipeline;
+    VkBool32           transformFeedbackPreservesTriangleFanProvokingVertex;
+} VkPhysicalDeviceProvokingVertexPropertiesEXT;
+
+typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT {
+    VkStructureType             sType;
+    const void*                 pNext;
+    VkProvokingVertexModeEXT    provokingVertexMode;
+} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
+
+
+
+#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_host_query_reset 1
+#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
+#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
+
+typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    deUint32                                    firstQuery,
+    deUint32                                    queryCount);
+#endif
+
+
+#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_atomic_float2 1
+#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1
+#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2"
+typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderBufferFloat16Atomics;
+    VkBool32           shaderBufferFloat16AtomicAdd;
+    VkBool32           shaderBufferFloat16AtomicMinMax;
+    VkBool32           shaderBufferFloat32AtomicMinMax;
+    VkBool32           shaderBufferFloat64AtomicMinMax;
+    VkBool32           shaderSharedFloat16Atomics;
+    VkBool32           shaderSharedFloat16AtomicAdd;
+    VkBool32           shaderSharedFloat16AtomicMinMax;
+    VkBool32           shaderSharedFloat32AtomicMinMax;
+    VkBool32           shaderSharedFloat64AtomicMinMax;
+    VkBool32           shaderImageFloat32AtomicMinMax;
+    VkBool32           sparseImageFloat32AtomicMinMax;
+} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
+
+
+
+#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_NV_device_generated_commands 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV)
+#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
+#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands"
+
+typedef enum VkIndirectCommandsTokenTypeNV {
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7,
+    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkIndirectCommandsTokenTypeNV;
+
+typedef enum VkIndirectStateFlagBitsNV {
+    VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001,
+    VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkIndirectStateFlagBitsNV;
+typedef VkFlags VkIndirectStateFlagsNV;
+
+typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV {
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004,
+    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkIndirectCommandsLayoutUsageFlagBitsNV;
+typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV;
+typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxGraphicsShaderGroupCount;
+    deUint32           maxIndirectSequenceCount;
+    deUint32           maxIndirectCommandsTokenCount;
+    deUint32           maxIndirectCommandsStreamCount;
+    deUint32           maxIndirectCommandsTokenOffset;
+    deUint32           maxIndirectCommandsStreamStride;
+    deUint32           minSequencesCountBufferOffsetAlignment;
+    deUint32           minSequencesIndexBufferOffsetAlignment;
+    deUint32           minIndirectCommandsBufferOffsetAlignment;
+} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
+
+typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           deviceGeneratedCommands;
+} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
+
+typedef struct VkGraphicsShaderGroupCreateInfoNV {
+    VkStructureType                                 sType;
+    const void*                                     pNext;
+    deUint32                                        stageCount;
+    const VkPipelineShaderStageCreateInfo*          pStages;
+    const VkPipelineVertexInputStateCreateInfo*     pVertexInputState;
+    const VkPipelineTessellationStateCreateInfo*    pTessellationState;
+} VkGraphicsShaderGroupCreateInfoNV;
+
+typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV {
+    VkStructureType                             sType;
+    const void*                                 pNext;
+    deUint32                                    groupCount;
+    const VkGraphicsShaderGroupCreateInfoNV*    pGroups;
+    deUint32                                    pipelineCount;
+    const VkPipeline*                           pPipelines;
+} VkGraphicsPipelineShaderGroupsCreateInfoNV;
+
+typedef struct VkBindShaderGroupIndirectCommandNV {
+    deUint32    groupIndex;
+} VkBindShaderGroupIndirectCommandNV;
+
+typedef struct VkBindIndexBufferIndirectCommandNV {
+    VkDeviceAddress    bufferAddress;
+    deUint32           size;
+    VkIndexType        indexType;
+} VkBindIndexBufferIndirectCommandNV;
+
+typedef struct VkBindVertexBufferIndirectCommandNV {
+    VkDeviceAddress    bufferAddress;
+    deUint32           size;
+    deUint32           stride;
+} VkBindVertexBufferIndirectCommandNV;
+
+typedef struct VkSetStateFlagsIndirectCommandNV {
+    deUint32    data;
+} VkSetStateFlagsIndirectCommandNV;
+
+typedef struct VkIndirectCommandsStreamNV {
+    VkBuffer        buffer;
+    VkDeviceSize    offset;
+} VkIndirectCommandsStreamNV;
+
+typedef struct VkIndirectCommandsLayoutTokenNV {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkIndirectCommandsTokenTypeNV    tokenType;
+    deUint32                         stream;
+    deUint32                         offset;
+    deUint32                         vertexBindingUnit;
+    VkBool32                         vertexDynamicStride;
+    VkPipelineLayout                 pushconstantPipelineLayout;
+    VkShaderStageFlags               pushconstantShaderStageFlags;
+    deUint32                         pushconstantOffset;
+    deUint32                         pushconstantSize;
+    VkIndirectStateFlagsNV           indirectStateFlags;
+    deUint32                         indexTypeCount;
+    const VkIndexType*               pIndexTypes;
+    const deUint32*                  pIndexTypeValues;
+} VkIndirectCommandsLayoutTokenNV;
+
+typedef struct VkIndirectCommandsLayoutCreateInfoNV {
+    VkStructureType                           sType;
+    const void*                               pNext;
+    VkIndirectCommandsLayoutUsageFlagsNV      flags;
+    VkPipelineBindPoint                       pipelineBindPoint;
+    deUint32                                  tokenCount;
+    const VkIndirectCommandsLayoutTokenNV*    pTokens;
+    deUint32                                  streamCount;
+    const deUint32*                           pStreamStrides;
+} VkIndirectCommandsLayoutCreateInfoNV;
+
+typedef struct VkGeneratedCommandsInfoNV {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    VkPipelineBindPoint                  pipelineBindPoint;
+    VkPipeline                           pipeline;
+    VkIndirectCommandsLayoutNV           indirectCommandsLayout;
+    deUint32                             streamCount;
+    const VkIndirectCommandsStreamNV*    pStreams;
+    deUint32                             sequencesCount;
+    VkBuffer                             preprocessBuffer;
+    VkDeviceSize                         preprocessOffset;
+    VkDeviceSize                         preprocessSize;
+    VkBuffer                             sequencesCountBuffer;
+    VkDeviceSize                         sequencesCountOffset;
+    VkBuffer                             sequencesIndexBuffer;
+    VkDeviceSize                         sequencesIndexOffset;
+} VkGeneratedCommandsInfoNV;
+
+typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkPipelineBindPoint           pipelineBindPoint;
+    VkPipeline                    pipeline;
+    VkIndirectCommandsLayoutNV    indirectCommandsLayout;
+    deUint32                      maxSequencesCount;
+} VkGeneratedCommandsMemoryRequirementsInfoNV;
+
+typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, deUint32 groupIndex);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);
+typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV(
+    VkDevice                                    device,
+    const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
+    VkMemoryRequirements2*                      pMemoryRequirements);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV(
+    VkCommandBuffer                             commandBuffer,
+    const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV(
+    VkCommandBuffer                             commandBuffer,
+    VkBool32                                    isPreprocessed,
+    const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(
+    VkCommandBuffer                             commandBuffer,
+    VkPipelineBindPoint                         pipelineBindPoint,
+    VkPipeline                                  pipeline,
+    deUint32                                    groupIndex);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV(
+    VkDevice                                    device,
+    const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkIndirectCommandsLayoutNV*                 pIndirectCommandsLayout);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV(
+    VkDevice                                    device,
+    VkIndirectCommandsLayoutNV                  indirectCommandsLayout,
+    const VkAllocationCallbacks*                pAllocator);
+#endif
+
+
+#define VK_NV_inherited_viewport_scissor 1
+#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1
+#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor"
+typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           inheritedViewportScissor2D;
+} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
+
+typedef struct VkCommandBufferInheritanceViewportScissorInfoNV {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkBool32             viewportScissor2D;
+    deUint32             viewportDepthCount;
+    const VkViewport*    pViewportDepths;
+} VkCommandBufferInheritanceViewportScissorInfoNV;
+
+
+
+#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_QCOM_render_pass_transform 1
+#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2
+#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform"
+typedef struct VkRenderPassTransformBeginInfoQCOM {
+    VkStructureType                  sType;
+    void*                            pNext;
+    VkSurfaceTransformFlagBitsKHR    transform;
+} VkRenderPassTransformBeginInfoQCOM;
+
+typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM {
+    VkStructureType                  sType;
+    void*                            pNext;
+    VkSurfaceTransformFlagBitsKHR    transform;
+    VkRect2D                         renderArea;
+} VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
+
+
+
+#define VK_EXT_device_memory_report 1
+#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2
+#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report"
+
+typedef enum VkDeviceMemoryReportEventTypeEXT {
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0,
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1,
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2,
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3,
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4,
+    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkDeviceMemoryReportEventTypeEXT;
+typedef VkFlags VkDeviceMemoryReportFlagsEXT;
+typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           deviceMemoryReport;
+} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
+
+typedef struct VkDeviceMemoryReportCallbackDataEXT {
+    VkStructureType                     sType;
+    void*                               pNext;
+    VkDeviceMemoryReportFlagsEXT        flags;
+    VkDeviceMemoryReportEventTypeEXT    type;
+    deUint64                            memoryObjectId;
+    VkDeviceSize                        size;
+    VkObjectType                        objectType;
+    deUint64                            objectHandle;
+    deUint32                            heapIndex;
+} VkDeviceMemoryReportCallbackDataEXT;
+
+typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)(
+    const VkDeviceMemoryReportCallbackDataEXT*  pCallbackData,
+    void*                                       pUserData);
+
+typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT {
+    VkStructureType                        sType;
+    const void*                            pNext;
+    VkDeviceMemoryReportFlagsEXT           flags;
+    PFN_vkDeviceMemoryReportCallbackEXT    pfnUserCallback;
+    void*                                  pUserData;
+} VkDeviceDeviceMemoryReportCreateInfoEXT;
+
+
+
+#define VK_EXT_acquire_drm_display 1
+#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1
+#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display"
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, deInt32 drmFd, VkDisplayKHR display);
+typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, deInt32 drmFd, deUint32 connectorId, VkDisplayKHR* display);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT(
+    VkPhysicalDevice                            physicalDevice,
+    deInt32                                     drmFd,
+    VkDisplayKHR                                display);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT(
+    VkPhysicalDevice                            physicalDevice,
+    deInt32                                     drmFd,
+    deUint32                                    connectorId,
+    VkDisplayKHR*                               display);
+#endif
+
+
+#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_GOOGLE_user_type 1
+#define VK_GOOGLE_USER_TYPE_SPEC_VERSION  1
+#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type"
+
+
+#define VK_EXT_private_data 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlotEXT)
+#define VK_EXT_PRIVATE_DATA_SPEC_VERSION  1
+#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data"
+
+typedef enum VkPrivateDataSlotCreateFlagBitsEXT {
+    VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkPrivateDataSlotCreateFlagBitsEXT;
+typedef VkFlags VkPrivateDataSlotCreateFlagsEXT;
+typedef struct VkPhysicalDevicePrivateDataFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           privateData;
+} VkPhysicalDevicePrivateDataFeaturesEXT;
+
+typedef struct VkDevicePrivateDataCreateInfoEXT {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           privateDataSlotRequestCount;
+} VkDevicePrivateDataCreateInfoEXT;
+
+typedef struct VkPrivateDataSlotCreateInfoEXT {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkPrivateDataSlotCreateFlagsEXT    flags;
+} VkPrivateDataSlotCreateInfoEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot);
+typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64 data);
+typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, deUint64 objectHandle, VkPrivateDataSlotEXT privateDataSlot, deUint64* pData);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT(
+    VkDevice                                    device,
+    const VkPrivateDataSlotCreateInfoEXT*       pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPrivateDataSlotEXT*                       pPrivateDataSlot);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT(
+    VkDevice                                    device,
+    VkPrivateDataSlotEXT                        privateDataSlot,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT(
+    VkDevice                                    device,
+    VkObjectType                                objectType,
+    deUint64                                    objectHandle,
+    VkPrivateDataSlotEXT                        privateDataSlot,
+    deUint64                                    data);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT(
+    VkDevice                                    device,
+    VkObjectType                                objectType,
+    deUint64                                    objectHandle,
+    VkPrivateDataSlotEXT                        privateDataSlot,
+    deUint64*                                   pData);
+#endif
+
+
+#define VK_EXT_pipeline_creation_cache_control 1
+#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3
+#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control"
+typedef struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           pipelineCreationCacheControl;
+} VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
+
+
+
+#define VK_NV_device_diagnostics_config 1
+#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 1
+#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config"
+
+typedef enum VkDeviceDiagnosticsConfigFlagBitsNV {
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001,
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002,
+    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004,
+    VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
+} VkDeviceDiagnosticsConfigFlagBitsNV;
+typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV;
+typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           diagnosticsConfig;
+} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
+
+typedef struct VkDeviceDiagnosticsConfigCreateInfoNV {
+    VkStructureType                     sType;
+    const void*                         pNext;
+    VkDeviceDiagnosticsConfigFlagsNV    flags;
+} VkDeviceDiagnosticsConfigCreateInfoNV;
+
+
+
+#define VK_QCOM_render_pass_store_ops 1
+#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2
+#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops"
+
+
+#define VK_NV_fragment_shading_rate_enums 1
+#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1
+#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums"
+
+typedef enum VkFragmentShadingRateTypeNV {
+    VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0,
+    VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1,
+    VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkFragmentShadingRateTypeNV;
+
+typedef enum VkFragmentShadingRateNV {
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
+    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10,
+    VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11,
+    VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12,
+    VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13,
+    VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14,
+    VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15,
+    VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkFragmentShadingRateNV;
+typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           fragmentShadingRateEnums;
+    VkBool32           supersampleFragmentShadingRates;
+    VkBool32           noInvocationFragmentShadingRates;
+} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
+
+typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
+    VkStructureType          sType;
+    void*                    pNext;
+    VkSampleCountFlagBits    maxFragmentShadingRateInvocationCount;
+} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
+
+typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkFragmentShadingRateTypeNV           shadingRateType;
+    VkFragmentShadingRateNV               shadingRate;
+    VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
+} VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
+
+typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer           commandBuffer, VkFragmentShadingRateNV                     shadingRate, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV(
+    VkCommandBuffer                             commandBuffer,
+    VkFragmentShadingRateNV                     shadingRate,
+    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
+#endif
+
+
+#define VK_NV_ray_tracing_motion_blur 1
+#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1
+#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur"
+
+typedef enum VkAccelerationStructureMotionInstanceTypeNV {
+    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0,
+    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1,
+    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2,
+    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
+} VkAccelerationStructureMotionInstanceTypeNV;
+typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV;
+typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV;
+typedef union VkDeviceOrHostAddressConstKHR {
+    VkDeviceAddress    deviceAddress;
+    const void*        hostAddress;
+} VkDeviceOrHostAddressConstKHR;
+
+typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkDeviceOrHostAddressConstKHR    vertexData;
+} VkAccelerationStructureGeometryMotionTrianglesDataNV;
+
+typedef struct VkAccelerationStructureMotionInfoNV {
+    VkStructureType                             sType;
+    const void*                                 pNext;
+    deUint32                                    maxInstances;
+    VkAccelerationStructureMotionInfoFlagsNV    flags;
+} VkAccelerationStructureMotionInfoNV;
+
+typedef struct VkAccelerationStructureMatrixMotionInstanceNV {
+    VkTransformMatrixKHR          transformT0;
+    VkTransformMatrixKHR          transformT1;
+    deUint32                      instanceCustomIndex:24;
+    deUint32                      mask:8;
+    deUint32                      instanceShaderBindingTableRecordOffset:24;
+    VkGeometryInstanceFlagsKHR    flags:8;
+    deUint64                      accelerationStructureReference;
+} VkAccelerationStructureMatrixMotionInstanceNV;
+
+typedef struct VkSRTDataNV {
+    float    sx;
+    float    a;
+    float    b;
+    float    pvx;
+    float    sy;
+    float    c;
+    float    pvy;
+    float    sz;
+    float    pvz;
+    float    qx;
+    float    qy;
+    float    qz;
+    float    qw;
+    float    tx;
+    float    ty;
+    float    tz;
+} VkSRTDataNV;
+
+typedef struct VkAccelerationStructureSRTMotionInstanceNV {
+    VkSRTDataNV                   transformT0;
+    VkSRTDataNV                   transformT1;
+    deUint32                      instanceCustomIndex:24;
+    deUint32                      mask:8;
+    deUint32                      instanceShaderBindingTableRecordOffset:24;
+    VkGeometryInstanceFlagsKHR    flags:8;
+    deUint64                      accelerationStructureReference;
+} VkAccelerationStructureSRTMotionInstanceNV;
+
+typedef union VkAccelerationStructureMotionInstanceDataNV {
+    VkAccelerationStructureInstanceKHR               staticInstance;
+    VkAccelerationStructureMatrixMotionInstanceNV    matrixMotionInstance;
+    VkAccelerationStructureSRTMotionInstanceNV       srtMotionInstance;
+} VkAccelerationStructureMotionInstanceDataNV;
+
+typedef struct VkAccelerationStructureMotionInstanceNV {
+    VkAccelerationStructureMotionInstanceTypeNV     type;
+    VkAccelerationStructureMotionInstanceFlagsNV    flags;
+    VkAccelerationStructureMotionInstanceDataNV     data;
+} VkAccelerationStructureMotionInstanceNV;
+
+typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           rayTracingMotionBlur;
+    VkBool32           rayTracingMotionBlurPipelineTraceRaysIndirect;
+} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
+
+
+
+#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_fragment_density_map2 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
+#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2"
+typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           fragmentDensityMapDeferred;
+} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
+
+typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           subsampledLoads;
+    VkBool32           subsampledCoarseReconstructionEarlyAccess;
+    deUint32           maxSubsampledArrayLayers;
+    deUint32           maxDescriptorSetSubsampledSamplers;
+} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
+
+
+
+#define VK_QCOM_rotated_copy_commands 1
+#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1
+#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands"
+typedef struct VkCopyCommandTransformInfoQCOM {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkSurfaceTransformFlagBitsKHR    transform;
+} VkCopyCommandTransformInfoQCOM;
+
+
+
+#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_NV_acquire_winrt_display 1
+#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
+#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display"
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
+typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, deUint32 deviceRelativeId, VkDisplayKHR* pDisplay);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV(
+    VkPhysicalDevice                            physicalDevice,
+    VkDisplayKHR                                display);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32                                    deviceRelativeId,
+    VkDisplayKHR*                               pDisplay);
+#endif
+
+
+#define VK_VALVE_mutable_descriptor_type 1
+#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1
+#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type"
+typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           mutableDescriptorType;
+} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
+
+typedef struct VkMutableDescriptorTypeListVALVE {
+    deUint32                   descriptorTypeCount;
+    const VkDescriptorType*    pDescriptorTypes;
+} VkMutableDescriptorTypeListVALVE;
+
+typedef struct VkMutableDescriptorTypeCreateInfoVALVE {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    deUint32                                   mutableDescriptorTypeListCount;
+    const VkMutableDescriptorTypeListVALVE*    pMutableDescriptorTypeLists;
+} VkMutableDescriptorTypeCreateInfoVALVE;
+
+
+
+#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_physical_device_drm 1
+#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1
+#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm"
+typedef struct VkPhysicalDeviceDrmPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           hasPrimary;
+    VkBool32           hasRender;
+    deInt64            primaryMajor;
+    deInt64            primaryMinor;
+    deInt64            renderMajor;
+    deInt64            renderMinor;
+} VkPhysicalDeviceDrmPropertiesEXT;
+
+
+
+#define VK_EXT_primitive_topology_list_restart 1
+#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1
+#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart"
+typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           primitiveTopologyListRestart;
+    VkBool32           primitiveTopologyPatchListRestart;
+} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
+
+
+
+#define VK_HUAWEI_subpass_shading 1
+#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2
+#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
+typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI {
+    VkStructureType    sType;
+    void*              pNext;
+    VkRenderPass       renderPass;
+    deUint32           subpass;
+} VkSubpassShadingPipelineCreateInfoHUAWEI;
+
+typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           subpassShading;
+} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
+
+typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxSubpassShadingWorkgroupSizeAspectRatio;
+} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize);
+typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
+    VkDevice                                    device,
+    VkRenderPass                                renderpass,
+    VkExtent2D*                                 pMaxWorkgroupSize);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI(
+    VkCommandBuffer                             commandBuffer);
+#endif
+
+
+#define VK_HUAWEI_invocation_mask 1
+#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1
+#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask"
+typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           invocationMask;
+} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
+
+typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI(
+    VkCommandBuffer                             commandBuffer,
+    VkImageView                                 imageView,
+    VkImageLayout                               imageLayout);
+#endif
+
+
+#define VK_NV_external_memory_rdma 1
+typedef void* VkRemoteAddressNV;
+#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1
+#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma"
+typedef struct VkMemoryGetRemoteAddressInfoNV {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkDeviceMemory                        memory;
+    VkExternalMemoryHandleTypeFlagBits    handleType;
+} VkMemoryGetRemoteAddressInfoNV;
+
+typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           externalMemoryRDMA;
+} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV(
+    VkDevice                                    device,
+    const VkMemoryGetRemoteAddressInfoNV*       pMemoryGetRemoteAddressInfo,
+    VkRemoteAddressNV*                          pAddress);
+#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
+
+
+#define VK_EXT_global_priority_query 1
+#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT   16U
+#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1
+#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query"
+typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           globalPriorityQuery;
+} VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
+
+typedef struct VkQueueFamilyGlobalPriorityPropertiesEXT {
+    VkStructureType             sType;
+    void*                       pNext;
+    deUint32                    priorityCount;
+    VkQueueGlobalPriorityEXT    priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_EXT];
+} VkQueueFamilyGlobalPriorityPropertiesEXT;
+
+
+
+#define VK_EXT_multi_draw 1
+#define VK_EXT_MULTI_DRAW_SPEC_VERSION    1
+#define VK_EXT_MULTI_DRAW_EXTENSION_NAME  "VK_EXT_multi_draw"
+typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           multiDraw;
+} VkPhysicalDeviceMultiDrawFeaturesEXT;
+
+typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxMultiDrawCount;
+} VkPhysicalDeviceMultiDrawPropertiesEXT;
+
+typedef struct VkMultiDrawInfoEXT {
+    deUint32    firstVertex;
+    deUint32    vertexCount;
+} VkMultiDrawInfoEXT;
+
+typedef struct VkMultiDrawIndexedInfoEXT {
+    deUint32    firstIndex;
+    deUint32    indexCount;
+    deInt32     vertexOffset;
+} VkMultiDrawIndexedInfoEXT;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawInfoEXT* pVertexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, deUint32 drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, deUint32 instanceCount, deUint32 firstInstance, deUint32 stride, const deInt32* pVertexOffset);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    drawCount,
+    const VkMultiDrawInfoEXT*                   pVertexInfo,
+    deUint32                                    instanceCount,
+    deUint32                                    firstInstance,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    drawCount,
+    const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
+    deUint32                                    instanceCount,
+    deUint32                                    firstInstance,
+    deUint32                                    stride,
+    const deInt32*                              pVertexOffset);
+#endif
+
+
+#define VK_EXT_load_store_op_none 1
+#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1
+#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none"
+
+
+#define VK_KHR_acceleration_structure 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
+#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 12
+#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
+
+typedef enum VkBuildAccelerationStructureModeKHR {
+    VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
+    VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1,
+    VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkBuildAccelerationStructureModeKHR;
+
+typedef enum VkAccelerationStructureBuildTypeKHR {
+    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
+    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
+    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
+    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkAccelerationStructureBuildTypeKHR;
+
+typedef enum VkAccelerationStructureCompatibilityKHR {
+    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0,
+    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1,
+    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkAccelerationStructureCompatibilityKHR;
+
+typedef enum VkAccelerationStructureCreateFlagBitsKHR {
+    VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001,
+    VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004,
+    VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkAccelerationStructureCreateFlagBitsKHR;
+typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
+typedef union VkDeviceOrHostAddressKHR {
+    VkDeviceAddress    deviceAddress;
+    void*              hostAddress;
+} VkDeviceOrHostAddressKHR;
+
+typedef struct VkAccelerationStructureBuildRangeInfoKHR {
+    deUint32    primitiveCount;
+    deUint32    primitiveOffset;
+    deUint32    firstVertex;
+    deUint32    transformOffset;
+} VkAccelerationStructureBuildRangeInfoKHR;
+
+typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkFormat                         vertexFormat;
+    VkDeviceOrHostAddressConstKHR    vertexData;
+    VkDeviceSize                     vertexStride;
+    deUint32                         maxVertex;
+    VkIndexType                      indexType;
+    VkDeviceOrHostAddressConstKHR    indexData;
+    VkDeviceOrHostAddressConstKHR    transformData;
+} VkAccelerationStructureGeometryTrianglesDataKHR;
+
+typedef struct VkAccelerationStructureGeometryAabbsDataKHR {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkDeviceOrHostAddressConstKHR    data;
+    VkDeviceSize                     stride;
+} VkAccelerationStructureGeometryAabbsDataKHR;
+
+typedef struct VkAccelerationStructureGeometryInstancesDataKHR {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkBool32                         arrayOfPointers;
+    VkDeviceOrHostAddressConstKHR    data;
+} VkAccelerationStructureGeometryInstancesDataKHR;
+
+typedef union VkAccelerationStructureGeometryDataKHR {
+    VkAccelerationStructureGeometryTrianglesDataKHR    triangles;
+    VkAccelerationStructureGeometryAabbsDataKHR        aabbs;
+    VkAccelerationStructureGeometryInstancesDataKHR    instances;
+} VkAccelerationStructureGeometryDataKHR;
+
+typedef struct VkAccelerationStructureGeometryKHR {
+    VkStructureType                           sType;
+    const void*                               pNext;
+    VkGeometryTypeKHR                         geometryType;
+    VkAccelerationStructureGeometryDataKHR    geometry;
+    VkGeometryFlagsKHR                        flags;
+} VkAccelerationStructureGeometryKHR;
+
+typedef struct VkAccelerationStructureBuildGeometryInfoKHR {
+    VkStructureType                                     sType;
+    const void*                                         pNext;
+    VkAccelerationStructureTypeKHR                      type;
+    VkBuildAccelerationStructureFlagsKHR                flags;
+    VkBuildAccelerationStructureModeKHR                 mode;
+    VkAccelerationStructureKHR                          srcAccelerationStructure;
+    VkAccelerationStructureKHR                          dstAccelerationStructure;
+    deUint32                                            geometryCount;
+    const VkAccelerationStructureGeometryKHR*           pGeometries;
+    const VkAccelerationStructureGeometryKHR* const*    ppGeometries;
+    VkDeviceOrHostAddressKHR                            scratchData;
+} VkAccelerationStructureBuildGeometryInfoKHR;
+
+typedef struct VkAccelerationStructureCreateInfoKHR {
+    VkStructureType                          sType;
+    const void*                              pNext;
+    VkAccelerationStructureCreateFlagsKHR    createFlags;
+    VkBuffer                                 buffer;
+    VkDeviceSize                             offset;
+    VkDeviceSize                             size;
+    VkAccelerationStructureTypeKHR           type;
+    VkDeviceAddress                          deviceAddress;
+} VkAccelerationStructureCreateInfoKHR;
+
+typedef struct VkWriteDescriptorSetAccelerationStructureKHR {
+    VkStructureType                      sType;
+    const void*                          pNext;
+    deUint32                             accelerationStructureCount;
+    const VkAccelerationStructureKHR*    pAccelerationStructures;
+} VkWriteDescriptorSetAccelerationStructureKHR;
+
+typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           accelerationStructure;
+    VkBool32           accelerationStructureCaptureReplay;
+    VkBool32           accelerationStructureIndirectBuild;
+    VkBool32           accelerationStructureHostCommands;
+    VkBool32           descriptorBindingAccelerationStructureUpdateAfterBind;
+} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
+
+typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint64           maxGeometryCount;
+    deUint64           maxInstanceCount;
+    deUint64           maxPrimitiveCount;
+    deUint32           maxPerStageDescriptorAccelerationStructures;
+    deUint32           maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
+    deUint32           maxDescriptorSetAccelerationStructures;
+    deUint32           maxDescriptorSetUpdateAfterBindAccelerationStructures;
+    deUint32           minAccelerationStructureScratchOffsetAlignment;
+} VkPhysicalDeviceAccelerationStructurePropertiesKHR;
+
+typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
+    VkStructureType               sType;
+    const void*                   pNext;
+    VkAccelerationStructureKHR    accelerationStructure;
+} VkAccelerationStructureDeviceAddressInfoKHR;
+
+typedef struct VkAccelerationStructureVersionInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    const deUint8*     pVersionData;
+} VkAccelerationStructureVersionInfoKHR;
+
+typedef struct VkCopyAccelerationStructureToMemoryInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkAccelerationStructureKHR            src;
+    VkDeviceOrHostAddressKHR              dst;
+    VkCopyAccelerationStructureModeKHR    mode;
+} VkCopyAccelerationStructureToMemoryInfoKHR;
+
+typedef struct VkCopyMemoryToAccelerationStructureInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkDeviceOrHostAddressConstKHR         src;
+    VkAccelerationStructureKHR            dst;
+    VkCopyAccelerationStructureModeKHR    mode;
+} VkCopyMemoryToAccelerationStructureInfoKHR;
+
+typedef struct VkCopyAccelerationStructureInfoKHR {
+    VkStructureType                       sType;
+    const void*                           pNext;
+    VkAccelerationStructureKHR            src;
+    VkAccelerationStructureKHR            dst;
+    VkCopyAccelerationStructureModeKHR    mode;
+} VkCopyAccelerationStructureInfoKHR;
+
+typedef struct VkAccelerationStructureBuildSizesInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceSize       accelerationStructureSize;
+    VkDeviceSize       updateScratchSize;
+    VkDeviceSize       buildScratchSize;
+} VkAccelerationStructureBuildSizesInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice                                           device, const VkAccelerationStructureCreateInfoKHR*        pCreateInfo, const VkAllocationCallbacks*       pAllocator, VkAccelerationStructureKHR*                        pAccelerationStructure);
+typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer                                    commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer                  commandBuffer, deUint32                                           infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress*             pIndirectDeviceAddresses, const deUint32*                    pIndirectStrides, const deUint32* const*             ppMaxPrimitiveCounts);
+typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice                                           device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType  queryType, deUintptr       dataSize, void* pData, deUintptr stride);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery);
+typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);
+typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice                                            device, VkAccelerationStructureBuildTypeKHR                 buildType, const VkAccelerationStructureBuildGeometryInfoKHR*  pBuildInfo, const deUint32*  pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR*           pSizeInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
+    VkDevice                                    device,
+    const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkAccelerationStructureKHR*                 pAccelerationStructure);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR(
+    VkDevice                                    device,
+    VkAccelerationStructureKHR                  accelerationStructure,
+    const VkAllocationCallbacks*                pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    infoCount,
+    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
+    const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    infoCount,
+    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
+    const VkDeviceAddress*                      pIndirectDeviceAddresses,
+    const deUint32*                             pIndirectStrides,
+    const deUint32* const*                      ppMaxPrimitiveCounts);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      deferredOperation,
+    deUint32                                    infoCount,
+    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
+    const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      deferredOperation,
+    const VkCopyAccelerationStructureInfoKHR*   pInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      deferredOperation,
+    const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      deferredOperation,
+    const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
+    VkDevice                                    device,
+    deUint32                                    accelerationStructureCount,
+    const VkAccelerationStructureKHR*           pAccelerationStructures,
+    VkQueryType                                 queryType,
+    deUintptr                                      dataSize,
+    void*                                       pData,
+    deUintptr                                      stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkCopyAccelerationStructureInfoKHR*   pInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
+    VkDevice                                    device,
+    const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    accelerationStructureCount,
+    const VkAccelerationStructureKHR*           pAccelerationStructures,
+    VkQueryType                                 queryType,
+    VkQueryPool                                 queryPool,
+    deUint32                                    firstQuery);
+
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
+    VkDevice                                    device,
+    const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
+    VkAccelerationStructureCompatibilityKHR*    pCompatibility);
+
+VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR(
+    VkDevice                                    device,
+    VkAccelerationStructureBuildTypeKHR         buildType,
+    const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
+    const deUint32*                             pMaxPrimitiveCounts,
+    VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo);
+#endif
+
+
+#define VK_KHR_ray_tracing_pipeline 1
+#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
+#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
+
+typedef enum VkShaderGroupShaderKHR {
+    VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0,
+    VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1,
+    VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2,
+    VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3,
+    VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkShaderGroupShaderKHR;
+typedef struct VkRayTracingShaderGroupCreateInfoKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkRayTracingShaderGroupTypeKHR    type;
+    deUint32                          generalShader;
+    deUint32                          closestHitShader;
+    deUint32                          anyHitShader;
+    deUint32                          intersectionShader;
+    const void*                       pShaderGroupCaptureReplayHandle;
+} VkRayTracingShaderGroupCreateInfoKHR;
+
+typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           maxPipelineRayPayloadSize;
+    deUint32           maxPipelineRayHitAttributeSize;
+} VkRayTracingPipelineInterfaceCreateInfoKHR;
+
+typedef struct VkRayTracingPipelineCreateInfoKHR {
+    VkStructureType                                      sType;
+    const void*                                          pNext;
+    VkPipelineCreateFlags                                flags;
+    deUint32                                             stageCount;
+    const VkPipelineShaderStageCreateInfo*               pStages;
+    deUint32                                             groupCount;
+    const VkRayTracingShaderGroupCreateInfoKHR*          pGroups;
+    deUint32                                             maxPipelineRayRecursionDepth;
+    const VkPipelineLibraryCreateInfoKHR*                pLibraryInfo;
+    const VkRayTracingPipelineInterfaceCreateInfoKHR*    pLibraryInterface;
+    const VkPipelineDynamicStateCreateInfo*              pDynamicState;
+    VkPipelineLayout                                     layout;
+    VkPipeline                                           basePipelineHandle;
+    deInt32                                              basePipelineIndex;
+} VkRayTracingPipelineCreateInfoKHR;
+
+typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           rayTracingPipeline;
+    VkBool32           rayTracingPipelineShaderGroupHandleCaptureReplay;
+    VkBool32           rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
+    VkBool32           rayTracingPipelineTraceRaysIndirect;
+    VkBool32           rayTraversalPrimitiveCulling;
+} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
+
+typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           shaderGroupHandleSize;
+    deUint32           maxRayRecursionDepth;
+    deUint32           maxShaderGroupStride;
+    deUint32           shaderGroupBaseAlignment;
+    deUint32           shaderGroupHandleCaptureReplaySize;
+    deUint32           maxRayDispatchInvocationCount;
+    deUint32           shaderGroupHandleAlignment;
+    deUint32           maxRayHitAttributeSize;
+} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
+
+typedef struct VkStridedDeviceAddressRegionKHR {
+    VkDeviceAddress    deviceAddress;
+    VkDeviceSize       stride;
+    VkDeviceSize       size;
+} VkStridedDeviceAddressRegionKHR;
+
+typedef struct VkTraceRaysIndirectCommandKHR {
+    deUint32    width;
+    deUint32    height;
+    deUint32    depth;
+} VkTraceRaysIndirectCommandKHR;
+
+typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
+typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress);
+typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader);
+typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, deUint32 pipelineStackSize);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
+    deUint32                                    width,
+    deUint32                                    height,
+    deUint32                                    depth);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
+    VkDevice                                    device,
+    VkDeferredOperationKHR                      deferredOperation,
+    VkPipelineCache                             pipelineCache,
+    deUint32                                    createInfoCount,
+    const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipeline*                                 pPipelines);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    deUint32                                    firstGroup,
+    deUint32                                    groupCount,
+    deUintptr                                      dataSize,
+    void*                                       pData);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
+    VkCommandBuffer                             commandBuffer,
+    const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
+    const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
+    VkDeviceAddress                             indirectDeviceAddress);
+
+VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR(
+    VkDevice                                    device,
+    VkPipeline                                  pipeline,
+    deUint32                                    group,
+    VkShaderGroupShaderKHR                      groupShader);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR(
+    VkCommandBuffer                             commandBuffer,
+    deUint32                                    pipelineStackSize);
+#endif
+
+
+#define VK_KHR_ray_query 1
+#define VK_KHR_RAY_QUERY_SPEC_VERSION     1
+#define VK_KHR_RAY_QUERY_EXTENSION_NAME   "VK_KHR_ray_query"
+typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           rayQuery;
+} VkPhysicalDeviceRayQueryFeaturesKHR;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
index 8922687..9ed8447 100644 (file)
@@ -29,7 +29,6 @@ import khr_util.format
 from khr_util import registry
 from collections import defaultdict
 
-VK_INL_FILE                                            = os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan", "vkApiExtensionDependencyInfo.inl")
 VK_INL_HEADER                                  = """\
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
@@ -37,7 +36,6 @@ VK_INL_HEADER                                 = """\
 
 """
 
-
 def VK_MAKE_VERSION(major, minor, patch):
        return (((major) << 22) | ((minor) << 12) | (patch))
 
@@ -167,12 +165,13 @@ def getExtInfoDict(vkRegistry):
 
 if __name__ == '__main__':
 
-       # script requires output path to which .inl files will be written
-       if len(sys.argv) == 1:
-               sys.exit("Error - output path wasn't specified in argument")
-       outputPath = str(sys.argv[1])
+       currentDir = os.path.dirname(__file__)
+       outputPath = os.path.join(currentDir, "..", "framework", "vulkan")
+       # if argument was specified it is interpreted as a path to which .inl files will be written
+       if len(sys.argv) > 1:
+               outputPath = str(sys.argv[1])
 
-       VULKAN_XML = os.path.join(os.path.dirname(__file__), "..", "..", "vulkan-docs", "src", "xml", "vk.xml")
+       VULKAN_XML = os.path.join(currentDir, "..", "..", "vulkan-docs", "src", "xml", "vk.xml")
        vkRegistry = registry.parse(VULKAN_XML)
 
        genExtDepInl(genExtDeps(getExtInfoDict(vkRegistry)), os.path.join(outputPath, "vkApiExtensionDependencyInfo.inl"))
index d93712e..83586f0 100755 (executable)
@@ -2387,10 +2387,10 @@ def preprocessTopInclude(src, dir):
 
 if __name__ == "__main__":
 
-       # Script requires output path to which .inl files will be written
-       if len(sys.argv) == 1:
-               sys.exit("Error - output path wasn't specified in argument")
-       outputPath = str(sys.argv[1])
+       outputPath = os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan")
+       # if argument was specified it is interpreted as a path to which .inl files will be written
+       if len(sys.argv) > 1:
+               outputPath = str(sys.argv[1])
 
        # Generate vulkan headers from vk.xml
        currentDir                      = os.getcwd()
index 41b8548..d66a340 100644 (file)
@@ -73,10 +73,10 @@ def writeVulkanCHeader (src, filename):
 
 if __name__ == "__main__":
 
-       # script requires output path to which .inl files will be written
-       if len(sys.argv) == 1:
-               sys.exit("Error - output path wasn't specified in argument")
-       outputPath = str(sys.argv[1])
+       outputPath = os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan")
+       # if argument was specified it is interpreted as a path to which .inl files will be written
+       if len(sys.argv) > 1:
+               outputPath = str(sys.argv[1])
 
        src = ""
        for file in VULKAN_H:
index 96b0cf8..a818919 100644 (file)
@@ -188,6 +188,9 @@ EARLY_SPECIAL_RECIPES       = [
        ('gen-inl-files', [
                        RunScript(os.path.join("scripts", "gen_egl.py")),
                        RunScript(os.path.join("scripts", "opengl", "gen_all.py")),
+                       RunScript(os.path.join("external", "vulkancts", "scripts", "gen_framework.py")),
+                       RunScript(os.path.join("external", "vulkancts", "scripts", "gen_framework_c.py")),
+                       RunScript(os.path.join("external", "vulkancts", "scripts", "gen_ext_deps.py")),
                        RunScript(os.path.join("scripts", "gen_android_mk.py"))
                ]),
 ]