diff options
-rw-r--r-- | external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp index 555b79896..ef18156e9 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp @@ -31,6 +31,7 @@ #include "vktShaderRenderDerivateTests.hpp" #include "vktShaderRender.hpp" +#include "subgroups/vktSubgroupsTestsUtils.hpp" #include "vkImageUtil.hpp" #include "vkQueryUtil.hpp" @@ -1132,6 +1133,13 @@ LinearDerivateCase::~LinearDerivateCase (void) TestInstance* LinearDerivateCase::createInstance (Context& context) const { DE_ASSERT(m_uniformSetup != DE_NULL); + if (m_fragmentTmpl.find("gl_SubgroupInvocationID") != std::string::npos) { + if (!subgroups::areQuadOperationsSupportedForStages(context, VK_SHADER_STAGE_FRAGMENT_BIT)) + throw tcu::NotSupportedError("test requires VK_SUBGROUP_FEATURE_QUAD_BIT"); + + if (subgroups::getSubgroupSize(context) < 4) + throw tcu::NotSupportedError("test requires subgroupSize >= 4"); + } return new LinearDerivateCaseInstance(context, *m_uniformSetup, m_definitions, m_values); } |