diff --git a/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out new file mode 100644 index 00000000..7211b78b --- /dev/null +++ b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out @@ -0,0 +1,4 @@ +textureoffset_sampler2darrayshadow.vert +ERROR: 0:9: 'sampler' : TextureOffset not support the sampler2DArrayShadow : version <= 420 +ERROR: 0:9: '' : compilation terminated +ERROR: 2 compilation errors. No code generated diff --git a/Test/textureoffset_sampler2darrayshadow.vert b/Test/textureoffset_sampler2darrayshadow.vert new file mode 100644 index 00000000..6ce2dbc3 --- /dev/null +++ b/Test/textureoffset_sampler2darrayshadow.vert @@ -0,0 +1,11 @@ +#version 300 es +precision mediump float; +in highp vec4 dEQP_Position; + +uniform mediump sampler2DArrayShadow s; + +void main() +{ + gl_Position = vec4(textureOffset(s, vec4(0), ivec2(0))); + gl_Position = dEQP_Position; +} diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index a3815caa..149ba761 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -115,6 +115,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, #endif bool is1D() const { return dim == Esd1D; } + bool is2D() const { return dim == Esd2D; } bool isBuffer() const { return dim == EsdBuffer; } bool isRect() const { return dim == EsdRect; } bool isSubpass() const { return dim == EsdSubpass; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index bc2a38a1..c8d68630 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2191,6 +2191,16 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]"); } } + + if (callNode.getOp() == EOpTextureOffset) { + TSampler s = arg0->getType().getSampler(); + if (s.is2D() && s.isArrayed() && s.isShadow()) { + if (isEsProfile()) + error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "ES Profile"); + else if (version <= 420) + error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "version <= 420"); + } + } } break;