From: Alexander Galazin Date: Fri, 6 Oct 2017 20:07:30 +0000 (+0200) Subject: Add StorageImageExtendedFormats cap check X-Git-Tag: upstream/1.3.5~2565^2~6^2~89 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1a42786b8dba4e091e1012a458d3ad17457a6b66;p=platform%2Fupstream%2FVK-GL-CTS.git Add StorageImageExtendedFormats cap check dEQP-VK.image.texel_view_compatible.compute.* didn't check for shaderStorageImageExtendedFormats Component: Vulkan VK-GL-CTS issue: 753 Affects: dEQP-VK.image.texel_view_compatible.compute.* Change-Id: I957329a66d2f4bedb950a597a702ec29680418de --- diff --git a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp index 1c87442..6ba834e 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp @@ -22,6 +22,7 @@ *//*--------------------------------------------------------------------*/ #include "vktImageCompressionTranscodingSupport.hpp" +#include "vktImageLoadStoreUtil.hpp" #include "deUniquePtr.hpp" #include "deStringUtil.hpp" @@ -2603,6 +2604,11 @@ TestInstance* TexelViewCompatibleCase::createInstance (Context& context) const if (deInRange32(m_parameters.formatCompressed, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_SRGB_BLOCK) && !physicalDeviceFeatures.textureCompressionASTC_LDR) TCU_THROW(NotSupportedError, "textureCompressionASTC_LDR not supported"); + + if ((m_parameters.uncompressedImageUsage & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) && + isStorageImageExtendedFormat(m_parameters.formatUncompressed) && + !physicalDeviceFeatures.shaderStorageImageExtendedFormats) + TCU_THROW(NotSupportedError, "Storage view format requires shaderStorageImageExtended"); } switch (m_parameters.shader) diff --git a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.cpp b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.cpp index 4d5a027..69dd601 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.cpp @@ -110,5 +110,39 @@ VkDeviceSize getOptimalUniformBufferChunkSize (const InstanceInterface& vki, con return alignment; } +bool isStorageImageExtendedFormat (const vk::VkFormat format) +{ + switch (format) + { + case VK_FORMAT_R32G32_SFLOAT: + case VK_FORMAT_R32G32_SINT: + case VK_FORMAT_R32G32_UINT: + case VK_FORMAT_R16G16B16A16_UNORM: + case VK_FORMAT_R16G16B16A16_SNORM: + case VK_FORMAT_R16G16_SFLOAT: + case VK_FORMAT_R16G16_UNORM: + case VK_FORMAT_R16G16_SNORM: + case VK_FORMAT_R16G16_SINT: + case VK_FORMAT_R16G16_UINT: + case VK_FORMAT_R16_SFLOAT: + case VK_FORMAT_R16_UNORM: + case VK_FORMAT_R16_SNORM: + case VK_FORMAT_R16_SINT: + case VK_FORMAT_R16_UINT: + case VK_FORMAT_R8G8_UNORM: + case VK_FORMAT_R8G8_SNORM: + case VK_FORMAT_R8G8_SINT: + case VK_FORMAT_R8G8_UINT: + case VK_FORMAT_R8_UNORM: + case VK_FORMAT_R8_SNORM: + case VK_FORMAT_R8_SINT: + case VK_FORMAT_R8_UINT: + return true; + + default: + return false; + } +} + } // image } // vkt diff --git a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.hpp b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.hpp index a25a00d..9b32f9b 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.hpp +++ b/external/vulkancts/modules/vulkan/image/vktImageLoadStoreUtil.hpp @@ -66,6 +66,7 @@ float computeStoreColorScale (const vk::VkFormat format, const tcu::IVec3 ImageType getImageTypeForSingleLayer (const ImageType imageType); vk::VkImageCreateInfo makeImageCreateInfo (const Texture& texture, const vk::VkFormat format, const vk::VkImageUsageFlags usage, const vk::VkImageCreateFlags flags); vk::VkDeviceSize getOptimalUniformBufferChunkSize (const vk::InstanceInterface& vki, const vk::VkPhysicalDevice physDevice, vk::VkDeviceSize minimumRequiredChunkSizeBytes); +bool isStorageImageExtendedFormat (const vk::VkFormat format); } // image } // vkt diff --git a/external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp index 0586b15..02fb2f0 100644 --- a/external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp +++ b/external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp @@ -22,6 +22,7 @@ *//*--------------------------------------------------------------------*/ #include "vktImageMutableTests.hpp" +#include "vktImageLoadStoreUtil.hpp" #include "vktTestCaseUtil.hpp" #include "vktImageTexture.hpp" @@ -1635,40 +1636,6 @@ void UploadDownloadExecutor::copyImageToBuffer(VkImage sourceImage, 0u, DE_NULL, 1u, &bufferBarrier, 0u, DE_NULL); } -bool isStorageImageExtendedFormat (const VkFormat format) -{ - switch (format) - { - case VK_FORMAT_R32G32_SFLOAT: - case VK_FORMAT_R32G32_SINT: - case VK_FORMAT_R32G32_UINT: - case VK_FORMAT_R16G16B16A16_UNORM: - case VK_FORMAT_R16G16B16A16_SNORM: - case VK_FORMAT_R16G16_SFLOAT: - case VK_FORMAT_R16G16_UNORM: - case VK_FORMAT_R16G16_SNORM: - case VK_FORMAT_R16G16_SINT: - case VK_FORMAT_R16G16_UINT: - case VK_FORMAT_R16_SFLOAT: - case VK_FORMAT_R16_UNORM: - case VK_FORMAT_R16_SNORM: - case VK_FORMAT_R16_SINT: - case VK_FORMAT_R16_UINT: - case VK_FORMAT_R8G8_UNORM: - case VK_FORMAT_R8G8_SNORM: - case VK_FORMAT_R8G8_SINT: - case VK_FORMAT_R8G8_UINT: - case VK_FORMAT_R8_UNORM: - case VK_FORMAT_R8_SNORM: - case VK_FORMAT_R8_SINT: - case VK_FORMAT_R8_UINT: - return true; - - default: - return false; - } -} - tcu::TestStatus testMutable (Context& context, const CaseDef caseDef) { const DeviceInterface& vk = context.getDeviceInterface();