Merge vk-gl-cts/vk_khr_ray_tracing into vk-gl-cts/master
authorAlexander Galazin <alexander.galazin@arm.com>
Tue, 24 Nov 2020 12:36:56 +0000 (13:36 +0100)
committerAlexander Galazin <alexander.galazin@arm.com>
Tue, 24 Nov 2020 15:55:31 +0000 (16:55 +0100)
Change-Id: I49438e55593ce166519553b90b55ecaf7ec57063

30 files changed:
1  2 
AndroidGen.mk
android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/framework/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceFeatures.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDecl.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDefs.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkDeviceProperties.inl
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl
external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/vkExtensionFunctions.inl
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVulkan_c.inl
external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorSetRandomTests.cpp
external/vulkancts/modules/vulkan/vktTestPackage.cpp
external/vulkancts/mustpass/master/vk-default.txt
external/vulkancts/scripts/src/vulkan_beta.h
external/vulkancts/scripts/src/vulkan_core.h

diff --cc AndroidGen.mk
Simple merge
Simple merge
@@@ -417,8 -414,8 +414,7 @@@ enum VkStructureTyp
        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_MEMORY_REQUIREMENTS_INFO_KHR                           = 1000150008,
-       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR                                                            = 1000150009,
+       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_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT          = 1000297000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV                                        = 1000300000,
        VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV                                                      = 1000300001,
++      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_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_COPY_BUFFER_INFO_2_KHR                                                                                        = 1000337000,
        VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                                                                                         = 1000337001,
@@@ -1273,36 -1266,36 +1275,37 @@@ enum VkCompareO
  
  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_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_MAX_ENUM                                                       = 0x7FFFFFFF,
+       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_MAX_ENUM                                                               = 0x7FFFFFFF,
  };
  
  enum VkFrontFace
@@@ -2117,6 -2098,14 +2119,39 @@@ enum VkDeviceMemoryReportEventTypeEX
        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 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,
@@@ -2164,42 -2171,39 +2217,40 @@@ typedef VkAccelerationStructureTypeKHR 
  
  typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;
  
- typedef VkAccelerationStructureMemoryRequirementsTypeKHR VkAccelerationStructureMemoryRequirementsTypeNV;
  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_SHADING_RATE_IMAGE_READ_BIT_NV                        = 0x00800000,
 -      VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT                     = 0x01000000,
 -      VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV                        = 0x00020000,
 -      VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV                       = 0x00040000,
 -      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,
 +      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_SHADING_RATE_IMAGE_READ_BIT_NV                                = 0x00800000,
 +      VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT                             = 0x01000000,
 +      VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV                                = 0x00020000,
 +      VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV                               = 0x00040000,
 +      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_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,
 +      VK_ACCESS_FLAG_BITS_MAX_ENUM                                                    = 0x7FFFFFFF,
  };
  typedef deUint32 VkAccessFlags;
  
@@@ -2367,36 -2369,35 +2418,36 @@@ typedef deUint32 VkDeviceQueueCreateFla
  
  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_SHADING_RATE_IMAGE_BIT_NV                             = 0x00400000,
 -      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_COMMAND_PREPROCESS_BIT_NV                             = 0x00020000,
 -      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,
 +      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_RAY_TRACING_SHADER_BIT_KHR                            = 0x00200000,
 +      VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR          = 0x02000000,
++      VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR                            = 0x00200000,
 +      VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV                                     = 0x00400000,
 +      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_COMMAND_PREPROCESS_BIT_NV                                     = 0x00020000,
 +      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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR      = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,
 +      VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM                                            = 0x7FFFFFFF,
  };
  typedef deUint32 VkPipelineStageFlags;
  
@@@ -3476,10 -3484,12 +3539,14 @@@ VK_DEFINE_PLATFORM_TYPE(CAMetalLayer
  #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_EXTENSION_NAME "VK_QCOM_render_pass_store_ops"
++#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1
  #define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
 +#define VK_QCOM_rotated_copy_commands_EXTENSION_NAME "VK_QCOM_rotated_copy_commands"
  #define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
 -#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
+ #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11
+ #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_PORTABILITY_SUBSET_SPEC_VERSION 1
@@@ -171,7 -171,11 +171,12 @@@ virtual VkResult                 importFenceFdKH
  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                      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;
@@@ -284,21 -285,14 +286,15 @@@ virtual VkResult                        createPrivateDataSlo
  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 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                      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 void                          cmdSetFragmentShadingRateEnumNV                                 (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const;
  virtual VkResult                      createAccelerationStructureKHR                                  (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const;
- virtual void                          getAccelerationStructureMemoryRequirementsKHR   (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
- virtual void                          cmdBuildAccelerationStructureKHR                                (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const;
- virtual void                          cmdBuildAccelerationStructureIndirectKHR                (VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, deUint32 indirectStride) const;
- virtual VkResult                      buildAccelerationStructureKHR                                   (VkDevice device, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const;
- virtual VkResult                      copyAccelerationStructureKHR                                    (VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo) const;
- virtual VkResult                      copyAccelerationStructureToMemoryKHR                    (VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const;
- virtual VkResult                      copyMemoryToAccelerationStructureKHR                    (VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) 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;
@@@ -852,11 -852,31 +852,36 @@@ void DeviceDriver::releaseProfilingLock
        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::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);
@@@ -1417,129 -1422,124 +1427,129 @@@ void DeviceDriver::getPrivateDataEXT (V
        m_vk.getPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData);
  }
  
- VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
++void DeviceDriver::cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const
 +{
-       return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
++      m_vk.cmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
 +}
 +
- VkResult DeviceDriver::getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const
+ VkResult DeviceDriver::createAccelerationStructureKHR (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const
  {
-       return m_vk.getMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
+       return m_vk.createAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
  }
  
VkResult DeviceDriver::createDeferredOperationKHR (VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation) const
void DeviceDriver::destroyAccelerationStructureKHR (VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) const
  {
-       return m_vk.createDeferredOperationKHR(device, pAllocator, pDeferredOperation);
+       m_vk.destroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
  }
  
- void DeviceDriver::destroyDeferredOperationKHR (VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator) const
+ void DeviceDriver::cmdBuildAccelerationStructuresKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const
  {
-       m_vk.destroyDeferredOperationKHR(device, operation, pAllocator);
+       m_vk.cmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos);
  }
  
uint32_t DeviceDriver::getDeferredOperationMaxConcurrencyKHR (VkDevice device, VkDeferredOperationKHR operation) const
void DeviceDriver::cmdBuildAccelerationStructuresIndirectKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const deUint32* pIndirectStrides, const deUint32* const* ppMaxPrimitiveCounts) const
  {
-       return m_vk.getDeferredOperationMaxConcurrencyKHR(device, operation);
+       m_vk.cmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts);
  }
  
- VkResult DeviceDriver::getDeferredOperationResultKHR (VkDevice device, VkDeferredOperationKHR operation) const
+ VkResult DeviceDriver::buildAccelerationStructuresKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) const
  {
-       return m_vk.getDeferredOperationResultKHR(device, operation);
+       return m_vk.buildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos);
  }
  
- VkResult DeviceDriver::deferredOperationJoinKHR (VkDevice device, VkDeferredOperationKHR operation) const
+ VkResult DeviceDriver::copyAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo) const
  {
-       return m_vk.deferredOperationJoinKHR(device, operation);
+       return m_vk.copyAccelerationStructureKHR(device, deferredOperation, pInfo);
  }
  
- VkResult DeviceDriver::createAccelerationStructureKHR (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const
+ VkResult DeviceDriver::copyAccelerationStructureToMemoryKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
  {
-       return m_vk.createAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
+       return m_vk.copyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo);
  }
  
void DeviceDriver::getAccelerationStructureMemoryRequirementsKHR (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements) const
VkResult DeviceDriver::copyMemoryToAccelerationStructureKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
  {
-       m_vk.getAccelerationStructureMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
+       return m_vk.copyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo);
  }
  
void DeviceDriver::cmdBuildAccelerationStructureKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const
VkResult DeviceDriver::writeAccelerationStructuresPropertiesKHR (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride) const
  {
-       m_vk.cmdBuildAccelerationStructureKHR(commandBuffer, infoCount, pInfos, ppOffsetInfos);
+       return m_vk.writeAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
  }
  
- void DeviceDriver::cmdBuildAccelerationStructureIndirectKHR (VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, deUint32 indirectStride) const
+ void DeviceDriver::cmdCopyAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) const
  {
-       m_vk.cmdBuildAccelerationStructureIndirectKHR(commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride);
+       m_vk.cmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
  }
  
VkResult DeviceDriver::buildAccelerationStructureKHR (VkDevice device, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const
void DeviceDriver::cmdCopyAccelerationStructureToMemoryKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
  {
-       return m_vk.buildAccelerationStructureKHR(device, infoCount, pInfos, ppOffsetInfos);
+       m_vk.cmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
  }
  
VkResult DeviceDriver::copyAccelerationStructureKHR (VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo) const
void DeviceDriver::cmdCopyMemoryToAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
  {
-       return m_vk.copyAccelerationStructureKHR(device, pInfo);
+       m_vk.cmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
  }
  
- VkResult DeviceDriver::copyAccelerationStructureToMemoryKHR (VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
+ VkDeviceAddress DeviceDriver::getAccelerationStructureDeviceAddressKHR (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) const
  {
-       return m_vk.copyAccelerationStructureToMemoryKHR(device, pInfo);
+       return m_vk.getAccelerationStructureDeviceAddressKHR(device, pInfo);
  }
  
VkResult DeviceDriver::copyMemoryToAccelerationStructureKHR (VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
void DeviceDriver::cmdWriteAccelerationStructuresPropertiesKHR (VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery) const
  {
-       return m_vk.copyMemoryToAccelerationStructureKHR(device, pInfo);
+       m_vk.cmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
  }
  
VkResult DeviceDriver::writeAccelerationStructuresPropertiesKHR (VkDevice device, deUint32 accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, deUintptr dataSize, void* pData, deUintptr stride) const
void DeviceDriver::getDeviceAccelerationStructureCompatibilityKHR (VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility) const
  {
-       return m_vk.writeAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
+       m_vk.getDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility);
  }
  
- void DeviceDriver::cmdCopyAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) const
+ void DeviceDriver::getAccelerationStructureBuildSizesKHR (VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const deUint32* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) const
  {
-       m_vk.cmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
+       m_vk.getAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo);
  }
  
- void DeviceDriver::cmdCopyAccelerationStructureToMemoryKHR (VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const
+ 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.cmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
+       m_vk.cmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
  }
  
void DeviceDriver::cmdCopyMemoryToAccelerationStructureKHR (VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) const
VkResult DeviceDriver::createRayTracingPipelinesKHR (VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
  {
-       m_vk.cmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
+       return m_vk.createRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
  }
  
void DeviceDriver::cmdTraceRaysKHR (VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, deUint32 width, deUint32 height, deUint32 depth) const
VkResult DeviceDriver::getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const
  {
-       m_vk.cmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
+       return m_vk.getRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
  }
  
VkResult DeviceDriver::createRayTracingPipelinesKHR (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
void DeviceDriver::cmdTraceRaysIndirectKHR (VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) const
  {
-       return m_vk.createRayTracingPipelinesKHR(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
+       m_vk.cmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
  }
  
- VkDeviceAddress DeviceDriver::getAccelerationStructureDeviceAddressKHR (VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) const
+ VkDeviceSize DeviceDriver::getRayTracingShaderGroupStackSizeKHR (VkDevice device, VkPipeline pipeline, deUint32 group, VkShaderGroupShaderKHR groupShader) const
  {
-       return m_vk.getAccelerationStructureDeviceAddressKHR(device, pInfo);
+       return m_vk.getRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader);
  }
  
VkResult DeviceDriver::getRayTracingCaptureReplayShaderGroupHandlesKHR (VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData) const
void DeviceDriver::cmdSetRayTracingPipelineStackSizeKHR (VkCommandBuffer commandBuffer, deUint32 pipelineStackSize) const
  {
-       return m_vk.getRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
+       m_vk.cmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize);
  }
  
void DeviceDriver::cmdTraceRaysIndirectKHR (VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, VkBuffer buffer, VkDeviceSize offset) const
VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
  {
-       m_vk.cmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset);
+       return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
  }
  
- VkResult DeviceDriver::getDeviceAccelerationStructureCompatibilityKHR (VkDevice device, const VkAccelerationStructureVersionKHR* version) const
+ VkResult DeviceDriver::getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const
  {
-       return m_vk.getDeviceAccelerationStructureCompatibilityKHR(device, version);
+       return m_vk.getMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
  }
  
  VkResult DeviceDriver::getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const
@@@ -31,7 -32,6 +32,8 @@@ namespace v
  #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_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"
@@@ -236,73 -234,75 +239,79 @@@ template<> void initFeatureFromBlob<VkP
  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<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&, const AllFeaturesBlobs&) {}
  template<> void initFeatureFromBlob<VkPhysicalDeviceImageRobustnessFeaturesEXT>(VkPhysicalDeviceImageRobustnessFeaturesEXT&, const AllFeaturesBlobs&) {}
 -template<> void initFeatureFromBlob<VkPhysicalDevice4444FormatsFeaturesEXT>(VkPhysicalDevice4444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDevice4444FormatsFeaturesEXT>(VkPhysicalDevice4444FormatsFeaturesEXT&, 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<> void initFeatureFromBlob<VkPhysicalDeviceRayTracingFeaturesKHR>(VkPhysicalDeviceRayTracingFeaturesKHR&, 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, 71}; }
--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, 70}; }
--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, 69}; }
- 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, 68}; }
- 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, 67}; }
- 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, 66}; }
- 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, 65}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 64}; }
- 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, 63}; }
- 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, 62}; }
- 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, 61}; }
- 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, 60}; }
- 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, 59}; }
- 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, 58}; }
- 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, 57}; }
- 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, 56}; }
- 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, 55}; }
- 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, 54}; }
- 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, 53}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 52}; }
- 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, 51}; }
- 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, 50}; }
- 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, 49}; }
- 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, 48}; }
- 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, 47}; }
- 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, 46}; }
- 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, 45}; }
 -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, 68}; }
 -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, 67}; }
 -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, 66}; }
 -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, 65}; }
 -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, 64}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 63}; }
 -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, 62}; }
 -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, 61}; }
 -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, 60}; }
 -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, 59}; }
 -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, 58}; }
 -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, 57}; }
 -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, 56}; }
 -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, 55}; }
 -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, 54}; }
 -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, 53}; }
 -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, 52}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 51}; }
 -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, 50}; }
 -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, 49}; }
 -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, 48}; }
 -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, 47}; }
 -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, 46}; }
 -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, 45}; }
--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, 44}; }
--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, 43}; }
--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, 42}; }
--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, 41}; }
--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, 40}; }
--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, 39}; }
--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, 38}; }
--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, 37}; }
--template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 36}; }
--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, 35}; }
--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, 34}; }
--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, 33}; }
--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, 32}; }
--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, 31}; }
--template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 30}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRayTracingFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR, VK_KHR_RAY_TRACING_EXTENSION_NAME, VK_KHR_RAY_TRACING_SPEC_VERSION, 29}; }
 -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, 29}; }
 -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, 28}; }
 -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, 27}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRobustness2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 26}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 25}; }
 -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, 24}; }
 -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, 23}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION, 22}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 21}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 20}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 19}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 18}; }
 -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, 17}; }
 -template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION, 16}; }
 -template<> FeatureDesc makeFeatureDesc<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, 15}; }
 -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, 14}; }
 -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, 13}; }
 -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, 12}; }
++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, 74}; }
++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, 73}; }
++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, 72}; }
++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, 71}; }
++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, 70}; }
++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, 69}; }
++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, 68}; }
++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, 67}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 66}; }
++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, 65}; }
++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, 64}; }
++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, 63}; }
++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, 62}; }
++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, 61}; }
++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, 60}; }
++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, 59}; }
++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, 58}; }
++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, 57}; }
++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, 56}; }
++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, 55}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, DECL_NV_DIAGNOSTICS_CONFIG_EXTENSION_NAME, 0, 54}; }
++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, 53}; }
++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, 52}; }
++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, 51}; }
++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, 50}; }
++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, 49}; }
++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, 48}; }
++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, 47}; }
++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, 46}; }
++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, 45}; }
++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, 44}; }
++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, 43}; }
++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, 42}; }
++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, 41}; }
++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, 40}; }
++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, 39}; }
++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, 38}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 37}; }
++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, 36}; }
++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, 35}; }
++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, 34}; }
++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, 33}; }
++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, 32}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 31}; }
++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, 30}; }
++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, 29}; }
 +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, 28}; }
 +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, 27}; }
 +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, 26}; }
 +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, 25}; }
 +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, 24}; }
 +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, 23}; }
 +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, 22}; }
 +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, 21}; }
 +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, 20}; }
 +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, 19}; }
 +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, 18}; }
 +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, 17}; }
 +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, 16}; }
 +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, 15}; }
 +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, 14}; }
 +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, 13}; }
 +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, 12}; }
  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, 11}; }
  template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 10}; }
  template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 9}; }
@@@ -344,7 -345,6 +354,8 @@@ static const FeatureStructCreationData 
        { 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<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 },
@@@ -27,7 -28,6 +28,8 @@@ const vk::VkPhysicalDeviceFragmentDensi
  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::VkPhysicalDeviceHostQueryResetFeatures&                                             getHostQueryResetFeatures                                               (void) const;
  const vk::VkPhysicalDeviceImagelessFramebufferFeatures&                                       getImagelessFramebufferFeatures                                 (void) const;
  const vk::VkPhysicalDeviceImageRobustnessFeaturesEXT&                                 getImageRobustnessFeaturesEXT                                   (void) const;
@@@ -27,7 -28,6 +28,8 @@@ const vk::VkPhysicalDeviceFragmentDensi
  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::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();                                }
@@@ -27,7 -28,6 +28,8 @@@ const VkPhysicalDeviceFragmentDensityMa
  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 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>();                                    }
@@@ -171,7 -171,11 +171,12 @@@ ImportFenceFdKHRFunc                                                             importFence
  GetFenceFdKHRFunc                                                                     getFenceFdKHR;
  AcquireProfilingLockKHRFunc                                                   acquireProfilingLockKHR;
  ReleaseProfilingLockKHRFunc                                                   releaseProfilingLockKHR;
 +CmdSetFragmentShadingRateKHRFunc                                      cmdSetFragmentShadingRateKHR;
+ CreateDeferredOperationKHRFunc                                                createDeferredOperationKHR;
+ DestroyDeferredOperationKHRFunc                                               destroyDeferredOperationKHR;
+ GetDeferredOperationMaxConcurrencyKHRFunc                     getDeferredOperationMaxConcurrencyKHR;
+ GetDeferredOperationResultKHRFunc                                     getDeferredOperationResultKHR;
+ DeferredOperationJoinKHRFunc                                          deferredOperationJoinKHR;
  GetPipelineExecutablePropertiesKHRFunc                                getPipelineExecutablePropertiesKHR;
  GetPipelineExecutableStatisticsKHRFunc                                getPipelineExecutableStatisticsKHR;
  GetPipelineExecutableInternalRepresentationsKHRFunc   getPipelineExecutableInternalRepresentationsKHR;
@@@ -284,18 -285,11 +286,12 @@@ CreatePrivateDataSlotEXTFunc                                            creat
  DestroyPrivateDataSlotEXTFunc                                         destroyPrivateDataSlotEXT;
  SetPrivateDataEXTFunc                                                         setPrivateDataEXT;
  GetPrivateDataEXTFunc                                                         getPrivateDataEXT;
- GetAndroidHardwareBufferPropertiesANDROIDFunc         getAndroidHardwareBufferPropertiesANDROID;
- GetMemoryAndroidHardwareBufferANDROIDFunc                     getMemoryAndroidHardwareBufferANDROID;
- CreateDeferredOperationKHRFunc                                                createDeferredOperationKHR;
- DestroyDeferredOperationKHRFunc                                               destroyDeferredOperationKHR;
- GetDeferredOperationMaxConcurrencyKHRFunc                     getDeferredOperationMaxConcurrencyKHR;
- GetDeferredOperationResultKHRFunc                                     getDeferredOperationResultKHR;
- DeferredOperationJoinKHRFunc                                          deferredOperationJoinKHR;
++CmdSetFragmentShadingRateEnumNVFunc                                   cmdSetFragmentShadingRateEnumNV;
  CreateAccelerationStructureKHRFunc                                    createAccelerationStructureKHR;
GetAccelerationStructureMemoryRequirementsKHRFunc     getAccelerationStructureMemoryRequirementsKHR;
- CmdBuildAccelerationStructureKHRFunc                          cmdBuildAccelerationStructureKHR;
- CmdBuildAccelerationStructureIndirectKHRFunc          cmdBuildAccelerationStructureIndirectKHR;
- BuildAccelerationStructureKHRFunc                                     buildAccelerationStructureKHR;
DestroyAccelerationStructureKHRFunc                                   destroyAccelerationStructureKHR;
+ CmdBuildAccelerationStructuresKHRFunc                         cmdBuildAccelerationStructuresKHR;
+ CmdBuildAccelerationStructuresIndirectKHRFunc         cmdBuildAccelerationStructuresIndirectKHR;
+ BuildAccelerationStructuresKHRFunc                                    buildAccelerationStructuresKHR;
  CopyAccelerationStructureKHRFunc                                      copyAccelerationStructureKHR;
  CopyAccelerationStructureToMemoryKHRFunc                      copyAccelerationStructureToMemoryKHR;
  CopyMemoryToAccelerationStructureKHRFunc                      copyMemoryToAccelerationStructureKHR;
@@@ -18,7 -19,6 +19,8 @@@ namespace v
  #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 DECL_ID_EXTENSION_NAME "core_property"
  #define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
  #define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
@@@ -185,25 -184,26 +187,29 @@@ template<> void initPropertyFromBlob<Vk
  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<VkPhysicalDeviceAccelerationStructurePropertiesKHR>(VkPhysicalDeviceAccelerationStructurePropertiesKHR&, const AllPropertiesBlobs&) {}
+ template<> void initPropertyFromBlob<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>(VkPhysicalDeviceRayTracingPipelinePropertiesKHR&, const AllPropertiesBlobs&) {}
  template<> void initPropertyFromBlob<VkPhysicalDevicePortabilitySubsetPropertiesKHR>(VkPhysicalDevicePortabilitySubsetPropertiesKHR&, const AllPropertiesBlobs&) {}
- template<> void initPropertyFromBlob<VkPhysicalDeviceRayTracingPropertiesKHR>(VkPhysicalDeviceRayTracingPropertiesKHR&, const AllPropertiesBlobs&) {}
  
  
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 40}; }
- 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, 39}; }
- 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, 38}; }
- 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, 37}; }
- 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, 36}; }
- 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, 35}; }
- 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, 34}; }
- 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, 33}; }
- 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, 32}; }
- 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, 31}; }
- 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, 30}; }
- 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, 29}; }
- 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, 28}; }
- 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, 27}; }
 -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, 40}; }
 -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, 39}; }
 -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, 38}; }
 -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, 37}; }
 -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, 36}; }
 -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, 35}; }
 -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, 34}; }
 -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, 33}; }
 -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, 32}; }
 -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, 31}; }
 -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, 30}; }
 -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, 29}; }
 -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, 28}; }
 -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, 27}; }
++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, 42}; }
++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, 41}; }
++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, 40}; }
++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, 39}; }
++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, 38}; }
++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, 37}; }
++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, 36}; }
++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, 35}; }
++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, 34}; }
++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, 33}; }
++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, 32}; }
++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, 31}; }
++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, 30}; }
++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, 29}; }
++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, 28}; }
++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, 27}; }
  template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceIDProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, DECL_ID_EXTENSION_NAME, 0, 26}; }
  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, 25}; }
  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, 24}; }
@@@ -247,7 -248,6 +254,8 @@@ static const PropertyStructCreationDat
        { 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>, DECL_ID_EXTENSION_NAME, 0 },
        { 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 },
@@@ -14,7 -15,6 +15,8 @@@ const vk::VkPhysicalDeviceExternalMemor
  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;
@@@ -14,7 -15,6 +15,8 @@@ const vk::VkPhysicalDeviceExternalMemor
  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();                    }
@@@ -14,7 -15,6 +15,8 @@@ const VkPhysicalDeviceExternalMemoryHos
  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>();                             }
@@@ -801,6 -800,6 +809,10 @@@ void getInstanceExtensionFunctions (deU
        {
                return;
        }
++      if (extName == "VK_NV_fragment_shading_rate_enums")
++      {
++              return;
++      }
        if (extName == "VK_EXT_fragment_density_map2")
        {
                return;
        {
                return;
        }
-       if (extName == "VK_KHR_android_surface")
 -      if (extName == "VK_KHR_ray_tracing_pipeline")
++      if (extName == "VK_KHR_acceleration_structure")
        {
-               functions.push_back("vkCreateAndroidSurfaceKHR");
                return;
        }
-       if (extName == "VK_ANDROID_external_memory_android_hardware_buffer")
 -      if (extName == "VK_KHR_ray_query")
++      if (extName == "VK_KHR_ray_tracing_pipeline")
        {
                return;
        }
-       if (extName == "VK_KHR_portability_subset")
 -      if (extName == "VK_EXT_4444_formats")
++      if (extName == "VK_KHR_ray_query")
        {
                return;
        }
@@@ -1848,6 -1848,6 +1870,11 @@@ void getDeviceExtensionFunctions (deUin
        {
                return;
        }
++      if (extName == "VK_NV_fragment_shading_rate_enums")
++      {
++              functions.push_back("vkCmdSetFragmentShadingRateEnumNV");
++              return;
++      }
        if (extName == "VK_EXT_fragment_density_map2")
        {
                return;
        {
                return;
        }
-       if (extName == "VK_KHR_android_surface")
 +      if (extName == "VK_EXT_4444_formats")
 +      {
 +              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_ANDROID_external_memory_android_hardware_buffer")
+       if (extName == "VK_KHR_ray_tracing_pipeline")
        {
-               functions.push_back("vkGetAndroidHardwareBufferPropertiesANDROID");
-               functions.push_back("vkGetMemoryAndroidHardwareBufferANDROID");
+               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_portability_subset")
+       if (extName == "VK_KHR_ray_query")
        {
                return;
        }
-       if (extName == "VK_KHR_deferred_host_operations")
 -      if (extName == "VK_EXT_4444_formats")
 -      {
 -              return;
 -      }
+       if (extName == "VK_KHR_android_surface")
        {
-               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_library")
+       if (extName == "VK_ANDROID_external_memory_android_hardware_buffer")
        {
+               functions.push_back("vkGetAndroidHardwareBufferPropertiesANDROID");
+               functions.push_back("vkGetMemoryAndroidHardwareBufferANDROID");
                return;
        }
-       if (extName == "VK_KHR_ray_tracing")
+       if (extName == "VK_KHR_portability_subset")
        {
-               functions.push_back("vkCreateAccelerationStructureKHR");
-               functions.push_back("vkGetAccelerationStructureMemoryRequirementsKHR");
-               functions.push_back("vkCmdBuildAccelerationStructureKHR");
-               functions.push_back("vkCmdBuildAccelerationStructureIndirectKHR");
-               functions.push_back("vkBuildAccelerationStructureKHR");
-               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("vkCmdTraceRaysKHR");
-               functions.push_back("vkCreateRayTracingPipelinesKHR");
-               functions.push_back("vkGetAccelerationStructureDeviceAddressKHR");
-               functions.push_back("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
-               functions.push_back("vkCmdTraceRaysIndirectKHR");
-               functions.push_back("vkGetDeviceAccelerationStructureCompatibilityKHR");
                return;
        }
        if (extName == "VK_FUCHSIA_imagepipe_surface")
        "VK_EXT_extended_dynamic_state",
        "VK_NV_device_generated_commands",
        "VK_EXT_private_data",
++      "VK_NV_fragment_shading_rate_enums",
+       "VK_KHR_acceleration_structure",
+       "VK_KHR_ray_tracing_pipeline",
        "VK_ANDROID_external_memory_android_hardware_buffer",
-       "VK_KHR_deferred_host_operations",
-       "VK_KHR_ray_tracing",
        "VK_KHR_external_memory_win32",
        "VK_KHR_external_semaphore_win32",
        "VK_KHR_external_fence_win32",
@@@ -388,22 -388,14 +390,15 @@@ typedef VKAPI_ATTR VkResult                             (VKAPI_C
  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 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* 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 void                                       (VKAPI_CALL* CmdSetFragmentShadingRateEnumNVFunc)                                                                       (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
  typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateAccelerationStructureKHRFunc)                                                                        (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetAccelerationStructureMemoryRequirementsKHRFunc)                                         (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBuildAccelerationStructureKHRFunc)                                                                      (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBuildAccelerationStructureIndirectKHRFunc)                                                      (VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, deUint32 indirectStride);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BuildAccelerationStructureKHRFunc)                                                                         (VkDevice device, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CopyAccelerationStructureKHRFunc)                                                                          (VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CopyAccelerationStructureToMemoryKHRFunc)                                                          (VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CopyMemoryToAccelerationStructureKHRFunc)                                                          (VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
+ 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);
@@@ -2001,6 -1976,6 +2006,21 @@@ template<> VkStructureType getStructure
        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<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT> (void)
  {
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
@@@ -2021,154 -1991,159 +2041,159 @@@ template<> VkStructureType getStructure
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT;
  }
  
- template<> VkStructureType getStructureType<VkAndroidSurfaceCreateInfoKHR> (void)
 +template<> VkStructureType getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
 +}
 +
+ template<> VkStructureType getStructureType<VkAccelerationStructureGeometryTrianglesDataKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAndroidHardwareBufferUsageANDROID> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureGeometryAabbsDataKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAndroidHardwareBufferPropertiesANDROID> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureGeometryInstancesDataKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAndroidHardwareBufferFormatPropertiesANDROID> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureGeometryKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
  }
  
- template<> VkStructureType getStructureType<VkImportAndroidHardwareBufferInfoANDROID> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureBuildGeometryInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkMemoryGetAndroidHardwareBufferInfoANDROID> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureCreateInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkExternalFormatANDROID> (void)
+ template<> VkStructureType getStructureType<VkWriteDescriptorSetAccelerationStructureKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;
+       return VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
  }
  
- template<> VkStructureType getStructureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
  }
  
- template<> VkStructureType getStructureType<VkPhysicalDevicePortabilitySubsetPropertiesKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDeviceAccelerationStructurePropertiesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
  }
  
- template<> VkStructureType getStructureType<VkDeferredOperationInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureDeviceAddressInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkPipelineLibraryCreateInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureVersionInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkRayTracingShaderGroupCreateInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkCopyAccelerationStructureToMemoryInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkRayTracingPipelineInterfaceCreateInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkCopyMemoryToAccelerationStructureInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkRayTracingPipelineCreateInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkCopyAccelerationStructureInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureGeometryTrianglesDataKHR> (void)
+ template<> VkStructureType getStructureType<VkAccelerationStructureBuildSizesInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
+       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureGeometryAabbsDataKHR> (void)
+ template<> VkStructureType getStructureType<VkRayTracingShaderGroupCreateInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
+       return VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureGeometryInstancesDataKHR> (void)
+ template<> VkStructureType getStructureType<VkRayTracingPipelineInterfaceCreateInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
+       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureGeometryKHR> (void)
+ template<> VkStructureType getStructureType<VkRayTracingPipelineCreateInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
+       return VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureBuildGeometryInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureCreateGeometryTypeInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPipelinePropertiesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureCreateInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureMemoryRequirementsInfoKHR> (void)
 -template<> VkStructureType getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT> (void)
 -{
 -      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
 -}
 -
+ template<> VkStructureType getStructureType<VkAndroidSurfaceCreateInfoKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
  }
  
- template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingFeaturesKHR> (void)
+ template<> VkStructureType getStructureType<VkAndroidHardwareBufferUsageANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkPhysicalDeviceRayTracingPropertiesKHR> (void)
+ template<> VkStructureType getStructureType<VkAndroidHardwareBufferPropertiesANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureDeviceAddressInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkAndroidHardwareBufferFormatPropertiesANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkAccelerationStructureVersionKHR> (void)
+ template<> VkStructureType getStructureType<VkImportAndroidHardwareBufferInfoANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR;
+       return VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkCopyAccelerationStructureToMemoryInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkMemoryGetAndroidHardwareBufferInfoANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
+       return VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkCopyMemoryToAccelerationStructureInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkExternalFormatANDROID> (void)
  {
-       return VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;
  }
  
- template<> VkStructureType getStructureType<VkCopyAccelerationStructureInfoKHR> (void)
+ template<> VkStructureType getStructureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR> (void)
  {
-       return VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR;
+       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<VkImagePipeSurfaceCreateInfoFUCHSIA> (void)
@@@ -227,7 -227,11 +227,12 @@@ m_vk.importFenceFdKHR                                                                    = (Import
  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.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");
@@@ -340,18 -341,11 +342,12 @@@ m_vk.createPrivateDataSlotEXT                                                   = (
  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.getAndroidHardwareBufferPropertiesANDROID                        = (GetAndroidHardwareBufferPropertiesANDROIDFunc)               GET_PROC_ADDR("vkGetAndroidHardwareBufferPropertiesANDROID");
- m_vk.getMemoryAndroidHardwareBufferANDROID                            = (GetMemoryAndroidHardwareBufferANDROIDFunc)                   GET_PROC_ADDR("vkGetMemoryAndroidHardwareBufferANDROID");
- 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.cmdSetFragmentShadingRateEnumNV                                  = (CmdSetFragmentShadingRateEnumNVFunc)                                 GET_PROC_ADDR("vkCmdSetFragmentShadingRateEnumNV");
  m_vk.createAccelerationStructureKHR                                           = (CreateAccelerationStructureKHRFunc)                                  GET_PROC_ADDR("vkCreateAccelerationStructureKHR");
- m_vk.getAccelerationStructureMemoryRequirementsKHR            = (GetAccelerationStructureMemoryRequirementsKHRFunc)   GET_PROC_ADDR("vkGetAccelerationStructureMemoryRequirementsKHR");
- m_vk.cmdBuildAccelerationStructureKHR                                 = (CmdBuildAccelerationStructureKHRFunc)                                GET_PROC_ADDR("vkCmdBuildAccelerationStructureKHR");
- m_vk.cmdBuildAccelerationStructureIndirectKHR                 = (CmdBuildAccelerationStructureIndirectKHRFunc)                GET_PROC_ADDR("vkCmdBuildAccelerationStructureIndirectKHR");
- m_vk.buildAccelerationStructureKHR                                            = (BuildAccelerationStructureKHRFunc)                                   GET_PROC_ADDR("vkBuildAccelerationStructureKHR");
+ 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");
@@@ -1638,21 -1638,27 +1638,42 @@@ VKAPI_ATTR VkResult VKAPI_CALL getDispl
        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 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);
@@@ -2541,43 -2529,7 +2544,14 @@@ VKAPI_ATTR void VKAPI_CALL getPrivateDa
        DE_UNREF(pData);
  }
  
- 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 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)
++VKAPI_ATTR void VKAPI_CALL cmdSetFragmentShadingRateEnumNV (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
 +{
-       DE_UNREF(device);
-       DE_UNREF(operation);
-       return VK_SUCCESS;
- }
- VKAPI_ATTR void VKAPI_CALL getAccelerationStructureMemoryRequirementsKHR (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements)
- {
-       DE_UNREF(device);
-       DE_UNREF(pInfo);
-       DE_UNREF(pMemoryRequirements);
++      DE_UNREF(commandBuffer);
++      DE_UNREF(shadingRate);
++      DE_UNREF(combinerOps);
 +}
 +
- VKAPI_ATTR void VKAPI_CALL cmdBuildAccelerationStructureKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos)
+ VKAPI_ATTR void VKAPI_CALL cmdBuildAccelerationStructuresKHR (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
  {
        DE_UNREF(commandBuffer);
        DE_UNREF(infoCount);
@@@ -3254,18 -3252,11 +3276,12 @@@ static const tcu::StaticFunctionLibrary
        VK_NULL_FUNC_ENTRY(vkDestroyPrivateDataSlotEXT,                                                 destroyPrivateDataSlotEXT),
        VK_NULL_FUNC_ENTRY(vkSetPrivateDataEXT,                                                                 setPrivateDataEXT),
        VK_NULL_FUNC_ENTRY(vkGetPrivateDataEXT,                                                                 getPrivateDataEXT),
-       VK_NULL_FUNC_ENTRY(vkGetAndroidHardwareBufferPropertiesANDROID,                 getAndroidHardwareBufferPropertiesANDROID),
-       VK_NULL_FUNC_ENTRY(vkGetMemoryAndroidHardwareBufferANDROID,                             getMemoryAndroidHardwareBufferANDROID),
-       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(vkCmdSetFragmentShadingRateEnumNV,                                   cmdSetFragmentShadingRateEnumNV),
        VK_NULL_FUNC_ENTRY(vkCreateAccelerationStructureKHR,                                    createAccelerationStructureKHR),
-       VK_NULL_FUNC_ENTRY(vkGetAccelerationStructureMemoryRequirementsKHR,             getAccelerationStructureMemoryRequirementsKHR),
-       VK_NULL_FUNC_ENTRY(vkCmdBuildAccelerationStructureKHR,                                  cmdBuildAccelerationStructureKHR),
-       VK_NULL_FUNC_ENTRY(vkCmdBuildAccelerationStructureIndirectKHR,                  cmdBuildAccelerationStructureIndirectKHR),
-       VK_NULL_FUNC_ENTRY(vkBuildAccelerationStructureKHR,                                             buildAccelerationStructureKHR),
+       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),
@@@ -91,101 -90,106 +91,111 @@@ const char*     getCoverageReductionModeNVN
  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*   getBuildAccelerationStructureModeKHRName                                (VkBuildAccelerationStructureModeKHR value);
  const char*   getAccelerationStructureBuildTypeKHRName                                (VkAccelerationStructureBuildTypeKHR value);
+ const char*   getAccelerationStructureCompatibilityKHRName                    (VkAccelerationStructureCompatibilityKHR value);
+ const char*   getShaderGroupShaderKHRName                                                             (VkShaderGroupShaderKHR 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<VkVendorId>                                                                          getVendorIdStr                                                                                  (VkVendorId value)                                                                                      { return tcu::Format::Enum<VkVendorId>(getVendorIdName, value);                                                                                                                                                         }
- inline tcu::Format::Enum<VkPipelineCacheHeaderVersion>                                                getPipelineCacheHeaderVersionStr                                                (VkPipelineCacheHeaderVersion value)                                            { return tcu::Format::Enum<VkPipelineCacheHeaderVersion>(getPipelineCacheHeaderVersionName, value);                                                                                     }
- inline tcu::Format::Enum<VkSystemAllocationScope>                                                     getSystemAllocationScopeStr                                                             (VkSystemAllocationScope value)                                                         { return tcu::Format::Enum<VkSystemAllocationScope>(getSystemAllocationScopeName, value);                                                                                                       }
- inline tcu::Format::Enum<VkInternalAllocationType>                                                    getInternalAllocationTypeStr                                                    (VkInternalAllocationType value)                                                        { return tcu::Format::Enum<VkInternalAllocationType>(getInternalAllocationTypeName, value);                                                                                                     }
- inline tcu::Format::Enum<VkFormat>                                                                                    getFormatStr                                                                                    (VkFormat value)                                                                                        { return tcu::Format::Enum<VkFormat>(getFormatName, value);                                                                                                                                                                     }
- inline tcu::Format::Enum<VkImageTiling>                                                                               getImageTilingStr                                                                               (VkImageTiling value)                                                                           { return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);                                                                                                                                           }
- inline tcu::Format::Enum<VkImageType>                                                                         getImageTypeStr                                                                                 (VkImageType value)                                                                                     { return tcu::Format::Enum<VkImageType>(getImageTypeName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkPhysicalDeviceType>                                                                getPhysicalDeviceTypeStr                                                                (VkPhysicalDeviceType value)                                                            { return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);                                                                                                                     }
- inline tcu::Format::Enum<VkQueryType>                                                                         getQueryTypeStr                                                                                 (VkQueryType value)                                                                                     { return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkSharingMode>                                                                               getSharingModeStr                                                                               (VkSharingMode value)                                                                           { return tcu::Format::Enum<VkSharingMode>(getSharingModeName, value);                                                                                                                                           }
- inline tcu::Format::Enum<VkComponentSwizzle>                                                          getComponentSwizzleStr                                                                  (VkComponentSwizzle value)                                                                      { return tcu::Format::Enum<VkComponentSwizzle>(getComponentSwizzleName, value);                                                                                                                         }
- inline tcu::Format::Enum<VkImageViewType>                                                                     getImageViewTypeStr                                                                             (VkImageViewType value)                                                                         { return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);                                                                                                                                       }
- inline tcu::Format::Enum<VkBlendFactor>                                                                               getBlendFactorStr                                                                               (VkBlendFactor value)                                                                           { return tcu::Format::Enum<VkBlendFactor>(getBlendFactorName, value);                                                                                                                                           }
- inline tcu::Format::Enum<VkBlendOp>                                                                                   getBlendOpStr                                                                                   (VkBlendOp value)                                                                                       { return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);                                                                                                                                                           }
- inline tcu::Format::Enum<VkCompareOp>                                                                         getCompareOpStr                                                                                 (VkCompareOp value)                                                                                     { return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkDynamicState>                                                                      getDynamicStateStr                                                                              (VkDynamicState value)                                                                          { return tcu::Format::Enum<VkDynamicState>(getDynamicStateName, value);                                                                                                                                         }
- inline tcu::Format::Enum<VkFrontFace>                                                                         getFrontFaceStr                                                                                 (VkFrontFace value)                                                                                     { return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkVertexInputRate>                                                                   getVertexInputRateStr                                                                   (VkVertexInputRate value)                                                                       { return tcu::Format::Enum<VkVertexInputRate>(getVertexInputRateName, value);                                                                                                                           }
- inline tcu::Format::Enum<VkPrimitiveTopology>                                                         getPrimitiveTopologyStr                                                                 (VkPrimitiveTopology value)                                                                     { return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);                                                                                                                       }
- inline tcu::Format::Enum<VkPolygonMode>                                                                               getPolygonModeStr                                                                               (VkPolygonMode value)                                                                           { return tcu::Format::Enum<VkPolygonMode>(getPolygonModeName, value);                                                                                                                                           }
- inline tcu::Format::Enum<VkStencilOp>                                                                         getStencilOpStr                                                                                 (VkStencilOp value)                                                                                     { return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkLogicOp>                                                                                   getLogicOpStr                                                                                   (VkLogicOp value)                                                                                       { return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);                                                                                                                                                           }
- inline tcu::Format::Enum<VkBorderColor>                                                                               getBorderColorStr                                                                               (VkBorderColor value)                                                                           { return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);                                                                                                                                           }
- inline tcu::Format::Enum<VkFilter>                                                                                    getFilterStr                                                                                    (VkFilter value)                                                                                        { return tcu::Format::Enum<VkFilter>(getFilterName, value);                                                                                                                                                                     }
- inline tcu::Format::Enum<VkSamplerAddressMode>                                                                getSamplerAddressModeStr                                                                (VkSamplerAddressMode value)                                                            { return tcu::Format::Enum<VkSamplerAddressMode>(getSamplerAddressModeName, value);                                                                                                                     }
- inline tcu::Format::Enum<VkSamplerMipmapMode>                                                         getSamplerMipmapModeStr                                                                 (VkSamplerMipmapMode value)                                                                     { return tcu::Format::Enum<VkSamplerMipmapMode>(getSamplerMipmapModeName, value);                                                                                                                       }
- inline tcu::Format::Enum<VkDescriptorType>                                                                    getDescriptorTypeStr                                                                    (VkDescriptorType value)                                                                        { return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);                                                                                                                                     }
- inline tcu::Format::Enum<VkAttachmentLoadOp>                                                          getAttachmentLoadOpStr                                                                  (VkAttachmentLoadOp value)                                                                      { return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);                                                                                                                         }
- inline tcu::Format::Enum<VkAttachmentStoreOp>                                                         getAttachmentStoreOpStr                                                                 (VkAttachmentStoreOp value)                                                                     { return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);                                                                                                                       }
- inline tcu::Format::Enum<VkPipelineBindPoint>                                                         getPipelineBindPointStr                                                                 (VkPipelineBindPoint value)                                                                     { return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);                                                                                                                       }
- inline tcu::Format::Enum<VkCommandBufferLevel>                                                                getCommandBufferLevelStr                                                                (VkCommandBufferLevel value)                                                            { return tcu::Format::Enum<VkCommandBufferLevel>(getCommandBufferLevelName, value);                                                                                                                     }
- inline tcu::Format::Enum<VkIndexType>                                                                         getIndexTypeStr                                                                                 (VkIndexType value)                                                                                     { return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);                                                                                                                                                       }
- inline tcu::Format::Enum<VkSubpassContents>                                                                   getSubpassContentsStr                                                                   (VkSubpassContents value)                                                                       { return tcu::Format::Enum<VkSubpassContents>(getSubpassContentsName, value);                                                                                                                           }
- inline 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<VkAccelerationStructureMemoryRequirementsTypeKHR>    getAccelerationStructureMemoryRequirementsTypeKHRStr    (VkAccelerationStructureMemoryRequirementsTypeKHR value)        { return tcu::Format::Enum<VkAccelerationStructureMemoryRequirementsTypeKHR>(getAccelerationStructureMemoryRequirementsTypeKHRName, 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<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<VkAccelerationStructureBuildTypeKHR>                         getAccelerationStructureBuildTypeKHRStr                                 (VkAccelerationStructureBuildTypeKHR value)                                     { return tcu::Format::Enum<VkAccelerationStructureBuildTypeKHR>(getAccelerationStructureBuildTypeKHRName, value);                                                       }
- inline tcu::Format::Enum<VkFullScreenExclusiveEXT>                                                    getFullScreenExclusiveEXTStr                                                    (VkFullScreenExclusiveEXT value)                                                        { return tcu::Format::Enum<VkFullScreenExclusiveEXT>(getFullScreenExclusiveEXTName, value);                                                                                                     }
+ inline tcu::Format::Enum<VkResult>                                                                                    getResultStr                                                                            (VkResult value)                                                                                { return tcu::Format::Enum<VkResult>(getResultName, value);                                                                                                                                                                     }
+ inline tcu::Format::Enum<VkStructureType>                                                                     getStructureTypeStr                                                                     (VkStructureType value)                                                                 { return tcu::Format::Enum<VkStructureType>(getStructureTypeName, value);                                                                                                                                       }
+ inline tcu::Format::Enum<VkImageLayout>                                                                               getImageLayoutStr                                                                       (VkImageLayout value)                                                                   { return tcu::Format::Enum<VkImageLayout>(getImageLayoutName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkObjectType>                                                                                getObjectTypeStr                                                                        (VkObjectType value)                                                                    { return tcu::Format::Enum<VkObjectType>(getObjectTypeName, value);                                                                                                                                                     }
+ inline tcu::Format::Enum<VkVendorId>                                                                          getVendorIdStr                                                                          (VkVendorId value)                                                                              { return tcu::Format::Enum<VkVendorId>(getVendorIdName, value);                                                                                                                                                         }
+ inline tcu::Format::Enum<VkPipelineCacheHeaderVersion>                                                getPipelineCacheHeaderVersionStr                                        (VkPipelineCacheHeaderVersion value)                                    { return tcu::Format::Enum<VkPipelineCacheHeaderVersion>(getPipelineCacheHeaderVersionName, value);                                                                                     }
+ inline tcu::Format::Enum<VkSystemAllocationScope>                                                     getSystemAllocationScopeStr                                                     (VkSystemAllocationScope value)                                                 { return tcu::Format::Enum<VkSystemAllocationScope>(getSystemAllocationScopeName, value);                                                                                                       }
+ inline tcu::Format::Enum<VkInternalAllocationType>                                                    getInternalAllocationTypeStr                                            (VkInternalAllocationType value)                                                { return tcu::Format::Enum<VkInternalAllocationType>(getInternalAllocationTypeName, value);                                                                                                     }
+ inline tcu::Format::Enum<VkFormat>                                                                                    getFormatStr                                                                            (VkFormat value)                                                                                { return tcu::Format::Enum<VkFormat>(getFormatName, value);                                                                                                                                                                     }
+ inline tcu::Format::Enum<VkImageTiling>                                                                               getImageTilingStr                                                                       (VkImageTiling value)                                                                   { return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkImageType>                                                                         getImageTypeStr                                                                         (VkImageType value)                                                                             { return tcu::Format::Enum<VkImageType>(getImageTypeName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkPhysicalDeviceType>                                                                getPhysicalDeviceTypeStr                                                        (VkPhysicalDeviceType value)                                                    { return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);                                                                                                                     }
+ inline tcu::Format::Enum<VkQueryType>                                                                         getQueryTypeStr                                                                         (VkQueryType value)                                                                             { return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkSharingMode>                                                                               getSharingModeStr                                                                       (VkSharingMode value)                                                                   { return tcu::Format::Enum<VkSharingMode>(getSharingModeName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkComponentSwizzle>                                                          getComponentSwizzleStr                                                          (VkComponentSwizzle value)                                                              { return tcu::Format::Enum<VkComponentSwizzle>(getComponentSwizzleName, value);                                                                                                                         }
+ inline tcu::Format::Enum<VkImageViewType>                                                                     getImageViewTypeStr                                                                     (VkImageViewType value)                                                                 { return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);                                                                                                                                       }
+ inline tcu::Format::Enum<VkBlendFactor>                                                                               getBlendFactorStr                                                                       (VkBlendFactor value)                                                                   { return tcu::Format::Enum<VkBlendFactor>(getBlendFactorName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkBlendOp>                                                                                   getBlendOpStr                                                                           (VkBlendOp value)                                                                               { return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);                                                                                                                                                           }
+ inline tcu::Format::Enum<VkCompareOp>                                                                         getCompareOpStr                                                                         (VkCompareOp value)                                                                             { return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkDynamicState>                                                                      getDynamicStateStr                                                                      (VkDynamicState value)                                                                  { return tcu::Format::Enum<VkDynamicState>(getDynamicStateName, value);                                                                                                                                         }
+ inline tcu::Format::Enum<VkFrontFace>                                                                         getFrontFaceStr                                                                         (VkFrontFace value)                                                                             { return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkVertexInputRate>                                                                   getVertexInputRateStr                                                           (VkVertexInputRate value)                                                               { return tcu::Format::Enum<VkVertexInputRate>(getVertexInputRateName, value);                                                                                                                           }
+ inline tcu::Format::Enum<VkPrimitiveTopology>                                                         getPrimitiveTopologyStr                                                         (VkPrimitiveTopology value)                                                             { return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);                                                                                                                       }
+ inline tcu::Format::Enum<VkPolygonMode>                                                                               getPolygonModeStr                                                                       (VkPolygonMode value)                                                                   { return tcu::Format::Enum<VkPolygonMode>(getPolygonModeName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkStencilOp>                                                                         getStencilOpStr                                                                         (VkStencilOp value)                                                                             { return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkLogicOp>                                                                                   getLogicOpStr                                                                           (VkLogicOp value)                                                                               { return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);                                                                                                                                                           }
+ inline tcu::Format::Enum<VkBorderColor>                                                                               getBorderColorStr                                                                       (VkBorderColor value)                                                                   { return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);                                                                                                                                           }
+ inline tcu::Format::Enum<VkFilter>                                                                                    getFilterStr                                                                            (VkFilter value)                                                                                { return tcu::Format::Enum<VkFilter>(getFilterName, value);                                                                                                                                                                     }
+ inline tcu::Format::Enum<VkSamplerAddressMode>                                                                getSamplerAddressModeStr                                                        (VkSamplerAddressMode value)                                                    { return tcu::Format::Enum<VkSamplerAddressMode>(getSamplerAddressModeName, value);                                                                                                                     }
+ inline tcu::Format::Enum<VkSamplerMipmapMode>                                                         getSamplerMipmapModeStr                                                         (VkSamplerMipmapMode value)                                                             { return tcu::Format::Enum<VkSamplerMipmapMode>(getSamplerMipmapModeName, value);                                                                                                                       }
+ inline tcu::Format::Enum<VkDescriptorType>                                                                    getDescriptorTypeStr                                                            (VkDescriptorType value)                                                                { return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);                                                                                                                                     }
+ inline tcu::Format::Enum<VkAttachmentLoadOp>                                                          getAttachmentLoadOpStr                                                          (VkAttachmentLoadOp value)                                                              { return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);                                                                                                                         }
+ inline tcu::Format::Enum<VkAttachmentStoreOp>                                                         getAttachmentStoreOpStr                                                         (VkAttachmentStoreOp value)                                                             { return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);                                                                                                                       }
+ inline tcu::Format::Enum<VkPipelineBindPoint>                                                         getPipelineBindPointStr                                                         (VkPipelineBindPoint value)                                                             { return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);                                                                                                                       }
+ inline tcu::Format::Enum<VkCommandBufferLevel>                                                                getCommandBufferLevelStr                                                        (VkCommandBufferLevel value)                                                    { return tcu::Format::Enum<VkCommandBufferLevel>(getCommandBufferLevelName, value);                                                                                                                     }
+ inline tcu::Format::Enum<VkIndexType>                                                                         getIndexTypeStr                                                                         (VkIndexType value)                                                                             { return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);                                                                                                                                                       }
+ inline tcu::Format::Enum<VkSubpassContents>                                                                   getSubpassContentsStr                                                           (VkSubpassContents value)                                                               { return tcu::Format::Enum<VkSubpassContents>(getSubpassContentsName, value);                                                                                                                           }
+ inline 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<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<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<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);                                                                       }
@@@ -277,7 -280,10 +287,12 @@@ inline std::ostream&     operator<<      (std::o
  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, 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, VkFullScreenExclusiveEXT value)                                                       { return s << getFullScreenExclusiveEXTStr(value);                                                      }
  
  tcu::Format::Bitfield<32>     getAccessFlagsStr                                                                                       (VkAccessFlags value);
@@@ -914,28 -916,12 +931,17 @@@ std::ostream&   operator<<      (std::ostream
  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 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 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 VkPhysicalDevicePortabilitySubsetFeaturesKHR& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value);
- std::ostream& operator<<      (std::ostream& s, const VkDeferredOperationInfoKHR& value);
- std::ostream& operator<<      (std::ostream& s, const VkPipelineLibraryCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value);
  std::ostream& operator<<      (std::ostream& s, const VkDeviceOrHostAddressKHR& value);
  std::ostream& operator<<      (std::ostream& s, const VkDeviceOrHostAddressConstKHR& value);
- std::ostream& operator<<      (std::ostream& s, const VkAccelerationStructureBuildOffsetInfoKHR& 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 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);
@@@ -954,6 -937,25 +957,24 @@@ std::ostream&    operator<<      (std::ostream
  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 VkPhysicalDevice4444FormatsFeaturesEXT& 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 VkPhysicalDevicePortabilitySubsetFeaturesKHR& value);
+ std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value);
  std::ostream& operator<<      (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value);
  std::ostream& operator<<      (std::ostream& s, const VkStreamDescriptorSurfaceCreateInfoGGP& value);
  std::ostream& operator<<      (std::ostream& s, const VkPresentFrameTokenGGP& value);
@@@ -418,8 -415,8 +415,7 @@@ const char* getStructureTypeName (VkStr
                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_MEMORY_REQUIREMENTS_INFO_KHR:                             return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR";
-               case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR:                                                              return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_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_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT:    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT";
                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_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_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_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";
@@@ -1176,37 -1174,37 +1182,38 @@@ const char* getDynamicStateName (VkDyna
  {
        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_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_MAX_ENUM:                                                 return "VK_DYNAMIC_STATE_MAX_ENUM";
-               default:                                                                                                return DE_NULL;
+               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_MAX_ENUM:                                                         return "VK_DYNAMIC_STATE_MAX_ENUM";
+               default:                                                                                                        return DE_NULL;
        }
  }
  
@@@ -2186,6 -2173,17 +2196,49 @@@ const char* getDeviceMemoryReportEventT
        }
  }
  
++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* 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)
@@@ -2444,36 -2463,35 +2521,36 @@@ tcu::Format::Bitfield<32> getPipelineSt
  {
        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_SHADING_RATE_IMAGE_BIT_NV,                               "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
 -              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_COMMAND_PREPROCESS_BIT_NV,                               "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_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"),
 +              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_RAY_TRACING_SHADER_BIT_KHR,                                      "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"),
 +              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_SHADING_RATE_IMAGE_BIT_NV,                                       "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
 +              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_COMMAND_PREPROCESS_BIT_NV,                                       "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,        "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM,                                                      "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
  }
@@@ -9972,6 -9930,6 +10073,40 @@@ std::ostream& operator<< (std::ostream
        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 VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value)
  {
        s << "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT = {\n";
@@@ -10015,24 -9963,47 +10150,58 @@@ std::ostream& operator<< (std::ostream
        return s;
  }
  
- std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
 +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 VkDeviceOrHostAddressKHR& value)
  {
-       s << "VkAndroidSurfaceCreateInfoKHR = {\n";
+       s << "VkDeviceOrHostAddressKHR = {\n";
+       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\thostAddress = " << value.hostAddress << '\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 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 << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
-       s << "\twindow = " << value.window << '\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;
  }
@@@ -10328,17 -10303,24 +10501,13 @@@ std::ostream& operator<< (std::ostream
        return s;
  }
  
- std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoKHR& value)
 -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 VkAndroidSurfaceCreateInfoKHR& value)
  {
-       s << "VkAccelerationStructureCreateInfoKHR = {\n";
+       s << "VkAndroidSurfaceCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcompactedSize = " << value.compactedSize << '\n';
-       s << "\ttype = " << value.type << '\n';
-       s << "\tflags = " << getBuildAccelerationStructureFlagsKHRStr(value.flags) << '\n';
-       s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
-       s << "\tpGeometryInfos = " << value.pGeometryInfos << '\n';
-       s << "\tdeviceAddress = " << value.deviceAddress << '\n';
+       s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\twindow = " << value.window << '\n';
        s << '}';
        return s;
  }
@@@ -4792,6 -4737,6 +4800,31 @@@ struct VkDeviceDiagnosticsConfigCreateI
        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];
++};
++
  struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
  {
        VkStructureType sType;
@@@ -4823,115 -4761,6 +4856,14 @@@ struct VkPhysicalDeviceImageRobustnessF
        VkBool32                robustImageAccess;
  };
  
- 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 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 VkDeferredOperationInfoKHR
- {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkDeferredOperationKHR  operationHandle;
- };
- struct VkPipelineLibraryCreateInfoKHR
- {
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        libraryCount;
-       const VkPipeline*       pLibraries;
- };
 +struct VkPhysicalDevice4444FormatsFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                formatA4R4G4B4;
 +      VkBool32                formatA4B4G4R4;
 +};
 +
  union VkDeviceOrHostAddressKHR
  {
        VkDeviceAddress deviceAddress;
@@@ -5168,6 -4927,193 +5030,185 @@@ struct VkCopyAccelerationStructureInfoK
        VkCopyAccelerationStructureModeKHR      mode;
  };
  
 -struct VkPhysicalDevice4444FormatsFeaturesEXT
 -{
 -      VkStructureType sType;
 -      void*                   pNext;
 -      VkBool32                formatA4R4G4B4;
 -      VkBool32                formatA4B4G4R4;
 -};
 -
+ 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 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 VkImagePipeSurfaceCreateInfoFUCHSIA
  {
        VkStructureType                                                 sType;
@@@ -171,7 -171,11 +171,12 @@@ virtual VkResult                 importFenceFdKH
  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                      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;
@@@ -284,21 -285,14 +286,15 @@@ virtual VkResult                        createPrivateDataSlo
  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 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                      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 void                          cmdSetFragmentShadingRateEnumNV                                 (VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const = 0;
  virtual VkResult                      createAccelerationStructureKHR                                  (VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) const = 0;
- virtual void                          getAccelerationStructureMemoryRequirementsKHR   (VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
- virtual void                          cmdBuildAccelerationStructureKHR                                (VkCommandBuffer commandBuffer, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const = 0;
- virtual void                          cmdBuildAccelerationStructureIndirectKHR                (VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, deUint32 indirectStride) const = 0;
- virtual VkResult                      buildAccelerationStructureKHR                                   (VkDevice device, deUint32 infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const = 0;
- virtual VkResult                      copyAccelerationStructureKHR                                    (VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo) const = 0;
- virtual VkResult                      copyAccelerationStructureToMemoryKHR                    (VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) const = 0;
- virtual VkResult                      copyMemoryToAccelerationStructureKHR                    (VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) 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;
@@@ -46,7 -46,7 +46,7 @@@ extern "C" 
  #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
  
  // Version of this file
- #define VK_HEADER_VERSION 159
 -#define VK_HEADER_VERSION 156
++#define VK_HEADER_VERSION 162
  
  // Complete version of this file
  #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
@@@ -450,8 -447,8 +447,7 @@@ typedef enum VkStructureType 
      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_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008,
-     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009,
+     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_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000,
      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
      VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
++    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_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_COPY_BUFFER_INFO_2_KHR = 1000337000,
      VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
@@@ -11267,6 -11182,6 +11289,63 @@@ typedef struct VkDeviceDiagnosticsConfi
  #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_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"
@@@ -11309,17 -11213,460 +11388,461 @@@ typedef struct VkPhysicalDeviceImageRob
  
  
  
 -#define VK_EXT_4444_formats 1
 -#define VK_EXT_4444_FORMATS_SPEC_VERSION  1
 -#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
 -typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           formatA4R4G4B4;
 -    VkBool32           formatA4B4G4R4;
 -} VkPhysicalDevice4444FormatsFeaturesEXT;
 -
 -
 +#define VK_EXT_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_KHR_acceleration_structure 1
+ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
+ #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11
+ #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_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+ } VkAccelerationStructureCreateFlagBitsKHR;
+ typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
+ typedef union VkDeviceOrHostAddressKHR {
+     VkDeviceAddress    deviceAddress;
+     void*              hostAddress;
+ } VkDeviceOrHostAddressKHR;
+ typedef union VkDeviceOrHostAddressConstKHR {
+     VkDeviceAddress    deviceAddress;
+     const void*        hostAddress;
+ } VkDeviceOrHostAddressConstKHR;
+ 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
@@@ -1957,11 -2303,12 +2302,10 @@@ tcu::TestStatus DescriptorSetRandomTest
  
                pipeline = createRayTracingPipelineNV(vk, device, DE_NULL, &pipelineCreateInfo, NULL);
  
-               const auto shaderGroupHandleSize        = static_cast<VkDeviceSize>(rayTracingProperties.shaderGroupHandleSize);
-               const auto allocSize                            = de::roundUp(shaderGroupHandleSize, properties.properties.limits.nonCoherentAtomSize);
 -              // de::roundUp() not available in this branch yet.
 -              //const auto allocSize = de::roundUp(shaderGroupHandleSize, properties.properties.limits.nonCoherentAtomSize);
 -              const auto allocSize = shaderGroupHandleSize;
++              const auto allocSize = de::roundUp(static_cast<VkDeviceSize>(shaderGroupHandleSize), properties.properties.limits.nonCoherentAtomSize);
  
-               sbtBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
-                       vk, device, allocator, makeBufferCreateInfo(allocSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_RAY_TRACING_BIT_NV), MemoryRequirement::HostVisible));
+               sbtBuffer = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vk, device, allocator,
+                       makeBufferCreateInfo(allocSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_RAY_TRACING_BIT_NV), MemoryRequirement::HostVisible));
  
                const auto&     alloc   = sbtBuffer->getAllocation();
                const auto      ptr             = reinterpret_cast<deUint32*>(alloc.getHostPtr());
@@@ -48,410 -47,6 +48,7 @@@ typedef struct VkPhysicalDevicePortabil
      uint32_t           minVertexInputBindingStrideAlignment;
  } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
  
- #define VK_KHR_deferred_host_operations 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
- #define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 3
- #define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
- typedef struct VkDeferredOperationInfoKHR {
-     VkStructureType           sType;
-     const void*               pNext;
-     VkDeferredOperationKHR    operationHandle;
- } VkDeferredOperationInfoKHR;
- 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 uint32_t (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 uint32_t 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_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;
-     uint32_t             libraryCount;
-     const VkPipeline*    pLibraries;
- } VkPipelineLibraryCreateInfoKHR;
- #define VK_KHR_ray_tracing 1
- #define VK_KHR_RAY_TRACING_SPEC_VERSION   8
- #define VK_KHR_RAY_TRACING_EXTENSION_NAME "VK_KHR_ray_tracing"
- 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 union VkDeviceOrHostAddressKHR {
-     VkDeviceAddress    deviceAddress;
-     void*              hostAddress;
- } VkDeviceOrHostAddressKHR;
- typedef union VkDeviceOrHostAddressConstKHR {
-     VkDeviceAddress    deviceAddress;
-     const void*        hostAddress;
- } VkDeviceOrHostAddressConstKHR;
- typedef struct VkAccelerationStructureBuildOffsetInfoKHR {
-     uint32_t    primitiveCount;
-     uint32_t    primitiveOffset;
-     uint32_t    firstVertex;
-     uint32_t    transformOffset;
- } VkAccelerationStructureBuildOffsetInfoKHR;
- typedef struct VkRayTracingShaderGroupCreateInfoKHR {
-     VkStructureType                   sType;
-     const void*                       pNext;
-     VkRayTracingShaderGroupTypeKHR    type;
-     uint32_t                          generalShader;
-     uint32_t                          closestHitShader;
-     uint32_t                          anyHitShader;
-     uint32_t                          intersectionShader;
-     const void*                       pShaderGroupCaptureReplayHandle;
- } VkRayTracingShaderGroupCreateInfoKHR;
- typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
-     VkStructureType    sType;
-     const void*        pNext;
-     uint32_t           maxPayloadSize;
-     uint32_t           maxAttributeSize;
-     uint32_t           maxCallableSize;
- } VkRayTracingPipelineInterfaceCreateInfoKHR;
- typedef struct VkRayTracingPipelineCreateInfoKHR {
-     VkStructureType                                      sType;
-     const void*                                          pNext;
-     VkPipelineCreateFlags                                flags;
-     uint32_t                                             stageCount;
-     const VkPipelineShaderStageCreateInfo*               pStages;
-     uint32_t                                             groupCount;
-     const VkRayTracingShaderGroupCreateInfoKHR*          pGroups;
-     uint32_t                                             maxRecursionDepth;
-     VkPipelineLibraryCreateInfoKHR                       libraries;
-     const VkRayTracingPipelineInterfaceCreateInfoKHR*    pLibraryInterface;
-     VkPipelineLayout                                     layout;
-     VkPipeline                                           basePipelineHandle;
-     int32_t                                              basePipelineIndex;
- } VkRayTracingPipelineCreateInfoKHR;
- typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
-     VkStructureType                  sType;
-     const void*                      pNext;
-     VkFormat                         vertexFormat;
-     VkDeviceOrHostAddressConstKHR    vertexData;
-     VkDeviceSize                     vertexStride;
-     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;
-     VkBool32                                            update;
-     VkAccelerationStructureKHR                          srcAccelerationStructure;
-     VkAccelerationStructureKHR                          dstAccelerationStructure;
-     VkBool32                                            geometryArrayOfPointers;
-     uint32_t                                            geometryCount;
-     const VkAccelerationStructureGeometryKHR* const*    ppGeometries;
-     VkDeviceOrHostAddressKHR                            scratchData;
- } VkAccelerationStructureBuildGeometryInfoKHR;
- typedef struct VkAccelerationStructureCreateGeometryTypeInfoKHR {
-     VkStructureType      sType;
-     const void*          pNext;
-     VkGeometryTypeKHR    geometryType;
-     uint32_t             maxPrimitiveCount;
-     VkIndexType          indexType;
-     uint32_t             maxVertexCount;
-     VkFormat             vertexFormat;
-     VkBool32             allowsTransforms;
- } VkAccelerationStructureCreateGeometryTypeInfoKHR;
- typedef struct VkAccelerationStructureCreateInfoKHR {
-     VkStructureType                                            sType;
-     const void*                                                pNext;
-     VkDeviceSize                                               compactedSize;
-     VkAccelerationStructureTypeKHR                             type;
-     VkBuildAccelerationStructureFlagsKHR                       flags;
-     uint32_t                                                   maxGeometryCount;
-     const VkAccelerationStructureCreateGeometryTypeInfoKHR*    pGeometryInfos;
-     VkDeviceAddress                                            deviceAddress;
- } VkAccelerationStructureCreateInfoKHR;
- typedef struct VkAccelerationStructureMemoryRequirementsInfoKHR {
-     VkStructureType                                     sType;
-     const void*                                         pNext;
-     VkAccelerationStructureMemoryRequirementsTypeKHR    type;
-     VkAccelerationStructureBuildTypeKHR                 buildType;
-     VkAccelerationStructureKHR                          accelerationStructure;
- } VkAccelerationStructureMemoryRequirementsInfoKHR;
- typedef struct VkPhysicalDeviceRayTracingFeaturesKHR {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           rayTracing;
-     VkBool32           rayTracingShaderGroupHandleCaptureReplay;
-     VkBool32           rayTracingShaderGroupHandleCaptureReplayMixed;
-     VkBool32           rayTracingAccelerationStructureCaptureReplay;
-     VkBool32           rayTracingIndirectTraceRays;
-     VkBool32           rayTracingIndirectAccelerationStructureBuild;
-     VkBool32           rayTracingHostAccelerationStructureCommands;
-     VkBool32           rayQuery;
-     VkBool32           rayTracingPrimitiveCulling;
- } VkPhysicalDeviceRayTracingFeaturesKHR;
- typedef struct VkPhysicalDeviceRayTracingPropertiesKHR {
-     VkStructureType    sType;
-     void*              pNext;
-     uint32_t           shaderGroupHandleSize;
-     uint32_t           maxRecursionDepth;
-     uint32_t           maxShaderGroupStride;
-     uint32_t           shaderGroupBaseAlignment;
-     uint64_t           maxGeometryCount;
-     uint64_t           maxInstanceCount;
-     uint64_t           maxPrimitiveCount;
-     uint32_t           maxDescriptorSetAccelerationStructures;
-     uint32_t           shaderGroupHandleCaptureReplaySize;
- } VkPhysicalDeviceRayTracingPropertiesKHR;
- typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
-     VkStructureType               sType;
-     const void*                   pNext;
-     VkAccelerationStructureKHR    accelerationStructure;
- } VkAccelerationStructureDeviceAddressInfoKHR;
- typedef struct VkAccelerationStructureVersionKHR {
-     VkStructureType    sType;
-     const void*        pNext;
-     const uint8_t*     versionData;
- } VkAccelerationStructureVersionKHR;
- typedef struct VkStridedBufferRegionKHR {
-     VkBuffer        buffer;
-     VkDeviceSize    offset;
-     VkDeviceSize    stride;
-     VkDeviceSize    size;
- } VkStridedBufferRegionKHR;
- typedef struct VkTraceRaysIndirectCommandKHR {
-     uint32_t    width;
-     uint32_t    height;
-     uint32_t    depth;
- } VkTraceRaysIndirectCommandKHR;
- 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 VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice                                           device, const VkAccelerationStructureCreateInfoKHR*        pCreateInfo, const VkAllocationCallbacks*       pAllocator, VkAccelerationStructureKHR*                        pAccelerationStructure);
- typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsKHR)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureKHR)(VkCommandBuffer                                    commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureIndirectKHR)(VkCommandBuffer                  commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer                                           indirectBuffer, VkDeviceSize                                       indirectOffset, uint32_t                                           indirectStride);
- typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructureKHR)(VkDevice                                           device, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo);
- typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
- typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
- typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType  queryType, size_t       dataSize, void* pData, size_t 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 void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
- typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
- typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
- typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
- typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, VkBuffer buffer, VkDeviceSize offset);
- typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionKHR* version);
- #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 vkGetAccelerationStructureMemoryRequirementsKHR(
-     VkDevice                                    device,
-     const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo,
-     VkMemoryRequirements2*                      pMemoryRequirements);
- VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureKHR(
-     VkCommandBuffer                             commandBuffer,
-     uint32_t                                    infoCount,
-     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
-     const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureIndirectKHR(
-     VkCommandBuffer                             commandBuffer,
-     const VkAccelerationStructureBuildGeometryInfoKHR* pInfo,
-     VkBuffer                                    indirectBuffer,
-     VkDeviceSize                                indirectOffset,
-     uint32_t                                    indirectStride);
- VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructureKHR(
-     VkDevice                                    device,
-     uint32_t                                    infoCount,
-     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
-     const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
- VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
-     VkDevice                                    device,
-     const VkCopyAccelerationStructureInfoKHR*   pInfo);
- VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
-     VkDevice                                    device,
-     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
- VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
-     VkDevice                                    device,
-     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
- VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
-     VkDevice                                    device,
-     uint32_t                                    accelerationStructureCount,
-     const VkAccelerationStructureKHR*           pAccelerationStructures,
-     VkQueryType                                 queryType,
-     size_t                                      dataSize,
-     void*                                       pData,
-     size_t                                      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 void VKAPI_CALL vkCmdTraceRaysKHR(
-     VkCommandBuffer                             commandBuffer,
-     const VkStridedBufferRegionKHR*             pRaygenShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pMissShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pHitShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pCallableShaderBindingTable,
-     uint32_t                                    width,
-     uint32_t                                    height,
-     uint32_t                                    depth);
- VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
-     VkDevice                                    device,
-     VkPipelineCache                             pipelineCache,
-     uint32_t                                    createInfoCount,
-     const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
-     const VkAllocationCallbacks*                pAllocator,
-     VkPipeline*                                 pPipelines);
- VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
-     VkDevice                                    device,
-     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
- VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
-     VkDevice                                    device,
-     VkPipeline                                  pipeline,
-     uint32_t                                    firstGroup,
-     uint32_t                                    groupCount,
-     size_t                                      dataSize,
-     void*                                       pData);
- VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
-     VkCommandBuffer                             commandBuffer,
-     const VkStridedBufferRegionKHR*             pRaygenShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pMissShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pHitShaderBindingTable,
-     const VkStridedBufferRegionKHR*             pCallableShaderBindingTable,
-     VkBuffer                                    buffer,
-     VkDeviceSize                                offset);
- VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
-     VkDevice                                    device,
-     const VkAccelerationStructureVersionKHR*    version);
- #endif
 +
  #ifdef __cplusplus
  }
  #endif
@@@ -43,7 -43,7 +43,7 @@@ extern "C" 
  #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
  
  // Version of this file
- #define VK_HEADER_VERSION 159
 -#define VK_HEADER_VERSION 156
++#define VK_HEADER_VERSION 162
  
  // Complete version of this file
  #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
@@@ -447,8 -444,8 +444,7 @@@ typedef enum VkStructureType 
      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_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008,
-     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009,
+     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_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000,
      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
      VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
++    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_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_COPY_BUFFER_INFO_2_KHR = 1000337000,
      VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
@@@ -11264,6 -11179,6 +11286,63 @@@ typedef struct VkDeviceDiagnosticsConfi
  #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_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"
@@@ -11306,17 -11210,460 +11385,461 @@@ typedef struct VkPhysicalDeviceImageRob
  
  
  
 -#define VK_EXT_4444_formats 1
 -#define VK_EXT_4444_FORMATS_SPEC_VERSION  1
 -#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
 -typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
 -    VkStructureType    sType;
 -    void*              pNext;
 -    VkBool32           formatA4R4G4B4;
 -    VkBool32           formatA4B4G4R4;
 -} VkPhysicalDevice4444FormatsFeaturesEXT;
 -
 -
 +#define VK_EXT_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_KHR_acceleration_structure 1
+ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
+ #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11
+ #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_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+ } VkAccelerationStructureCreateFlagBitsKHR;
+ typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
+ typedef union VkDeviceOrHostAddressKHR {
+     VkDeviceAddress    deviceAddress;
+     void*              hostAddress;
+ } VkDeviceOrHostAddressKHR;
+ typedef union VkDeviceOrHostAddressConstKHR {
+     VkDeviceAddress    deviceAddress;
+     const void*        hostAddress;
+ } VkDeviceOrHostAddressConstKHR;
+ typedef struct VkAccelerationStructureBuildRangeInfoKHR {
+     uint32_t    primitiveCount;
+     uint32_t    primitiveOffset;
+     uint32_t    firstVertex;
+     uint32_t    transformOffset;
+ } VkAccelerationStructureBuildRangeInfoKHR;
+ typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
+     VkStructureType                  sType;
+     const void*                      pNext;
+     VkFormat                         vertexFormat;
+     VkDeviceOrHostAddressConstKHR    vertexData;
+     VkDeviceSize                     vertexStride;
+     uint32_t                         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;
+     uint32_t                                            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;
+     uint32_t                             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;
+     uint64_t           maxGeometryCount;
+     uint64_t           maxInstanceCount;
+     uint64_t           maxPrimitiveCount;
+     uint32_t           maxPerStageDescriptorAccelerationStructures;
+     uint32_t           maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
+     uint32_t           maxDescriptorSetAccelerationStructures;
+     uint32_t           maxDescriptorSetUpdateAfterBindAccelerationStructures;
+     uint32_t           minAccelerationStructureScratchOffsetAlignment;
+ } VkPhysicalDeviceAccelerationStructurePropertiesKHR;
+ typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
+     VkStructureType               sType;
+     const void*                   pNext;
+     VkAccelerationStructureKHR    accelerationStructure;
+ } VkAccelerationStructureDeviceAddressInfoKHR;
+ typedef struct VkAccelerationStructureVersionInfoKHR {
+     VkStructureType    sType;
+     const void*        pNext;
+     const uint8_t*     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, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+ typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer                  commandBuffer, uint32_t                                           infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress*             pIndirectDeviceAddresses, const uint32_t*                    pIndirectStrides, const uint32_t* const*             ppMaxPrimitiveCounts);
+ typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice                                           device, VkDeferredOperationKHR deferredOperation, uint32_t 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, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType  queryType, size_t       dataSize, void* pData, size_t 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, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t 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 uint32_t*  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,
+     uint32_t                                    infoCount,
+     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
+     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
+ VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR(
+     VkCommandBuffer                             commandBuffer,
+     uint32_t                                    infoCount,
+     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
+     const VkDeviceAddress*                      pIndirectDeviceAddresses,
+     const uint32_t*                             pIndirectStrides,
+     const uint32_t* const*                      ppMaxPrimitiveCounts);
+ VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR(
+     VkDevice                                    device,
+     VkDeferredOperationKHR                      deferredOperation,
+     uint32_t                                    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,
+     uint32_t                                    accelerationStructureCount,
+     const VkAccelerationStructureKHR*           pAccelerationStructures,
+     VkQueryType                                 queryType,
+     size_t                                      dataSize,
+     void*                                       pData,
+     size_t                                      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,
+     uint32_t                                    accelerationStructureCount,
+     const VkAccelerationStructureKHR*           pAccelerationStructures,
+     VkQueryType                                 queryType,
+     VkQueryPool                                 queryPool,
+     uint32_t                                    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 uint32_t*                             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;
+     uint32_t                          generalShader;
+     uint32_t                          closestHitShader;
+     uint32_t                          anyHitShader;
+     uint32_t                          intersectionShader;
+     const void*                       pShaderGroupCaptureReplayHandle;
+ } VkRayTracingShaderGroupCreateInfoKHR;
+ typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
+     VkStructureType    sType;
+     const void*        pNext;
+     uint32_t           maxPipelineRayPayloadSize;
+     uint32_t           maxPipelineRayHitAttributeSize;
+ } VkRayTracingPipelineInterfaceCreateInfoKHR;
+ typedef struct VkRayTracingPipelineCreateInfoKHR {
+     VkStructureType                                      sType;
+     const void*                                          pNext;
+     VkPipelineCreateFlags                                flags;
+     uint32_t                                             stageCount;
+     const VkPipelineShaderStageCreateInfo*               pStages;
+     uint32_t                                             groupCount;
+     const VkRayTracingShaderGroupCreateInfoKHR*          pGroups;
+     uint32_t                                             maxPipelineRayRecursionDepth;
+     const VkPipelineLibraryCreateInfoKHR*                pLibraryInfo;
+     const VkRayTracingPipelineInterfaceCreateInfoKHR*    pLibraryInterface;
+     const VkPipelineDynamicStateCreateInfo*              pDynamicState;
+     VkPipelineLayout                                     layout;
+     VkPipeline                                           basePipelineHandle;
+     int32_t                                              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;
+     uint32_t           shaderGroupHandleSize;
+     uint32_t           maxRayRecursionDepth;
+     uint32_t           maxShaderGroupStride;
+     uint32_t           shaderGroupBaseAlignment;
+     uint32_t           shaderGroupHandleCaptureReplaySize;
+     uint32_t           maxRayDispatchInvocationCount;
+     uint32_t           shaderGroupHandleAlignment;
+     uint32_t           maxRayHitAttributeSize;
+ } VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
+ typedef struct VkStridedDeviceAddressRegionKHR {
+     VkDeviceAddress    deviceAddress;
+     VkDeviceSize       stride;
+     VkDeviceSize       size;
+ } VkStridedDeviceAddressRegionKHR;
+ typedef struct VkTraceRaysIndirectCommandKHR {
+     uint32_t    width;
+     uint32_t    height;
+     uint32_t    depth;
+ } VkTraceRaysIndirectCommandKHR;
+ typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
+ typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+ typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t 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, uint32_t group, VkShaderGroupShaderKHR groupShader);
+ typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t 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,
+     uint32_t                                    width,
+     uint32_t                                    height,
+     uint32_t                                    depth);
+ VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
+     VkDevice                                    device,
+     VkDeferredOperationKHR                      deferredOperation,
+     VkPipelineCache                             pipelineCache,
+     uint32_t                                    createInfoCount,
+     const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
+     const VkAllocationCallbacks*                pAllocator,
+     VkPipeline*                                 pPipelines);
+ VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
+     VkDevice                                    device,
+     VkPipeline                                  pipeline,
+     uint32_t                                    firstGroup,
+     uint32_t                                    groupCount,
+     size_t                                      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,
+     uint32_t                                    group,
+     VkShaderGroupShaderKHR                      groupShader);
+ VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR(
+     VkCommandBuffer                             commandBuffer,
+     uint32_t                                    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