dst.push_back("VK_KHR_uniform_buffer_standard_layout");
dst.push_back("VK_KHR_buffer_device_address");
dst.push_back("VK_EXT_sampler_filter_minmax");
+ dst.push_back("VK_EXT_descriptor_indexing");
dst.push_back("VK_EXT_shader_viewport_index_layer");
dst.push_back("VK_EXT_scalar_block_layout");
dst.push_back("VK_EXT_separate_stencil_usage");
deMemset(&features, 0, sizeof(features));
features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
- bool vulkan12DescriptorIndexing = false;
- if (context.contextSupports(vk::ApiVersion(1 ,2, 0)))
- vulkan12DescriptorIndexing = context.getVulkan12Features().descriptorIndexing;
-
- bool descriptorIndexing = isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "VK_EXT_descriptor_indexing") || vulkan12DescriptorIndexing;
+ const bool descriptorIndexing = context.isDescriptorIndexingSupported();
if (descriptorIndexing &&
isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "VK_EXT_inline_uniform_block"))
deMemset(&features, 0, sizeof(features));
features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
- bool vulkan12DescriptorIndexing = false;
- if (m_context.contextSupports(vk::ApiVersion(1 ,2, 0)))
- vulkan12DescriptorIndexing = m_context.getVulkan12Features().descriptorIndexing;
-
- bool descriptorIndexing = isDeviceExtensionSupported(m_context.getUsedApiVersion(), m_context.getDeviceExtensions(), "VK_EXT_descriptor_indexing") || vulkan12DescriptorIndexing;
+ const bool descriptorIndexing = m_context.isDescriptorIndexingSupported();
if (descriptorIndexing &&
isDeviceExtensionSupported(m_context.getUsedApiVersion(), m_context.getDeviceExtensions(), "VK_EXT_inline_uniform_block"))
virtual void checkSupport (vkt::Context& context) const
{
- bool vulkan12DescriptorIndexing = false;
- if (context.contextSupports(vk::ApiVersion(1 ,2, 0)))
- vulkan12DescriptorIndexing = context.getVulkan12Features().descriptorIndexing;
-
- bool descriptorIndexing = isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "VK_EXT_descriptor_indexing") || vulkan12DescriptorIndexing;
-
- if (!descriptorIndexing)
+ if (!context.isDescriptorIndexingSupported())
TCU_THROW(NotSupportedError, "Descriptor indexing is not supported");
const vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT& feats = context.getDescriptorIndexingFeatures();
void checkIndirectCountExt (Context& context)
{
- context.requireDeviceExtension("VK_KHR_draw_indirect_count");
+ if (context.contextSupports(vk::ApiVersion(1, 2, 0)) && !context.getVulkan12Features().drawIndirectCount)
+ TCU_THROW(NotSupportedError, "drawIndirectCount is not supported");
+ else
+ context.requireDeviceExtension("VK_KHR_draw_indirect_count");
}
} // anonymous
return (isBufferDeviceAddressKHRSupported() && getBufferDeviceAddressFeatures().bufferDeviceAddressCaptureReplay) || (isBufferDeviceAddressEXTSupported() && getBufferDeviceAddressFeaturesEXT().bufferDeviceAddressCaptureReplay);
}
+bool Context::isDescriptorIndexingSupported(void) const
+{
+ if (contextSupports(vk::ApiVersion(1, 2, 0)))
+ return getVulkan12Features().descriptorIndexing;
+ else
+ return isDeviceExtensionSupported(getUsedApiVersion(), getDeviceExtensions(), "VK_EXT_descriptor_indexing");
+}
// TestCase
void TestCase::initPrograms (SourceCollections&) const
bool isBufferDeviceAddressKHRSupported (void) const;
bool isBufferDeviceAddressEXTSupported (void) const;
bool isBufferDeviceAddressWithCaptureReplaySupported (void) const;
+ bool isDescriptorIndexingSupported (void) const;
protected:
tcu::TestContext& m_testCtx;
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 is an exception to promoted extension since its functionality is guarded by an addional option in Vulkan 1.2
-VK_EXT_descriptor_indexing DEVICE
+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