Fix sample mask calculation
authorAri Suonpaa <ari.suonpaa@siru.fi>
Wed, 18 May 2022 10:14:47 +0000 (13:14 +0300)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 2 Jun 2022 20:14:20 +0000 (20:14 +0000)
Sample mask calculation path was executed even when sample
was -1, causing a large number to be used for a shift. Now
a sample mask of zero is chosen instead.

VK-GL-CTS Issue: 3329

Affects:

dEQP-GLES31.functional.texture.multisample.*.sample_mask_and_alpha_to_coverage

Components: OpenGL ES
Change-Id: Ie5600ead5a5b0228a3ed255d7e4cc49a314a7ba6

modules/gles31/functional/es31fTextureMultisampleTests.cpp

index f5a57d8..2a57a31 100644 (file)
@@ -886,7 +886,7 @@ void SampleMaskCase::updateTexture (int sample)
        }
        else
        {
-               const std::vector<deUint32> bitmask = genSetNthBitSampleMask(sample);
+               const std::vector<deUint32> bitmask = sample < 0 ? std::vector<deUint32>(m_effectiveSampleMaskWordCount, 0) : genSetNthBitSampleMask(sample);
                DE_ASSERT((int)bitmask.size() <= m_effectiveSampleMaskWordCount);
 
                m_testCtx.getLog() << tcu::TestLog::Message << "Setting sample mask to 0b" << sampleMaskToString(bitmask, m_samples) << tcu::TestLog::EndMessage;