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:39:55 +0000 (02:39 -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

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

index be993d346661a28fe6f4849033cf19ad79bd5bdd..78fe9a1d39d66f3911f3308ebd0bacdc642d1008 100644 (file)
@@ -178,6 +178,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;
@@ -250,6 +251,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()
@@ -397,6 +404,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()
@@ -483,6 +496,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()