From 8ec55cdcd2815a0d91e2d2c69e56b3300323f1b9 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 5 Nov 2013 18:07:25 +0000 Subject: [PATCH] Clean up/resolve a bunch of TODO, which included implementing pixel_center_integer and origin_upper_left and adjusting what versions see legacy texturing names. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23874 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Install/Windows/glslangValidator.exe | Bin 369664 -> 375296 bytes Test/130.frag | 6 + Test/150.frag | 14 ++ Test/300.frag | 8 + Test/400.frag | 7 + Test/baseResults/130.frag.out | 7 +- Test/baseResults/150.frag.out | 21 ++ Test/baseResults/150.geom.out | 4 +- Test/baseResults/300.frag.out | 22 +- Test/baseResults/400.frag.out | 21 +- Test/baseResults/410.geom.out | 2 +- Test/baseResults/specExamples.frag.out | 10 +- Test/baseResults/specExamples.vert.out | 4 +- Test/testlist | 1 + Todo.txt | 63 +++--- glslang/Include/Types.h | 36 +++- glslang/MachineIndependent/Constant.cpp | 6 +- glslang/MachineIndependent/Initialize.cpp | 49 +++-- glslang/MachineIndependent/Intermediate.cpp | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 191 ++++++++++++------ glslang/MachineIndependent/ParseHelper.h | 10 +- glslang/MachineIndependent/glslang.y | 21 +- glslang/MachineIndependent/intermOut.cpp | 6 + glslang/MachineIndependent/linkValidate.cpp | 9 +- .../MachineIndependent/localintermediate.h | 8 +- .../preprocessor/PpScanner.cpp | 2 +- .../preprocessor/PpTokens.cpp | 2 +- glslang/OSDependent/Linux/ossource.cpp | 2 +- 28 files changed, 374 insertions(+), 160 deletions(-) create mode 100644 Test/150.frag create mode 100644 Test/baseResults/150.frag.out diff --git a/Install/Windows/glslangValidator.exe b/Install/Windows/glslangValidator.exe index 248a1e4ffc51d0c8599c60ae77c5b9afb6118d37..24272a3983d2c18fbde74f02f0de81d3ab33e40c 100644 GIT binary patch delta 143714 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 z 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

V8$Vs!3d@Yf@zCj8X=hK2&N2zDTrXQ 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 WW2a!pP_SKUJ?k^B=^xH8uK@tgh)|vY diff --git a/Test/130.frag b/Test/130.frag index c65cd0ef..3099a47b 100644 --- a/Test/130.frag +++ b/Test/130.frag @@ -31,3 +31,9 @@ void bar() { vec4 s = textureGather(sampC, vec3(0.2)); } + +flat in vec3 gl_Color; // ERROR, type +in vec4 gl_Color; +flat in vec4 gl_Color; +flat in vec4 gl_Color[2]; // ERROR, array +vec4 gl_Color; // ERROR, storage diff --git a/Test/150.frag b/Test/150.frag new file mode 100644 index 00000000..fb15a00f --- /dev/null +++ b/Test/150.frag @@ -0,0 +1,14 @@ +#version 150 core + +in vec4 gl_FragCoord; +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR +layout(pixel_center_integer) in vec4 gl_FragCoord; // ERROR +layout(origin_upper_left) in vec4 foo; // ERROR +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; + +void main() +{ + vec4 c = gl_FragCoord; +} + +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; diff --git a/Test/300.frag b/Test/300.frag index 88539cb5..d63c81e2 100644 --- a/Test/300.frag +++ b/Test/300.frag @@ -103,5 +103,13 @@ uniform multi { int c[2][3]; // ERROR } multiInst[2][3]; // ERROR +out vec4 colors[4]; + +void foo() +{ + colors[2] = c4D; + colors[ic1D] = c4D; +} + float imageBuffer; // ERROR, reserved float uimage2DRect; // ERROR, reserved diff --git a/Test/400.frag b/Test/400.frag index b2d83989..82cd3ab0 100644 --- a/Test/400.frag +++ b/Test/400.frag @@ -21,6 +21,8 @@ void main() iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 4); // ERROR, last argument out of range iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 1+2); iv4 = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(i)); + + vec4 c = gl_FragCoord; } layout(location = 4) in vec4 vl; // ERROR, not supported @@ -32,3 +34,8 @@ layout(location = 4) in vec4 vl; // ERROR, not supported layout(location = 4) in vec4 vl2; layout(location = 3) uniform vec3 uv3; + +layout(location = 5) in vec4 gl_Color; // ERROR, layout +noperspective in float gl_ClipDistance[4]; // ERROR, can't change qualifier + +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out index f6120e9b..55d7e528 100644 --- a/Test/baseResults/130.frag.out +++ b/Test/baseResults/130.frag.out @@ -1,6 +1,9 @@ Warning, version 130 is not yet complete; most features are present, but a few are missing. ERROR: 0:25: 'texture gather function' : not supported for this version or the enabled extensions -ERROR: 1 compilation errors. No code generated. +ERROR: 0:35: 'redeclaration' : cannot change the type of gl_Color +ERROR: 0:38: 'gl_Color' : redeclaring non-array as array +ERROR: 0:39: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_Color +ERROR: 4 compilation errors. No code generated. ERROR: node is still EOpNull! 0:16 Function Definition: main( (void) @@ -48,4 +51,6 @@ ERROR: node is still EOpNull! 0:? 'fnop' (noperspective in float) 0:? 'gl_ClipDistance' (smooth in unsized array of float) 0:? 'sampC' (uniform samplerCube) +0:? 'gl_Color' (smooth in 4-component vector of float) +0:? 'gl_Color' (flat in 4-component vector of float) diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out new file mode 100644 index 00000000..9d98ddfa --- /dev/null +++ b/Test/baseResults/150.frag.out @@ -0,0 +1,21 @@ +Warning, version 150 is not yet complete; some version-specific features are present, but many are missing. +ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord +ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord +ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord +ERROR: 3 compilation errors. No code generated. + +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:9 Function Definition: main( (void) +0:9 Function Parameters: +0:11 Sequence +0:11 Sequence +0:11 move second child to first child (4-component vector of float) +0:11 'c' (4-component vector of float) +0:11 'gl_FragCoord' (gl_FragCoord 4-component vector of float) +0:? Linker Objects +0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float) +0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float) +0:? 'foo' (smooth in 4-component vector of float) + diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out index 186e4a49..0da9b61d 100644 --- a/Test/baseResults/150.geom.out +++ b/Test/baseResults/150.geom.out @@ -71,7 +71,7 @@ ERROR: node is still EOpNull! 0:33 Constant: 0:33 2 (const int) 0:34 move second child to first child (4-component vector of float) -0:34 gl_Position: direct index for structure (layout(stream=0 ) 4-component vector of float) +0:34 gl_Position: direct index for structure (layout(stream=0 ) gl_Position 4-component vector of float) 0:34 '__anon__1' (layout(stream=0 ) out block{gl_Position,gl_PointSize,gl_ClipDistance}) 0:34 Constant: 0:34 0 (const uint) @@ -83,7 +83,7 @@ ERROR: node is still EOpNull! 0:34 Constant: 0:34 0 (const int) 0:35 move second child to first child (float) -0:35 gl_PointSize: direct index for structure (layout(stream=0 ) float) +0:35 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float) 0:35 '__anon__1' (layout(stream=0 ) out block{gl_Position,gl_PointSize,gl_ClipDistance}) 0:35 Constant: 0:35 1 (const uint) diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out index 670ce24d..2e0d6575 100644 --- a/Test/baseResults/300.frag.out +++ b/Test/baseResults/300.frag.out @@ -17,9 +17,10 @@ ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es ERROR: 0:103: 'arrays of arrays' : not supported with this profile: es ERROR: 0:100: 'arrays of arrays' : not supported with this profile: es -ERROR: 0:106: 'imageBuffer' : Reserved word. -ERROR: 0:106: '' : syntax error -ERROR: 21 compilation errors. No code generated. +ERROR: 0:111: 'variable indexing fragment shader ouput array' : not supported with this profile: es +ERROR: 0:114: 'imageBuffer' : Reserved word. +ERROR: 0:114: '' : syntax error +ERROR: 22 compilation errors. No code generated. ERROR: node is still EOpNull! 0:53 Function Definition: main( (void) @@ -208,6 +209,20 @@ ERROR: node is still EOpNull! 0:96 'c4D' (smooth lowp 4-component vector of float) 0:97 arc hyp. tangent (lowp 3-component vector of float) 0:97 'c3D' (smooth in lowp 3-component vector of float) +0:108 Function Definition: foo( (void) +0:108 Function Parameters: +0:110 Sequence +0:110 move second child to first child (lowp 4-component vector of float) +0:110 direct index (lowp 4-component vector of float) +0:110 'colors' (out 4-element array of lowp 4-component vector of float) +0:110 Constant: +0:110 2 (const int) +0:110 'c4D' (smooth lowp 4-component vector of float) +0:111 move second child to first child (lowp 4-component vector of float) +0:111 indirect index (lowp 4-component vector of float) +0:111 'colors' (out 4-element array of lowp 4-component vector of float) +0:111 'ic1D' (flat in mediump int) +0:111 'c4D' (smooth lowp 4-component vector of float) 0:? Linker Objects 0:? 's2D' (uniform lowp sampler2D) 0:? 's3D' (uniform lowp sampler3D) @@ -240,4 +255,5 @@ ERROR: node is still EOpNull! 0:? 'sf' (out lowp float) 0:? 'arrayedSampler' (uniform 5-element array of lowp sampler2D) 0:? 'multiInst' (layout(column_major shared ) uniform 2-element array of block{a,b,c}) +0:? 'colors' (out 4-element array of lowp 4-component vector of float) diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index 89396d27..6f478f64 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -1,10 +1,15 @@ Warning, version 400 is not yet complete; some version-specific features are present, but many are missing. ERROR: 0:20: 'texture gather component' : must be a constant ERROR: 0:21: 'texture gather component' : must be 0, 1, 2, or 3 -ERROR: 0:26: 'location qualifier on input' : not supported for this version or the enabled extensions -ERROR: 0:34: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions -ERROR: 4 compilation errors. No code generated. +ERROR: 0:28: 'location qualifier on input' : not supported for this version or the enabled extensions +ERROR: 0:36: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions +ERROR: 0:38: 'redeclaration' : cannot apply layout qualifier to gl_Color +ERROR: 0:39: 'redeclaration' : cannot change qualification of gl_ClipDistance +ERROR: 0:41: 'gl_FragCoord' : cannot redeclare after use +ERROR: 7 compilation errors. No code generated. +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:10 Function Definition: main( (void) 0:10 Function Parameters: @@ -105,6 +110,10 @@ ERROR: node is still EOpNull! 0:23 0.100000 0:23 Construct ivec2 (2-component vector of int) 0:23 'i' (flat in int) +0:25 Sequence +0:25 move second child to first child (4-component vector of float) +0:25 'c' (4-component vector of float) +0:25 'gl_FragCoord' (gl_FragCoord 4-component vector of float) 0:? Linker Objects 0:? 'c2D' (smooth in 2-component vector of float) 0:? 'i' (flat in int) @@ -112,8 +121,12 @@ ERROR: node is still EOpNull! 0:? 'arrayedSampler' (uniform 5-element array of sampler2D) 0:? 'samp2dr' (uniform usampler2DRect) 0:? 'isamp2DA' (uniform isampler2DArray) -0:? 'gl_ClipDistance' (smooth in unsized array of float) +0:? 'gl_ClipDistance' (smooth in 4-element array of float) 0:? 'vl' (layout(location=4 ) smooth in 4-component vector of float) 0:? 'vl2' (layout(location=4 ) smooth in 4-component vector of float) 0:? 'uv3' (layout(location=3 ) uniform 3-component vector of float) +0:? '__anon__0' (in block{gl_FogFragCoord,gl_TexCoord,gl_Color,gl_SecondaryColor}) +0:? '__anon__0' (in block{gl_FogFragCoord,gl_TexCoord,gl_Color,gl_SecondaryColor}) +0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float) +0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float) diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out index 5a01691c..0b3acd85 100644 --- a/Test/baseResults/410.geom.out +++ b/Test/baseResults/410.geom.out @@ -32,7 +32,7 @@ ERROR: node is still EOpNull! 0:30 Constant: 0:30 0 (const int) 0:31 move second child to first child (float) -0:31 gl_PointSize: direct index for structure (layout(stream=0 ) float) +0:31 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float) 0:31 '__anon__0' (layout(stream=0 ) out block{gl_PointSize}) 0:31 Constant: 0:31 0 (const uint) diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out index de312ae8..19a1c155 100644 --- a/Test/baseResults/specExamples.frag.out +++ b/Test/baseResults/specExamples.frag.out @@ -6,10 +6,8 @@ ERROR: 0:37: 'view' : redefinition ERROR: 0:68: 'lightPosition' : redefinition ERROR: 0:75: 'Atten' : member storage qualifier cannot contradict block storage qualifier ERROR: 0:87: 'Color' : redefinition -ERROR: 0:92: 'origin_upper_left' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4) -ERROR: 0:93: 'pixel_center_integer' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4) -ERROR: 0:94: 'origin_upper_left' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4) -ERROR: 0:94: 'pixel_center_integer' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4) +ERROR: 0:92: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord +ERROR: 0:93: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:96: 'early_fragment_tests' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4) ERROR: 0:99: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:99: 'local_size_y' : there is no such layout identifier for this stage taking an assigned value @@ -48,8 +46,10 @@ ERROR: 0:226: 'in' : not allowed in nested scope ERROR: 0:227: 'in' : not allowed in nested scope ERROR: 0:228: 'in' : not allowed in nested scope ERROR: 0:232: 'out' : not allowed in nested scope -ERROR: 49 compilation errors. No code generated. +ERROR: 47 compilation errors. No code generated. +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left ERROR: node is still EOpNull! 0:5 Sequence 0:5 move second child to first child (int) diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out index 030d42ef..28039033 100644 --- a/Test/baseResults/specExamples.vert.out +++ b/Test/baseResults/specExamples.vert.out @@ -30,6 +30,8 @@ ERROR: 0:95: 'binding' : requires block, or sampler/image, or atomic-counter typ ERROR: 0:96: 'binding' : requires block, or sampler/image, or atomic-counter type ERROR: 0:97: 'binding' : requires block, or sampler/image, or atomic-counter type ERROR: 0:106: '' : vertex input cannot be further qualified +ERROR: 0:106: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor +ERROR: 0:107: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor ERROR: 0:112: 'ColorIvn' : identifier not previously declared ERROR: 0:132: 'shared' : not supported in this stage: vertex ERROR: 0:134: '' : function does not return a value: funcA @@ -40,7 +42,7 @@ ERROR: 0:153: '' : function does not return a value: func3 ERROR: 0:192: 'constructor' : constructing from a non-dereferenced array ERROR: 0:193: 'constructor' : constructing from a non-dereferenced array ERROR: 0:194: 'constructor' : constructing from a non-dereferenced array -ERROR: 40 compilation errors. No code generated. +ERROR: 42 compilation errors. No code generated. ERROR: node is still EOpNull! 0:134 Function Definition: funcA(I21; (4-component vector of float) diff --git a/Test/testlist b/Test/testlist index aebde4a5..74d5d84b 100644 --- a/Test/testlist +++ b/Test/testlist @@ -14,6 +14,7 @@ versionsErrors.vert 140.frag 150.vert 150.geom +150.frag precision.frag precision.vert nonSquare.vert diff --git a/Todo.txt b/Todo.txt index f3ce5b49..29ed8c1c 100644 --- a/Todo.txt +++ b/Todo.txt @@ -12,40 +12,49 @@ Link Validation - statically consumed input not produced by previous stage - give error for sharing a packed block - 1.2: matching initializers for uniforms + - 1.3: only statically used built-ins have to be redeclared as flat - 1.5: matching between gl_PerVertex blocks and gl_PerFragment blocks - 1.3: deprecated mixing fixed vertex/fragment stage with programmable fragment/vertex stage. - 4.3: compute shader not combined with any other stages - 4.3: remove cross-version linking restrictions. - 4.3: Allow mismatches in interpolation and auxiliary qualification across stages. - 4.4: A stage contains two different blocks, each with no instance name, where the blocks contain a member with the same name. - Intra-stage linking - - ES 3.0: location aliasing/overlap (except desktop vertex shader inputs) - + ES 3.0: fragment outputs all have locations, if more than one + Intra-stage linking, single shader + - limits checking: + - number of texture image units + - texel offsets (or compile-time?) + - number of input/output compononents + - tessellation limits + - ... + exactly one main - + Non ES: type consistency check of uniforms, globals, ins, and outs - + Non ES: value checking of global const initializers - + Non ES: value checking of uniform initializers - + Non ES: location match + + ES 3.0: fragment outputs all have locations, if more than one + - ES 3.0: location aliasing/overlap (except desktop vertex shader inputs) + - Non ES: binding overlap? - Non ES: gl_TexCoord can only have a max array size of up to gl_MaxTextureCoords - + recursion for functions - - Non ES: block matching - - Non ES: component/binding/index/offset match check - - Non ES: geometry shader input array sizes and input layout qualifier declaration - - Non ES: compute shader layout(local_size_*) matching - + mixed es/non-es profiles are an error - - Non ES: Even the potential for recursion through subroutine uniforms is an error. - - Non ES: matching redeclarations of interface blocks + + Non ES: geometry shader input array sizes and input layout qualifier declaration - Non ES: read or write to both gl_ClipVertex and gl_ClipDistance - Non ES: write to only one of gl_FragColor, gl_FragData, or user-declared - 1.50: at least one geometry shader says input primitive and at least one says output primitive... - 1.50: at least one geometry shader says max_vertices... - - 1.50: match between all explicit input array sizes and input primitive - - 4.3: Be clear that early_fragment_tests is only needed in one fragment-stage compilation unit. - - 4.3: Be clear that implicit array sizing is only within a stage, not cross stage. - - 4.4: overlapping transform/feedback offsets, offset/stride overflow checks, and stride matching - - 4.4: If gl_FragCoord is redeclared in any fragment shader in a program, it must be redeclared in all the fragment shaders in that program that have a static use gl_FragCoord - 4.4: An interface contains two different blocks, each with no instance name, where the blocks contain a member with the same name. - 4.4: component aliasing (except desktop vertex shader inputs) + Intra-stage linking, multiple shader + + Non ES: type consistency check of uniforms, globals, ins, and outs + + Non ES: value checking of global const initializers + + Non ES: value checking of uniform initializers + + Non ES: location match + + recursion for functions + - Non ES: block matching + - Non ES: component/binding/index/offset match check + - Non ES: compute shader layout(local_size_*) matching + + mixed es/non-es profiles are an error + - Non ES: Even the potential for recursion through subroutine uniforms is an error. + - Non ES: matching redeclarations of interface blocks + - 1.50: match between all explicit input array sizes and input primitive + - 4.3: early_fragment_tests contradictions + - 4.3: implicit array sizing is cross shader within a stage + - 4.4: overlapping transform/feedback offsets, offset/stride overflow checks, and stride matching + - 4.4: If gl_FragCoord is redeclared in any fragment shader in a program, it must be redeclared in all the fragment shaders in that program that have a static use gl_FragCoord Shader Functionality to Implement/Finish ESSL 2.0 (#version 100) @@ -53,19 +62,16 @@ Shader Functionality to Implement/Finish + implement non-inductive array accesses limitation detection ESSL 3.0 - "const" compile-time constant propagation in the front-end has to be complete, for all built-in functions - - add limitation around #define GL_FRAGMENT_PRECISION_HIGH 1 ? GLSL 1.2 + Handle multiple compilation units per stage + Allow initializers on uniform declarations + signature matching takes type conversions into account, ambiguity is an error - - allow constructors to contain non-dereferenced arrays? + - bug: allow constructors to contain non-dereferenced arrays? GLSL 1.3 - . flat is for both user and predeclared built-in in/out variables - GLSL 1.3 (Non-ES) + + flat redeclaration of built-in variables - Preprocessor token pasting (##), ## does macro expansion after pasting not before - - non-perspective (linear) interpolation (noperspective) + + non-perspective (linear) interpolation (noperspective) + add gl_ClipDistance[] to both vertex and fragment shaders - - only statically used built-ins have to be redeclared as flat + Deprecated gl_ClipVertex + deprecate almost all built-in state + ftransform() is deprecated @@ -163,7 +169,7 @@ Shader Functionality to Implement/Finish - Add built-in functions to pack/unpack 16 bit floating-point numbers (ARB_shading_language_pack2f). - packHalf2x16 and unpackHalf2x16 - packSnorm2x16and unpackSnorm2x16 - - Add gl_FragDepthlayout qualifiers to communicate what kind of changes will be made to gl_FragDepth(GL_AMD_conservative depth). + - Add gl_FragDepth layout qualifiers to communicate what kind of changes will be made to gl_FragDepth (GL_AMD_conservative depth). + Add C-style curly brace initializer lists syntax for initializers. Full initialization of aggregates is required when these are used. - Allow .length() to be applied to vectors and matrices, returning the number of components or columns. + Clarify that .length() returns an int type and can be used as a constant integer expression. @@ -188,7 +194,7 @@ Shader Functionality to Implement/Finish member, so that must a have valid index. - Arrays of other objects (uniform blocks) containing implicitly sized arrays will have the same implicit size for all elements of the array. - - Arrays of arrays are now supported, as per the GL_ARB_arrays_of_arraysextension. + - Arrays of arrays are now supported, as per the GL_ARB_arrays_of_arrays extension. - Compute shaders are now supported, as per the GL_ARB_compute_shader extension. - Added imageSize() built-ins to query the dimensions of an image. - Define robust out-of-bounds access behavior when enabled, as per the GL_ARB_robust_buffer_access_behavior extension. @@ -232,3 +238,4 @@ Shader Functionality to Implement/Finish transform feedback buffering. + Bug 10530: To be consistent with ES, include sample types as valid in a precision statement. Note the defaults are irrelevant, as precision qualifiers are not required or have any meaning. + diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 9ca44076..8edf8bd9 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -386,6 +386,25 @@ public: } }; +// Qualifiers that don't need to be keep per object. They have shader scope, not object scope. +// So, they will not be part of TType, TQualifier, etc. +struct TShaderQualifiers { + TLayoutGeometry geometry; // geometry shader in/out primitives + bool pixelCenterInteger; // fragment shader + bool originUpperLeft; // fragment shader + int invocations; // 0 means no declaration + int maxVertices; + + void init() + { + geometry = ElgNone; + originUpperLeft = false; + pixelCenterInteger = false; + invocations = 0; // 0 means no declaration + maxVertices = 0; + } +}; + // // TPublicType is just temporarily used while parsing and not quite the same // information kept per node in TType. Due to the bison stack, it can't have @@ -399,9 +418,7 @@ public: TBasicType basicType; TSampler sampler; TQualifier qualifier; - TLayoutGeometry geometry; // don't keep this in the qualifier; it's more a per shader than per type - int invocations; // 0 means no declaration - int maxVertices; + TShaderQualifiers shaderQualifiers; int vectorSize : 4; int matrixCols : 4; int matrixRows : 4; @@ -432,9 +449,7 @@ public: initType(loc); sampler.clear(); initQualifiers(global); - geometry = ElgNone; - invocations = 0; // 0 means no declaration - maxVertices = 0; + shaderQualifiers.init(); } void setVector(int s) @@ -793,10 +808,11 @@ public: else totalSize = vectorSize; - if (isArray()) - totalSize *= Max(getArraySize(), getMaxArraySize()); - - // TODO: desktop arrays: it should be ill-defined to get object size if the array is not sized, so the max() above maybe should be an assert + if (isArray()) { + // this function can only be used in paths that don't allow unsized arrays + assert(getArraySize() > 0); + totalSize *= getArraySize(); + } return totalSize; } diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 3559a921..67b90c8e 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -297,7 +297,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) // but not always. int resultSize; switch (op) { - // TODO: functionality: constant folding: finish listing exceptions to size here + // TODO: 3.0 functionality: constant folding: finish listing exceptions to size here case EOpDeterminant: case EOpAny: case EOpAll: @@ -481,7 +481,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) break; } - // TODO: Functionality: constant folding: the rest of the ops have to be fleshed out + // TODO: 3.0 Functionality: constant folding: the rest of the ops have to be fleshed out case EOpSinh: case EOpCosh: @@ -665,7 +665,7 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) switch (aggrNode->getOp()) { - // TODO: Functionality: constant folding: the rest of the ops have to be fleshed out + // TODO: 3.0 Functionality: constant folding: the rest of the ops have to be fleshed out case EOpModf: case EOpDistance: diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index f59a1dfc..02311151 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -621,8 +621,9 @@ void TBuiltIns::initialize(int version, EProfile profile) // (Per-stage functions below.) // if ((profile == EEsProfile && version == 100) || - profile == ECompatibilityProfile || - version < 150) { + profile == ECompatibilityProfile || + (profile == ECoreProfile && version < 420) || + profile == ENoProfile) { commonBuiltins.append( "vec4 texture2D(sampler2D, vec2);" @@ -634,8 +635,9 @@ void TBuiltIns::initialize(int version, EProfile profile) "\n"); } - if (profile != EEsProfile && - (profile == ECompatibilityProfile || version < 150)) { + if ( profile == ECompatibilityProfile || + (profile == ECoreProfile && version < 420) || + profile == ENoProfile) { commonBuiltins.append( "vec4 texture1D(sampler1D, float);" @@ -651,8 +653,6 @@ void TBuiltIns::initialize(int version, EProfile profile) "vec4 shadow2DProj(sampler2DShadow, vec4);" "\n"); - - // TODO: functionality: non-ES legacy texturing for Lod, others? } // @@ -686,6 +686,8 @@ void TBuiltIns::initialize(int version, EProfile profile) //============================================================================ // // Prototypes for built-in functions seen by vertex shaders only. + // (Except legacy lod functions, where it depends which release they are + // vertex only.) // //============================================================================ @@ -698,8 +700,16 @@ void TBuiltIns::initialize(int version, EProfile profile) // // Original-style texture Functions with lod. // - if (profile != EEsProfile || version == 100) { - stageBuiltins[EShLangVertex].append( + TString* s; + if (version < 130) + s = &stageBuiltins[EShLangVertex]; + else + s = &commonBuiltins; + if ((profile == EEsProfile && version == 100) || + profile == ECompatibilityProfile || + (profile == ECoreProfile && version < 420) || + profile == ENoProfile) { + s->append( "vec4 texture2DLod(sampler2D, vec2, float);" "vec4 texture2DProjLod(sampler2D, vec3, float);" "vec4 texture2DProjLod(sampler2D, vec4, float);" @@ -707,8 +717,10 @@ void TBuiltIns::initialize(int version, EProfile profile) "\n"); } - if (profile != EEsProfile && version > 100) { - stageBuiltins[EShLangVertex].append( + if ( profile == ECompatibilityProfile || + (profile == ECoreProfile && version < 420) || + profile == ENoProfile) { + s->append( "vec4 texture1DLod(sampler1D, float, float);" "vec4 texture1DProjLod(sampler1D, vec2, float);" "vec4 texture1DProjLod(sampler1D, vec4, float);" @@ -982,7 +994,7 @@ void TBuiltIns::initialize(int version, EProfile profile) if (version >= 430) { stageBuiltins[EShLangCompute].append( "in uvec3 gl_NumWorkGroups;" - // TODO: compute shader: constant with no initializer "const uvec3 gl_WorkGroupSize;" + // TODO: 4.3 functionality: compute shader: constant with no initializer "const uvec3 gl_WorkGroupSize;" "in uvec3 gl_WorkGroupID;" "in uvec3 gl_LocalInvocationID;" @@ -1184,7 +1196,7 @@ void TBuiltIns::initialize(int version, EProfile profile) //============================================================================ if (version >= 400) { - // TODO: tessellation: gl_MaxPatchVertices below needs to move to resources mechanism + // TODO: 4.0 tessellation: gl_MaxPatchVertices below needs to move to resources mechanism stageBuiltins[EShLangTessControl].append( "const int gl_MaxPatchVertices = 32;" ); @@ -1242,7 +1254,7 @@ void TBuiltIns::initialize(int version, EProfile profile) //============================================================================ if (version >= 400) { - // TODO: tessellation: gl_MaxPatchVertices below needs to move to resources mechanism + // TODO: 4.0 tessellation: gl_MaxPatchVertices below needs to move to resources mechanism stageBuiltins[EShLangTessEvaluation].append( "const int gl_MaxPatchVertices = 32;" ); @@ -2084,6 +2096,9 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb // switch(language) { case EShLangVertex: + case EShLangTessControl: + case EShLangTessEvaluation: + case EShLangGeometry: SpecialQualifier("gl_Position", EvqPosition, symbolTable); SpecialQualifier("gl_PointSize", EvqPointSize, symbolTable); SpecialQualifier("gl_ClipVertex", EvqClipVertex, symbolTable); @@ -2091,12 +2106,6 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb SpecialQualifier("gl_InstanceID", EvqInstanceId, symbolTable); break; - case EShLangTessControl: - case EShLangTessEvaluation: - case EShLangGeometry: - // TODO: desktop functionality: support new stages: note it is probably best to stop adding/using special qualifiers, given the passthrough nature of these stages - break; - case EShLangFragment: SpecialQualifier("gl_FrontFacing", EvqFace, symbolTable); SpecialQualifier("gl_FragCoord", EvqFragCoord, symbolTable); @@ -2106,7 +2115,7 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb break; case EShLangCompute: - // TODO: desktop functionality: support new stages + // TODO: 4.3 desktop functionality: compute special variables break; default: diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index d2179451..de1280da 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -867,7 +867,7 @@ void TIntermediate::addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguag // //if (ftransformUsed) { - // TODO: desktop: track ftransform() usage + // TODO: 1.1 lowering functionality: track ftransform() usage // addSymbolLinkageNode(root, symbolTable, "gl_Vertex"); // addSymbolLinkageNode(root, symbolTable, "gl_ModelViewProjectionMatrix"); //} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a9fc2e2d..d21d95dd 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -54,7 +54,7 @@ TParseContext::TParseContext(TSymbolTable& symt, TIntermediate& interm, bool pb, contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), tokensBeforeEOF(false), currentScanner(0), numErrors(0), parsingBuiltins(pb), afterEOF(false), - anyIndexLimits(false) + anyIndexLimits(false), fragCoordUsedBeforeRedeclaration(false) { // ensure we always have a linkage node, even if empty, to simplify tree topology algorithms linkage = new TIntermAggregate; @@ -412,11 +412,15 @@ TIntermTyped* TParseContext::handleVariable(TSourceLoc loc, TSymbol* symbol, TSt if (variable->getType().getQualifier().storage == EvqConst) node = intermediate.addConstantUnion(variable->getConstArray(), variable->getType(), loc); else { - // break sharing with built-ins TType* type; if (variable->isReadOnly()) { type = new TType; + // break sharing with built-ins type->deepCopy(variable->getType()); + + // track use of unredeclared gl_FragCoord + if (variable->getName() == "gl_FragCoord") + fragCoordUsedBeforeRedeclaration = true; } else type = &variable->getWritableType(); node = intermediate.addSymbol(variable->getUniqueId(), variable->getName(), *type, loc); @@ -473,6 +477,8 @@ TIntermTyped* TParseContext::handleBracketDereference(TSourceLoc loc, TIntermTyp error(loc, "", "[", "array must be redeclared with a size before being indexed with a variable"); if (base->getBasicType() == EbtBlock) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing block array"); + else if (language == EShLangFragment && base->getQualifier().storage == EvqVaryingOut) + requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array"); else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; requireProfile(base->getLoc(), ECoreProfile | ECompatibilityProfile, explanation); @@ -923,7 +929,7 @@ TIntermTyped* TParseContext::handleFunctionCall(TSourceLoc loc, TFunction* fnCal } // generic error recovery - // TODO: coding: localize all the error recoveries that look like this + // TODO: simplification: localize all the error recoveries that look like this, and taking type into account to reduce cascades if (result == 0) { TConstUnionArray unionArray(1); unionArray[0].setDConst(0.0); @@ -1895,19 +1901,18 @@ void TParseContext::declareArray(TSourceLoc loc, TString& identifier, const TTyp void TParseContext::updateMaxArraySize(TSourceLoc loc, TIntermNode *node, int index) { - TIntermSymbol* symbolNode = node->getAsSymbolNode(); - if (! symbolNode) { - // TODO: functionality: unsized arrays: handle members of blocks - return; - } - // maybe there is nothing to do... - // TODO: functionality: unsized arrays: is the node sharing the array type with the symbol table? - if (symbolNode->getType().getMaxArraySize() > index) + TIntermTyped* typedNode = node->getAsTyped(); + if (typedNode->getType().getMaxArraySize() > index) return; // something to do... + // TODO: 1.50 linker: unsized block member array: 'node' could be an expression for a dereference + TIntermSymbol* symbolNode = node->getAsSymbolNode(); + if (! symbolNode) + return; + TSymbol* symbol = symbolTable.find(symbolNode->getName()); assert(symbol); if (symbol == 0) @@ -1919,7 +1924,7 @@ void TParseContext::updateMaxArraySize(TSourceLoc loc, TIntermNode *node, int in } // For read-only built-ins, add a new variable for holding the maximum array size of an implicitly-sized shared array. - // TODO: functionality: unsized arrays: is this new array type shared with the node? + // TODO: desktop linker: unsized arrays: is this new array type shared with the node? if (symbol->isReadOnly()) { symbol = symbolTable.copyUp(symbol); @@ -1959,7 +1964,7 @@ void TParseContext::nonInitConstCheck(TSourceLoc loc, TString& identifier, TType // // Returns a redeclared and type-modified variable if a redeclarated occurred. // -TSymbol* TParseContext::redeclareBuiltinVariable(TSourceLoc loc, const TString& identifier, bool& newDeclaration) +TSymbol* TParseContext::redeclareBuiltinVariable(TSourceLoc loc, const TString& identifier, const TQualifier& qualifier, const TShaderQualifiers& publicType, bool& newDeclaration) { if (profile == EEsProfile || ! builtInName(identifier) || symbolTable.atBuiltInLevel()) return 0; @@ -2003,7 +2008,53 @@ TSymbol* TParseContext::redeclareBuiltinVariable(TSourceLoc loc, const TString& } // Now, modify the type of the copy, as per the type of the current redeclaration. - // TODO: functionality: verify type change is allowed and make the change in type + + TQualifier& symbolQualifier = symbol->getWritableType().getQualifier(); + if (identifier == "gl_FrontColor" || + identifier == "gl_BackColor" || + identifier == "gl_FrontSecondaryColor" || + identifier == "gl_BackSecondaryColor" || + identifier == "gl_SecondaryColor" || + identifier == "gl_Color") { + symbolQualifier.flat = qualifier.flat; + symbolQualifier.smooth = qualifier.smooth; + symbolQualifier.nopersp = qualifier.nopersp; + if (qualifier.hasLayout()) + error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); + if (qualifier.isMemory() || qualifier.isAuxiliary() || symbol->getType().getQualifier().storage != qualifier.storage) + error(loc, "cannot change storage, memory, or auxiliary qualification of", "redeclaration", symbol->getName().c_str()); + } else if (identifier == "gl_TexCoord" || + identifier == "gl_ClipDistance") { + if (qualifier.hasLayout() || qualifier.isMemory() || qualifier.isAuxiliary() || + qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || + symbolQualifier.storage != qualifier.storage) + error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str()); + } else if (identifier == "gl_FragCoord") { + if (fragCoordUsedBeforeRedeclaration) + error(loc, "cannot redeclare after use", "gl_FragCoord", ""); + // Note: this did not catch the case of 1) declare, 2) use, 3) declare again, because the "use" was of a redeclaration, and so didn't set fragCoordUsedBeforeRedeclaration. + // (and that's what the rules are too, as long as #3 matches #1) + if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || + qualifier.isMemory() || qualifier.isAuxiliary()) + error(loc, "can only change layout qualification of", "redeclaration", symbol->getName().c_str()); + if (identifier == "gl_FragCoord" && qualifier.storage != EvqVaryingIn) + error(loc, "cannot change input storage qualification of", "redeclaration", symbol->getName().c_str()); + if (! builtIn && (publicType.pixelCenterInteger != intermediate.getPixelCenterInteger() || + publicType.originUpperLeft != intermediate.getOriginUpperLeft())) + error(loc, "cannot redeclare with different qualification:", "redeclaration", symbol->getName().c_str()); + if (publicType.pixelCenterInteger) + intermediate.setPixelCenterInteger(); + if (publicType.originUpperLeft) + intermediate.setOriginUpperLeft(); + } else if (identifier == "gl_FragDepth") { + if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || + qualifier.isMemory() || qualifier.isAuxiliary()) + error(loc, "can only change layout qualification of", "redeclaration", symbol->getName().c_str()); + if (qualifier.storage != EvqVaryingOut) + error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str()); + // TODO 4.2: gl_FragDepth redeclaration + } + // TODO: semantics quality: separate smooth from nothing declared, then use IsInterpolation for several tests above return symbol; } @@ -2062,7 +2113,7 @@ bool TParseContext::redeclareBuiltinBlock(TSourceLoc loc, TTypeList& typeList, c if (language == EShLangGeometry && block->getType().isArray() && block->getType().getQualifier().storage == EvqVaryingIn) inputArraySymbolResizeList.push_back(block); - // TODO: semantics: block redeclaration: instance array size matching? + // TODO: SSO/4.10 semantics: block redeclaration: instance array size matching // Edit and error check the container against the redeclaration // - remove unused members @@ -2085,7 +2136,7 @@ bool TParseContext::redeclareBuiltinBlock(TSourceLoc loc, TTypeList& typeList, c else member = type.getStruct()->erase(member); - // TODO: semantics: block redeclaration: member type/qualifier matching + // TODO: SSO/4.10 semantics: block redeclaration: member type/qualifier matching } symbolTable.insert(*block); @@ -2306,36 +2357,48 @@ void TParseContext::setLayoutQualifier(TSourceLoc loc, TPublicType& publicType, } if (language == EShLangGeometry || language == EShLangTessEvaluation) { if (id == TQualifier::getGeometryString(ElgTriangles)) { - publicType.geometry = ElgTriangles; + publicType.shaderQualifiers.geometry = ElgTriangles; return; } if (language == EShLangGeometry) { if (id == TQualifier::getGeometryString(ElgPoints)) { - publicType.geometry = ElgPoints; + publicType.shaderQualifiers.geometry = ElgPoints; return; } if (id == TQualifier::getGeometryString(ElgLineStrip)) { - publicType.geometry = ElgLineStrip; + publicType.shaderQualifiers.geometry = ElgLineStrip; return; } if (id == TQualifier::getGeometryString(ElgLines)) { - publicType.geometry = ElgLines; + publicType.shaderQualifiers.geometry = ElgLines; return; } if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) { - publicType.geometry = ElgLinesAdjacency; + publicType.shaderQualifiers.geometry = ElgLinesAdjacency; return; } if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) { - publicType.geometry = ElgTrianglesAdjacency; + publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency; return; } if (id == TQualifier::getGeometryString(ElgTriangleStrip)) { - publicType.geometry = ElgTriangleStrip; + publicType.shaderQualifiers.geometry = ElgTriangleStrip; return; } } else { - // TODO: tessellation evaluation + // TODO: 4.0 tessellation evaluation + } + } + if (language == EShLangFragment) { + if (id == "origin_upper_left") { + requireProfile(loc, ECoreProfile | ECompatibilityProfile, "origin_upper_left"); + publicType.shaderQualifiers.originUpperLeft = true; + return; + } + if (id == "pixel_center_integer") { + requireProfile(loc, ECoreProfile | ECompatibilityProfile, "pixel_center_integer"); + publicType.shaderQualifiers.pixelCenterInteger = true; + return; } } error(loc, "unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4)", id.c_str(), ""); @@ -2345,6 +2408,12 @@ void TParseContext::setLayoutQualifier(TSourceLoc loc, TPublicType& publicType, // type information for error checking. void TParseContext::setLayoutQualifier(TSourceLoc loc, TPublicType& publicType, TString& id, int value) { + if (value < 0) { + error(loc, "cannot be negative", "layout qualifier value", ""); + return; + // TODO: 4.4: test the above, once expressions are allowed; until then, can't even express a negative location + } + std::transform(id.begin(), id.end(), id.begin(), ::tolower); if (id == "location") { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "location"); @@ -2367,11 +2436,11 @@ void TParseContext::setLayoutQualifier(TSourceLoc loc, TPublicType& publicType, if (language == EShLangGeometry) { if (id == "invocations") { profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, 0, "invocations"); - publicType.invocations = value; + publicType.shaderQualifiers.invocations = value; return; } if (id == "max_vertices") { - publicType.maxVertices = value; + publicType.shaderQualifiers.maxVertices = value; return; } if (id == "stream") { @@ -2380,16 +2449,13 @@ void TParseContext::setLayoutQualifier(TSourceLoc loc, TPublicType& publicType, } } error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), ""); - - // TODO: semantics: error check: make sure locations are non-overlapping across the whole stage - // TODO: semantics: error check: output arrays can only be indexed with a constant (es 300) } // // Merge characteristics of the 'src' qualifier into the 'dst', at the TPublicType level, // which means for layout-qualifier information not kept per qualifier. // -void TParseContext::mergeShaderLayoutQualifiers(TSourceLoc loc, TPublicType& dst, const TPublicType& src) +void TParseContext::mergeShaderLayoutQualifiers(TSourceLoc loc, TShaderQualifiers& dst, const TShaderQualifiers& src) { if (src.geometry != ElgNone) dst.geometry = src.geometry; @@ -2397,6 +2463,10 @@ void TParseContext::mergeShaderLayoutQualifiers(TSourceLoc loc, TPublicType& dst dst.invocations = src.invocations; if (src.maxVertices != 0) dst.maxVertices = src.maxVertices; + if (src.pixelCenterInteger) + dst.pixelCenterInteger = src.pixelCenterInteger; + if (src.originUpperLeft) + dst.originUpperLeft = src.originUpperLeft; } // Merge any layout qualifier information from src into dst, leaving everything else in dst alone @@ -2464,11 +2534,11 @@ void TParseContext::layoutTypeCheck(TSourceLoc loc, const TSymbol& symbol) // an array of size N, all elements of the array from binding through binding + N – 1 must be within this // range." // - // TODO: binding error checking against limits, arrays + // TODO: 4.2 binding limits: binding error checking against limits, arrays // if (type.getBasicType() != EbtSampler && type.getBasicType() != EbtBlock) error(loc, "requires block, or sampler/image, or atomic-counter type", "binding", ""); - // TODO: atomic counter functionality: include in test above + // TODO: 4.2 functionality: atomic counter: include in test above } } @@ -2527,15 +2597,15 @@ void TParseContext::layoutQualifierCheck(TSourceLoc loc, const TQualifier& quali } // For places that can't have shader-level layout qualifiers -void TParseContext::checkNoShaderLayouts(TSourceLoc loc, const TPublicType& publicType) +void TParseContext::checkNoShaderLayouts(TSourceLoc loc, const TShaderQualifiers& shaderQualifiers) { const char* message = "can only apply to a standalone qualifier"; - if (publicType.geometry != ElgNone) - error(loc, message, TQualifier::getGeometryString(publicType.geometry), ""); - if (publicType.invocations > 0) + if (shaderQualifiers.geometry != ElgNone) + error(loc, message, TQualifier::getGeometryString(shaderQualifiers.geometry), ""); + if (shaderQualifiers.invocations > 0) error(loc, message, "invocations", ""); - if (publicType.maxVertices > 0) + if (shaderQualifiers.maxVertices > 0) error(loc, message, "max_vertices", ""); } @@ -2658,7 +2728,7 @@ const TFunction* TParseContext::findFunction400(TSourceLoc loc, const TFunction& // Returns a subtree node that computes an initializer, if needed. // Returns 0 if there is no code to execute for initialization. // -TIntermNode* TParseContext::declareVariable(TSourceLoc loc, TString& identifier, TPublicType& publicType, TArraySizes* arraySizes, TIntermTyped* initializer) +TIntermNode* TParseContext::declareVariable(TSourceLoc loc, TString& identifier, const TPublicType& publicType, TArraySizes* arraySizes, TIntermTyped* initializer) { TType type(publicType); @@ -2672,9 +2742,12 @@ TIntermNode* TParseContext::declareVariable(TSourceLoc loc, TString& identifier, if (! type.getQualifier().hasStream() && language == EShLangGeometry && type.getQualifier().storage == EvqVaryingOut) type.getQualifier().layoutStream = globalOutputDefaults.layoutStream; + if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger)) + error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); + // Check for redeclaration of built-ins and/or attempting to declare a reserved name bool newDeclaration = false; // true if a new entry gets added to the symbol table - TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, newDeclaration); + TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers, newDeclaration); if (! symbol) reservedErrorCheck(loc, identifier); @@ -2698,6 +2771,8 @@ TIntermNode* TParseContext::declareVariable(TSourceLoc loc, TString& identifier, // non-array case if (! symbol) symbol = declareNonArray(loc, identifier, type, newDeclaration); + else if (type != symbol->getType()) + error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } // Deal with initializer @@ -2859,7 +2934,7 @@ TIntermTyped* TParseContext::convertInitializerList(TSourceLoc loc, const TType& arrayType.setArraySizes(type); arrayType.changeArraySize(initList->getSequence().size()); TType elementType; - elementType.shallowCopy(arrayType); // TODO: arrays of arrays: combine this with deref. + elementType.shallowCopy(arrayType); // TODO: 4.3 simplification: arrays of arrays: combine this with deref. elementType.dereference(); for (size_t i = 0; i < initList->getSequence().size(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, elementType, initList->getSequence()[i]->getAsTyped()); @@ -2884,7 +2959,7 @@ TIntermTyped* TParseContext::convertInitializerList(TSourceLoc loc, const TType& return 0; } TType vectorType; - vectorType.shallowCopy(type); // TODO: arrays of arrays: combine this with deref. + vectorType.shallowCopy(type); // TODO: 4.3 simplification: arrays of arrays: combine this with deref. vectorType.dereference(); for (int i = 0; i < type.getMatrixCols(); ++i) { initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped()); @@ -2925,7 +3000,7 @@ TIntermTyped* TParseContext::addConstructor(TSourceLoc loc, TIntermNode* node, c TType elementType; elementType.shallowCopy(type); if (type.isArray()) - elementType.dereference(); // TODO: arrays of arrays: combine this with shallowCopy + elementType.dereference(); // TODO: 4.3 simplification: arrays of arrays: combine this with deref. bool singleArg; if (aggrNode) { @@ -3280,43 +3355,43 @@ void TParseContext::addQualifierToExisting(TSourceLoc loc, TQualifier qualifier, // void TParseContext::updateStandaloneQualifierDefaults(TSourceLoc loc, const TPublicType& publicType) { - if (publicType.maxVertices) { - if (! intermediate.setMaxVertices(publicType.maxVertices)) + if (publicType.shaderQualifiers.maxVertices) { + if (! intermediate.setMaxVertices(publicType.shaderQualifiers.maxVertices)) error(loc, "cannot change previously set layout value", "max_vertices", ""); } - if (publicType.invocations) { - if (! intermediate.setInvocations(publicType.invocations)) + if (publicType.shaderQualifiers.invocations) { + if (! intermediate.setInvocations(publicType.shaderQualifiers.invocations)) error(loc, "cannot change previously set layout value", "invocations", ""); } - if (publicType.geometry != ElgNone) { + if (publicType.shaderQualifiers.geometry != ElgNone) { if (publicType.qualifier.storage == EvqVaryingIn) { - switch (publicType.geometry) { + switch (publicType.shaderQualifiers.geometry) { case ElgPoints: case ElgLines: case ElgLinesAdjacency: case ElgTriangles: case ElgTrianglesAdjacency: - if (intermediate.setInputPrimitive(publicType.geometry)) + if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) checkInputArrayConsistency(loc); else - error(loc, "cannot change previously set input primitive", TQualifier::getGeometryString(publicType.geometry), ""); + error(loc, "cannot change previously set input primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: - error(loc, "does not apply to input", TQualifier::getGeometryString(publicType.geometry), ""); + error(loc, "does not apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else if (publicType.qualifier.storage == EvqVaryingOut) { - switch (publicType.geometry) { + switch (publicType.shaderQualifiers.geometry) { case ElgPoints: case ElgLineStrip: case ElgTriangleStrip: - if (! intermediate.setOutputPrimitive(publicType.geometry)) - error(loc, "cannot change previously set output primitive", TQualifier::getGeometryString(publicType.geometry), ""); + if (! intermediate.setOutputPrimitive(publicType.shaderQualifiers.geometry)) + error(loc, "cannot change previously set output primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: - error(loc, "does not only apply to output", TQualifier::getGeometryString(publicType.geometry), ""); + error(loc, "does not only apply to output", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } } else - error(loc, "cannot be used here", TQualifier::getGeometryString(publicType.geometry), ""); + error(loc, "cannot be used here", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); } const TQualifier& qualifier = publicType.qualifier; @@ -3472,7 +3547,7 @@ TIntermNode* TParseContext::addSwitch(TSourceLoc loc, TIntermTyped* expression, return switchNode; } -// TODO: constant folding: these should use a follow a fully folded model now, and probably move to Constant.cpp scheme. +// TODO: simplification: constant folding: these should use a follow a fully folded model now, and probably move to Constant.cpp scheme. // // This function returns the tree representation for the vector field(s) being accessed from a constant vector. @@ -3552,7 +3627,7 @@ TIntermTyped* TParseContext::addConstArrayNode(int index, TIntermTyped* node, TS TIntermTyped* typedNode; TIntermConstantUnion* tempConstantNode = node->getAsConstantUnion(); TType arrayElementType; - arrayElementType.shallowCopy(node->getType()); // TODO: arrays of arrays: combine this with deref. + arrayElementType.shallowCopy(node->getType()); // TODO: 4.3 simplification: arrays of arrays: combine this with deref. arrayElementType.dereference(); if (index >= node->getType().getArraySize() || index < 0) { diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 7e499e7d..7ff225d7 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -122,7 +122,7 @@ public: void precisionQualifierCheck(TSourceLoc, TPublicType&); void parameterSamplerCheck(TSourceLoc, TStorageQualifier qualifier, const TType& type); bool containsSampler(const TType& type); - TSymbol* redeclareBuiltinVariable(TSourceLoc, const TString&, bool& newDeclaration); + TSymbol* redeclareBuiltinVariable(TSourceLoc, const TString&, const TQualifier&, const TShaderQualifiers&, bool& newDeclaration); bool redeclareBuiltinBlock(TSourceLoc, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes); void paramCheck(TSourceLoc, const TStorageQualifier&, TType* type); void nestedBlockCheck(TSourceLoc); @@ -134,17 +134,17 @@ public: void setLayoutQualifier(TSourceLoc, TPublicType&, TString&); void setLayoutQualifier(TSourceLoc, TPublicType&, TString&, int); - void mergeShaderLayoutQualifiers(TSourceLoc, TPublicType& dst, const TPublicType& src); + void mergeShaderLayoutQualifiers(TSourceLoc, TShaderQualifiers& dst, const TShaderQualifiers& src); void mergeObjectLayoutQualifiers(TSourceLoc, TQualifier& dest, const TQualifier& src); void layoutTypeCheck(TSourceLoc, const TSymbol&); void layoutQualifierCheck(TSourceLoc, const TQualifier&); - void checkNoShaderLayouts(TSourceLoc, const TPublicType&); + void checkNoShaderLayouts(TSourceLoc, const TShaderQualifiers&); const TFunction* findFunction(TSourceLoc loc, const TFunction& call, bool& builtIn); const TFunction* findFunctionExact(TSourceLoc loc, const TFunction& call, bool& builtIn); const TFunction* findFunction120(TSourceLoc loc, const TFunction& call, bool& builtIn); const TFunction* findFunction400(TSourceLoc loc, const TFunction& call, bool& builtIn); - TIntermNode* declareVariable(TSourceLoc, TString& identifier, TPublicType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); + TIntermNode* declareVariable(TSourceLoc, TString& identifier, const TPublicType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); TIntermTyped* addConstructor(TSourceLoc, TIntermNode*, const TType&, TOperator); TIntermTyped* constructStruct(TIntermNode*, const TType&, int, TSourceLoc); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermNode*, TSourceLoc, bool subset); @@ -241,7 +241,7 @@ protected: TIdSetType inductiveLoopIds; bool anyIndexLimits; TVector needsIndexLimitationChecking; - // TODO: desktop functionality: track use of gl_FragDepth before redeclaration + bool fragCoordUsedBeforeRedeclaration; // // Geometry shader input arrays: diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 56bb3a51..cd1966a2 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -779,13 +779,13 @@ declaration } | type_qualifier IDENTIFIER SEMICOLON { parseContext.pipeInOutFix($1.loc, $1.qualifier); - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2.string); $$ = 0; } | type_qualifier IDENTIFIER identifier_list SEMICOLON { parseContext.pipeInOutFix($1.loc, $1.qualifier); - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); $3->push_back($2.string); parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$3); $$ = 0; @@ -797,7 +797,7 @@ block_structure --parseContext.structNestingLevel; parseContext.blockName = $2.string; parseContext.pipeInOutFix($1.loc, $1.qualifier); - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.currentBlockQualifier = $1.qualifier; $$.loc = $1.loc; $$.typeList = $5; @@ -919,7 +919,7 @@ parameter_declaration if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterSamplerCheck($2.loc, $1.qualifier.storage, *$$.param.type); parseContext.paramCheck($1.loc, $1.qualifier.storage, $$.param.type); } @@ -937,7 +937,7 @@ parameter_declaration if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterSamplerCheck($2.loc, $1.qualifier.storage, *$$.param.type); parseContext.paramCheck($1.loc, $1.qualifier.storage, $$.param.type); } @@ -1038,7 +1038,8 @@ fully_specified_type if ($2.arraySizes && parseContext.arrayQualifierError($2.loc, $1.qualifier)) $2.arraySizes = 0; - parseContext.checkNoShaderLayouts($2.loc, $1); + parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); + parseContext.mergeShaderLayoutQualifiers($2.loc, $2.shaderQualifiers, $1.shaderQualifiers); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); parseContext.precisionQualifierCheck($2.loc, $2); @@ -1095,7 +1096,7 @@ layout_qualifier_id_list } | layout_qualifier_id_list COMMA layout_qualifier_id { $$ = $1; - parseContext.mergeShaderLayoutQualifiers($2.loc, $$, $3); + parseContext.mergeShaderLayoutQualifiers($2.loc, $$.shaderQualifiers, $3.shaderQualifiers); parseContext.mergeObjectLayoutQualifiers($2.loc, $$.qualifier, $3.qualifier); } @@ -1134,7 +1135,7 @@ type_qualifier if ($$.basicType == EbtVoid) $$.basicType = $2.basicType; - parseContext.mergeShaderLayoutQualifiers($$.loc, $$, $2); + parseContext.mergeShaderLayoutQualifiers($$.loc, $$.shaderQualifiers, $2.shaderQualifiers); parseContext.mergeQualifiers($$.loc, $$.qualifier, $2.qualifier, false); } ; @@ -1569,7 +1570,7 @@ type_specifier_nonarray $$.setMatrix(4, 4); } | ATOMIC_UINT { - // TODO: 4.2 functionality: add type + // TODO: 4.2 functionality: add atomic_uint type $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; } @@ -2051,7 +2052,7 @@ struct_declaration $$ = $3; - parseContext.checkNoShaderLayouts($1.loc, $1); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); parseContext.precisionQualifierCheck($2.loc, $2); diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index e16d9705..e5543c96 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -585,6 +585,12 @@ void TIntermediate::outputTree(TInfoSink& infoSink) infoSink.debug << "input primitive = " << TQualifier::getGeometryString(inputPrimitive) << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; } + if (language == EShLangFragment) { + if (pixelCenterInteger) + infoSink.debug << "gl_FragCoord pixel center is integer\n"; + if (originUpperLeft) + infoSink.debug << "gl_FragCoord origin is upper left\n"; + } if (treeRoot == 0) return; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 47d8cb1e..0c1fb7bb 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -73,6 +73,9 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) (profile == EEsProfile && unit.profile != EEsProfile)) error(infoSink, "Cannot mix ES profile with non-ES profile shaders\n"); + if (originUpperLeft != unit.originUpperLeft || pixelCenterInteger != unit.pixelCenterInteger) + error(infoSink, "gl_FragCoord redeclarations must match across shaders\n"); + if (unit.treeRoot == 0) return; @@ -101,7 +104,7 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) // void TIntermediate::mergeBodies(TInfoSink& infoSink, TIntermSequence& globals, const TIntermSequence& unitGlobals) { - // TODO: Performance: Processing in alphabetical order will be faster + // TODO: link-time performance: Processing in alphabetical order will be faster // Error check the global objects, not including the linker objects for (unsigned int child = 0; child < globals.size() - 1; ++child) { @@ -157,8 +160,6 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin // // This function only does one of intra- or cross-stage matching per call. // -// TODO: Linker Functionality: this function is under active development -// void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) { bool writeTypeComparison = false; @@ -340,7 +341,7 @@ void TIntermediate::inOutLocationCheck(TInfoSink& infoSink) bool fragOutWithNoLocation = false; int numFragOut = 0; - // TODO: maps for location collision checking + // TODO: linker functionality: location collision checking TIntermSequence& linkObjects = findLinkerObjects(); for (size_t i = 0; i < linkObjects.size(); ++i) { diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 7617d9e3..5657fca1 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -57,7 +57,7 @@ class TSymbol; class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : language(l), treeRoot(0), profile(p), version(v), numMains(0), numErrors(0), - invocations(0), maxVertices(0), inputPrimitive(ElgNone), outputPrimitive(ElgNone) { } + invocations(0), maxVertices(0), inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false) { } void setVersion(int v) { version = v; } int getVersion() const { return version; } @@ -129,6 +129,10 @@ public: outputPrimitive = p; return true; } + void setOriginUpperLeft() { originUpperLeft = true; } + bool getOriginUpperLeft() const { return originUpperLeft; } + void setPixelCenterInteger() { pixelCenterInteger = true; } + bool getPixelCenterInteger() const { return pixelCenterInteger; } void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); void merge(TInfoSink&, TIntermediate&); @@ -157,6 +161,8 @@ protected: int maxVertices; TLayoutGeometry inputPrimitive; TLayoutGeometry outputPrimitive; + bool pixelCenterInteger; + bool originUpperLeft; // for detecting recursion: pair is struct TCall { diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 1352deb3..b241ff13 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -627,7 +627,7 @@ int TPpContext::byte_scan(TPpContext* pp, InputSrc *in, TPpToken * ppToken) return '.'; } case '/': - // TODO: preprocessor: use the Scan.cpp comment scanner + // TODO: preprocessor simplification: use the Scan.cpp comment scanner ch = pp->currentInput->getch(pp, pp->currentInput, ppToken); if (ch == '/') { do { diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 00a47a2b..6451e3eb 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -299,7 +299,7 @@ void TPpContext::RewindTokenStream(TokenStream *pTok) int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) { - //TODO: PP: why is this different than byte_scan + //TODO: preprocessor simplification: why is this different than byte_scan char tokenText[TPpToken::maxTokenLength + 1]; int ltoken, len; diff --git a/glslang/OSDependent/Linux/ossource.cpp b/glslang/OSDependent/Linux/ossource.cpp index 03e7b05b..0cef0d1e 100644 --- a/glslang/OSDependent/Linux/ossource.cpp +++ b/glslang/OSDependent/Linux/ossource.cpp @@ -137,7 +137,7 @@ bool OS_FreeTLSIndex(OS_TLSIndex nIndex) return false; } -// TODO: if we need these on linux, flesh them out +// TODO: non-windows: if we need these on linux, flesh them out void InitGlobalLock() { } void GetGlobalLock() { } void ReleaseGlobalLock() { }