Add feature checks to shader builtin tests
authorToni Merilehti <toni.merilehti@siru.fi>
Wed, 15 May 2019 14:49:42 +0000 (17:49 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 22 May 2019 06:40:02 +0000 (02:40 -0400)
Some shader builtin tests use SampleId and SamplePosition BuiltIns
in shaders, which both require the SampleRateShading OpCapability
and the sampleRateShading Vulkan feature. This CL adds the missing
feature checks when required by the shaders.

Affects:

dEQP-VK.pipeline.multisample_shader_builtin.sample_id.*
dEQP-VK.pipeline.multisample_shader_builtin.sample_position.*

Components: Vulkan

VK-GL-CTS issue: 1744

Change-Id: I4557b5cd79191f7ca1202562416d12d3b1d8ce60
(cherry picked from commit 3f2ce1e5bcf568fe0a65a4ed638e0589b8694482)

external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleShaderBuiltInTests.cpp

index 68458d5..18a12ee 100644 (file)
@@ -175,6 +175,7 @@ public:
                                                                                                 const ImageMSParams&   imageMSParams)
                                                                : MSCaseBaseResolveAndPerSampleFetch(testCtx, name, imageMSParams) {}
 
+       virtual void                            checkSupport    (Context&) const {}
        void                                            init                    (void);
        void                                            initPrograms    (vk::SourceCollections& programCollection) const;
        TestInstance*                           createInstance  (Context&                               context) const;
@@ -247,6 +248,12 @@ template<> tcu::TestStatus MSInstance<MSInstanceSampleID>::verifyImageData (cons
 
 class MSCaseSampleID;
 
+template<> void MSCase<MSCaseSampleID>::checkSupport (Context& context) const
+{
+       if (!context.getDeviceFeatures().sampleRateShading)
+               TCU_THROW(NotSupportedError, "sampleRateShading not supported");
+}
+
 template<> void MSCase<MSCaseSampleID>::init (void)
 {
        m_testCtx.getLog()
@@ -394,6 +401,12 @@ template<> tcu::TestStatus MSInstance<MSInstanceSamplePosDistribution>::verifyIm
 
 class MSCaseSamplePosDistribution;
 
+template<> void MSCase<MSCaseSamplePosDistribution>::checkSupport (Context& context) const
+{
+       if (!context.getDeviceFeatures().sampleRateShading)
+               TCU_THROW(NotSupportedError, "sampleRateShading not supported");
+}
+
 template<> void MSCase<MSCaseSamplePosDistribution>::init (void)
 {
        m_testCtx.getLog()
@@ -480,6 +493,12 @@ template<> tcu::TestStatus MSInstance<MSInstanceSamplePosCorrectness>::verifyIma
 
 class MSCaseSamplePosCorrectness;
 
+template<> void MSCase<MSCaseSamplePosCorrectness>::checkSupport (Context& context) const
+{
+       if (!context.getDeviceFeatures().sampleRateShading)
+               TCU_THROW(NotSupportedError, "sampleRateShading not supported");
+}
+
 template<> void MSCase<MSCaseSamplePosCorrectness>::init (void)
 {
        m_testCtx.getLog()