Front-end ESSL: require precision declarations for images.

This commit is contained in:
John Kessenich 2016-06-14 22:12:20 -06:00
parent 9000bd5eb6
commit ac666e7368
8 changed files with 119 additions and 108 deletions

View File

@ -78,8 +78,8 @@ uniform writeonly iimage2DArray ii2da;
layout(r32i) uniform iimage2D iimg2D;
layout(rgba32i) uniform readonly iimage2D iimg2Drgba;
layout(rgba32f) uniform readonly image2D img2Drgba;
layout(r32ui) uniform uimage2D uimg2D;
layout(rgba32f) uniform readonly image2D img2Drgba; // ERROR, no default
layout(r32ui) uniform uimage2D uimg2D; // ERROR, no default
void qux()
{
@ -111,9 +111,9 @@ void passrc()
passr(iimg2D);
}
layout(rg8i) uniform readonly uimage2D i1bad; // ERROR, type mismatch
layout(rgba32i) uniform readonly image2D i2bad; // ERROR, type mismatch
layout(rgba32f) uniform readonly uimage2D i3bad; // ERROR, type mismatch
highp layout(rg8i) uniform readonly uimage2D i1bad; // ERROR, type mismatch
highp layout(rgba32i) uniform readonly image2D i2bad; // ERROR, type mismatch
highp layout(rgba32f) uniform readonly uimage2D i3bad; // ERROR, type mismatch
layout(r8_snorm) uniform readonly iimage2D i4bad; // ERROR, type mismatch
layout(rgba32ui) uniform readonly iimage2D i5bad; // ERROR, type mismatch
layout(r8ui) uniform readonly iimage2D i6bad; // ERROR, type mismatch
@ -170,17 +170,17 @@ precise int pfoo; // ERROR, reserved
dmat2x4 dm; // ERROR
uniform samplerCubeArray sca; // ERROR
uniform iimage2DRect i2dr; // ERROR
uniform image2DMS i2dms; // ERROR
highp uniform image2DMS i2dms; // ERROR
uniform uimage2DMSArray u2dmsa; // ERROR
layout(r32f) coherent volatile restrict readonly writeonly uniform image2D okay1;
layout(r32i) coherent volatile restrict readonly uniform iimage2D okay2;
layout(r32ui) coherent volatile restrict writeonly uniform uimage2D okay3;
layout(r32f) coherent volatile restrict uniform image2D okay4;
highp layout(r32f) coherent volatile restrict readonly writeonly uniform image2D okay1;
layout(r32i) coherent volatile restrict readonly uniform iimage2D okay2;
highp layout(r32ui) coherent volatile restrict writeonly uniform uimage2D okay3;
highp layout(r32f) coherent volatile restrict uniform image2D okay4;
layout(rgba32f) coherent volatile restrict uniform image2D badQ1; // ERROR, bad qualifiers
layout(rgba8i) coherent volatile restrict uniform iimage2D badQ2; // ERROR, bad qualifiers
layout(rgba16ui) coherent volatile restrict uniform uimage2D badQ3; // ERROR, bad qualifiers
highp layout(rgba32f) coherent volatile restrict uniform image2D badQ1; // ERROR, bad qualifiers
layout(rgba8i) coherent volatile restrict uniform iimage2D badQ2; // ERROR, bad qualifiers
highp layout(rgba16ui) coherent volatile restrict uniform uimage2D badQ3; // ERROR, bad qualifiers
writeonly buffer woblock
{

View File

@ -62,11 +62,11 @@ void foo23()
layout(binding=3) uniform sampler2D s1;
layout(binding=3) uniform sampler2D s2; // ERROR: overlapping bindings? Don't see that in the 310 spec.
layout(binding=2) uniform writeonly image2D i2D;
layout(binding=4) uniform readonly image3D i3D;
layout(binding=5) uniform imageCube iCube;
layout(binding=6) uniform image2DArray i2DA;
layout(binding=6) uniform coherent volatile restrict image2D i2Dqualified;
highp layout(binding=2) uniform writeonly image2D i2D;
layout(binding=4) uniform readonly image3D i3D; // ERROR, no default precision
layout(binding=5) uniform imageCube iCube; // ERROR, no default precision
layout(binding=6) uniform image2DArray i2DA; // ERROR, no default precision
layout(binding=6) uniform coherent volatile restrict image2D i2Dqualified; // ERROR, no default precision
layout(binding = 1) uniform bb {
int foo;
@ -93,7 +93,7 @@ layout(shared) uniform bshar {
in smooth vec4 smoothIn;
in flat int flatIn;
uniform sampler2DMS s2dms;
uniform sampler2DMS s2dms; // ERROR, no default precision qualifier
void foots()
{
@ -108,7 +108,7 @@ void foots()
}
out bool bout; // ERROR
out image2D imageOut; // ERROR
highp out image2D imageOut; // ERROR
out mat2x3 mout; // ERROR
in bool inb; // ERROR
@ -201,7 +201,7 @@ uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4];
uniform writeonly image2D iArray[5];
highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfooBad()

View File

@ -147,7 +147,7 @@ uniform int sIndex;
layout(binding = 0) uniform atomic_uint auArray[2];
uniform ubName { int i; } ubInst[4];
buffer bbName { int i; } bbInst[4];
uniform writeonly image2D iArray[5];
highp uniform writeonly image2D iArray[5];
const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4));
void pfooBad()
@ -158,10 +158,10 @@ void pfooBad()
auArray[sIndex + 1];
ubInst[1];
bbInst[2];
ubInst[sIndex + 1]; // ERRRO, not supported
bbInst[sIndex]; // ERRRO, not supported
ubInst[sIndex + 1]; // ERROR, not supported
bbInst[sIndex]; // ERROR, not supported
iArray[2];
iArray[sIndex * 2]; // ERRRO, not supported
iArray[sIndex * 2]; // ERROR, not supported
textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); // ERROR, offset not constant
textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); // ERROR, not available
}

View File

@ -17,6 +17,8 @@ ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer)
ERROR: 0:66: 'buffer' : buffers can be declared only as blocks
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:76: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic
ERROR: 0:88: 'imageAtomicAdd' : required extension not requested: GL_OES_shader_image_atomic
ERROR: 0:89: 'imageAtomicMin' : required extension not requested: GL_OES_shader_image_atomic
@ -79,7 +81,7 @@ ERROR: 0:227: 'input block' : not supported in this stage: compute
ERROR: 0:231: 'output block' : not supported in this stage: compute
WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved
WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D
ERROR: 77 compilation errors. No code generated.
ERROR: 79 compilation errors. No code generated.
Shader version: 310
@ -143,7 +145,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int)
0:87 'i' (temp highp int)
0:88 imageAtomicAdd (global highp uint)
0:88 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:88 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:88 Construct ivec2 (temp highp 2-component vector of int)
0:88 'i' (temp highp int)
0:88 'i' (temp highp int)
@ -177,7 +179,7 @@ ERROR: node is still EOpNull!
0:92 0 (const int)
0:92 0 (const int)
0:93 imageLoad (global highp 4-component vector of float)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:93 Construct ivec2 (temp highp 2-component vector of int)
0:93 'i' (temp highp int)
0:93 'i' (temp highp int)
@ -467,14 +469,14 @@ ERROR: node is still EOpNull!
0:? 'ii2da' (writeonly uniform highp iimage2DArray)
0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform lowp image2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform highp image2D)
0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D)
0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D)
0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D)
@ -489,13 +491,13 @@ ERROR: node is still EOpNull!
0:? 'dm' (global 2X4 matrix of double)
0:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS)
0:? 'i2dms' (uniform highp image2DMS)
0:? 'u2dmsa' (uniform mediump uimage2DMSArray)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform lowp image2D)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform highp image2D)
0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D)
0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D)
0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})
@ -570,7 +572,7 @@ ERROR: node is still EOpNull!
0:87 'i' (temp highp int)
0:87 'i' (temp highp int)
0:88 imageAtomicAdd (global highp uint)
0:88 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:88 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:88 Construct ivec2 (temp highp 2-component vector of int)
0:88 'i' (temp highp int)
0:88 'i' (temp highp int)
@ -604,7 +606,7 @@ ERROR: node is still EOpNull!
0:92 0 (const int)
0:92 0 (const int)
0:93 imageLoad (global highp 4-component vector of float)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:93 Construct ivec2 (temp highp 2-component vector of int)
0:93 'i' (temp highp int)
0:93 'i' (temp highp int)
@ -894,14 +896,14 @@ ERROR: node is still EOpNull!
0:? 'ii2da' (writeonly uniform highp iimage2DArray)
0:? 'iimg2D' (layout(r32i ) uniform highp iimage2D)
0:? 'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)
0:? 'uimg2D' (layout(r32ui ) uniform highp uimage2D)
0:? 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D)
0:? 'uimg2D' (layout(r32ui ) uniform mediump uimage2D)
0:? 'vol' (volatile temp highp float)
0:? 'vol2' (readonly temp highp int)
0:? 'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)
0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)
0:? 'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform lowp image2D)
0:? 'i2bad' (layout(rgba32i ) readonly uniform highp image2D)
0:? 'i3bad' (layout(rgba32f ) readonly uniform highp uimage2D)
0:? 'i4bad' (layout(r8_snorm ) readonly uniform highp iimage2D)
0:? 'i5bad' (layout(rgba32ui ) readonly uniform highp iimage2D)
@ -916,13 +918,13 @@ ERROR: node is still EOpNull!
0:? 'dm' (global 2X4 matrix of double)
0:? 'sca' (uniform mediump samplerCubeArray)
0:? 'i2dr' (uniform mediump iimage2DRect)
0:? 'i2dms' (uniform lowp image2DMS)
0:? 'i2dms' (uniform highp image2DMS)
0:? 'u2dmsa' (uniform mediump uimage2DMSArray)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform lowp image2D)
0:? 'okay1' (layout(r32f ) coherent volatile restrict readonly writeonly uniform highp image2D)
0:? 'okay2' (layout(r32i ) coherent volatile restrict readonly uniform highp iimage2D)
0:? 'okay3' (layout(r32ui ) coherent volatile restrict writeonly uniform highp uimage2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform lowp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform lowp image2D)
0:? 'okay4' (layout(r32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ1' (layout(rgba32f ) coherent volatile restrict uniform highp image2D)
0:? 'badQ2' (layout(rgba8i ) coherent volatile restrict uniform highp iimage2D)
0:? 'badQ3' (layout(rgba16ui ) coherent volatile restrict uniform highp uimage2D)
0:? 'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

View File

@ -20,9 +20,11 @@ ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:66: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:67: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:68: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:69: '' : image variables not declared 'writeonly' must have a format layout qualifier
ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type
ERROR: 0:77: 'location' : location is too large
@ -31,6 +33,7 @@ ERROR: 0:82: 'location' : too large for fragment output
ERROR: 0:82: 'location' : overlapping use of location 40
ERROR: 0:83: 'non-literal layout-id value' : not supported with this profile: es
ERROR: 0:83: 'layout-id value' : cannot be negative
ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:110: 'out' : cannot be bool
ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut
ERROR: 0:111: '' : image variables not declared 'writeonly' must have a format layout qualifier
@ -130,7 +133,7 @@ ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:429: 'blend_support' : unknown blend equation
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es
ERROR: 122 compilation errors. No code generated.
ERROR: 125 compilation errors. No code generated.
Shader version: 310
@ -351,7 +354,7 @@ ERROR: node is still EOpNull!
0:102 move second child to first child (temp highp 2-component vector of int)
0:102 'v2' (temp highp 2-component vector of int)
0:102 textureSize (global highp 2-component vector of int)
0:102 's2dms' (uniform highp sampler2DMS)
0:102 's2dms' (uniform mediump sampler2DMS)
0:103 move second child to first child (temp highp 2-component vector of int)
0:103 'v2' (temp highp 2-component vector of int)
0:103 imageQuerySize (global highp 2-component vector of int)
@ -363,7 +366,7 @@ ERROR: node is still EOpNull!
0:105 move second child to first child (temp highp 2-component vector of int)
0:105 'v2' (temp highp 2-component vector of int)
0:105 imageQuerySize (global highp 2-component vector of int)
0:105 'iCube' (layout(binding=5 ) uniform lowp imageCube)
0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:106 move second child to first child (temp highp 3-component vector of int)
0:106 'v3' (temp highp 3-component vector of int)
0:106 imageQuerySize (global highp 3-component vector of int)
@ -371,7 +374,7 @@ ERROR: node is still EOpNull!
0:107 move second child to first child (temp highp 2-component vector of int)
0:107 'v2' (temp highp 2-component vector of int)
0:107 imageQuerySize (global highp 2-component vector of int)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:165 Function Definition: fooIO( (global void)
0:165 Function Parameters:
0:167 Sequence
@ -928,9 +931,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D)
0:? 'iCube' (layout(binding=5 ) uniform lowp imageCube)
0:? 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f})
0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float)
0:? 'bigl' (uniform mediump 4-component vector of float)
@ -941,7 +944,7 @@ ERROR: node is still EOpNull!
0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i})
0:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS)
0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D)
0:? 'mout' (out mediump 2X3 matrix of float)
@ -1232,7 +1235,7 @@ ERROR: node is still EOpNull!
0:102 move second child to first child (temp highp 2-component vector of int)
0:102 'v2' (temp highp 2-component vector of int)
0:102 textureSize (global highp 2-component vector of int)
0:102 's2dms' (uniform highp sampler2DMS)
0:102 's2dms' (uniform mediump sampler2DMS)
0:103 move second child to first child (temp highp 2-component vector of int)
0:103 'v2' (temp highp 2-component vector of int)
0:103 imageQuerySize (global highp 2-component vector of int)
@ -1244,7 +1247,7 @@ ERROR: node is still EOpNull!
0:105 move second child to first child (temp highp 2-component vector of int)
0:105 'v2' (temp highp 2-component vector of int)
0:105 imageQuerySize (global highp 2-component vector of int)
0:105 'iCube' (layout(binding=5 ) uniform lowp imageCube)
0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:106 move second child to first child (temp highp 3-component vector of int)
0:106 'v3' (temp highp 3-component vector of int)
0:106 imageQuerySize (global highp 3-component vector of int)
@ -1252,7 +1255,7 @@ ERROR: node is still EOpNull!
0:107 move second child to first child (temp highp 2-component vector of int)
0:107 'v2' (temp highp 2-component vector of int)
0:107 imageQuerySize (global highp 2-component vector of int)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)
0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:165 Function Definition: fooIO( (global void)
0:165 Function Parameters:
0:167 Sequence
@ -1809,9 +1812,9 @@ ERROR: node is still EOpNull!
0:? 's2' (layout(binding=3 ) uniform highp sampler2D)
0:? 'i2D' (layout(binding=2 ) writeonly uniform highp image2D)
0:? 'i3D' (layout(binding=4 ) readonly uniform mediump image3D)
0:? 'iCube' (layout(binding=5 ) uniform lowp imageCube)
0:? 'iCube' (layout(binding=5 ) uniform mediump imageCube)
0:? 'i2DA' (layout(binding=6 ) uniform mediump image2DArray)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)
0:? 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D)
0:? 'bbi' (layout(binding=1 column_major shared ) uniform block{layout(column_major shared ) uniform mediump int foo, layout(binding=2 column_major shared ) uniform mediump float f})
0:? 'centroidIn' (centroid smooth in mediump 4-component vector of float)
0:? 'bigl' (uniform mediump 4-component vector of float)
@ -1822,7 +1825,7 @@ ERROR: node is still EOpNull!
0:? 'bshari' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int i})
0:? 'smoothIn' (smooth in mediump 4-component vector of float)
0:? 'flatIn' (flat in mediump int)
0:? 's2dms' (uniform highp sampler2DMS)
0:? 's2dms' (uniform mediump sampler2DMS)
0:? 'bout' (out bool)
0:? 'imageOut' (out highp image2D)
0:? 'mout' (out mediump 2X3 matrix of float)

View File

@ -291,8 +291,8 @@ ERROR: node is still EOpNull!
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D)
0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int)
0:157 Constant:
@ -330,19 +330,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int)
0:164 Constant:
0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float)
0:165 direct index (temp highp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D)
0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant:
0:165 0 (const int)
0:165 Constant:
0:165 0.100000
0:165 0.100000
0:165 Convert float to int (temp highp 2-component vector of int)
0:165 Convert float to int (temp lowp 2-component vector of int)
0:165 'inf' (in highp 2-component vector of float)
0:166 textureGatherOffsets (global highp 4-component vector of float)
0:166 direct index (temp highp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D)
0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant:
0:166 0 (const int)
0:166 Constant:
@ -366,8 +366,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int)
0:175 Constant:
@ -394,19 +394,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int)
0:179 Constant:
0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float)
0:180 direct index (temp highp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D)
0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant:
0:180 0 (const int)
0:180 Constant:
0:180 0.100000
0:180 0.100000
0:180 Convert float to int (temp highp 2-component vector of int)
0:180 Convert float to int (temp lowp 2-component vector of int)
0:180 'inf' (in highp 2-component vector of float)
0:181 textureGatherOffsets (global highp 4-component vector of float)
0:181 direct index (temp highp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D)
0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant:
0:181 0 (const int)
0:181 Constant:
@ -421,9 +421,9 @@ ERROR: node is still EOpNull!
0:181 0 (const int)
0:181 0 (const int)
0:181 0 (const int)
0:182 textureGatherOffsets (global highp 4-component vector of float)
0:182 direct index (temp highp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D)
0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant:
0:182 0 (const int)
0:182 Constant:
@ -927,7 +927,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
0:? 'outb' (smooth out bool)
0:? 'outo' (smooth out highp sampler2D)
0:? 'outo' (smooth out lowp sampler2D)
0:? 'outa' (smooth out 4-element array of highp float)
0:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
0:? 'outs' (smooth out structure{global highp float f})
@ -949,7 +949,7 @@ ERROR: node is still EOpNull!
0:? 'inf' (in highp 2-component vector of float)
0:? 'ing' (in highp 2-component vector of float)
0:? 'offsets' (uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' (uniform 4-element array of highp sampler2D)
0:? 'sArray' (uniform 4-element array of lowp sampler2D)
0:? 'sIndex' (uniform highp int)
0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i})
@ -1222,8 +1222,8 @@ ERROR: node is still EOpNull!
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D)
0:157 indirect index (temp lowp sampler2D)
0:157 'sArray' (uniform 4-element array of lowp sampler2D)
0:157 add (temp highp int)
0:157 'sIndex' (uniform highp int)
0:157 Constant:
@ -1261,19 +1261,19 @@ ERROR: node is still EOpNull!
0:164 'sIndex' (uniform highp int)
0:164 Constant:
0:164 2 (const int)
0:165 textureGatherOffset (global highp 4-component vector of float)
0:165 direct index (temp highp sampler2D)
0:165 'sArray' (uniform 4-element array of highp sampler2D)
0:165 textureGatherOffset (global lowp 4-component vector of float)
0:165 direct index (temp lowp sampler2D)
0:165 'sArray' (uniform 4-element array of lowp sampler2D)
0:165 Constant:
0:165 0 (const int)
0:165 Constant:
0:165 0.100000
0:165 0.100000
0:165 Convert float to int (temp highp 2-component vector of int)
0:165 Convert float to int (temp lowp 2-component vector of int)
0:165 'inf' (in highp 2-component vector of float)
0:166 textureGatherOffsets (global highp 4-component vector of float)
0:166 direct index (temp highp sampler2D)
0:166 'sArray' (uniform 4-element array of highp sampler2D)
0:166 textureGatherOffsets (global lowp 4-component vector of float)
0:166 direct index (temp lowp sampler2D)
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
0:166 Constant:
0:166 0 (const int)
0:166 Constant:
@ -1297,8 +1297,8 @@ ERROR: node is still EOpNull!
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 indirect index (temp lowp sampler2D)
0:175 'sArray' (uniform 4-element array of lowp sampler2D)
0:175 add (temp highp int)
0:175 'sIndex' (uniform highp int)
0:175 Constant:
@ -1325,19 +1325,19 @@ ERROR: node is still EOpNull!
0:179 'sIndex' (uniform highp int)
0:179 Constant:
0:179 2 (const int)
0:180 textureGatherOffset (global highp 4-component vector of float)
0:180 direct index (temp highp sampler2D)
0:180 'sArray' (uniform 4-element array of highp sampler2D)
0:180 textureGatherOffset (global lowp 4-component vector of float)
0:180 direct index (temp lowp sampler2D)
0:180 'sArray' (uniform 4-element array of lowp sampler2D)
0:180 Constant:
0:180 0 (const int)
0:180 Constant:
0:180 0.100000
0:180 0.100000
0:180 Convert float to int (temp highp 2-component vector of int)
0:180 Convert float to int (temp lowp 2-component vector of int)
0:180 'inf' (in highp 2-component vector of float)
0:181 textureGatherOffsets (global highp 4-component vector of float)
0:181 direct index (temp highp sampler2D)
0:181 'sArray' (uniform 4-element array of highp sampler2D)
0:181 textureGatherOffsets (global lowp 4-component vector of float)
0:181 direct index (temp lowp sampler2D)
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
0:181 Constant:
0:181 0 (const int)
0:181 Constant:
@ -1352,9 +1352,9 @@ ERROR: node is still EOpNull!
0:181 0 (const int)
0:181 0 (const int)
0:181 0 (const int)
0:182 textureGatherOffsets (global highp 4-component vector of float)
0:182 direct index (temp highp sampler2D)
0:182 'sArray' (uniform 4-element array of highp sampler2D)
0:182 textureGatherOffsets (global lowp 4-component vector of float)
0:182 direct index (temp lowp sampler2D)
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
0:182 Constant:
0:182 0 (const int)
0:182 Constant:
@ -1858,7 +1858,7 @@ ERROR: node is still EOpNull!
0:? 'us2dms' (uniform highp usampler2DMS)
0:? 'us2dmsa' (uniform mediump usampler2DMSArray)
0:? 'outb' (smooth out bool)
0:? 'outo' (smooth out highp sampler2D)
0:? 'outo' (smooth out lowp sampler2D)
0:? 'outa' (smooth out 4-element array of highp float)
0:? 'outaa' (smooth out 4-element array of 2-element array of highp float)
0:? 'outs' (smooth out structure{global highp float f})
@ -1880,7 +1880,7 @@ ERROR: node is still EOpNull!
0:? 'inf' (in highp 2-component vector of float)
0:? 'ing' (in highp 2-component vector of float)
0:? 'offsets' (uniform 4-element array of highp 2-component vector of int)
0:? 'sArray' (uniform 4-element array of highp sampler2D)
0:? 'sArray' (uniform 4-element array of lowp sampler2D)
0:? 'sIndex' (uniform highp int)
0:? 'auArray' (layout(binding=0 offset=0 ) uniform 2-element array of highp atomic_uint)
0:? 'ubInst' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform highp int i})

View File

@ -2871,11 +2871,17 @@ void TParseContext::setDefaultPrecision(const TSourceLoc& loc, TPublicType& publ
// correlates with the declaration of defaultSamplerPrecision[]
int TParseContext::computeSamplerTypeIndex(TSampler& sampler)
{
int arrayIndex = sampler.arrayed ? 1 : 0;
int shadowIndex = sampler.shadow ? 1 : 0;
int externalIndex = sampler.external ? 1 : 0;
int arrayIndex = sampler.arrayed ? 1 : 0;
int shadowIndex = sampler.shadow ? 1 : 0;
int externalIndex = sampler.external? 1 : 0;
int imageIndex = sampler.image ? 1 : 0;
int msIndex = sampler.ms ? 1 : 0;
return EsdNumDims * (EbtNumTypes * (2 * (2 * arrayIndex + shadowIndex) + externalIndex) + sampler.type) + sampler.dim;
int flattened = EsdNumDims * (EbtNumTypes * (2 * (2 * (2 * (2 * arrayIndex + msIndex) + imageIndex) + shadowIndex) +
externalIndex) + sampler.type) + sampler.dim;
assert(flattened < maxSamplerIndex);
return flattened;
}
TPrecisionQualifier TParseContext::getDefaultPrecision(TPublicType& publicType)

View File

@ -335,7 +335,7 @@ protected:
TParseContext& operator=(TParseContext&);
const bool parsingBuiltins; // true if parsing built-in symbols/functions
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex()
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2 * 2 * 2)); // see computeSamplerTypeIndex()
TPrecisionQualifier defaultSamplerPrecision[maxSamplerIndex];
bool afterEOF;
TQualifier globalBufferDefaults;