Merge vk-gl-cts/vulkan-cts-1.2.7 into vk-gl-cts/vulkan-cts-1.2.8
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 7 Apr 2022 20:56:53 +0000 (13:56 -0700)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 7 Apr 2022 21:28:22 +0000 (14:28 -0700)
Change-Id: I2c051a776b06d23239eb3ce501a999088cd0c1de

140 files changed:
executor/xeTestCaseResult.hpp
executor/xeTestLogWriter.cpp
executor/xeTestResultParser.cpp
external/vulkancts/framework/vulkan/vkDeviceExtensions.inl
external/vulkancts/framework/vulkan/vkInstanceExtensions.inl
external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl
external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
external/vulkancts/framework/vulkan/vkSupportedExtensions.inl
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/modifiers/vktModifiersTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsSizeControlTests.cpp
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/src/extensions/VK_EXT_4444_formats.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_border_color_swizzle.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_color_write_enable.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_conditional_rendering.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_depth_clip_enable.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_descriptor_indexing.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_extended_dynamic_state2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_fragment_density_map.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_fragment_shader_interlock.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_global_priority_query.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_host_query_reset.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_index_type_uint8.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_inline_uniform_block.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_line_rasterization.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_memory_priority.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_multi_draw.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_primitive_topology_list_restart.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_sampler_filter_minmax.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_scalar_block_layout.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_separate_stencil_usage.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_shader_demote_to_helper_invocation.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_shader_image_atomic_int64.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_shader_viewport_index_layer.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_subgroup_size_control.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_texel_buffer_alignment.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_texture_compression_astc_hdr.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_transform_feedback.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_vertex_attribute_divisor.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_vertex_input_dynamic_state.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_2plane_444_formats.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_image_arrays.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_16bit_storage.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_8bit_storage.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_acceleration_structure.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_android_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_bind_memory2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_buffer_device_address.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_copy_commands2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_create_renderpass2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_dedicated_allocation.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_deferred_host_operations.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_depth_stencil_resolve.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_descriptor_update_template.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_device_group.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_device_group_creation.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_display.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_display_swapchain.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_draw_indirect_count.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_driver_properties.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_dynamic_rendering.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_fence.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_capabilities.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_fd.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_win32.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_memory.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_capabilities.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_fd.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_win32.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_capabilities.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_fd.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_win32.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_format_feature_flags2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_fragment_shading_rate.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_get_display_properties2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_get_memory_requirements2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_get_physical_device_properties2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_get_surface_capabilities2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_image_format_list.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_imageless_framebuffer.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_incremental_present.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_maintenance1.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_maintenance2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_maintenance3.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_maintenance4.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_mir_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_multiview.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_performance_query.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_executable_properties.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_library.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_present_id.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_present_wait.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_push_descriptor.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_ray_query.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_pipeline.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_relaxed_block_layout.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_sampler_mirror_clamp_to_edge.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_sampler_ycbcr_conversion.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_separate_depth_stencil_layouts.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_atomic_int64.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_clock.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_draw_parameters.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_float16_int8.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_float_controls.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_integer_dot_product.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_non_semantic_info.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_extended_types.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_uniform_control_flow.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shader_terminate_invocation.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_shared_presentable_image.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_spirv_1_4.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_storage_buffer_storage_class.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_surface_protected_capabilities.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_swapchain.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_swapchain_mutable_format.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_synchronization2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_timeline_semaphore.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_uniform_buffer_standard_layout.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_variable_pointers.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_vulkan_memory_model.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_wayland_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_win32_keyed_mutex.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_win32_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_workgroup_memory_explicit_layout.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_xcb_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_xlib_surface.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_KHR_zero_initialize_workgroup_memory.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_NV_mesh_shading.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_VALVE_mutable_descriptor_type.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_VERSION_1_0.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_VERSION_1_1.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/VK_VERSION_1_2.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions/schema.json [new file with mode: 0644]
external/vulkancts/scripts/src/extensions_data.txt [deleted file]
external/vulkancts/scripts/src/mandatory_features.txt [deleted file]

index 6fbf792..fa1c91a 100644 (file)
@@ -116,6 +116,7 @@ class TestCaseResultHeader
 public:
                                                TestCaseResultHeader    (void) : caseType(TESTCASETYPE_LAST), statusCode(TESTSTATUSCODE_LAST) {}
 
+       std::string                     caseVersion;                    //!< Test case version.
        std::string                     casePath;                               //!< Full test case path.
        TestCaseType            caseType;                               //!< Test case type.
        TestStatusCode          statusCode;                             //!< Test status code.
index f4cce6e..d69015d 100644 (file)
@@ -30,8 +30,6 @@
 namespace xe
 {
 
-static const char* TEST_LOG_VERSION = "0.3.3";
-
 /* Batch result writer. */
 
 struct ContainerValue
@@ -504,7 +502,7 @@ void writeTestResult (const TestCaseResult& result, xe::xml::Writer& xmlWriter)
        using xml::Writer;
 
        xmlWriter << Writer::BeginElement("TestCaseResult")
-                         << Writer::Attribute("Version", TEST_LOG_VERSION)
+                         << Writer::Attribute("Version", result.caseVersion)
                          << Writer::Attribute("CasePath", result.casePath)
                          << Writer::Attribute("CaseType", getTestCaseTypeName(result.caseType));
 
index 2f31601..6d42403 100644 (file)
@@ -467,8 +467,9 @@ void TestResultParser::handleElementStart (void)
                m_logVersion = getTestLogVersion(version);
                // \note Currently assumed that all known log versions are supported.
 
-               m_result->casePath      = getAttribute("CasePath");
-               m_result->caseType      = TESTCASETYPE_SELF_VALIDATE;
+               m_result->caseVersion   = version;
+               m_result->casePath              = getAttribute("CasePath");
+               m_result->caseType              = TESTCASETYPE_SELF_VALIDATE;
 
                if (m_xmlParser.hasAttribute("CaseType"))
                        m_result->caseType = getTestCaseType(m_xmlParser.getAttribute("CaseType"));
index ddf1fc1..00cff9f 100644 (file)
@@ -4,87 +4,75 @@
  */
 static const char* s_allowedDeviceKhrExtensions[] =
 {
-       "VK_KHR_swapchain",
-       "VK_KHR_swapchain_mutable_format",
-       "VK_KHR_display_swapchain",
-       "VK_KHR_sampler_mirror_clamp_to_edge",
-       "VK_KHR_multiview",
+       "VK_KHR_16bit_storage",
+       "VK_KHR_8bit_storage",
+       "VK_KHR_acceleration_structure",
+       "VK_KHR_bind_memory2",
+       "VK_KHR_buffer_device_address",
+       "VK_KHR_copy_commands2",
+       "VK_KHR_create_renderpass2",
+       "VK_KHR_dedicated_allocation",
+       "VK_KHR_deferred_host_operations",
+       "VK_KHR_depth_stencil_resolve",
+       "VK_KHR_descriptor_update_template",
        "VK_KHR_device_group",
-       "VK_KHR_shader_draw_parameters",
-       "VK_KHR_maintenance1",
+       "VK_KHR_display_swapchain",
+       "VK_KHR_draw_indirect_count",
+       "VK_KHR_driver_properties",
+       "VK_KHR_dynamic_rendering",
+       "VK_KHR_external_fence",
+       "VK_KHR_external_fence_fd",
+       "VK_KHR_external_fence_win32",
        "VK_KHR_external_memory",
-       "VK_KHR_external_memory_win32",
        "VK_KHR_external_memory_fd",
-       "VK_KHR_win32_keyed_mutex",
+       "VK_KHR_external_memory_win32",
        "VK_KHR_external_semaphore",
-       "VK_KHR_external_semaphore_win32",
        "VK_KHR_external_semaphore_fd",
-       "VK_KHR_push_descriptor",
-       "VK_KHR_shader_float16_int8",
-       "VK_KHR_16bit_storage",
+       "VK_KHR_external_semaphore_win32",
+       "VK_KHR_format_feature_flags2",
+       "VK_KHR_fragment_shading_rate",
+       "VK_KHR_get_memory_requirements2",
+       "VK_KHR_image_format_list",
+       "VK_KHR_imageless_framebuffer",
        "VK_KHR_incremental_present",
-       "VK_KHR_8bit_storage",
-       "VK_KHR_descriptor_update_template",
-       "VK_KHR_create_renderpass2",
-       "VK_KHR_shared_presentable_image",
-       "VK_KHR_external_fence",
-       "VK_KHR_external_fence_win32",
-       "VK_KHR_external_fence_fd",
+       "VK_KHR_maintenance1",
        "VK_KHR_maintenance2",
-       "VK_KHR_variable_pointers",
-       "VK_KHR_dedicated_allocation",
-       "VK_KHR_storage_buffer_storage_class",
+       "VK_KHR_maintenance3",
+       "VK_KHR_maintenance4",
+       "VK_KHR_multiview",
+       "VK_KHR_performance_query",
+       "VK_KHR_pipeline_executable_properties",
+       "VK_KHR_pipeline_library",
+       "VK_KHR_present_id",
+       "VK_KHR_present_wait",
+       "VK_KHR_push_descriptor",
+       "VK_KHR_ray_query",
+       "VK_KHR_ray_tracing_pipeline",
        "VK_KHR_relaxed_block_layout",
-       "VK_KHR_get_memory_requirements2",
-       "VK_KHR_image_format_list",
+       "VK_KHR_sampler_mirror_clamp_to_edge",
        "VK_KHR_sampler_ycbcr_conversion",
-       "VK_KHR_bind_memory2",
-       "VK_KHR_maintenance3",
-       "VK_KHR_driver_properties",
-       "VK_KHR_shader_float_controls",
-       "VK_KHR_depth_stencil_resolve",
-       "VK_KHR_draw_indirect_count",
-       "VK_KHR_shader_atomic_int64",
-       "VK_KHR_vulkan_memory_model",
-       "VK_KHR_uniform_buffer_standard_layout",
-       "VK_KHR_imageless_framebuffer",
-       "VK_KHR_shader_subgroup_extended_types",
-       "VK_EXT_sampler_filter_minmax",
-       "VK_EXT_shader_viewport_index_layer",
-       "VK_EXT_descriptor_indexing",
-       "VK_EXT_scalar_block_layout",
-       "VK_KHR_buffer_device_address",
-       "VK_EXT_host_query_reset",
        "VK_KHR_separate_depth_stencil_layouts",
-       "VK_KHR_timeline_semaphore",
-       "VK_KHR_spirv_1_4",
-       "VK_EXT_separate_stencil_usage",
-       "VK_KHR_pipeline_executable_properties",
        "VK_KHR_shader_clock",
-       "VK_KHR_performance_query",
+       "VK_KHR_shader_draw_parameters",
+       "VK_KHR_shader_float16_int8",
+       "VK_KHR_shader_float_controls",
+       "VK_KHR_shader_integer_dot_product",
        "VK_KHR_shader_non_semantic_info",
-       "VK_KHR_copy_commands2",
+       "VK_KHR_shader_subgroup_extended_types",
+       "VK_KHR_shader_subgroup_uniform_control_flow",
        "VK_KHR_shader_terminate_invocation",
-       "VK_KHR_ray_tracing_pipeline",
-       "VK_KHR_ray_query",
-       "VK_KHR_acceleration_structure",
-       "VK_KHR_pipeline_library",
-       "VK_KHR_deferred_host_operations",
-       "VK_KHR_fragment_shading_rate",
-       "VK_KHR_zero_initialize_workgroup_memory",
-       "VK_KHR_workgroup_memory_explicit_layout",
+       "VK_KHR_shared_presentable_image",
+       "VK_KHR_spirv_1_4",
+       "VK_KHR_storage_buffer_storage_class",
+       "VK_KHR_swapchain",
+       "VK_KHR_swapchain_mutable_format",
        "VK_KHR_synchronization2",
-       "VK_EXT_color_write_enable",
-       "VK_VALVE_mutable_descriptor_type",
-       "VK_EXT_multi_draw",
-       "VK_KHR_shader_subgroup_uniform_control_flow",
-       "VK_KHR_present_id",
-       "VK_KHR_present_wait",
-       "VK_KHR_shader_integer_dot_product",
-       "VK_KHR_format_feature_flags2",
-       "VK_KHR_maintenance4",
-       "VK_KHR_dynamic_rendering",
-       "VK_EXT_border_color_swizzle",
-       "VK_NV_mesh_shader",
+       "VK_KHR_timeline_semaphore",
+       "VK_KHR_uniform_buffer_standard_layout",
+       "VK_KHR_variable_pointers",
+       "VK_KHR_vulkan_memory_model",
+       "VK_KHR_win32_keyed_mutex",
+       "VK_KHR_workgroup_memory_explicit_layout",
+       "VK_KHR_zero_initialize_workgroup_memory",
 };
 
index da1c154..2bf3c7e 100644 (file)
@@ -4,21 +4,21 @@
  */
 static const char* s_allowedInstanceKhrExtensions[] =
 {
-       "VK_KHR_surface",
-       "VK_KHR_display",
-       "VK_KHR_xlib_surface",
-       "VK_KHR_xcb_surface",
-       "VK_KHR_wayland_surface",
-       "VK_KHR_mir_surface",
        "VK_KHR_android_surface",
-       "VK_KHR_win32_surface",
-       "VK_KHR_get_physical_device_properties2",
        "VK_KHR_device_group_creation",
+       "VK_KHR_display",
+       "VK_KHR_external_fence_capabilities",
        "VK_KHR_external_memory_capabilities",
        "VK_KHR_external_semaphore_capabilities",
-       "VK_KHR_external_fence_capabilities",
-       "VK_KHR_get_surface_capabilities2",
        "VK_KHR_get_display_properties2",
+       "VK_KHR_get_physical_device_properties2",
+       "VK_KHR_get_surface_capabilities2",
+       "VK_KHR_mir_surface",
+       "VK_KHR_surface",
        "VK_KHR_surface_protected_capabilities",
+       "VK_KHR_wayland_surface",
+       "VK_KHR_win32_surface",
+       "VK_KHR_xcb_surface",
+       "VK_KHR_xlib_surface",
 };
 
index 4bbbc37..2b6c8b1 100644 (file)
@@ -230,7 +230,7 @@ bool checkMandatoryFeatures(const vkt::Context& context)
        vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures;
        deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures));
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) || isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) )
        {
                physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>();
                *nextPtr = &physicalDeviceMultiviewFeatures;
@@ -257,16 +257,6 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                nextPtr  = &physicalDevicePerformanceQueryFeaturesKHR.pNext;
        }
 
-       vk::VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT physicalDevicePipelineCreationCacheControlFeaturesEXT;
-       deMemset(&physicalDevicePipelineCreationCacheControlFeaturesEXT, 0, sizeof(physicalDevicePipelineCreationCacheControlFeaturesEXT));
-
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_creation_cache_control")) )
-       {
-               physicalDevicePipelineCreationCacheControlFeaturesEXT.sType = getStructureType<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT>();
-               *nextPtr = &physicalDevicePipelineCreationCacheControlFeaturesEXT;
-               nextPtr  = &physicalDevicePipelineCreationCacheControlFeaturesEXT.pNext;
-       }
-
        vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR physicalDevicePipelineExecutablePropertiesFeaturesKHR;
        deMemset(&physicalDevicePipelineExecutablePropertiesFeaturesKHR, 0, sizeof(physicalDevicePipelineExecutablePropertiesFeaturesKHR));
 
@@ -640,73 +630,47 @@ bool checkMandatoryFeatures(const vkt::Context& context)
        context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures);
        bool result = true;
 
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
        {
-               if ( coreFeatures.features.robustBufferAccess == VK_FALSE )
-               {
-                       log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage;
-                       result = false;
-               }
-       }
-
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
-       {
-               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
-               {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
-                       result = false;
-               }
-       }
-
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
-       {
-               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
-               {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
-                       result = false;
-               }
-       }
-
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
-       {
-               if ( physicalDevice8BitStorageFeaturesKHR.storageBuffer8BitAccess == VK_FALSE )
+               if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) )
        {
-               if ( physicalDeviceVulkan11Features.multiview == VK_FALSE )
+               if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) )
        {
-               if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
+               if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) )
        {
-               if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
+               if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) )
        {
-               if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE )
+               if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
@@ -828,592 +792,591 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
        {
-               if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE )
+               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
        {
-               if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE )
+               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) )
        {
-               if ( physicalDeviceScalarBlockLayoutFeaturesEXT.scalarBlockLayout == VK_FALSE )
+               if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) )
        {
-               if ( physicalDeviceUniformBufferStandardLayoutFeaturesKHR.uniformBufferStandardLayout == VK_FALSE )
+               if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) )
        {
-               if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE )
+               if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) )
        {
-               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE )
+               if ( physicalDeviceGlobalPriorityQueryFeaturesEXT.globalPriorityQuery == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) )
        {
-               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE )
+               if ( physicalDeviceHostQueryResetFeaturesEXT.hostQueryReset == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) )
        {
-               if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE )
+               if ( physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) )
        {
-               if ( physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.shaderSubgroupExtendedTypes == VK_FALSE )
+               if ( physicalDeviceInlineUniformBlockFeaturesEXT.inlineUniformBlock == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature inlineUniformBlock not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_inline_uniform_block")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE )
+               if ( physicalDeviceInlineUniformBlockFeaturesEXT.descriptorBindingInlineUniformBlockUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingInlineUniformBlockUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) )
        {
-               if ( physicalDeviceImagelessFramebufferFeaturesKHR.imagelessFramebuffer == VK_FALSE )
+               if ( ( physicalDeviceLineRasterizationFeaturesEXT.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines == VK_FALSE ) )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) )
        {
-               if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE )
+               if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) )
        {
-               if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE )
+               if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) )
        {
-               if ( physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.separateDepthStencilLayouts == VK_FALSE )
+               if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_pipeline_creation_cache_control")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
        {
-               if ( physicalDevicePipelineCreationCacheControlFeaturesEXT.pipelineCreationCacheControl == VK_FALSE )
+               if ( physicalDeviceScalarBlockLayoutFeaturesEXT.scalarBlockLayout == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature pipelineCreationCacheControl not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics )
        {
-               if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE )
+               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd )
        {
-               if ( physicalDeviceHostQueryResetFeaturesEXT.hostQueryReset == VK_FALSE )
+               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
        {
-               if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE )
+               if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) )
        {
-               if ( physicalDeviceTimelineSemaphoreFeaturesKHR.timelineSemaphore == VK_FALSE )
+               if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
        {
-               if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE )
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
        {
-               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics )
        {
-               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDevice16BitStorageFeaturesKHR.storageBuffer16BitAccess == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               if ( physicalDevice8BitStorageFeaturesKHR.storageBuffer8BitAccess == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
+               if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
+               if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) )
        {
-               if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE )
+               if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) )
        {
-               if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE )
+               if ( physicalDeviceImagelessFramebufferFeaturesKHR.imagelessFramebuffer == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_memory_priority")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) )
        {
-               if ( physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority == VK_FALSE )
+               if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature memoryPriority not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) )
        {
-               if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE )
+               if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_pipeline_executable_properties")) )
        {
-               if ( physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 == VK_FALSE )
+               if ( physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature pipelineExecutableInfo not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) )
        {
-               if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE )
+               if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) )
        {
-               if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE )
+               if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
        {
-               if ( physicalDeviceVulkanMemoryModelFeaturesKHR.vulkanMemoryModel == VK_FALSE )
+               if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) )
        {
-               if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE )
+               if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
        {
-               if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE )
+               if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_transform_feedback")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
        {
-               if ( physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback == VK_FALSE )
+               if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature transformFeedback not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_conditional_rendering")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) )
        {
-               if ( physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering == VK_FALSE )
+               if ( physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.separateDepthStencilLayouts == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature conditionalRendering not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) )
        {
-               if ( physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor == VK_FALSE )
+               if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_density_map")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) )
        {
-               if ( physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap == VK_FALSE )
+               if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature fragmentDensityMap not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) )
        {
-               if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE )
+               if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) )
        {
-               if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics == VK_FALSE )
+               if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE )
+               if ( physicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.shaderSubgroupExtendedTypes == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) )
        {
-               if ( physicalDevice16BitStorageFeaturesKHR.storageBuffer16BitAccess == VK_FALSE )
+               if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) )
        {
-               if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) )
+               if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) )
        {
-               if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) )
+               if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
        {
-               if ( ( physicalDeviceLineRasterizationFeaturesEXT.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines == VK_FALSE ) )
+               if ( physicalDeviceTimelineSemaphoreFeaturesKHR.timelineSemaphore == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) )
        {
-               if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE )
+               if ( physicalDeviceUniformBufferStandardLayoutFeaturesKHR.uniformBufferStandardLayout == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) )
        {
-               if ( physicalDeviceSamplerYcbcrConversionFeaturesKHR.samplerYcbcrConversion == VK_FALSE )
+               if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
        {
-               if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE )
+               if ( physicalDeviceVulkanMemoryModelFeaturesKHR.vulkanMemoryModel == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) )
        {
-               if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE )
+               if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) )
        {
-               if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE )
+               if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE )
+               if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE )
+               if ( coreFeatures.features.robustBufferAccess == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) )
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
        {
-               if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE )
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
+       if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
        {
-               if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE )
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
        {
                if ( coreFeatures.features.shaderInt64 == VK_FALSE )
                {
@@ -1422,7 +1385,7 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
-       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
        {
                if ( coreFeatures.features.shaderInt64 == VK_FALSE )
                {
@@ -1431,524 +1394,542 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
-       if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_zero_initialize_workgroup_memory")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.shaderZeroInitializeWorkgroupMemory == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderZeroInitializeWorkgroupMemory not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess == VK_FALSE ) && ( physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess == VK_FALSE ) )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature workgroupMemoryExplicitLayout or workgroupMemoryExplicitLayoutScalarBlockLayout or workgroupMemoryExplicitLayout8BitAccess or workgroupMemoryExplicitLayout16BitAccess not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature accelerationStructure not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingAccelerationStructureUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
        if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
        if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingPartiallyBound == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+               if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+               if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan11Features.multiview == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
        {
-               if ( physicalDeviceBufferDeviceAddressFeaturesKHR.bufferDeviceAddress == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.descriptorBindingPartiallyBound == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
        {
-               if ( physicalDeviceDescriptorIndexingFeaturesEXT.runtimeDescriptorArray == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
                {
                        log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
        {
-               if ( ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline == VK_FALSE ) && ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect == VK_FALSE ) )
+               if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature rayTracingPipeline or rayTracingPipelineTraceRaysIndirect not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_tracing_pipeline")) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) )
        {
-               if ( physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature rayTraversalPrimitiveCulling not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_ray_query")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) )
        {
-               if ( physicalDeviceRayQueryFeaturesKHR.rayQuery == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature rayQuery not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) )
        {
-               if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
        {
-               if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
        {
-               if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_VALVE_mutable_descriptor_type")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceMutableDescriptorTypeFeaturesVALVE.mutableDescriptorType == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature mutableDescriptorType not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_global_priority_query")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceGlobalPriorityQueryFeaturesEXT.globalPriorityQuery == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature globalPriorityQuery not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_multi_draw")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceMultiDrawFeaturesEXT.multiDraw == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature multiDraw not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_uniform_control_flow")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupUniformControlFlow not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_id")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDevicePresentIdFeaturesKHR.presentId == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature presentId not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_present_wait")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDevicePresentWaitFeaturesKHR.presentWait == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature presentWait not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float2")) && physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicMinMax not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_integer_dot_product")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceShaderIntegerDotProductFeaturesKHR.shaderIntegerDotProduct == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature shaderIntegerDotProduct not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_primitive_topology_list_restart")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature primitiveTopologyListRestart not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
 
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_border_color_swizzle")) )
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
        {
-               if ( physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle == VK_FALSE )
+               if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE )
                {
-                       log << tcu::TestLog::Message << "Mandatory feature borderColorSwizzle not supported" << tcu::TestLog::EndMessage;
+                       log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
                        result = false;
                }
        }
index 71da172..9ea6cc8 100644 (file)
@@ -2702,7 +2702,6 @@ Move<VkPipeline> RayTracingPipeline::createPipelineKHR (const DeviceInterface&
        };
        VkPipeline                                                                                      object                                                  = DE_NULL;
        VkResult                                                                                        result                                                  = vk.createRayTracingPipelinesKHR(device, deferredOperation.get(), DE_NULL, 1u, &pipelineCreateInfo, DE_NULL, &object);
-       Move<VkPipeline>                                                                        pipeline                                                (check<VkPipeline>(object), Deleter<VkPipeline>(vk, device, DE_NULL));
 
        if (m_deferredOperation)
        {
@@ -2711,6 +2710,7 @@ Move<VkPipeline> RayTracingPipeline::createPipelineKHR (const DeviceInterface&
                finishDeferredOperation(vk, device, deferredOperation.get(), m_workerThreadCount, result == VK_OPERATION_NOT_DEFERRED_KHR);
        }
 
+       Move<VkPipeline> pipeline (check<VkPipeline>(object), Deleter<VkPipeline>(vk, device, DE_NULL));
        return pipeline;
 }
 
index d69413d..4339f77 100644 (file)
@@ -15,12 +15,10 @@ void getCoreDeviceExtensionsImpl (uint32_t coreVersion, ::std::vector<const char
                dst.push_back("VK_KHR_draw_indirect_count");
                dst.push_back("VK_KHR_shader_subgroup_extended_types");
                dst.push_back("VK_KHR_8bit_storage");
-               dst.push_back("VK_KHR_shader_atomic_int64");
                dst.push_back("VK_KHR_driver_properties");
                dst.push_back("VK_KHR_shader_float_controls");
                dst.push_back("VK_KHR_depth_stencil_resolve");
                dst.push_back("VK_KHR_timeline_semaphore");
-               dst.push_back("VK_KHR_vulkan_memory_model");
                dst.push_back("VK_KHR_spirv_1_4");
                dst.push_back("VK_KHR_separate_depth_stencil_layouts");
                dst.push_back("VK_KHR_uniform_buffer_standard_layout");
@@ -29,6 +27,7 @@ void getCoreDeviceExtensionsImpl (uint32_t coreVersion, ::std::vector<const char
                dst.push_back("VK_EXT_descriptor_indexing");
                dst.push_back("VK_EXT_shader_viewport_index_layer");
                dst.push_back("VK_EXT_scalar_block_layout");
+               dst.push_back("VK_EXT_shader_image_atomic_int64");
                dst.push_back("VK_EXT_separate_stencil_usage");
                dst.push_back("VK_EXT_host_query_reset");
        }
@@ -39,7 +38,6 @@ void getCoreDeviceExtensionsImpl (uint32_t coreVersion, ::std::vector<const char
                dst.push_back("VK_KHR_shader_draw_parameters");
                dst.push_back("VK_KHR_maintenance1");
                dst.push_back("VK_KHR_external_memory");
-               dst.push_back("VK_KHR_external_semaphore");
                dst.push_back("VK_KHR_16bit_storage");
                dst.push_back("VK_KHR_descriptor_update_template");
                dst.push_back("VK_KHR_external_fence");
@@ -52,6 +50,7 @@ void getCoreDeviceExtensionsImpl (uint32_t coreVersion, ::std::vector<const char
                dst.push_back("VK_KHR_sampler_ycbcr_conversion");
                dst.push_back("VK_KHR_bind_memory2");
                dst.push_back("VK_KHR_maintenance3");
+               dst.push_back("VK_KHR_vulkan_memory_model");
        }
 }
 
index 2d66341..37aaf16 100644 (file)
@@ -4033,9 +4033,9 @@ bool checkExtension (vector<VkExtensionProperties>& properties, const char* exte
 
 tcu::TestStatus deviceFeatures2 (Context& context)
 {
-       const VkPhysicalDevice          physicalDevice  = context.getPhysicalDevice();
        const CustomInstance            instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&           vki                             (instance.getDriver());
+       const VkPhysicalDevice          physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const int                                       count                   = 2u;
        TestLog&                                        log                             = context.getTestContext().getLog();
        VkPhysicalDeviceFeatures        coreFeatures;
@@ -4068,9 +4068,9 @@ tcu::TestStatus deviceFeatures2 (Context& context)
 
 tcu::TestStatus deviceProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                             = context.getTestContext().getLog();
        VkPhysicalDeviceProperties              coreProperties;
        VkPhysicalDeviceProperties2             extProperties;
@@ -4527,9 +4527,9 @@ string toString (const VkFormatProperties2& value)
 
 tcu::TestStatus deviceFormatProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                             = context.getTestContext().getLog();
 
        for (int formatNdx = 0; formatNdx < VK_CORE_FORMAT_LAST; ++formatNdx)
@@ -4550,10 +4550,10 @@ tcu::TestStatus deviceFormatProperties2 (Context& context)
                TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2);
                TCU_CHECK(extProperties.pNext == DE_NULL);
 
-       if (deMemCmp(&coreProperties, &extProperties.formatProperties, sizeof(VkFormatProperties)) != 0)
-               TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceFormatProperties2");
+               if (deMemCmp(&coreProperties, &extProperties.formatProperties, sizeof(VkFormatProperties)) != 0)
+                       TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceFormatProperties2");
 
-       log << TestLog::Message << toString (extProperties) << TestLog::EndMessage;
+               log << TestLog::Message << toString (extProperties) << TestLog::EndMessage;
        }
 
        return tcu::TestStatus::pass("Querying device format properties succeeded");
@@ -4561,9 +4561,9 @@ tcu::TestStatus deviceFormatProperties2 (Context& context)
 
 tcu::TestStatus deviceQueueFamilyProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice                  = context.getPhysicalDevice();
        const CustomInstance                    instance                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                                             = context.getTestContext().getLog();
        deUint32                                                numCoreQueueFamilies    = ~0u;
        deUint32                                                numExtQueueFamilies             = ~0u;
@@ -4612,9 +4612,9 @@ tcu::TestStatus deviceQueueFamilyProperties2 (Context& context)
 
 tcu::TestStatus deviceMemoryProperties2 (Context& context)
 {
-       const VkPhysicalDevice                          physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                            instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                           vki                             (instance.getDriver());
+       const VkPhysicalDevice                          physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                        log                             = context.getTestContext().getLog();
        VkPhysicalDeviceMemoryProperties        coreProperties;
        VkPhysicalDeviceMemoryProperties2       extProperties;
@@ -4631,8 +4631,16 @@ tcu::TestStatus deviceMemoryProperties2 (Context& context)
        TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2);
        TCU_CHECK(extProperties.pNext == DE_NULL);
 
-       if (deMemCmp(&coreProperties, &extProperties.memoryProperties, sizeof(VkPhysicalDeviceMemoryProperties)) != 0)
-               TCU_FAIL("Mismatch between properties reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       if (coreProperties.memoryTypeCount != extProperties.memoryProperties.memoryTypeCount)
+               TCU_FAIL("Mismatch between memoryTypeCount reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       if (coreProperties.memoryHeapCount != extProperties.memoryProperties.memoryHeapCount)
+               TCU_FAIL("Mismatch between memoryHeapCount reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       for (deUint32 i = 0; i < coreProperties.memoryTypeCount; i++)
+               if (deMemCmp(&coreProperties.memoryTypes[i], &extProperties.memoryProperties.memoryTypes[i], sizeof(VkMemoryType)) != 0)
+                       TCU_FAIL("Mismatch between memoryTypes reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       for (deUint32 i = 0; i < coreProperties.memoryHeapCount; i++)
+               if (deMemCmp(&coreProperties.memoryHeaps[i], &extProperties.memoryProperties.memoryHeaps[i], sizeof(VkMemoryHeap)) != 0)
+                       TCU_FAIL("Mismatch between memoryHeaps reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
 
        log << TestLog::Message << extProperties << TestLog::EndMessage;
 
@@ -4753,9 +4761,9 @@ tcu::TestStatus deviceFeaturesVulkan12 (Context& context)
                { 0, 0 }
        };
        TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
        const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+       const VkPhysicalDevice                                                          physicalDevice                                                  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const deUint32                                                                          vulkan11FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan11Features) + GUARD_SIZE;
        const deUint32                                                                          vulkan12FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan12Features) + GUARD_SIZE;
        VkPhysicalDeviceFeatures2                                                       extFeatures;
@@ -4915,9 +4923,9 @@ tcu::TestStatus devicePropertiesVulkan12 (Context& context)
                { 0, 0 }
        };
        TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
        const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+       const VkPhysicalDevice                                                  physicalDevice                                                          (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const deUint32                                                                  vulkan11PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan11Properties) + GUARD_SIZE;
        const deUint32                                                                  vulkan12PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan12Properties) + GUARD_SIZE;
        VkPhysicalDeviceProperties2                                             extProperties;
@@ -4979,9 +4987,9 @@ tcu::TestStatus devicePropertiesVulkan12 (Context& context)
 tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
 {
        TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
        const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+       const VkPhysicalDevice                                                          physicalDevice                                                  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
                TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
@@ -5192,9 +5200,9 @@ tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
 tcu::TestStatus devicePropertyExtensionsConsistencyVulkan12(Context& context)
 {
        TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
        const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+       const VkPhysicalDevice                                                  physicalDevice                                                          (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
                TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
@@ -5363,9 +5371,9 @@ tcu::TestStatus imageFormatProperties2 (Context& context, const VkFormat format,
 
        TestLog&                                                log                             = context.getTestContext().getLog();
 
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        const VkImageCreateFlags                ycbcrFlags              = isYCbCrFormat(format) ? (VkImageCreateFlags)VK_IMAGE_CREATE_DISJOINT_BIT_KHR : (VkImageCreateFlags)0u;
        const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
@@ -5436,9 +5444,9 @@ tcu::TestStatus sparseImageFormatProperties2 (Context& context, const VkFormat f
 {
        TestLog&                                                log                             = context.getTestContext().getLog();
 
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
                                                                                                        | VK_IMAGE_USAGE_TRANSFER_DST_BIT
index e9ef8d2..aab8c04 100644 (file)
@@ -544,7 +544,7 @@ bool exportImportMemoryExplicitModifiersCase (Context& context, const VkFormat f
                DE_NULL,                                                                        // const void*                          pNext;
                VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        srcAccessMask;
                VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
-               VK_IMAGE_LAYOUT_UNDEFINED,              // VkImageLayout                        oldLayout;
+               VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                        oldLayout;
                VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                   // VkImageLayout                        newLayout;
                VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     srcQueueFamilyIndex;
                VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     dstQueueFamilyIndex;
@@ -588,6 +588,27 @@ bool exportImportMemoryExplicitModifiersCase (Context& context, const VkFormat f
        };
        vkd.cmdBlitImage(*cmdBuffer, *srcImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &imageBlit, VK_FILTER_NEAREST);
 
+       const VkImageMemoryBarrier              exportImageBarrier              =
+       {
+               VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,         // VkStructureType                      sType;
+               DE_NULL,                                                                        // const void*                          pNext;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        srcAccessMask;
+               VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,           // VkImageLayout                        oldLayout;
+               VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,           // VkImageLayout                        newLayout;
+               context.getUniversalQueueFamilyIndex(),         // deUint32                                     dstQueueFamilyIndex;
+               VK_QUEUE_FAMILY_FOREIGN_EXT,                            // deUint32                                     srcQueueFamilyIndex;
+               *dstImage,                                                                      // VkImage                                      image;
+               {                                                                                       // VkImageSubresourceRange      subresourceRange;
+                       VK_IMAGE_ASPECT_COLOR_BIT,              // VkImageAspectFlags           aspectMask;
+                       0u,                                                             // deUint32                                     baseMipLevel;
+                       1u,                                                             // deUint32                                     mipLevels;
+                       0u,                                                             // deUint32                                     baseArraySlice;
+                       1u                                                              // deUint32                                     arraySize;
+               }
+       };
+
+       vkd.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &exportImageBarrier);
        VK_CHECK(vkd.endCommandBuffer(*cmdBuffer));
        submitCommandsAndWait(vkd, device, context.getUniversalQueue(), *cmdBuffer);
        VkImageDrmFormatModifierPropertiesEXT   properties;
@@ -635,7 +656,7 @@ bool exportImportMemoryExplicitModifiersCase (Context& context, const VkFormat f
                DE_NULL,                                                                        // const void*                          pNext;
                VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        srcAccessMask;
                VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
-               VK_IMAGE_LAYOUT_PREINITIALIZED,         // VkImageLayout                        oldLayout;
+               VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                        oldLayout;
                VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                   // VkImageLayout                        newLayout;
                VK_QUEUE_FAMILY_FOREIGN_EXT,                                    // deUint32                                     srcQueueFamilyIndex;
                context.getUniversalQueueFamilyIndex(),                 // deUint32                                     dstQueueFamilyIndex;
@@ -683,7 +704,7 @@ bool exportImportMemoryExplicitModifiersCase (Context& context, const VkFormat f
 
        copyImageToBuffer(vkd, *cmdBuffer2, *outImage,
                                                                                outputBuffer->get(), tcu::IVec2(imageSize.x(), imageSize.y()),
-                                                                               VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED, 1);
+                                                                               VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1);
 
        VK_CHECK(vkd.endCommandBuffer(*cmdBuffer2));
 
index 2d90482..dbd3db7 100755 (executable)
@@ -256,7 +256,7 @@ static bool checkComputeRequireFull (const void*                    internalData,
                if (checkInternalData->caseDef.pipelineShaderStageCreateFlags == VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT && data[i].z() != numSubgroups)
                {
                        log << TestLog::Message << "[" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << "] "
-                               << "expected number of subgroups dispatched (" << numSubgroups << ") doesn't match gl_NumSubgroups (" << data[i].z() << ")";
+                               << "expected number of subgroups dispatched (" << numSubgroups << ") doesn't match gl_NumSubgroups (" << data[i].z() << ")" << TestLog::EndMessage;
                        return DE_FALSE;
                }
        }
index 2022ad5..60a27c9 100755 (executable)
@@ -24,6 +24,8 @@ import os
 import re
 import sys
 import copy
+import glob
+import json
 from itertools import chain
 from collections import OrderedDict
 
@@ -398,16 +400,17 @@ class Extension:
                return 'EXT:\n%s ->\nENUMS:\n%s\nCOMPOS:\n%s\nFUNCS:\n%s\nBITF:\n%s\nHAND:\n%s\nDEFS:\n%s\n' % (self.name, self.enums, self.compositeTypes, self.functions, self.bitfields, self.handles, self.definitions, self.versionInCore)
 
 class API:
-       def __init__ (self, versions, definitions, handles, enums, bitfields, bitfields64, compositeTypes, functions, extensions):
-               self.versions           = versions
-               self.definitions        = definitions
-               self.handles            = handles
-               self.enums                      = enums
-               self.bitfields          = bitfields
-               self.bitfields64        = bitfields64
-               self.compositeTypes     = compositeTypes
-               self.functions          = functions # \note contains extension functions as well
-               self.extensions         = extensions
+       def __init__ (self, versions, definitions, handles, enums, bitfields, bitfields64, compositeTypes, functions, extensions, additionalExtensionData):
+               self.versions                                   = versions
+               self.definitions                                = definitions
+               self.handles                                    = handles
+               self.enums                                              = enums
+               self.bitfields                                  = bitfields
+               self.bitfields64                                = bitfields64
+               self.compositeTypes                             = compositeTypes
+               self.functions                                  = functions                                     # \note contains extension functions as well
+               self.extensions                                 = extensions
+               self.additionalExtensionData    = additionalExtensionData       # \note contains mandatory features and information about promotion
 
 def readFile (filename):
        with open(filename, 'rt') as f:
@@ -663,21 +666,20 @@ def parseTypedefs (src):
 
        return [Definition(None, match[0], match[1]) for match in matches]
 
-def parseExtensions (src, versions, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions):
-
-       def getCoreVersion (extensionName, extensionsData):
-               # returns None when extension was not added to core for any Vulkan version
-               # returns array containing DEVICE or INSTANCE string followed by the vulkan version in which this extension is core
-               # note that this function is also called for vulkan 1.0 source for which extName is None
-               if not extensionName:
-                       return None
-               ptrn            = extensionName + r'\s+(DEVICE|INSTANCE)\s+([0-9_]+)'
-               coreVersion = re.search(ptrn, extensionsData, re.I)
-               if coreVersion != None:
-                       return [coreVersion.group(1)] + [int(number) for number in coreVersion.group(2).split('_')[:3]]
-               return None
+def parseExtensions (src, versions, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions, additionalExtensionData):
+
+       # note promotedExtensionDict is also executed for vulkan 1.0 source for which extension name is None
+       promotedExtensionDict = {None: None}
+       for extensionName, data in additionalExtensionData:
+               # make sure that this extension was registered
+               if 'register_extension' not in data.keys():
+                       continue
+               match = re.match("(\d).(\d).(\d)", data['register_extension']['core'])
+               if match == None:
+                       continue
+               # save array containing 'device' or 'instance' string followed by the vulkan version in which this extension is core
+               promotedExtensionDict[extensionName] = [data['register_extension']['type'], int(match.group(1)), int(match.group(2)), int(match.group(3))]
 
-       extensionsData                  = readFile(os.path.join(VULKAN_SRC_DIR, "extensions_data.txt"))
        splitSrc                                = splitByExtension(src)
        extensions                              = []
        functionsByName                 = {function.name: function for function in allFunctions}
@@ -701,7 +703,7 @@ def parseExtensions (src, versions, allFunctions, allCompositeTypes, allEnums, a
                enumBitfieldNames       = [getBitEnumNameForBitfield(name) for name in bitfieldNames]
                enums                           = [enum for enum in rawEnums if enum.name not in enumBitfieldNames]
 
-               extCoreVersion          = getCoreVersion(extensionName, extensionsData)
+               extCoreVersion          = promotedExtensionDict.get(extensionName, None)
                extFunctions            = [functionsByName[function.name] for function in functions]
                extCompositeTypes       = [compositeTypesByName[compositeType.name] for compositeType in compositeTypes]
                extEnums                        = [enumsByName[enum.name] for enum in enums]
@@ -746,16 +748,28 @@ def parseAPI (src):
        definitions             = [Definition("uint32_t", v.getInHex(), parsePreprocDefinedValue(src, v.getInHex())) for v in versions] +\
                                          [Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS]
 
-       handles                         = parseHandles(src)
-       rawEnums                        = parseEnums(src)
-       bitfieldNames           = parseBitfieldNames(src)
-       bitfieldEnums           = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
-       bitfield64Names         = parse64bitBitfieldNames(src)
-       bitfields64                     = parse64bitBitfieldValues(src, bitfield64Names)
-       enums                           = []
-       bitfields                       = []
-       compositeTypes          = parseCompositeTypesByVersion(src, versionsData)
-       allFunctions            = parseFunctionsByVersion(src, versionsData)
+       handles                                         = parseHandles(src)
+       rawEnums                                        = parseEnums(src)
+       bitfieldNames                           = parseBitfieldNames(src)
+       bitfieldEnums                           = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
+       bitfield64Names                         = parse64bitBitfieldNames(src)
+       bitfields64                                     = parse64bitBitfieldValues(src, bitfield64Names)
+       enums                                           = []
+       bitfields                                       = []
+       compositeTypes                          = parseCompositeTypesByVersion(src, versionsData)
+       allFunctions                            = parseFunctionsByVersion(src, versionsData)
+       additionalExtensionData         = {}
+
+       # read all files from extensions directory
+       for fileName in glob.glob(os.path.join(VULKAN_SRC_DIR, "extensions", "*.json")):
+               extensionName   = os.path.basename(fileName)[:-5]
+               fileContent             = readFile(fileName)
+               try:
+                       additionalExtensionData[extensionName] = json.loads(fileContent)
+               except ValueError as err:
+                       print("Error in %s: %s" % (os.path.basename(fileName), str(err)))
+                       sys.exit(-1)
+       additionalExtensionData = sorted(additionalExtensionData.items(), key=lambda e: e[0])
 
        for enum in rawEnums:
                if enum.name in bitfieldEnums:
@@ -768,7 +782,7 @@ def parseAPI (src):
                        # Add empty bitfield
                        bitfields.append(Bitfield(bitfieldName, []))
 
-       extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
+       extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions, additionalExtensionData)
 
        # Populate alias fields
        populateAliasesWithTypedefs(compositeTypes, src)
@@ -790,16 +804,18 @@ def parseAPI (src):
                        handle.alias = None
                if handle.name == 'VkAccelerationStructureNV':
                        handle.isAlias = False
+
        return API(
-               versions                = versions,
-               definitions             = definitions,
-               handles                 = handles,
-               enums                   = enums,
-               bitfields               = bitfields,
-               bitfields64             = bitfields64,
-               compositeTypes  = compositeTypes,
-               functions               = allFunctions,
-               extensions              = extensions)
+               versions                                = versions,
+               definitions                             = definitions,
+               handles                                 = handles,
+               enums                                   = enums,
+               bitfields                               = bitfields,
+               bitfields64                             = bitfields64,
+               compositeTypes                  = compositeTypes,
+               functions                               = allFunctions,
+               extensions                              = extensions,
+               additionalExtensionData = additionalExtensionData)
 
 def splitUniqueAndDuplicatedEntries (handles):
        listOfUniqueHandles = []
@@ -1581,7 +1597,7 @@ def writeSupportedExtenions(api, filename):
 
        for ext in api.extensions:
                if ext.versionInCore != None:
-                       if ext.versionInCore[0] == 'INSTANCE':
+                       if ext.versionInCore[0] == 'instance':
                                list = instanceMap.get(Version(ext.versionInCore[1:]))
                                instanceMap[Version(ext.versionInCore[1:])] = list + [ext] if list else [ext]
                        else:
@@ -2287,29 +2303,30 @@ def writeDevicePropertiesContextDefs(dfDefs, filename):
        pattern = "const vk::{0}&\tContext::get{1}\t(void) const {{ return m_device->get{1}();\t}}"
        genericDevicePropertiesWriter(dfDefs, pattern, filename)
 
-def splitWithQuotation(line):
-       result = []
-       splitted = re.findall(r'[^"\s]\S*|".+?"', line)
-       for s in splitted:
-               result.append(s.replace('"', ''))
-       return result
-
-def writeMandatoryFeatures(filename):
+def writeMandatoryFeatures(api, filename):
        stream = []
-       pattern = r'\s*([\w]+)\s+FEATURES\s+\((.*)\)\s+REQUIREMENTS\s+\((.*)\)'
-       mandatoryFeatures = readFile(os.path.join(VULKAN_SRC_DIR, "mandatory_features.txt"))
-       matches = re.findall(pattern, mandatoryFeatures)
+
        dictStructs = {}
        dictData = []
-       for m in matches:
-               allRequirements = splitWithQuotation(m[2])
-               dictData.append( [ m[0], m[1].strip(), allRequirements ] )
-               if m[0] != 'VkPhysicalDeviceFeatures' :
-                       if (m[0] not in dictStructs):
-                               dictStructs[m[0]] = [m[0][2:3].lower() + m[0][3:]]
-                       if (allRequirements[0]):
-                               if (allRequirements[0] not in dictStructs[m[0]][1:]):
-                                       dictStructs[m[0]].append(allRequirements[0])
+       for _, data in api.additionalExtensionData:
+               if 'mandatory_features' not in data.keys():
+                       continue
+               # sort to have same results for py2 and py3
+               listStructFeatures = sorted(data['mandatory_features'].items(), key=lambda tup: tup[0])
+               for structure, featuresList in listStructFeatures:
+                       for featureData in featuresList:
+                               assert('features' in featureData.keys())
+                               assert('requirements' in featureData.keys())
+                               requirements = featureData['requirements']
+                               dictData.append( [ structure, featureData['features'], requirements ])
+                               if structure == 'VkPhysicalDeviceFeatures':
+                                       continue
+                               # if structure is not in dict construct name of variable and add is as a first item
+                               if (structure not in dictStructs):
+                                       dictStructs[structure] = [structure[2:3].lower() + structure[3:]]
+                               # add first requirement if it is unique
+                               if requirements and (requirements[0] not in dictStructs[structure]):
+                                       dictStructs[structure].append(requirements[0])
 
        stream.extend(['bool checkMandatoryFeatures(const vkt::Context& context)\n{',
                                   '\tif (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2"))',
@@ -2377,17 +2394,17 @@ def writeMandatoryFeatures(filename):
                        stream.append('\t' + condition)
                stream.append('\t{')
                # Don't need to support an AND case since that would just be another line in the .txt
-               if len(v[1].split(" ")) == 1:
-                       stream.append('\t\tif ( ' + structName + '.' + v[1] + ' == VK_FALSE )')
+               if len(v[1]) == 1:
+                       stream.append('\t\tif ( ' + structName + '.' + v[1][0] + ' == VK_FALSE )')
                else:
                        condition = 'if ( '
-                       for i, feature in enumerate(v[1].split(" ")):
+                       for i, feature in enumerate(v[1]):
                                if i != 0:
                                        condition = condition + ' && '
                                condition = condition + '( ' + structName + '.' + feature + ' == VK_FALSE )'
                        condition = condition + ' )'
                        stream.append('\t\t' + condition)
-               featureSet = v[1].replace(" ", " or ")
+               featureSet = " or ".join(v[1])
                stream.extend(['\t\t{',
                                           '\t\t\tlog << tcu::TestLog::Message << "Mandatory feature ' + featureSet + ' not supported" << tcu::TestLog::EndMessage;',
                                           '\t\t\tresult = false;',
@@ -2398,14 +2415,24 @@ def writeMandatoryFeatures(filename):
        stream.append('}\n')
        writeInlFile(filename, INL_HEADER, stream)
 
-def writeExtensionList(filename, patternPart):
+def writeExtensionList(api, filename, extensionType):
+       extensionList = []
+       for extensionName, data in api.additionalExtensionData:
+               # make sure extension name starts with VK_KHR
+               if not extensionName.startswith('VK_KHR'):
+                       continue
+               # make sure that this extension was registered
+               if 'register_extension' not in data.keys():
+                       continue
+               # make sure extension has proper type
+               if extensionType == data['register_extension']['type']:
+                       extensionList.append(extensionName)
+       extensionList.sort()
+       # write list of all found extensions
        stream = []
-       stream.append('static const char* s_allowed{0}KhrExtensions[] =\n{{'.format(patternPart.title()))
-       extensionsData = readFile(os.path.join(VULKAN_SRC_DIR, "extensions_data.txt"))
-       pattern = r'\s*([^\s]+)\s+{0}\s*[0-9_]*'.format(patternPart)
-       matches = re.findall(pattern, extensionsData)
-       for m in matches:
-               stream.append('\t"' + m + '",')
+       stream.append('static const char* s_allowed{0}KhrExtensions[] =\n{{'.format(extensionType.title()))
+       for n in extensionList:
+               stream.append('\t"' + n + '",')
        stream.append('};\n')
        writeInlFile(filename, INL_HEADER, stream)
 
@@ -2518,9 +2545,9 @@ if __name__ == "__main__":
        writeCoreFunctionalities                                (api, os.path.join(outputPath, "vkCoreFunctionalities.inl"))
        writeExtensionFunctions                                 (api, os.path.join(outputPath, "vkExtensionFunctions.inl"))
        writeDeviceFeatures2                                    (api, os.path.join(outputPath, "vkDeviceFeatures2.inl"))
-       writeMandatoryFeatures                                  (     os.path.join(outputPath, "vkMandatoryFeatures.inl"))
-       writeExtensionList                                              (     os.path.join(outputPath, "vkInstanceExtensions.inl"),                             'INSTANCE')
-       writeExtensionList                                              (     os.path.join(outputPath, "vkDeviceExtensions.inl"),                               'DEVICE')
+       writeMandatoryFeatures                                  (api, os.path.join(outputPath, "vkMandatoryFeatures.inl"))
+       writeExtensionList                                              (api, os.path.join(outputPath, "vkInstanceExtensions.inl"),                             'instance')
+       writeExtensionList                                              (api, os.path.join(outputPath, "vkDeviceExtensions.inl"),                               'device')
        writeDriverIds                                                  (     os.path.join(outputPath, "vkKnownDriverIds.inl"))
        writeObjTypeImpl                                                (api, os.path.join(outputPath, "vkObjTypeImpl.inl"))
        # NOTE: when new files are generated then they should also be added to the
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_4444_formats.json b/external/vulkancts/scripts/src/extensions/VK_EXT_4444_formats.json
new file mode 100644 (file)
index 0000000..1b38bb1
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDevice4444FormatsFeaturesEXT":
+               [
+                       { "features": ["formatA4R4G4B4"],       "requirements": ["VK_EXT_4444_formats"] }
+               ]
+       }
+}
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_border_color_swizzle.json b/external/vulkancts/scripts/src/extensions/VK_EXT_border_color_swizzle.json
new file mode 100644 (file)
index 0000000..d7abd38
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT":
+               [
+                       { "features": ["borderColorSwizzle"],                           "requirements": ["VK_EXT_border_color_swizzle"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_color_write_enable.json b/external/vulkancts/scripts/src/extensions/VK_EXT_color_write_enable.json
new file mode 100644 (file)
index 0000000..63a1345
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceColorWriteEnableFeaturesEXT":
+               [
+                       { "features": ["colorWriteEnable"],     "requirements": ["VK_EXT_color_write_enable"] }
+               ]
+       }
+}
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_conditional_rendering.json b/external/vulkancts/scripts/src/extensions/VK_EXT_conditional_rendering.json
new file mode 100644 (file)
index 0000000..7f28f04
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceConditionalRenderingFeaturesEXT":
+               [
+                       { "features": ["conditionalRendering"], "requirements": ["VK_EXT_conditional_rendering"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_depth_clip_enable.json b/external/vulkancts/scripts/src/extensions/VK_EXT_depth_clip_enable.json
new file mode 100644 (file)
index 0000000..5321754
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceDepthClipEnableFeaturesEXT":
+               [
+                       { "features": ["depthClipEnable"],      "requirements": ["VK_EXT_depth_clip_enable"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_descriptor_indexing.json b/external/vulkancts/scripts/src/extensions/VK_EXT_descriptor_indexing.json
new file mode 100644 (file)
index 0000000..8a30a49
--- /dev/null
@@ -0,0 +1,31 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFeatures":
+               [
+                       { "features": ["shaderSampledImageArrayDynamicIndexing"],                               "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["shaderStorageBufferArrayDynamicIndexing"],                              "requirements": ["VK_EXT_descriptor_indexing"] }
+               ],
+               "VkPhysicalDeviceDescriptorIndexingFeaturesEXT":
+               [
+                       { "features": ["shaderUniformTexelBufferArrayDynamicIndexing"],                 "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["shaderStorageTexelBufferArrayDynamicIndexing"],                 "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["shaderSampledImageArrayNonUniformIndexing"],                    "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["shaderStorageBufferArrayNonUniformIndexing"],                   "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["shaderUniformTexelBufferArrayNonUniformIndexing"],              "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingSampledImageUpdateAfterBind"],                 "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingStorageImageUpdateAfterBind"],                 "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingStorageBufferUpdateAfterBind"],                "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingUniformTexelBufferUpdateAfterBind"],   "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingStorageTexelBufferUpdateAfterBind"],   "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingUpdateUnusedWhilePending"],                    "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["descriptorBindingPartiallyBound"],                                              "requirements": ["VK_EXT_descriptor_indexing"] },
+                       { "features": ["runtimeDescriptorArray"],                                                               "requirements": ["VK_EXT_descriptor_indexing"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_extended_dynamic_state2.json b/external/vulkancts/scripts/src/extensions/VK_EXT_extended_dynamic_state2.json
new file mode 100644 (file)
index 0000000..2fa952c
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT":
+               [
+                       { "features": ["extendedDynamicState2"],        "requirements": ["VK_EXT_extended_dynamic_state2"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_fragment_density_map.json b/external/vulkancts/scripts/src/extensions/VK_EXT_fragment_density_map.json
new file mode 100644 (file)
index 0000000..196f0fa
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFragmentDensityMapFeaturesEXT":
+               [
+                       { "features": ["fragmentDensityMap"],   "requirements": ["VK_EXT_fragment_density_map"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_fragment_shader_interlock.json b/external/vulkancts/scripts/src/extensions/VK_EXT_fragment_shader_interlock.json
new file mode 100644 (file)
index 0000000..7d1a095
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT":
+               [
+                       { "features": ["fragmentShaderSampleInterlock", "fragmentShaderPixelInterlock", "fragmentShaderShadingRateInterlock"],  "requirements": ["VK_EXT_fragment_shader_interlock"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_global_priority_query.json b/external/vulkancts/scripts/src/extensions/VK_EXT_global_priority_query.json
new file mode 100644 (file)
index 0000000..dc0d8ce
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT":
+               [
+                       { "features": ["globalPriorityQuery"],  "requirements": ["VK_EXT_global_priority_query"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_host_query_reset.json b/external/vulkancts/scripts/src/extensions/VK_EXT_host_query_reset.json
new file mode 100644 (file)
index 0000000..5dc8ad8
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceHostQueryResetFeaturesEXT":
+               [
+                       { "features": ["hostQueryReset"],                               "requirements": ["VK_EXT_host_query_reset"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_index_type_uint8.json b/external/vulkancts/scripts/src/extensions/VK_EXT_index_type_uint8.json
new file mode 100644 (file)
index 0000000..af6bbe4
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceIndexTypeUint8FeaturesEXT":
+               [
+                       { "features": ["indexTypeUint8"],               "requirements": ["VK_EXT_index_type_uint8"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_inline_uniform_block.json b/external/vulkancts/scripts/src/extensions/VK_EXT_inline_uniform_block.json
new file mode 100644 (file)
index 0000000..615e04a
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceInlineUniformBlockFeaturesEXT":
+               [
+                       { "features": ["inlineUniformBlock"],                                                                           "requirements": ["VK_EXT_inline_uniform_block"] },
+                       { "features": ["descriptorBindingInlineUniformBlockUpdateAfterBind"],           "requirements": ["VK_EXT_inline_uniform_block", "VK_EXT_descriptor_indexing"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_line_rasterization.json b/external/vulkancts/scripts/src/extensions/VK_EXT_line_rasterization.json
new file mode 100644 (file)
index 0000000..014b9f5
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceLineRasterizationFeaturesEXT":
+               [
+                       { "features": ["rectangularLines", "bresenhamLines", "smoothLines", "stippledRectangularLines", "stippledBresenhamLines", "stippledSmoothLines"],       "requirements": ["VK_EXT_line_rasterization"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_memory_priority.json b/external/vulkancts/scripts/src/extensions/VK_EXT_memory_priority.json
new file mode 100644 (file)
index 0000000..16fd54b
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceMemoryPriorityFeaturesEXT":
+               [
+                       { "features": ["memoryPriority"],               "requirements": ["VK_EXT_memory_priority"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_multi_draw.json b/external/vulkancts/scripts/src/extensions/VK_EXT_multi_draw.json
new file mode 100644 (file)
index 0000000..a322e42
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceMultiDrawFeaturesEXT":
+               [
+                       { "features": ["multiDraw"],                            "requirements": ["VK_EXT_multi_draw"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_primitive_topology_list_restart.json b/external/vulkancts/scripts/src/extensions/VK_EXT_primitive_topology_list_restart.json
new file mode 100644 (file)
index 0000000..49d4fd9
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT":
+               [
+                       { "features": ["primitiveTopologyListRestart"],                         "requirements": ["VK_EXT_primitive_topology_list_restart"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_sampler_filter_minmax.json b/external/vulkancts/scripts/src/extensions/VK_EXT_sampler_filter_minmax.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_scalar_block_layout.json b/external/vulkancts/scripts/src/extensions/VK_EXT_scalar_block_layout.json
new file mode 100644 (file)
index 0000000..9cefbd6
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT":
+               [
+                       { "features": ["scalarBlockLayout"],            "requirements": ["VK_EXT_scalar_block_layout"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_separate_stencil_usage.json b/external/vulkancts/scripts/src/extensions/VK_EXT_separate_stencil_usage.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float.json b/external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float.json
new file mode 100644 (file)
index 0000000..11da74b
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT":
+               [
+                       { "features": ["shaderImageFloat32Atomics"],            "requirements": ["VK_EXT_shader_atomic_float", "physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics"] },
+                       { "features": ["shaderImageFloat32AtomicAdd"],          "requirements": ["VK_EXT_shader_atomic_float", "physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float2.json b/external/vulkancts/scripts/src/extensions/VK_EXT_shader_atomic_float2.json
new file mode 100644 (file)
index 0000000..d55b297
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT":
+               [
+                       { "features": ["shaderImageFloat32AtomicMinMax"],               "requirements": ["VK_EXT_shader_atomic_float2", "physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_shader_demote_to_helper_invocation.json b/external/vulkancts/scripts/src/extensions/VK_EXT_shader_demote_to_helper_invocation.json
new file mode 100644 (file)
index 0000000..433d39b
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT":
+               [
+                       { "features": ["shaderDemoteToHelperInvocation"],       "requirements": ["VK_EXT_shader_demote_to_helper_invocation"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_shader_image_atomic_int64.json b/external/vulkancts/scripts/src/extensions/VK_EXT_shader_image_atomic_int64.json
new file mode 100644 (file)
index 0000000..42a6d3d
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFeatures":
+               [
+                       { "features": ["shaderInt64"],                                          "requirements": ["VK_EXT_shader_image_atomic_int64"] }
+               ],
+               "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT":
+               [
+                       { "features": ["shaderImageInt64Atomics"],                      "requirements": ["VK_EXT_shader_image_atomic_int64"] },
+                       { "features": ["shaderImageInt64Atomics"],                      "requirements": ["VK_EXT_shader_image_atomic_int64", "physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_shader_viewport_index_layer.json b/external/vulkancts/scripts/src/extensions/VK_EXT_shader_viewport_index_layer.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_subgroup_size_control.json b/external/vulkancts/scripts/src/extensions/VK_EXT_subgroup_size_control.json
new file mode 100644 (file)
index 0000000..fb9ecf6
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT":
+               [
+                       { "features": ["subgroupSizeControl"],                  "requirements": ["VK_EXT_subgroup_size_control"] },
+                       { "features": ["computeFullSubgroups"],                 "requirements": ["VK_EXT_subgroup_size_control"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_texel_buffer_alignment.json b/external/vulkancts/scripts/src/extensions/VK_EXT_texel_buffer_alignment.json
new file mode 100644 (file)
index 0000000..e3c3f98
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT":
+               [
+                       { "features": ["texelBufferAlignment"], "requirements": ["VK_EXT_texel_buffer_alignment"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_texture_compression_astc_hdr.json b/external/vulkancts/scripts/src/extensions/VK_EXT_texture_compression_astc_hdr.json
new file mode 100644 (file)
index 0000000..09eedc9
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT":
+               [
+                       { "features": ["textureCompressionASTC_HDR"],   "requirements": ["VK_EXT_texture_compression_astc_hdr"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_transform_feedback.json b/external/vulkancts/scripts/src/extensions/VK_EXT_transform_feedback.json
new file mode 100644 (file)
index 0000000..c0a33c8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceTransformFeedbackFeaturesEXT":
+               [
+                       { "features": ["transformFeedback"],    "requirements": ["VK_EXT_transform_feedback"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_vertex_attribute_divisor.json b/external/vulkancts/scripts/src/extensions/VK_EXT_vertex_attribute_divisor.json
new file mode 100644 (file)
index 0000000..41eda17
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT":
+               [
+                       { "features": ["vertexAttributeInstanceRateDivisor"],   "requirements": ["VK_EXT_vertex_attribute_divisor"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_vertex_input_dynamic_state.json b/external/vulkancts/scripts/src/extensions/VK_EXT_vertex_input_dynamic_state.json
new file mode 100644 (file)
index 0000000..adbc664
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT":
+               [
+                       { "features": ["vertexInputDynamicState"],      "requirements": ["VK_EXT_vertex_input_dynamic_state"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_2plane_444_formats.json b/external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_2plane_444_formats.json
new file mode 100644 (file)
index 0000000..42b7b48
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT":
+               [
+                       { "features": ["ycbcr2plane444Formats"],        "requirements": ["VK_EXT_ycbcr_2plane_444_formats"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_image_arrays.json b/external/vulkancts/scripts/src/extensions/VK_EXT_ycbcr_image_arrays.json
new file mode 100644 (file)
index 0000000..f8ee146
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT":
+               [
+                       { "features": ["ycbcrImageArrays"],     "requirements": ["VK_EXT_ycbcr_image_arrays"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_16bit_storage.json b/external/vulkancts/scripts/src/extensions/VK_KHR_16bit_storage.json
new file mode 100644 (file)
index 0000000..b683bf8
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevice16BitStorageFeaturesKHR":
+               [
+                       { "features": ["storageBuffer16BitAccess"],     "requirements": ["VK_KHR_16bit_storage"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_8bit_storage.json b/external/vulkancts/scripts/src/extensions/VK_KHR_8bit_storage.json
new file mode 100644 (file)
index 0000000..8ad7fcd
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevice8BitStorageFeaturesKHR":
+               [
+                       { "features": ["storageBuffer8BitAccess"],      "requirements": ["VK_KHR_8bit_storage"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_acceleration_structure.json b/external/vulkancts/scripts/src/extensions/VK_KHR_acceleration_structure.json
new file mode 100644 (file)
index 0000000..b3e517f
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceAccelerationStructureFeaturesKHR":
+               [
+                       { "features": ["accelerationStructure"],                                                                        "requirements": ["VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingAccelerationStructureUpdateAfterBind"],        "requirements": ["VK_KHR_acceleration_structure"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_android_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_android_surface.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_bind_memory2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_bind_memory2.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_buffer_device_address.json b/external/vulkancts/scripts/src/extensions/VK_KHR_buffer_device_address.json
new file mode 100644 (file)
index 0000000..e16a7b3
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR":
+               [
+                       { "features": ["bufferDeviceAddress"],  "requirements": ["VK_KHR_buffer_device_address"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_copy_commands2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_copy_commands2.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_create_renderpass2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_create_renderpass2.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_dedicated_allocation.json b/external/vulkancts/scripts/src/extensions/VK_KHR_dedicated_allocation.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_deferred_host_operations.json b/external/vulkancts/scripts/src/extensions/VK_KHR_deferred_host_operations.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_depth_stencil_resolve.json b/external/vulkancts/scripts/src/extensions/VK_KHR_depth_stencil_resolve.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_descriptor_update_template.json b/external/vulkancts/scripts/src/extensions/VK_KHR_descriptor_update_template.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_device_group.json b/external/vulkancts/scripts/src/extensions/VK_KHR_device_group.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_device_group_creation.json b/external/vulkancts/scripts/src/extensions/VK_KHR_device_group_creation.json
new file mode 100644 (file)
index 0000000..f621cfe
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_display.json b/external/vulkancts/scripts/src/extensions/VK_KHR_display.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_display_swapchain.json b/external/vulkancts/scripts/src/extensions/VK_KHR_display_swapchain.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_draw_indirect_count.json b/external/vulkancts/scripts/src/extensions/VK_KHR_draw_indirect_count.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_driver_properties.json b/external/vulkancts/scripts/src/extensions/VK_KHR_driver_properties.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_dynamic_rendering.json b/external/vulkancts/scripts/src/extensions/VK_KHR_dynamic_rendering.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_capabilities.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_capabilities.json
new file mode 100644 (file)
index 0000000..f621cfe
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_fd.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_fd.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_win32.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_fence_win32.json
new file mode 100644 (file)
index 0000000..958b417
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
+
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_capabilities.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_capabilities.json
new file mode 100644 (file)
index 0000000..f621cfe
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_fd.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_fd.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_win32.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_memory_win32.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_capabilities.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_capabilities.json
new file mode 100644 (file)
index 0000000..f621cfe
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_fd.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_fd.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_win32.json b/external/vulkancts/scripts/src/extensions/VK_KHR_external_semaphore_win32.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_format_feature_flags2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_format_feature_flags2.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_fragment_shading_rate.json b/external/vulkancts/scripts/src/extensions/VK_KHR_fragment_shading_rate.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_get_display_properties2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_get_display_properties2.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_get_memory_requirements2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_get_memory_requirements2.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_get_physical_device_properties2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_get_physical_device_properties2.json
new file mode 100644 (file)
index 0000000..f621cfe
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_get_surface_capabilities2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_get_surface_capabilities2.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_image_format_list.json b/external/vulkancts/scripts/src/extensions/VK_KHR_image_format_list.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_imageless_framebuffer.json b/external/vulkancts/scripts/src/extensions/VK_KHR_imageless_framebuffer.json
new file mode 100644 (file)
index 0000000..847f75b
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceImagelessFramebufferFeaturesKHR":
+               [
+                       { "features": ["imagelessFramebuffer"], "requirements": ["VK_KHR_imageless_framebuffer"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_incremental_present.json b/external/vulkancts/scripts/src/extensions/VK_KHR_incremental_present.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance1.json b/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance1.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance2.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance3.json b/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance3.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance4.json b/external/vulkancts/scripts/src/extensions/VK_KHR_maintenance4.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_mir_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_mir_surface.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_multiview.json b/external/vulkancts/scripts/src/extensions/VK_KHR_multiview.json
new file mode 100644 (file)
index 0000000..898cd57
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceMultiviewFeatures":
+               [
+                       { "features": ["multiview"],    "requirements": ["VK_KHR_multiview"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_performance_query.json b/external/vulkancts/scripts/src/extensions/VK_KHR_performance_query.json
new file mode 100644 (file)
index 0000000..e153ffb
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevicePerformanceQueryFeaturesKHR":
+               [
+                       { "features": ["performanceCounterQueryPools"], "requirements": ["VK_KHR_performance_query"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_executable_properties.json b/external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_executable_properties.json
new file mode 100644 (file)
index 0000000..500a268
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR":
+               [
+                       { "features": ["pipelineExecutableInfo"],       "requirements": ["VK_KHR_pipeline_executable_properties"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_library.json b/external/vulkancts/scripts/src/extensions/VK_KHR_pipeline_library.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_present_id.json b/external/vulkancts/scripts/src/extensions/VK_KHR_present_id.json
new file mode 100644 (file)
index 0000000..a274803
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevicePresentIdFeaturesKHR":
+               [
+                       { "features": ["presentId"],    "requirements": ["VK_KHR_present_id"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_present_wait.json b/external/vulkancts/scripts/src/extensions/VK_KHR_present_wait.json
new file mode 100644 (file)
index 0000000..e637202
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDevicePresentWaitFeaturesKHR":
+               [
+                       { "features": ["presentWait"],  "requirements": ["VK_KHR_present_wait"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_push_descriptor.json b/external/vulkancts/scripts/src/extensions/VK_KHR_push_descriptor.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_ray_query.json b/external/vulkancts/scripts/src/extensions/VK_KHR_ray_query.json
new file mode 100644 (file)
index 0000000..a6399c2
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceRayQueryFeaturesKHR":
+               [
+                       { "features": ["rayQuery"],     "requirements": ["VK_KHR_ray_query"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_pipeline.json b/external/vulkancts/scripts/src/extensions/VK_KHR_ray_tracing_pipeline.json
new file mode 100644 (file)
index 0000000..cc7d214
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceRayTracingPipelineFeaturesKHR":
+               [
+                       { "features": ["rayTracingPipeline", "rayTracingPipelineTraceRaysIndirect"],    "requirements": ["VK_KHR_ray_tracing_pipeline"] },
+                       { "features": ["rayTraversalPrimitiveCulling"],                                                                 "requirements": ["VK_KHR_ray_tracing_pipeline", "VK_KHR_ray_query"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_relaxed_block_layout.json b/external/vulkancts/scripts/src/extensions/VK_KHR_relaxed_block_layout.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_sampler_mirror_clamp_to_edge.json b/external/vulkancts/scripts/src/extensions/VK_KHR_sampler_mirror_clamp_to_edge.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_sampler_ycbcr_conversion.json b/external/vulkancts/scripts/src/extensions/VK_KHR_sampler_ycbcr_conversion.json
new file mode 100644 (file)
index 0000000..28c1004
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR":
+               [
+                       { "features": ["samplerYcbcrConversion"],       "requirements": ["VK_KHR_sampler_ycbcr_conversion"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_separate_depth_stencil_layouts.json b/external/vulkancts/scripts/src/extensions/VK_KHR_separate_depth_stencil_layouts.json
new file mode 100644 (file)
index 0000000..771558b
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR":
+               [
+                       { "features": ["separateDepthStencilLayouts"],  "requirements": ["VK_KHR_separate_depth_stencil_layouts"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_atomic_int64.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_atomic_int64.json
new file mode 100644 (file)
index 0000000..849a5a8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR":
+               [
+                       { "features": ["shaderBufferInt64Atomics"],     "requirements": ["VK_KHR_shader_atomic_int64"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_clock.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_clock.json
new file mode 100644 (file)
index 0000000..da13ad1
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderClockFeaturesKHR":
+               [
+                       { "features": ["shaderSubgroupClock"],  "requirements": ["VK_KHR_shader_clock"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_draw_parameters.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_draw_parameters.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_float16_int8.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_float16_int8.json
new file mode 100644 (file)
index 0000000..4652c43
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderFloat16Int8Features":
+               [
+                       { "features": ["shaderFloat16", "shaderInt8"],  "requirements": ["VK_KHR_shader_float16_int8"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_float_controls.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_float_controls.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_integer_dot_product.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_integer_dot_product.json
new file mode 100644 (file)
index 0000000..f7307ee
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR":
+               [
+                       { "features": ["shaderIntegerDotProduct"],      "requirements": ["VK_KHR_shader_integer_dot_product"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_non_semantic_info.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_non_semantic_info.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_extended_types.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_extended_types.json
new file mode 100644 (file)
index 0000000..7544ba9
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR":
+               [
+                       { "features": ["shaderSubgroupExtendedTypes"],  "requirements": ["VK_KHR_shader_subgroup_extended_types"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_uniform_control_flow.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_subgroup_uniform_control_flow.json
new file mode 100644 (file)
index 0000000..0088275
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR":
+               [
+                       { "features": ["shaderSubgroupUniformControlFlow"],     "requirements": ["VK_KHR_shader_subgroup_uniform_control_flow"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shader_terminate_invocation.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shader_terminate_invocation.json
new file mode 100644 (file)
index 0000000..051a935
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR":
+               [
+                       { "features": ["shaderTerminateInvocation"],    "requirements": ["VK_KHR_shader_terminate_invocation"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_shared_presentable_image.json b/external/vulkancts/scripts/src/extensions/VK_KHR_shared_presentable_image.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_spirv_1_4.json b/external/vulkancts/scripts/src/extensions/VK_KHR_spirv_1_4.json
new file mode 100644 (file)
index 0000000..09eccd1
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_storage_buffer_storage_class.json b/external/vulkancts/scripts/src/extensions/VK_KHR_storage_buffer_storage_class.json
new file mode 100644 (file)
index 0000000..d32c4fb
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_surface.json
new file mode 100644 (file)
index 0000000..38b3b78
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_surface_protected_capabilities.json b/external/vulkancts/scripts/src/extensions/VK_KHR_surface_protected_capabilities.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_swapchain.json b/external/vulkancts/scripts/src/extensions/VK_KHR_swapchain.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_swapchain_mutable_format.json b/external/vulkancts/scripts/src/extensions/VK_KHR_swapchain_mutable_format.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_synchronization2.json b/external/vulkancts/scripts/src/extensions/VK_KHR_synchronization2.json
new file mode 100644 (file)
index 0000000..7f3b191
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceSynchronization2FeaturesKHR":
+               [
+                       { "features": ["synchronization2"],                             "requirements": ["VK_KHR_synchronization2"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_timeline_semaphore.json b/external/vulkancts/scripts/src/extensions/VK_KHR_timeline_semaphore.json
new file mode 100644 (file)
index 0000000..1e251e0
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR":
+               [
+                       { "features": ["timelineSemaphore"],            "requirements": ["VK_KHR_timeline_semaphore"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_uniform_buffer_standard_layout.json b/external/vulkancts/scripts/src/extensions/VK_KHR_uniform_buffer_standard_layout.json
new file mode 100644 (file)
index 0000000..b122ae4
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.2.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR":
+               [
+                       { "features": ["uniformBufferStandardLayout"],          "requirements": ["VK_KHR_uniform_buffer_standard_layout"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_variable_pointers.json b/external/vulkancts/scripts/src/extensions/VK_KHR_variable_pointers.json
new file mode 100644 (file)
index 0000000..7750f7a
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceVariablePointersFeatures":
+               [
+                       { "features": ["variablePointersStorageBuffer"],                "requirements": ["VK_KHR_variable_pointers"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_vulkan_memory_model.json b/external/vulkancts/scripts/src/extensions/VK_KHR_vulkan_memory_model.json
new file mode 100644 (file)
index 0000000..3f5d8f3
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": "1.1.0"
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR":
+               [
+                       { "features": ["vulkanMemoryModel"],            "requirements": ["VK_KHR_vulkan_memory_model"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_wayland_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_wayland_surface.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_win32_keyed_mutex.json b/external/vulkancts/scripts/src/extensions/VK_KHR_win32_keyed_mutex.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_win32_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_win32_surface.json
new file mode 100644 (file)
index 0000000..38b3b78
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_workgroup_memory_explicit_layout.json b/external/vulkancts/scripts/src/extensions/VK_KHR_workgroup_memory_explicit_layout.json
new file mode 100644 (file)
index 0000000..4dec073
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR":
+               [
+                       { "features": ["workgroupMemoryExplicitLayout", "workgroupMemoryExplicitLayoutScalarBlockLayout", "workgroupMemoryExplicitLayout8BitAccess", "workgroupMemoryExplicitLayout16BitAccess"],       "requirements": ["VK_KHR_workgroup_memory_explicit_layout"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_xcb_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_xcb_surface.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_xlib_surface.json b/external/vulkancts/scripts/src/extensions/VK_KHR_xlib_surface.json
new file mode 100644 (file)
index 0000000..cf6a384
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "instance",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_KHR_zero_initialize_workgroup_memory.json b/external/vulkancts/scripts/src/extensions/VK_KHR_zero_initialize_workgroup_memory.json
new file mode 100644 (file)
index 0000000..781e276
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       },
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR":
+               [
+                       { "features": ["shaderZeroInitializeWorkgroupMemory"],  "requirements": ["VK_KHR_zero_initialize_workgroup_memory"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_NV_mesh_shading.json b/external/vulkancts/scripts/src/extensions/VK_NV_mesh_shading.json
new file mode 100644 (file)
index 0000000..eb459c7
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "register_extension":
+       {
+               "type": "device",
+               "core": ""
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_VALVE_mutable_descriptor_type.json b/external/vulkancts/scripts/src/extensions/VK_VALVE_mutable_descriptor_type.json
new file mode 100644 (file)
index 0000000..21718b7
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE":
+               [
+                       { "features": ["mutableDescriptorType"],        "requirements": ["VK_VALVE_mutable_descriptor_type"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_VERSION_1_0.json b/external/vulkancts/scripts/src/extensions/VK_VERSION_1_0.json
new file mode 100644 (file)
index 0000000..1467dab
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFeatures":
+               [
+                       { "features": ["robustBufferAccess"],   "requirements": [] },
+                       { "features": ["shaderInt64"],                  "requirements": ["physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics"] },
+                       { "features": ["shaderInt64"],                  "requirements": ["physicalDeviceVulkan12Features.shaderBufferInt64Atomics"] },
+                       { "features": ["shaderInt64"],                  "requirements": ["physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics"] },
+                       { "features": ["shaderInt64"],                  "requirements": ["physicalDeviceVulkan12Features.shaderSharedInt64Atomics"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_VERSION_1_1.json b/external/vulkancts/scripts/src/extensions/VK_VERSION_1_1.json
new file mode 100644 (file)
index 0000000..f15ec97
--- /dev/null
@@ -0,0 +1,34 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceMultiviewFeatures":
+               [
+                       { "features": ["multiview"],                                                                                    "requirements": ["ApiVersion(1, 1, 0)"] }
+               ],
+               "VkPhysicalDeviceFeatures":
+               [
+                       { "features": ["shaderSampledImageArrayDynamicIndexing"],                               "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderStorageBufferArrayDynamicIndexing"],                              "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] }
+               ],
+               "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR":
+               [
+                       { "features": ["bufferDeviceAddress"],                                                                  "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] }
+               ],
+               "VkPhysicalDeviceDescriptorIndexingFeaturesEXT":
+               [
+                       { "features": ["shaderUniformTexelBufferArrayDynamicIndexing"],                 "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderStorageTexelBufferArrayDynamicIndexing"],                 "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderSampledImageArrayNonUniformIndexing"],                    "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderStorageBufferArrayNonUniformIndexing"],                   "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderUniformTexelBufferArrayNonUniformIndexing"],              "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingSampledImageUpdateAfterBind"],                 "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageImageUpdateAfterBind"],                 "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageBufferUpdateAfterBind"],                "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingUniformTexelBufferUpdateAfterBind"],   "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageTexelBufferUpdateAfterBind"],   "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingUpdateUnusedWhilePending"],                    "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingPartiallyBound"],                                              "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["runtimeDescriptorArray"],                                                               "requirements": ["ApiVersion(1, 1, 0)", "VK_KHR_acceleration_structure"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/VK_VERSION_1_2.json b/external/vulkancts/scripts/src/extensions/VK_VERSION_1_2.json
new file mode 100644 (file)
index 0000000..6c45a35
--- /dev/null
@@ -0,0 +1,57 @@
+{
+       "mandatory_features":
+       {
+               "VkPhysicalDeviceFeatures":
+               [
+                       { "features": ["shaderSampledImageArrayDynamicIndexing"],                                       "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderStorageBufferArrayDynamicIndexing"],                                      "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] }
+               ],
+               "VkPhysicalDeviceVulkan11Features":
+               [
+                       { "features": ["multiview"],                                                                                            "requirements": ["ApiVersion(1, 2, 0)"] }
+               ],
+               "VkPhysicalDeviceVulkan12Features":
+               [
+                       { "features": ["subgroupBroadcastDynamicId"],                                                           "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["shaderSubgroupExtendedTypes"],                                                          "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["imagelessFramebuffer"],                                                                         "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["uniformBufferStandardLayout"],                                                          "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["separateDepthStencilLayouts"],                                                          "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["hostQueryReset"],                                                                                       "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["timelineSemaphore"],                                                                            "requirements": ["ApiVersion(1, 2, 0)"] },
+                       { "features": ["shaderUniformTexelBufferArrayDynamicIndexing"],                         "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderStorageTexelBufferArrayDynamicIndexing"],                         "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderSampledImageArrayNonUniformIndexing"],                            "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderStorageBufferArrayNonUniformIndexing"],                           "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderUniformTexelBufferArrayNonUniformIndexing"],                      "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingSampledImageUpdateAfterBind"],                         "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingStorageImageUpdateAfterBind"],                         "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingStorageBufferUpdateAfterBind"],                        "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingUniformTexelBufferUpdateAfterBind"],           "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingStorageTexelBufferUpdateAfterBind"],           "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingUpdateUnusedWhilePending"],                            "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["descriptorBindingPartiallyBound"],                                                      "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["runtimeDescriptorArray"],                                                                       "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceVulkan12Features.descriptorIndexing"] },
+                       { "features": ["shaderBufferInt64Atomics"],                                                                     "requirements": ["ApiVersion(1, 2, 0)", "physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics"] },
+                       { "features": ["drawIndirectCount"],                                                                            "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_draw_indirect_count"] },
+                       { "features": ["samplerMirrorClampToEdge"],                                                                     "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_sampler_mirror_clamp_to_edge"] },
+                       { "features": ["samplerFilterMinmax"],                                                                          "requirements": ["ApiVersion(1, 2, 0)", "VK_EXT_sampler_filter_minmax"] },
+                       { "features": ["shaderOutputViewportIndex"],                                                            "requirements": ["ApiVersion(1, 2, 0)", "VK_EXT_shader_viewport_index_layer"] },
+                       { "features": ["shaderOutputLayer"],                                                                            "requirements": ["ApiVersion(1, 2, 0)", "VK_EXT_shader_viewport_index_layer"] },
+                       { "features": ["shaderUniformTexelBufferArrayDynamicIndexing"],                         "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderStorageTexelBufferArrayDynamicIndexing"],                         "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderSampledImageArrayNonUniformIndexing"],                            "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderStorageBufferArrayNonUniformIndexing"],                           "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["shaderUniformTexelBufferArrayNonUniformIndexing"],                      "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingSampledImageUpdateAfterBind"],                         "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageImageUpdateAfterBind"],                         "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageBufferUpdateAfterBind"],                        "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingUniformTexelBufferUpdateAfterBind"],           "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingStorageTexelBufferUpdateAfterBind"],           "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingUpdateUnusedWhilePending"],                            "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["descriptorBindingPartiallyBound"],                                                      "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["runtimeDescriptorArray"],                                                                       "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] },
+                       { "features": ["bufferDeviceAddress"],                                                                          "requirements": ["ApiVersion(1, 2, 0)", "VK_KHR_acceleration_structure"] }
+               ]
+       }
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions/schema.json b/external/vulkancts/scripts/src/extensions/schema.json
new file mode 100644 (file)
index 0000000..6ee2920
--- /dev/null
@@ -0,0 +1,74 @@
+{
+       "$schema": "https://json-schema.org/draft/2020-12/schema",
+       "type": "object",
+       "properties":
+       {
+               "register_extension":
+               {
+                       "type": "object",
+                       "description": "When this section is present extension is registered to the list of allowed KHR extensions.",
+                       "properties":
+                       {
+                               "type":
+                               {
+                                       "type": "string",
+                                       "enum": ["device", "instance"],
+                                       "description": "This property specifies if this is device or instance extension."
+                               },
+                               "core":
+                               {
+                                       "type": "string",
+                                       "description": "This property specifies vulkan version to which this extension was promoted. Empty string is also accepted.",
+                                       "pattern": "^$|^[1-9]\\.[0-9]\\.[0-9]$"
+                               }
+                       },
+                       "required": ["type", "core"],
+                       "additionalProperties": false
+               },
+               "mandatory_features":
+               {
+                       "type": "object",
+                       "description": "When this section is present it specifies mandatory features for extension or vulkan version.",
+                       "patternProperties":
+                       {
+                               "^VkPhysicalDevice[1-9A-Za-z]*Features(EXT|KHR|VALVE)?$":
+                               {
+                                       "type": "array",
+                                       "description": "List of mandatory features in given feature structure.",
+                                       "minItems": 1,
+                                       "items":
+                                       {
+                                               "type": "object",
+                                               "properties":
+                                               {
+                                                       "features":
+                                                       {
+                                                               "type": "array",
+                                                               "description": "List of structure attributes - at least one of them must be supported when requirements are meat.",
+                                                               "minItems": 1,
+                                                               "items":
+                                                               {
+                                                                       "type": "string"
+                                                               }
+                                                       },
+                                                       "requirements":
+                                                       {
+                                                               "type": "array",
+                                                               "description": "List of requirements (other features, extensions, vulkan version). This list can be empty.",
+                                                               "items":
+                                                               {
+                                                                       "type": "string"
+                                                               }
+                                                       }
+                                               },
+                                               "required": ["features", "requirements"],
+                                               "additionalProperties": false
+                                       }
+                               },
+                               "additionalProperties": { "type": "string" }
+                       },
+                       "additionalProperties": false
+               }
+       },
+       "additionalProperties": false
+}
\ No newline at end of file
diff --git a/external/vulkancts/scripts/src/extensions_data.txt b/external/vulkancts/scripts/src/extensions_data.txt
deleted file mode 100644 (file)
index fcf1cfb..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-// This is manually created file used by gen_framework.py.
-// It contains additional data for extensions that are required to
-// generate code for cts. Currently every line contains:
-// * extension name
-// * information wheter this is device or instance extension
-// * version number in which this extension is part of core
-
-VK_KHR_surface                                                         INSTANCE
-VK_KHR_display                                                         INSTANCE
-VK_KHR_xlib_surface                                                    INSTANCE
-VK_KHR_xcb_surface                                                     INSTANCE
-VK_KHR_wayland_surface                                         INSTANCE
-VK_KHR_mir_surface                                                     INSTANCE
-VK_KHR_android_surface                                         INSTANCE
-VK_KHR_win32_surface                                           INSTANCE
-VK_KHR_get_physical_device_properties2         INSTANCE 1_1_0
-VK_KHR_device_group_creation                           INSTANCE 1_1_0
-VK_KHR_external_memory_capabilities                    INSTANCE 1_1_0
-VK_KHR_external_semaphore_capabilities         INSTANCE 1_1_0
-VK_KHR_external_fence_capabilities                     INSTANCE 1_1_0
-VK_KHR_get_surface_capabilities2                       INSTANCE
-VK_KHR_get_display_properties2                         INSTANCE
-VK_KHR_surface_protected_capabilities          INSTANCE
-
-VK_KHR_swapchain                                                       DEVICE
-VK_KHR_swapchain_mutable_format                                DEVICE
-VK_KHR_display_swapchain                                       DEVICE
-VK_KHR_sampler_mirror_clamp_to_edge                    DEVICE 1_2_0
-VK_KHR_multiview                                                       DEVICE 1_1_0
-VK_KHR_device_group                                                    DEVICE 1_1_0
-VK_KHR_shader_draw_parameters                          DEVICE 1_1_0
-VK_KHR_maintenance1                                                    DEVICE 1_1_0
-VK_KHR_external_memory                                         DEVICE 1_1_0
-VK_KHR_external_memory_win32                           DEVICE
-VK_KHR_external_memory_fd                                      DEVICE
-VK_KHR_win32_keyed_mutex                                       DEVICE
-VK_KHR_external_semaphore                                      DEVICE 1_1_0
-VK_KHR_external_semaphore_win32                                DEVICE
-VK_KHR_external_semaphore_fd                           DEVICE
-VK_KHR_push_descriptor                                         DEVICE
-VK_KHR_shader_float16_int8                                     DEVICE 1_2_0
-VK_KHR_16bit_storage                                           DEVICE 1_1_0
-VK_KHR_incremental_present                                     DEVICE
-VK_KHR_8bit_storage                                                    DEVICE 1_2_0
-VK_KHR_descriptor_update_template                      DEVICE 1_1_0
-VK_KHR_create_renderpass2                                      DEVICE 1_2_0
-VK_KHR_shared_presentable_image                                DEVICE
-VK_KHR_external_fence                                          DEVICE 1_1_0
-VK_KHR_external_fence_win32                                    DEVICE
-VK_KHR_external_fence_fd                                       DEVICE
-VK_KHR_maintenance2                                                    DEVICE 1_1_0
-VK_KHR_variable_pointers                                       DEVICE 1_1_0
-VK_KHR_dedicated_allocation                                    DEVICE 1_1_0
-VK_KHR_storage_buffer_storage_class                    DEVICE 1_1_0
-VK_KHR_relaxed_block_layout                                    DEVICE 1_1_0
-VK_KHR_get_memory_requirements2                                DEVICE 1_1_0
-VK_KHR_image_format_list                                       DEVICE 1_2_0
-VK_KHR_sampler_ycbcr_conversion                                DEVICE 1_1_0
-VK_KHR_bind_memory2                                                    DEVICE 1_1_0
-VK_KHR_maintenance3                                                    DEVICE 1_1_0
-VK_KHR_driver_properties                                       DEVICE 1_2_0
-VK_KHR_shader_float_controls                           DEVICE 1_2_0
-VK_KHR_depth_stencil_resolve                           DEVICE 1_2_0
-VK_KHR_draw_indirect_count                                     DEVICE 1_2_0
-VK_KHR_shader_atomic_int64                                     DEVICE 1_2_0
-VK_KHR_vulkan_memory_model                                     DEVICE 1_2_0
-VK_KHR_uniform_buffer_standard_layout          DEVICE 1_2_0
-VK_KHR_imageless_framebuffer                           DEVICE 1_2_0
-VK_KHR_shader_subgroup_extended_types          DEVICE 1_2_0
-VK_EXT_sampler_filter_minmax                           DEVICE 1_2_0
-VK_EXT_shader_viewport_index_layer                     DEVICE 1_2_0
-VK_EXT_descriptor_indexing                                     DEVICE 1_2_0
-VK_EXT_scalar_block_layout                                     DEVICE 1_2_0
-VK_KHR_buffer_device_address                           DEVICE 1_2_0
-VK_EXT_host_query_reset                                                DEVICE 1_2_0
-VK_KHR_separate_depth_stencil_layouts          DEVICE 1_2_0
-VK_KHR_timeline_semaphore                                      DEVICE 1_2_0
-VK_KHR_spirv_1_4                                                       DEVICE 1_2_0
-VK_EXT_separate_stencil_usage                          DEVICE 1_2_0
-VK_KHR_pipeline_executable_properties          DEVICE
-VK_KHR_shader_clock                                                    DEVICE
-VK_KHR_performance_query                                       DEVICE
-VK_KHR_shader_non_semantic_info                                DEVICE
-VK_KHR_copy_commands2                                          DEVICE
-VK_KHR_shader_terminate_invocation                     DEVICE
-VK_KHR_ray_tracing_pipeline                                    DEVICE
-VK_KHR_ray_query                                                       DEVICE
-VK_KHR_acceleration_structure                          DEVICE
-VK_KHR_pipeline_library                                                DEVICE
-VK_KHR_deferred_host_operations                                DEVICE
-VK_KHR_fragment_shading_rate                           DEVICE
-VK_KHR_zero_initialize_workgroup_memory                DEVICE
-VK_KHR_workgroup_memory_explicit_layout                DEVICE
-VK_KHR_synchronization2                                                DEVICE
-VK_EXT_color_write_enable                                      DEVICE
-VK_VALVE_mutable_descriptor_type                       DEVICE
-VK_EXT_multi_draw                                                      DEVICE
-VK_KHR_shader_subgroup_uniform_control_flow    DEVICE
-VK_KHR_present_id                                                      DEVICE
-VK_KHR_present_wait                                                    DEVICE
-VK_KHR_shader_integer_dot_product                      DEVICE
-VK_KHR_format_feature_flags2                           DEVICE
-VK_KHR_maintenance4                                                    DEVICE
-VK_KHR_dynamic_rendering                                       DEVICE
-VK_EXT_border_color_swizzle                                    DEVICE
-VK_NV_mesh_shader                                                      DEVICE
diff --git a/external/vulkancts/scripts/src/mandatory_features.txt b/external/vulkancts/scripts/src/mandatory_features.txt
deleted file mode 100644 (file)
index d444da8..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-// This is manually created file used by gen_framework.py.
-// It contains list of mandatory features required to
-// generate code for cts. Currently every line contains:
-// * name of structure containing physical device featurs
-// * name of attribute that is mandatory
-// * structure type enum
-// * required extensions that enable specified feature
-
-VkPhysicalDeviceFeatures                                                                       FEATURES ( robustBufferAccess )                                                                 REQUIREMENTS ()
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderSampledImageArrayDynamicIndexing )                             REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderStorageBufferArrayDynamicIndexing )                    REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDevice8BitStorageFeaturesKHR                                         FEATURES ( storageBuffer8BitAccess )                                                    REQUIREMENTS ( VK_KHR_8bit_storage )
-VkPhysicalDeviceVulkan11Features                                                       FEATURES ( multiview )                                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceMultiviewFeatures                                                      FEATURES ( multiview )                                                                                  REQUIREMENTS ( "ApiVersion(1, 1, 0)" )
-VkPhysicalDeviceMultiviewFeatures                                                      FEATURES ( multiview )                                                                                  REQUIREMENTS ( VK_KHR_multiview )
-VkPhysicalDeviceVariablePointersFeatures                                       FEATURES ( variablePointersStorageBuffer )                                              REQUIREMENTS ( VK_KHR_variable_pointers )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderUniformTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderStorageTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderSampledImageArrayNonUniformIndexing )                  REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderStorageBufferArrayNonUniformIndexing )                 REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderUniformTexelBufferArrayNonUniformIndexing )    REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingSampledImageUpdateAfterBind )               REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageImageUpdateAfterBind )               REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageBufferUpdateAfterBind )              REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingUniformTexelBufferUpdateAfterBind ) REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageTexelBufferUpdateAfterBind ) REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingUpdateUnusedWhilePending )                  REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingPartiallyBound )                                    REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( runtimeDescriptorArray )                                                             REQUIREMENTS ( VK_EXT_descriptor_indexing )
-VkPhysicalDeviceInlineUniformBlockFeaturesEXT                          FEATURES ( inlineUniformBlock )                                                                 REQUIREMENTS ( VK_EXT_inline_uniform_block )
-VkPhysicalDeviceInlineUniformBlockFeaturesEXT                          FEATURES ( descriptorBindingInlineUniformBlockUpdateAfterBind ) REQUIREMENTS ( VK_EXT_inline_uniform_block VK_EXT_descriptor_indexing )
-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT                           FEATURES ( scalarBlockLayout )                                                                  REQUIREMENTS ( VK_EXT_scalar_block_layout )
-VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR         FEATURES ( uniformBufferStandardLayout )                                                REQUIREMENTS ( VK_KHR_uniform_buffer_standard_layout )
-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR                FEATURES ( pipelineExecutableInfo )                                                             REQUIREMENTS ( VK_KHR_pipeline_executable_properties )
-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                         FEATURES ( subgroupSizeControl )                                                                REQUIREMENTS ( VK_EXT_subgroup_size_control )
-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                         FEATURES ( computeFullSubgroups )                                                               REQUIREMENTS ( VK_EXT_subgroup_size_control )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( subgroupBroadcastDynamicId )                                                 REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR         FEATURES ( shaderSubgroupExtendedTypes )                                                REQUIREMENTS ( VK_KHR_shader_subgroup_extended_types )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderSubgroupExtendedTypes )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceImagelessFramebufferFeaturesKHR                        FEATURES ( imagelessFramebuffer )                                                               REQUIREMENTS ( VK_KHR_imageless_framebuffer )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( imagelessFramebuffer )                                                               REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( uniformBufferStandardLayout )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR         FEATURES ( separateDepthStencilLayouts )                                                REQUIREMENTS ( VK_KHR_separate_depth_stencil_layouts )
-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT                FEATURES ( pipelineCreationCacheControl )                                               REQUIREMENTS ( VK_EXT_pipeline_creation_cache_control )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( separateDepthStencilLayouts )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceHostQueryResetFeaturesEXT                                      FEATURES ( hostQueryReset )                                                                             REQUIREMENTS ( VK_EXT_host_query_reset )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( hostQueryReset )                                                                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceTimelineSemaphoreFeaturesKHR                           FEATURES ( timelineSemaphore )                                                                  REQUIREMENTS ( VK_KHR_timeline_semaphore )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( timelineSemaphore )                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderSampledImageArrayDynamicIndexing )                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderStorageBufferArrayDynamicIndexing )                    REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderUniformTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderStorageTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderSampledImageArrayNonUniformIndexing )                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderStorageBufferArrayNonUniformIndexing )                 REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderUniformTexelBufferArrayNonUniformIndexing )    REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingSampledImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageBufferUpdateAfterBind )              REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingUniformTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingUpdateUnusedWhilePending )                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingPartiallyBound )                                    REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( runtimeDescriptorArray )                                                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
-VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT           FEATURES ( textureCompressionASTC_HDR )                                                 REQUIREMENTS ( VK_EXT_texture_compression_astc_hdr )
-VkPhysicalDeviceDepthClipEnableFeaturesEXT                                     FEATURES ( depthClipEnable )                                                                    REQUIREMENTS ( VK_EXT_depth_clip_enable )
-VkPhysicalDeviceMemoryPriorityFeaturesEXT                                      FEATURES ( memoryPriority )                                                                             REQUIREMENTS ( VK_EXT_memory_priority )
-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT                                    FEATURES ( ycbcrImageArrays )                                                                   REQUIREMENTS ( VK_EXT_ycbcr_image_arrays )
-VkPhysicalDeviceIndexTypeUint8FeaturesEXT                                      FEATURES ( indexTypeUint8 )                                                                             REQUIREMENTS ( VK_EXT_index_type_uint8 )
-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT      FEATURES ( shaderDemoteToHelperInvocation )                                             REQUIREMENTS ( VK_EXT_shader_demote_to_helper_invocation )
-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT                                FEATURES ( texelBufferAlignment )                                                               REQUIREMENTS ( VK_EXT_texel_buffer_alignment )
-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR                           FEATURES ( vulkanMemoryModel )                                                                  REQUIREMENTS ( VK_KHR_vulkan_memory_model )
-VkPhysicalDeviceBufferDeviceAddressFeaturesKHR                         FEATURES ( bufferDeviceAddress )                                                                REQUIREMENTS ( VK_KHR_buffer_device_address )
-VkPhysicalDevicePerformanceQueryFeaturesKHR                                    FEATURES ( performanceCounterQueryPools )                                               REQUIREMENTS ( VK_KHR_performance_query )
-VkPhysicalDeviceTransformFeedbackFeaturesEXT                           FEATURES ( transformFeedback )                                                                  REQUIREMENTS ( VK_EXT_transform_feedback )
-VkPhysicalDeviceConditionalRenderingFeaturesEXT                                FEATURES ( conditionalRendering )                                                               REQUIREMENTS ( VK_EXT_conditional_rendering )
-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT                      FEATURES ( vertexAttributeInstanceRateDivisor )                                 REQUIREMENTS ( VK_EXT_vertex_attribute_divisor )
-VkPhysicalDeviceFragmentDensityMapFeaturesEXT                          FEATURES ( fragmentDensityMap )                                                                 REQUIREMENTS ( VK_EXT_fragment_density_map )
-VkPhysicalDeviceShaderClockFeaturesKHR                                         FEATURES ( shaderSubgroupClock )                                                                REQUIREMENTS ( VK_KHR_shader_clock )
-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR                           FEATURES ( shaderBufferInt64Atomics )                                                   REQUIREMENTS ( VK_KHR_shader_atomic_int64 )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderBufferInt64Atomics )                                                   REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
-VkPhysicalDevice16BitStorageFeaturesKHR                                        FEATURES ( storageBuffer16BitAccess )                                                   REQUIREMENTS ( VK_KHR_16bit_storage )
-VkPhysicalDeviceShaderFloat16Int8Features                                      FEATURES ( shaderFloat16 shaderInt8 )                                                   REQUIREMENTS ( VK_KHR_shader_float16_int8 )
-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT                     FEATURES ( fragmentShaderSampleInterlock fragmentShaderPixelInterlock fragmentShaderShadingRateInterlock )                                              REQUIREMENTS ( VK_EXT_fragment_shader_interlock )
-VkPhysicalDeviceLineRasterizationFeaturesEXT                           FEATURES ( rectangularLines bresenhamLines smoothLines stippledRectangularLines stippledBresenhamLines stippledSmoothLines )    REQUIREMENTS ( VK_EXT_line_rasterization )
-VkPhysicalDeviceSynchronization2FeaturesKHR                            FEATURES ( synchronization2 )                                                                   REQUIREMENTS ( VK_KHR_synchronization2 )
-VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR                      FEATURES ( samplerYcbcrConversion )                                                             REQUIREMENTS ( VK_KHR_sampler_ycbcr_conversion )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( drawIndirectCount )                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_draw_indirect_count )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( samplerMirrorClampToEdge )                                                   REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_sampler_mirror_clamp_to_edge )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( samplerFilterMinmax )                                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_EXT_sampler_filter_minmax )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderOutputViewportIndex )                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_EXT_shader_viewport_index_layer )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderOutputLayer )                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_EXT_shader_viewport_index_layer )
-VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR           FEATURES ( shaderTerminateInvocation )                                                  REQUIREMENTS ( VK_KHR_shader_terminate_invocation )
-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT                      FEATURES ( shaderImageInt64Atomics )                                                    REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
-VkPhysicalDevice4444FormatsFeaturesEXT                                         FEATURES ( formatA4R4G4B4 )                                                                             REQUIREMENTS ( VK_EXT_4444_formats )
-VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR       FEATURES ( shaderZeroInitializeWorkgroupMemory )                                REQUIREMENTS ( VK_KHR_zero_initialize_workgroup_memory )
-VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR       FEATURES ( workgroupMemoryExplicitLayout workgroupMemoryExplicitLayoutScalarBlockLayout workgroupMemoryExplicitLayout8BitAccess workgroupMemoryExplicitLayout16BitAccess )                  REQUIREMENTS ( VK_KHR_workgroup_memory_explicit_layout )
-VkPhysicalDeviceAccelerationStructureFeaturesKHR                       FEATURES ( accelerationStructure  )                                                             REQUIREMENTS ( VK_KHR_acceleration_structure )
-VkPhysicalDeviceAccelerationStructureFeaturesKHR                       FEATURES ( descriptorBindingAccelerationStructureUpdateAfterBind )      REQUIREMENTS ( VK_KHR_acceleration_structure )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderSampledImageArrayDynamicIndexing )                             REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderStorageBufferArrayDynamicIndexing )                    REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderUniformTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderStorageTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderSampledImageArrayNonUniformIndexing )                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderStorageBufferArrayNonUniformIndexing )                 REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderUniformTexelBufferArrayNonUniformIndexing )    REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingSampledImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageBufferUpdateAfterBind )              REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingUniformTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingStorageTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingUpdateUnusedWhilePending )                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( descriptorBindingPartiallyBound )                                    REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( runtimeDescriptorArray )                                                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceVulkan12Features                                                       FEATURES ( bufferDeviceAddress )                                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceBufferDeviceAddressFeaturesKHR                         FEATURES ( bufferDeviceAddress )                                                                REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderUniformTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderStorageTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderSampledImageArrayNonUniformIndexing )                  REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderStorageBufferArrayNonUniformIndexing )                 REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( shaderUniformTexelBufferArrayNonUniformIndexing )    REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingSampledImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageImageUpdateAfterBind )               REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageBufferUpdateAfterBind )              REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingUniformTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingStorageTexelBufferUpdateAfterBind ) REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingUpdateUnusedWhilePending )                  REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( descriptorBindingPartiallyBound )                                    REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceDescriptorIndexingFeaturesEXT                          FEATURES ( runtimeDescriptorArray )                                                             REQUIREMENTS ( "ApiVersion(1, 1, 0)" VK_KHR_acceleration_structure )
-VkPhysicalDeviceRayTracingPipelineFeaturesKHR                          FEATURES ( rayTracingPipeline rayTracingPipelineTraceRaysIndirect)      REQUIREMENTS ( VK_KHR_ray_tracing_pipeline )
-VkPhysicalDeviceRayTracingPipelineFeaturesKHR                          FEATURES ( rayTraversalPrimitiveCulling )                                               REQUIREMENTS ( VK_KHR_ray_tracing_pipeline VK_KHR_ray_query )
-VkPhysicalDeviceRayQueryFeaturesKHR                                                    FEATURES ( rayQuery )                                                                                   REQUIREMENTS ( VK_KHR_ray_query )
-VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT                     FEATURES ( vertexInputDynamicState )                                                    REQUIREMENTS ( VK_EXT_vertex_input_dynamic_state  )
-VkPhysicalDeviceColorWriteEnableFeaturesEXT                                    FEATURES ( colorWriteEnable )                                                                   REQUIREMENTS ( VK_EXT_color_write_enable )
-VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT                       FEATURES ( ycbcr2plane444Formats )                                                              REQUIREMENTS ( VK_EXT_ycbcr_2plane_444_formats )
-VkPhysicalDeviceExtendedDynamicState2FeaturesEXT                       FEATURES ( extendedDynamicState2 )                                                              REQUIREMENTS ( VK_EXT_extended_dynamic_state2 )
-VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE                     FEATURES ( mutableDescriptorType )                                                              REQUIREMENTS ( VK_VALVE_mutable_descriptor_type )
-VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT                         FEATURES ( globalPriorityQuery )                                                                REQUIREMENTS ( VK_EXT_global_priority_query )
-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT                      FEATURES ( shaderImageInt64Atomics )                                                    REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics )
-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT                           FEATURES ( shaderImageFloat32Atomics )                                                  REQUIREMENTS ( VK_EXT_shader_atomic_float physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics )
-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT                           FEATURES ( shaderImageFloat32AtomicAdd )                                                REQUIREMENTS ( VK_EXT_shader_atomic_float physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd )
-VkPhysicalDeviceMultiDrawFeaturesEXT                                           FEATURES ( multiDraw )                                                                                  REQUIREMENTS ( VK_EXT_multi_draw )
-VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR    FEATURES ( shaderSubgroupUniformControlFlow )                                   REQUIREMENTS ( VK_KHR_shader_subgroup_uniform_control_flow )
-VkPhysicalDevicePresentIdFeaturesKHR                                           FEATURES ( presentId )                                                                                  REQUIREMENTS ( VK_KHR_present_id )
-VkPhysicalDevicePresentWaitFeaturesKHR                                         FEATURES ( presentWait )                                                                                REQUIREMENTS ( VK_KHR_present_wait )
-VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT                          FEATURES ( shaderImageFloat32AtomicMinMax )                                             REQUIREMENTS ( VK_EXT_shader_atomic_float2 physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax )
-VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR                     FEATURES ( shaderIntegerDotProduct )                                                    REQUIREMENTS ( VK_KHR_shader_integer_dot_product )
-VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT                FEATURES ( primitiveTopologyListRestart )                                               REQUIREMENTS ( VK_EXT_primitive_topology_list_restart )
-VkPhysicalDeviceBorderColorSwizzleFeaturesEXT                          FEATURES ( borderColorSwizzle )                                                                 REQUIREMENTS ( VK_EXT_border_color_swizzle )