Add missing read without format bit check in robustness tests
authorziga-lunarg <ziga@lunarg.com>
Sat, 15 Oct 2022 00:03:25 +0000 (02:03 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 10 Nov 2022 18:39:38 +0000 (18:39 +0000)
If buffer view is being read as storage texel buffer with image format
of OpTypeImage being Unknown then the view's buffer features must
contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT

Components: Vulkan

VK-GL-CTS issue: 4047

Affected tests:
dEQP-VK.robustness.robustness2.bind.*

Change-Id: I46e5482fbfea3a945b133dbca0e020159049516f

external/vulkancts/modules/vulkan/robustness/vktRobustnessExtsTests.cpp

index bb8fad8..af3a5ff 100644 (file)
@@ -367,6 +367,8 @@ void RobustnessExtsTestCase::checkSupport(Context& context) const
                VkFormatProperties formatProperties;
                vki.getPhysicalDeviceFormatProperties(context.getPhysicalDevice(), m_data.format, &formatProperties);
 
+               const VkFormatProperties3KHR formatProperties3 = context.getFormatProperties(m_data.format);
+
                switch (m_data.descriptorType)
                {
                case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
@@ -376,6 +378,8 @@ void RobustnessExtsTestCase::checkSupport(Context& context) const
                case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
                        if ((formatProperties.bufferFeatures & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) != VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)
                                TCU_THROW(NotSupportedError, "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT is not supported");
+                       if ((formatProperties3.bufferFeatures & VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR) != VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR)
+                               TCU_THROW(NotSupportedError, "VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT is not supported");
                        break;
                case VERTEX_ATTRIBUTE_FETCH:
                        if ((formatProperties.bufferFeatures & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) != VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)