From 12a9428b5d78c5bf9077378962b5f0f2f50feed7 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 1 May 2019 07:43:48 -0700 Subject: [PATCH] Check for imageCubeArray support before using VK_IMAGE_VIEW_TYPE_CUBE_ARRAY VK-GL-CTS Issue: 1761 Components: Vulkan Affects: dEQP-VK.binding_model.shader_access.*cube_array* Change-Id: I918227d1518c3d7f6cefd7931531aafb34fcf9f8 --- .../vulkan/binding_model/vktBindingShaderAccessTests.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp b/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp index 1634dfa..22129dd 100644 --- a/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp +++ b/external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp @@ -168,7 +168,8 @@ void verifyDriverSupport(const deUint32 apiVersion, const std::vector& deviceExtensions, DescriptorUpdateMethod updateMethod, vk::VkDescriptorType descType, - vk::VkShaderStageFlags activeStages) + vk::VkShaderStageFlags activeStages, + vk::VkImageViewType viewType = vk::VK_IMAGE_VIEW_TYPE_2D) { std::vector extensionNames; size_t numExtensionsNeeded = 0; @@ -229,7 +230,7 @@ void verifyDriverSupport(const deUint32 apiVersion, case vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: case vk::VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: // These are supported in all stages - return; + break; case vk::VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: case vk::VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: @@ -249,11 +250,14 @@ void verifyDriverSupport(const deUint32 apiVersion, if (!deviceFeatures.fragmentStoresAndAtomics) TCU_THROW(NotSupportedError, (de::toString(descType) + " is not supported in fragment shaders").c_str()); } - return; + break; default: DE_FATAL("Impossible"); } + + if (viewType == vk::VK_IMAGE_VIEW_TYPE_CUBE_ARRAY && !deviceFeatures.imageCubeArray) + TCU_THROW(NotSupportedError, "imageCubeArray feature not supported"); } vk::VkImageType viewTypeToImageType (vk::VkImageViewType type) @@ -7483,7 +7487,7 @@ std::string ImageDescriptorCase::genNoAccessSource (void) const vkt::TestInstance* ImageDescriptorCase::createInstance (vkt::Context& context) const { - verifyDriverSupport(context.getUsedApiVersion(), context.getDeviceFeatures(), context.getDeviceExtensions(), m_updateMethod, m_descriptorType, m_activeStages); + verifyDriverSupport(context.getUsedApiVersion(), context.getDeviceFeatures(), context.getDeviceExtensions(), m_updateMethod, m_descriptorType, m_activeStages, m_viewType); switch (m_descriptorType) { -- 2.7.4