The array size of gl_SampleMask and gl_SampleMaskIn is ceil(gl_MaxSamples/32)

Oes spec says:
    For the both the input array gl_SampleMaskIn[] and the output array gl_SampleMask[], bit B of mask M
    (gl_SampleMaskIn[M] or gl_SampleMask[M]) corresponds to sample 32*M+B. These arrays have
    ceil(gl_MaxSamples/32) elements, where gl_MaxSamples is the maximum number of color samples
    supported by the implementation.

    But glslang report error "array must have size before use length".

    layout(location = 0) out mediump vec4 fragColor;
    void main (void)
    {
    for (int i = 0; i < gl_SampleMask.length(); ++i)
    gl_SampleMask[i] = int(0xAAAAAAAA);

       fragColor = vec4(0.0, 1.0, 0.0, 1.0);
    }

* Add two test items, one is for gl_MaxSapmles = 32 and the other one is for gl_MaxSapmles = 64.
This commit is contained in:
jimihem 2023-12-30 05:23:16 +08:00 committed by GitHub
parent 88c5373ee4
commit db4d6f85af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 402 additions and 1 deletions

View file

@ -49,6 +49,10 @@ rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv
run badMacroArgs.frag > $TARGETDIR/badMacroArgs.frag.out
diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASERROR=1
run gl_samplemask_array_size.frag gl_MaxSamples_32.conf -i > $TARGETDIR/gl_samplemask_array_size_32.frag.out
diff -b $BASEDIR/gl_samplemask_array_size_32.frag.out $TARGETDIR/gl_samplemask_array_size_32.frag.out || HASERROR=1
run gl_samplemask_array_size.frag gl_MaxSamples_64.conf -i > $TARGETDIR/gl_samplemask_array_size_64.frag.out
diff -b $BASEDIR/gl_samplemask_array_size_64.frag.out $TARGETDIR/gl_samplemask_array_size_64.frag.out || HASERROR=1
#
# reflection tests
#