From 41992e432cd8c8ef81db319f47299d7336220d6f Mon Sep 17 00:00:00 2001 From: ZhiqianXia Date: Thu, 15 Apr 2021 21:38:35 +0800 Subject: [PATCH 1/2] TextureOffset not support sampler2DArrayShadow sampler until 430. Signed-off-by: ZhiqianXia --- .../textureoffset_sampler2darrayshadow.vert.out | 4 ++++ Test/textureoffset_sampler2darrayshadow.vert | 11 +++++++++++ glslang/Include/Types.h | 1 + glslang/MachineIndependent/ParseHelper.cpp | 10 ++++++++++ 4 files changed, 26 insertions(+) create mode 100644 Test/baseResults/textureoffset_sampler2darrayshadow.vert.out create mode 100644 Test/textureoffset_sampler2darrayshadow.vert 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; From 12f3eb8e3fdfb042afd7386c080b0ed548b359ef Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 16 Apr 2021 18:52:51 -0600 Subject: [PATCH 2/2] Fix and enable textureOffset_samper2darrayshadow test --- ...extureoffset_sampler2darrayshadow.vert.out | 65 ++++++++++++++++++- gtests/AST.FromFile.cpp | 1 + 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out index 7211b78b..44d8e975 100644 --- a/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out +++ b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out @@ -1,4 +1,63 @@ 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 +ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow : ES Profile +ERROR: 1 compilation errors. No code generated. + + +Shader version: 300 +ERROR: node is still EOpNull! +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 move second child to first child ( temp highp 4-component vector of float) +0:9 'gl_Position' ( gl_Position highp 4-component vector of float Position) +0:9 Construct vec4 ( temp highp 4-component vector of float) +0:9 textureOffset ( global mediump float) +0:9 's' ( uniform mediump sampler2DArrayShadow) +0:9 Constant: +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:9 Constant: +0:9 0 (const int) +0:9 0 (const int) +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 'gl_Position' ( gl_Position highp 4-component vector of float Position) +0:10 'dEQP_Position' ( in highp 4-component vector of float) +0:? Linker Objects +0:? 'dEQP_Position' ( in highp 4-component vector of float) +0:? 's' ( uniform mediump sampler2DArrayShadow) +0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) + + +Linked vertex stage: + + +Shader version: 300 +ERROR: node is still EOpNull! +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 move second child to first child ( temp highp 4-component vector of float) +0:9 'gl_Position' ( gl_Position highp 4-component vector of float Position) +0:9 Construct vec4 ( temp highp 4-component vector of float) +0:9 textureOffset ( global mediump float) +0:9 's' ( uniform mediump sampler2DArrayShadow) +0:9 Constant: +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:9 0.000000 +0:9 Constant: +0:9 0 (const int) +0:9 0 (const int) +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 'gl_Position' ( gl_Position highp 4-component vector of float Position) +0:10 'dEQP_Position' ( in highp 4-component vector of float) +0:? Linker Objects +0:? 'dEQP_Position' ( in highp 4-component vector of float) +0:? 's' ( uniform mediump sampler2DArrayShadow) +0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) + diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 8885b291..77f0aafb 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -281,6 +281,7 @@ INSTANTIATE_TEST_SUITE_P( "terminate.frag", "terminate.vert", "negativeWorkGroupSize.comp", + "textureoffset_sampler2darrayshadow.vert", })), FileNameAsCustomTestSuffix );