diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 667fcfbf..638ef82f 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -567,7 +567,7 @@ ERROR: node is still EOpNull! 0:? 'badp2' (flat patch in 4-component vector of float) 0:? 'badp3' (noperspective patch in 4-component vector of float) 0:? 'badp4' (patch sample in 3-component vector of float) -0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float ClipDistance gl_ClipDistance}) +0:? 'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' (in 2-component vector of float) 0:? 'inb' (in 32-element array of 2-component vector of float) 0:? 'inc' (in 32-element array of 2-component vector of float) @@ -1577,7 +1577,7 @@ ERROR: node is still EOpNull! 0:? 'badp2' (flat patch in 4-component vector of float) 0:? 'badp3' (noperspective patch in 4-component vector of float) 0:? 'badp4' (patch sample in 3-component vector of float) -0:? 'gl_in' (in 32-element array of block{in 3-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' (in 2-component vector of float) 0:? 'inb' (in 32-element array of 2-component vector of float) 0:? 'inc' (in 32-element array of 2-component vector of float) diff --git a/Test/baseResults/400.tese.out b/Test/baseResults/400.tese.out index 76883aa7..324dbaa3 100644 --- a/Test/baseResults/400.tese.out +++ b/Test/baseResults/400.tese.out @@ -138,7 +138,7 @@ ERROR: node is still EOpNull! 0:? 'badp2' (flat patch in 4-component vector of float) 0:? 'badp3' (noperspective patch in 4-component vector of float) 0:? 'badp4' (patch sample in 3-component vector of float) -0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float ClipDistance gl_ClipDistance}) +0:? 'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' (in 2-component vector of float) 0:? 'inb' (in 32-element array of 2-component vector of float) 0:? 'inc' (in 32-element array of 2-component vector of float) @@ -263,7 +263,7 @@ ERROR: node is still EOpNull! 0:? 'badp2' (flat patch in 4-component vector of float) 0:? 'badp3' (noperspective patch in 4-component vector of float) 0:? 'badp4' (patch sample in 3-component vector of float) -0:? 'gl_in' (in 32-element array of block{in 3-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_in' (in 32-element array of block{in 1-element array of float ClipDistance gl_ClipDistance}) 0:? 'ina' (in 2-component vector of float) 0:? 'inb' (in 32-element array of 2-component vector of float) 0:? 'inc' (in 32-element array of 2-component vector of float) diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out index 3b0dfaea..0f5110cb 100644 --- a/Test/baseResults/420.vert.out +++ b/Test/baseResults/420.vert.out @@ -275,7 +275,7 @@ ERROR: node is still EOpNull! 0:? 'sampb3' (layout(binding=80 ) uniform sampler2D) 0:? 'sampb4' (layout(binding=31 ) uniform sampler2D) 0:? 'sampb5' (layout(binding=79 ) uniform 2-element array of sampler2D) -0:? 'anon@3' (out block{out implicitly-sized array of float ClipDistance gl_ClipDistance, }) +0:? 'anon@3' (out block{out 4-element array of float ClipDistance gl_ClipDistance, }) 0:? 'patchIn' (patch in 4-component vector of float) 0:? 'patchOut' (smooth patch out 4-component vector of float) 0:? 'comma0' (temp int) @@ -527,7 +527,7 @@ ERROR: node is still EOpNull! 0:? 'sampb3' (layout(binding=80 ) uniform sampler2D) 0:? 'sampb4' (layout(binding=31 ) uniform sampler2D) 0:? 'sampb5' (layout(binding=79 ) uniform 2-element array of sampler2D) -0:? 'anon@3' (out block{out 1-element array of float ClipDistance gl_ClipDistance, }) +0:? 'anon@3' (out block{out 4-element array of float ClipDistance gl_ClipDistance, }) 0:? 'patchIn' (patch in 4-component vector of float) 0:? 'patchOut' (smooth patch out 4-component vector of float) 0:? 'comma0' (temp int) diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out index 1579e18d..fef3486a 100644 --- a/Test/baseResults/450.geom.out +++ b/Test/baseResults/450.geom.out @@ -12,16 +12,16 @@ output primitive = none 0:13 Sequence 0:13 move second child to first child (temp float) 0:13 direct index (layout(stream=0 ) temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (layout(stream=0 ) out implicitly-sized array of float CullDistance) -0:13 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (layout(stream=0 ) out 3-element array of float CullDistance) +0:13 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 3 (const uint) 0:13 Constant: 0:13 2 (const int) 0:13 direct index (temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance) -0:13 direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:13 'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (in 3-element array of float CullDistance) +0:13 direct index (temp block{in 3-element array of float CullDistance gl_CullDistance}) +0:13 'gl_in' (in implicitly-sized array of block{in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: @@ -29,8 +29,8 @@ output primitive = none 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects -0:? 'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:? 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float CullDistance gl_CullDistance}) +0:? 'gl_in' (in implicitly-sized array of block{in 3-element array of float CullDistance gl_CullDistance}) +0:? 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float CullDistance gl_CullDistance}) Linked geometry stage: diff --git a/Test/baseResults/450.tesc.out b/Test/baseResults/450.tesc.out index 66cd5c26..aeef6cb3 100644 --- a/Test/baseResults/450.tesc.out +++ b/Test/baseResults/450.tesc.out @@ -9,18 +9,18 @@ vertices = -1 0:13 Sequence 0:13 move second child to first child (temp float) 0:13 direct index (temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance) -0:13 indirect index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance}) -0:13 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (out 3-element array of float CullDistance) +0:13 indirect index (temp block{out 3-element array of float CullDistance gl_CullDistance}) +0:13 'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance}) 0:13 'gl_InvocationID' (in int InvocationID) 0:13 Constant: 0:13 0 (const int) 0:13 Constant: 0:13 2 (const int) 0:13 direct index (temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance) -0:13 direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:13 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (in 3-element array of float CullDistance) +0:13 direct index (temp block{in 3-element array of float CullDistance gl_CullDistance}) +0:13 'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: @@ -28,8 +28,8 @@ vertices = -1 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects -0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:? 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:? 'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance}) +0:? 'gl_out' (out 4-element array of block{out 3-element array of float CullDistance gl_CullDistance}) Linked tessellation control stage: diff --git a/Test/baseResults/450.tese.out b/Test/baseResults/450.tese.out index a1116b40..f988f108 100644 --- a/Test/baseResults/450.tese.out +++ b/Test/baseResults/450.tese.out @@ -11,16 +11,16 @@ triangle order = none 0:13 Sequence 0:13 move second child to first child (temp float) 0:13 direct index (temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance) -0:13 'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (out 3-element array of float CullDistance) +0:13 'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 3 (const uint) 0:13 Constant: 0:13 2 (const int) 0:13 direct index (temp float CullDistance) -0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float CullDistance) -0:13 direct index (temp block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:13 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) +0:13 gl_CullDistance: direct index for structure (in 3-element array of float CullDistance) +0:13 direct index (temp block{in 3-element array of float CullDistance gl_CullDistance}) +0:13 'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance}) 0:13 Constant: 0:13 1 (const int) 0:13 Constant: @@ -28,8 +28,8 @@ triangle order = none 0:13 Constant: 0:13 2 (const int) 0:? Linker Objects -0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) -0:? 'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:? 'gl_in' (in 32-element array of block{in 3-element array of float CullDistance gl_CullDistance}) +0:? 'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance}) Linked tessellation evaluation stage: diff --git a/Test/baseResults/450.vert.out b/Test/baseResults/450.vert.out index 39cce382..86338c76 100644 --- a/Test/baseResults/450.vert.out +++ b/Test/baseResults/450.vert.out @@ -12,8 +12,8 @@ ERROR: node is still EOpNull! 0:9 Sequence 0:9 move second child to first child (temp float) 0:9 direct index (temp float CullDistance) -0:9 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance) -0:9 'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:9 gl_CullDistance: direct index for structure (out 3-element array of float CullDistance) +0:9 'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance}) 0:9 Constant: 0:9 10 (const uint) 0:9 Constant: @@ -21,7 +21,7 @@ ERROR: node is still EOpNull! 0:9 Constant: 0:9 4.500000 0:? Linker Objects -0:? 'anon@0' (out block{out implicitly-sized array of float CullDistance gl_CullDistance}) +0:? 'anon@0' (out block{out 3-element array of float CullDistance gl_CullDistance}) 0:? 'outb' (smooth out bool) 0:? 'outo' (smooth out sampler2D) 0:? 'outa' (smooth out 4-element array of float) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a98b3429..4db9ef70 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3465,6 +3465,9 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT oldType.getQualifier().flat = newType.getQualifier().flat; oldType.getQualifier().nopersp = newType.getQualifier().nopersp; + if (oldType.isImplicitlySizedArray() && newType.isExplicitlySizedArray()) + oldType.changeOuterArraySize(newType.getOuterArraySize()); + // go to next member ++member; } else {