From ddb3f82cf16babbe0b145c757f2d85df319bbe8b Mon Sep 17 00:00:00 2001 From: John Anthony Date: Thu, 11 Jul 2019 16:54:59 +0200 Subject: [PATCH] Check supported features and properties for transform feedback tests Builtin tests using shaderClipDistance and/or shaderCullDistance should check if the features they need are supported. BackwardDependency test should check if transformFeedbackDraw is supported. Affects: - dEQP-VK.transform_feedback.simple.xfb_clipdistance_* - dEQP-VK.transform_feedback.simple.xfb_culldistance_* - dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_* - dEQP-VK.transform_feedback.simple.backward_dependency Components: Vulkan VK-GL-CTS issue: 1934 Change-Id: I76b22a506ba608d3e3f4ea5586c74b0b7ca1066a --- .../transform_feedback/vktTransformFeedbackSimpleTests.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp index 2ee5aa0..8857049 100644 --- a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp @@ -818,9 +818,17 @@ protected: TransformFeedbackBuiltinTestInstance::TransformFeedbackBuiltinTestInstance (Context& context, const TestParameters& parameters) : TransformFeedbackTestInstance (context, parameters) { + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); + const deUint32 tfBuffersSupported = m_transformFeedbackProperties.maxTransformFeedbackBuffers; const deUint32 tfBuffersRequired = m_parameters.partCount; + if ((m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE || m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) && !features.shaderClipDistance) + TCU_THROW(NotSupportedError, std::string("shaderClipDistance feature is not supported")); + if ((m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE || m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) && !features.shaderCullDistance) + TCU_THROW(NotSupportedError, std::string("shaderCullDistance feature is not supported")); if (tfBuffersSupported < tfBuffersRequired) TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBuffers=" + de::toString(tfBuffersSupported) + ", while test requires " + de::toString(tfBuffersRequired)).c_str()); } @@ -1353,6 +1361,8 @@ protected: TransformFeedbackBackwardDependencyTestInstance::TransformFeedbackBackwardDependencyTestInstance (Context& context, const TestParameters& parameters) : TransformFeedbackTestInstance (context, parameters) { + if (m_transformFeedbackProperties.transformFeedbackDraw == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedbackDraw feature is not supported"); } std::vector TransformFeedbackBackwardDependencyTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount) -- 2.7.4