Parser: Redeclare gl_ClipDistance/gl_CullDistance should update their array sizes.

This commit is contained in:
Rex Xu 2016-05-11 15:50:41 +08:00
parent 3357d870e4
commit 827b23b8a1
8 changed files with 34 additions and 31 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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)

View File

@ -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 {