diff --git a/Install/Windows/glslangValidator.exe b/Install/Windows/glslangValidator.exe index a3ca0d0a727cae116bbac7ed02310cb239766c9b..cf9fc6a1339e382fc1a9d6c49f224bdaab42c26e 100644 Binary files a/Install/Windows/glslangValidator.exe and b/Install/Windows/glslangValidator.exe differ diff --git a/Test/300.vert b/Test/300.vert index cdbfa8eeaa3ea45888dd8b2a2470b5df699fb11b..800ffbeed2b403ffca1560aed1f719d555bbc0bf 100644 --- a/Test/300.vert +++ b/Test/300.vert @@ -104,3 +104,26 @@ uniform ub3 { uniform ub3 { // ERROR redeclaration of block name (no instance name in first or declared) bool b234; }; + +precision lowp sampler3D; +precision lowp sampler2DShadow; +precision lowp sampler2DArrayShadow; + +uniform sampler2D s2D; +uniform sampler3D s3D; +uniform sampler2DShadow s2DS; +uniform sampler2DArrayShadow s2DAS; +in vec2 c2D; + +void foo23() +{ + ivec2 x1 = textureSize(s2D, 2); + textureSize(s2D); // ERROR, no lod + ivec3 x3 = textureSize(s2DAS, -1); + textureSize(s2DAS); // ERROR, no lod + vec4 x4 = texture(s2D, c2D); + texture(s2D, c2D, 0.2); // ERROR, bias + vec4 x5 = textureProjOffset(s3D, vec4(0.2), ivec3(1)); + textureProjOffset(s3D, vec4(0.2), ivec3(1), .03); // ERROR, bias + float x6 = textureProjGradOffset(s2DS, invIn, vec2(4.2), vec2(5.3), ivec2(1)); +} diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out index 4e113b2759696aa6f40dfa2baa983c3836d48656..9cb9ee75c4bfaf96be6b3bed02f710e3053f976d 100644 --- a/Test/baseResults/300.vert.out +++ b/Test/baseResults/300.vert.out @@ -25,7 +25,11 @@ ERROR: 0:88: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:92: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:96: 'ub2' : Cannot reuse block name within the same interface: uniform ERROR: 0:104: 'ub3' : Cannot reuse block name within the same interface: uniform -ERROR: 26 compilation errors. No code generated. +ERROR: 0:121: 'textureSize' : no matching overloaded function found +ERROR: 0:123: 'textureSize' : no matching overloaded function found +ERROR: 0:125: 'texture' : no matching overloaded function found +ERROR: 0:127: 'textureProjOffset' : no matching overloaded function found +ERROR: 30 compilation errors. No code generated. ERROR: node is still EOpNull! @@ -150,6 +154,66 @@ ERROR: node is still EOpNull! 0:73 move second child to first child (highp 3-component vector of float) 0:73 'newV' (smooth out highp 3-component vector of float) 0:73 'v3' (in highp 3-component vector of float) +0:118 Function Definition: foo23( (void) +0:118 Function Parameters: +0:120 Sequence +0:120 Sequence +0:120 move second child to first child (highp 2-component vector of int) +0:120 'x1' (highp 2-component vector of int) +0:120 Function Call: textureSize(s21;i1; (highp 2-component vector of int) +0:120 's2D' (uniform lowp sampler2D) +0:120 Constant: +0:120 2 (const int) +0:121 Constant: +0:121 0.000000 +0:122 Sequence +0:122 move second child to first child (highp 3-component vector of int) +0:122 'x3' (highp 3-component vector of int) +0:122 Function Call: textureSize(sAS21;i1; (highp 3-component vector of int) +0:122 's2DAS' (uniform lowp sampler2DArrayShadow) +0:122 Constant: +0:122 -1 (const int) +0:123 Constant: +0:123 0.000000 +0:124 Sequence +0:124 move second child to first child (highp 4-component vector of float) +0:124 'x4' (highp 4-component vector of float) +0:124 Function Call: texture(s21;vf2; (highp 4-component vector of float) +0:124 's2D' (uniform lowp sampler2D) +0:124 'c2D' (in highp 2-component vector of float) +0:125 Constant: +0:125 0.000000 +0:126 Sequence +0:126 move second child to first child (highp 4-component vector of float) +0:126 'x5' (highp 4-component vector of float) +0:126 Function Call: textureProjOffset(s31;vf4;vi3; (highp 4-component vector of float) +0:126 's3D' (uniform lowp sampler3D) +0:126 Constant: +0:126 0.200000 +0:126 0.200000 +0:126 0.200000 +0:126 0.200000 +0:126 Constant: +0:126 1 (const int) +0:126 1 (const int) +0:126 1 (const int) +0:127 Constant: +0:127 0.000000 +0:128 Sequence +0:128 move second child to first child (highp float) +0:128 'x6' (highp float) +0:128 Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (highp float) +0:128 's2DS' (uniform lowp sampler2DShadow) +0:128 'invIn' (invariant in highp 4-component vector of float) +0:128 Constant: +0:128 4.200000 +0:128 4.200000 +0:128 Constant: +0:128 5.300000 +0:128 5.300000 +0:128 Constant: +0:128 1 (const int) +0:128 1 (const int) 0:? Linker Objects 0:? 'm43' (uniform highp 4X3 matrix of float) 0:? 'm33' (uniform highp 3X3 matrix of float) @@ -175,6 +239,11 @@ ERROR: node is still EOpNull! 0:? 's3' (invariant smooth out structure{c,f}) 0:? 'a' (layout(column_major shared ) uniform block{f}) 0:? '__anon__0' (layout(column_major shared ) uniform block{b23}) +0:? 's2D' (uniform lowp sampler2D) +0:? 's3D' (uniform lowp sampler3D) +0:? 's2DS' (uniform lowp sampler2DShadow) +0:? 's2DAS' (uniform lowp sampler2DArrayShadow) +0:? 'c2D' (in highp 2-component vector of float) 0:? 'gl_VertexID' (gl_VertexId highp int) 0:? 'gl_InstanceID' (gl_InstanceId highp int) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index cbc04b64a187784af14c3e29c77c092231625dc0..9a11835d414937838818a0f55e39cd0843db4d2a 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1603,9 +1603,6 @@ void TBuiltIns::addImageFunctions(TSampler sampler, TString& typeName, int versi // void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int version, EProfile profile) { - // make one string per stage to contain all functions of the passed-in type for that stage - TString functions[EShLangCount]; - // // texturing // @@ -1763,14 +1760,10 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, TString& typeName, int ve // Add to the per-language set of built-ins - if (! bias) { - functions[EShLangVertex].append(s); - functions[EShLangGeometry].append(s); - functions[EShLangTessControl].append(s); - functions[EShLangTessEvaluation].append(s); - functions[EShLangCompute].append(s); - } - commonBuiltins.append(s); + if (bias) + stageBuiltins[EShLangFragment].append(s); + else + commonBuiltins.append(s); } } } @@ -1804,9 +1797,6 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int vers if (version < 140 && sampler.dim == EsdRect && sampler.type != EbtFloat) return; - // make one string per stage to contain all functions of the passed-in type for that stage - TString functions[EShLangCount]; - for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument