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.
namespace xe
{
-static const char* TEST_LOG_VERSION = "0.3.3";
-
/* Batch result writer. */
struct ContainerValue
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));
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"));
*/
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",
};
*/
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",
};
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;
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));
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;
}
}
}
}
- 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 )
{
}
}
- if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+ if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
{
if ( coreFeatures.features.shaderInt64 == VK_FALSE )
{
}
}
- 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;
}
}
};
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)
{
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;
}
dst.push_back("VK_KHR_draw_indirect_count");
dst.push_back("VK_KHR_shader_subgroup_extended_types");
dst.push_back("VK_KHR_8bit_storage");
- dst.push_back("VK_KHR_shader_atomic_int64");
dst.push_back("VK_KHR_driver_properties");
dst.push_back("VK_KHR_shader_float_controls");
dst.push_back("VK_KHR_depth_stencil_resolve");
dst.push_back("VK_KHR_timeline_semaphore");
- dst.push_back("VK_KHR_vulkan_memory_model");
dst.push_back("VK_KHR_spirv_1_4");
dst.push_back("VK_KHR_separate_depth_stencil_layouts");
dst.push_back("VK_KHR_uniform_buffer_standard_layout");
dst.push_back("VK_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");
}
dst.push_back("VK_KHR_shader_draw_parameters");
dst.push_back("VK_KHR_maintenance1");
dst.push_back("VK_KHR_external_memory");
- dst.push_back("VK_KHR_external_semaphore");
dst.push_back("VK_KHR_16bit_storage");
dst.push_back("VK_KHR_descriptor_update_template");
dst.push_back("VK_KHR_external_fence");
dst.push_back("VK_KHR_sampler_ycbcr_conversion");
dst.push_back("VK_KHR_bind_memory2");
dst.push_back("VK_KHR_maintenance3");
+ dst.push_back("VK_KHR_vulkan_memory_model");
}
}
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;
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;
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)
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");
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;
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;
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;
{ 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;
{ 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;
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");
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");
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
{
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
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;
};
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;
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;
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));
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;
}
}
import re
import sys
import copy
+import glob
+import json
from itertools import chain
from collections import OrderedDict
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:
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}
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]
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:
# 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)
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 = []
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:
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"))',
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;',
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)
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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDevice4444FormatsFeaturesEXT":
+ [
+ { "features": ["formatA4R4G4B4"], "requirements": ["VK_EXT_4444_formats"] }
+ ]
+ }
+}
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT":
+ [
+ { "features": ["borderColorSwizzle"], "requirements": ["VK_EXT_border_color_swizzle"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceColorWriteEnableFeaturesEXT":
+ [
+ { "features": ["colorWriteEnable"], "requirements": ["VK_EXT_color_write_enable"] }
+ ]
+ }
+}
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceConditionalRenderingFeaturesEXT":
+ [
+ { "features": ["conditionalRendering"], "requirements": ["VK_EXT_conditional_rendering"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceDepthClipEnableFeaturesEXT":
+ [
+ { "features": ["depthClipEnable"], "requirements": ["VK_EXT_depth_clip_enable"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT":
+ [
+ { "features": ["extendedDynamicState2"], "requirements": ["VK_EXT_extended_dynamic_state2"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceFragmentDensityMapFeaturesEXT":
+ [
+ { "features": ["fragmentDensityMap"], "requirements": ["VK_EXT_fragment_density_map"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT":
+ [
+ { "features": ["fragmentShaderSampleInterlock", "fragmentShaderPixelInterlock", "fragmentShaderShadingRateInterlock"], "requirements": ["VK_EXT_fragment_shader_interlock"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT":
+ [
+ { "features": ["globalPriorityQuery"], "requirements": ["VK_EXT_global_priority_query"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceIndexTypeUint8FeaturesEXT":
+ [
+ { "features": ["indexTypeUint8"], "requirements": ["VK_EXT_index_type_uint8"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceLineRasterizationFeaturesEXT":
+ [
+ { "features": ["rectangularLines", "bresenhamLines", "smoothLines", "stippledRectangularLines", "stippledBresenhamLines", "stippledSmoothLines"], "requirements": ["VK_EXT_line_rasterization"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceMemoryPriorityFeaturesEXT":
+ [
+ { "features": ["memoryPriority"], "requirements": ["VK_EXT_memory_priority"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceMultiDrawFeaturesEXT":
+ [
+ { "features": ["multiDraw"], "requirements": ["VK_EXT_multi_draw"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT":
+ [
+ { "features": ["primitiveTopologyListRestart"], "requirements": ["VK_EXT_primitive_topology_list_restart"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT":
+ [
+ { "features": ["shaderImageFloat32AtomicMinMax"], "requirements": ["VK_EXT_shader_atomic_float2", "physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT":
+ [
+ { "features": ["shaderDemoteToHelperInvocation"], "requirements": ["VK_EXT_shader_demote_to_helper_invocation"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT":
+ [
+ { "features": ["texelBufferAlignment"], "requirements": ["VK_EXT_texel_buffer_alignment"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT":
+ [
+ { "features": ["textureCompressionASTC_HDR"], "requirements": ["VK_EXT_texture_compression_astc_hdr"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceTransformFeedbackFeaturesEXT":
+ [
+ { "features": ["transformFeedback"], "requirements": ["VK_EXT_transform_feedback"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT":
+ [
+ { "features": ["vertexAttributeInstanceRateDivisor"], "requirements": ["VK_EXT_vertex_attribute_divisor"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT":
+ [
+ { "features": ["vertexInputDynamicState"], "requirements": ["VK_EXT_vertex_input_dynamic_state"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT":
+ [
+ { "features": ["ycbcr2plane444Formats"], "requirements": ["VK_EXT_ycbcr_2plane_444_formats"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT":
+ [
+ { "features": ["ycbcrImageArrays"], "requirements": ["VK_EXT_ycbcr_image_arrays"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevice16BitStorageFeaturesKHR":
+ [
+ { "features": ["storageBuffer16BitAccess"], "requirements": ["VK_KHR_16bit_storage"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevice8BitStorageFeaturesKHR":
+ [
+ { "features": ["storageBuffer8BitAccess"], "requirements": ["VK_KHR_8bit_storage"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
+
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceImagelessFramebufferFeaturesKHR":
+ [
+ { "features": ["imagelessFramebuffer"], "requirements": ["VK_KHR_imageless_framebuffer"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceMultiviewFeatures":
+ [
+ { "features": ["multiview"], "requirements": ["VK_KHR_multiview"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevicePerformanceQueryFeaturesKHR":
+ [
+ { "features": ["performanceCounterQueryPools"], "requirements": ["VK_KHR_performance_query"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR":
+ [
+ { "features": ["pipelineExecutableInfo"], "requirements": ["VK_KHR_pipeline_executable_properties"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevicePresentIdFeaturesKHR":
+ [
+ { "features": ["presentId"], "requirements": ["VK_KHR_present_id"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDevicePresentWaitFeaturesKHR":
+ [
+ { "features": ["presentWait"], "requirements": ["VK_KHR_present_wait"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceRayQueryFeaturesKHR":
+ [
+ { "features": ["rayQuery"], "requirements": ["VK_KHR_ray_query"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR":
+ [
+ { "features": ["shaderBufferInt64Atomics"], "requirements": ["VK_KHR_shader_atomic_int64"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderClockFeaturesKHR":
+ [
+ { "features": ["shaderSubgroupClock"], "requirements": ["VK_KHR_shader_clock"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR":
+ [
+ { "features": ["shaderIntegerDotProduct"], "requirements": ["VK_KHR_shader_integer_dot_product"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR":
+ [
+ { "features": ["shaderSubgroupUniformControlFlow"], "requirements": ["VK_KHR_shader_subgroup_uniform_control_flow"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR":
+ [
+ { "features": ["shaderTerminateInvocation"], "requirements": ["VK_KHR_shader_terminate_invocation"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceSynchronization2FeaturesKHR":
+ [
+ { "features": ["synchronization2"], "requirements": ["VK_KHR_synchronization2"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.2.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR":
+ [
+ { "features": ["timelineSemaphore"], "requirements": ["VK_KHR_timeline_semaphore"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": "1.1.0"
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceVariablePointersFeatures":
+ [
+ { "features": ["variablePointersStorageBuffer"], "requirements": ["VK_KHR_variable_pointers"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "instance",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ },
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR":
+ [
+ { "features": ["shaderZeroInitializeWorkgroupMemory"], "requirements": ["VK_KHR_zero_initialize_workgroup_memory"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "register_extension":
+ {
+ "type": "device",
+ "core": ""
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "mandatory_features":
+ {
+ "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE":
+ [
+ { "features": ["mutableDescriptorType"], "requirements": ["VK_VALVE_mutable_descriptor_type"] }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "$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
+++ /dev/null
-// 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
+++ /dev/null
-// 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 )