Add support for pre and post HLSL qualifier validation

The change makes it possible to define a const variable after the marked
type. Example "float const"
This commit is contained in:
Dawid Lorenz
2023-07-03 15:19:41 +02:00
committed by arcady-lunarg
parent 051f18c0cc
commit 4ae01c5f41
6 changed files with 300 additions and 229 deletions

View File

@@ -1,6 +1,6 @@
hlsl.function.frag
ERROR: 0:24: 'fun1' : unknown variable
ERROR: 0:24: 'return' : type does not match, or is not convertible to, the function's return type
ERROR: 0:29: 'fun1' : unknown variable
ERROR: 0:29: 'return' : type does not match, or is not convertible to, the function's return type
ERROR: 2 compilation errors. No code generated.
@@ -16,45 +16,64 @@ ERROR: node is still EOpNull!
0:3 1.000000
0:3 1.000000
0:3 1.000000
0:7 Function Definition: fun2(vf4; ( temp uint)
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
0:7 Function Parameters:
0:7 'col' ( in 4-component vector of float)
0:7 'col' ( const (read only) 4-component vector of float)
0:? Sequence
0:8 Branch: Return with expression
0:8 Constant:
0:8 7 (const uint)
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
0:8 Construct vec4 ( temp 4-component vector of float)
0:8 Convert int to float ( temp float)
0:8 Comma ( temp int)
0:8 Comma ( temp int)
0:8 Comma ( temp int)
0:8 Constant:
0:8 1 (const int)
0:8 Constant:
0:8 2 (const int)
0:8 Constant:
0:8 3 (const int)
0:8 Constant:
0:8 4 (const int)
0:12 Function Definition: fun3(vf4; ( temp uint)
0:12 Function Parameters:
0:12 'id1' ( in uint)
0:12 'id2' ( uniform uint)
0:12 'col' ( const (read only) 4-component vector of float)
0:? Sequence
0:13 Branch: Return with expression
0:13 Construct vec4 ( temp 4-component vector of float)
0:13 Convert uint to float ( temp float)
0:13 component-wise multiply ( temp uint)
0:13 'id1' ( in uint)
0:13 'id2' ( uniform uint)
0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
0:13 Constant:
0:13 7 (const uint)
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
0:17 Function Parameters:
0:17 'index' ( in int)
0:17 'id1' ( in uint)
0:17 'id2' ( uniform uint)
0:? Sequence
0:18 Sequence
0:18 move second child to first child ( temp uint)
0:18 'entityId' ( temp uint)
0:18 Function Call: fun2(vf4; ( temp uint)
0:18 Function Call: fun0( ( temp 4-component vector of float)
0:19 Branch: Return with expression
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
0:19 'entityId' ( temp uint)
0:19 'entityId' ( temp uint)
0:23 Function Definition: @main( ( temp int)
0:23 Function Parameters:
0:23 Function Definition: main( ( temp void)
0:23 Function Parameters:
0:18 Branch: Return with expression
0:18 Construct vec4 ( temp 4-component vector of float)
0:18 Convert uint to float ( temp float)
0:18 component-wise multiply ( temp uint)
0:18 'id1' ( in uint)
0:18 'id2' ( uniform uint)
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
0:22 Function Parameters:
0:22 'index' ( in int)
0:? Sequence
0:23 move second child to first child ( temp int)
0:23 Sequence
0:23 move second child to first child ( temp uint)
0:23 'entityId' ( temp uint)
0:23 Function Call: fun3(vf4; ( temp uint)
0:23 Function Call: fun2(vf4; ( temp 4-component vector of float)
0:23 Function Call: fun0( ( temp 4-component vector of float)
0:24 Branch: Return with expression
0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
0:24 'entityId' ( temp uint)
0:24 'entityId' ( temp uint)
0:28 Function Definition: @main( ( temp int)
0:28 Function Parameters:
0:28 Function Definition: main( ( temp void)
0:28 Function Parameters:
0:? Sequence
0:28 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:23 Function Call: @main( ( temp int)
0:28 Function Call: @main( ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
@@ -74,45 +93,64 @@ ERROR: node is still EOpNull!
0:3 1.000000
0:3 1.000000
0:3 1.000000
0:7 Function Definition: fun2(vf4; ( temp uint)
0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float)
0:7 Function Parameters:
0:7 'col' ( in 4-component vector of float)
0:7 'col' ( const (read only) 4-component vector of float)
0:? Sequence
0:8 Branch: Return with expression
0:8 Constant:
0:8 7 (const uint)
0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
0:8 Construct vec4 ( temp 4-component vector of float)
0:8 Convert int to float ( temp float)
0:8 Comma ( temp int)
0:8 Comma ( temp int)
0:8 Comma ( temp int)
0:8 Constant:
0:8 1 (const int)
0:8 Constant:
0:8 2 (const int)
0:8 Constant:
0:8 3 (const int)
0:8 Constant:
0:8 4 (const int)
0:12 Function Definition: fun3(vf4; ( temp uint)
0:12 Function Parameters:
0:12 'id1' ( in uint)
0:12 'id2' ( uniform uint)
0:12 'col' ( const (read only) 4-component vector of float)
0:? Sequence
0:13 Branch: Return with expression
0:13 Construct vec4 ( temp 4-component vector of float)
0:13 Convert uint to float ( temp float)
0:13 component-wise multiply ( temp uint)
0:13 'id1' ( in uint)
0:13 'id2' ( uniform uint)
0:17 Function Definition: fun1(i1; ( temp 4-component vector of float)
0:13 Constant:
0:13 7 (const uint)
0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float)
0:17 Function Parameters:
0:17 'index' ( in int)
0:17 'id1' ( in uint)
0:17 'id2' ( uniform uint)
0:? Sequence
0:18 Sequence
0:18 move second child to first child ( temp uint)
0:18 'entityId' ( temp uint)
0:18 Function Call: fun2(vf4; ( temp uint)
0:18 Function Call: fun0( ( temp 4-component vector of float)
0:19 Branch: Return with expression
0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
0:19 'entityId' ( temp uint)
0:19 'entityId' ( temp uint)
0:23 Function Definition: @main( ( temp int)
0:23 Function Parameters:
0:23 Function Definition: main( ( temp void)
0:23 Function Parameters:
0:18 Branch: Return with expression
0:18 Construct vec4 ( temp 4-component vector of float)
0:18 Convert uint to float ( temp float)
0:18 component-wise multiply ( temp uint)
0:18 'id1' ( in uint)
0:18 'id2' ( uniform uint)
0:22 Function Definition: fun1(i1; ( temp 4-component vector of float)
0:22 Function Parameters:
0:22 'index' ( in int)
0:? Sequence
0:23 move second child to first child ( temp int)
0:23 Sequence
0:23 move second child to first child ( temp uint)
0:23 'entityId' ( temp uint)
0:23 Function Call: fun3(vf4; ( temp uint)
0:23 Function Call: fun2(vf4; ( temp 4-component vector of float)
0:23 Function Call: fun0( ( temp 4-component vector of float)
0:24 Branch: Return with expression
0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float)
0:24 'entityId' ( temp uint)
0:24 'entityId' ( temp uint)
0:28 Function Definition: @main( ( temp int)
0:28 Function Parameters:
0:28 Function Definition: main( ( temp void)
0:28 Function Parameters:
0:? Sequence
0:28 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:23 Function Call: @main( ( temp int)
0:28 Function Call: @main( ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)

View File

@@ -31,29 +31,20 @@ gl_FragCoord origin is upper left
0:20 10.000000
0:22 Constant:
0:22 10.000000
0:25 Sequence
0:25 move second child to first child ( temp float)
0:25 'n' ( temp float)
0:25 Constant:
0:25 0.000000
0:26 Sequence
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
0:27 vector-scale ( temp 3-component vector of float)
0:27 Constant:
0:27 0.577350
0:27 0.577350
0:27 0.577350
0:27 add second child into first child ( temp float)
0:27 'n' ( temp float)
0:27 Constant:
0:27 1.000000
0:26 move second child to first child ( temp float)
0:26 'n' ( temp float)
0:26 Constant:
0:26 0.000000
0:27 Sequence
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
0:28 vector-scale ( temp 3-component vector of float)
0:28 Constant:
0:28 -0.577350
0:28 -0.577350
0:28 -0.577350
0:28 0.577350
0:28 0.577350
0:28 0.577350
0:28 add second child into first child ( temp float)
0:28 'n' ( temp float)
0:28 Constant:
@@ -62,7 +53,7 @@ gl_FragCoord origin is upper left
0:29 Constant:
0:29 -0.577350
0:29 -0.577350
0:29 0.577350
0:29 -0.577350
0:29 add second child into first child ( temp float)
0:29 'n' ( temp float)
0:29 Constant:
@@ -70,8 +61,8 @@ gl_FragCoord origin is upper left
0:30 vector-scale ( temp 3-component vector of float)
0:30 Constant:
0:30 -0.577350
0:30 0.577350
0:30 -0.577350
0:30 0.577350
0:30 add second child into first child ( temp float)
0:30 'n' ( temp float)
0:30 Constant:
@@ -80,16 +71,16 @@ gl_FragCoord origin is upper left
0:31 Constant:
0:31 -0.577350
0:31 0.577350
0:31 0.577350
0:31 -0.577350
0:31 add second child into first child ( temp float)
0:31 'n' ( temp float)
0:31 Constant:
0:31 1.000000
0:32 vector-scale ( temp 3-component vector of float)
0:32 Constant:
0:32 -0.577350
0:32 0.577350
0:32 0.577350
0:32 -0.577350
0:32 -0.577350
0:32 add second child into first child ( temp float)
0:32 'n' ( temp float)
0:32 Constant:
@@ -98,7 +89,7 @@ gl_FragCoord origin is upper left
0:33 Constant:
0:33 0.577350
0:33 -0.577350
0:33 0.577350
0:33 -0.577350
0:33 add second child into first child ( temp float)
0:33 'n' ( temp float)
0:33 Constant:
@@ -106,38 +97,38 @@ gl_FragCoord origin is upper left
0:34 vector-scale ( temp 3-component vector of float)
0:34 Constant:
0:34 0.577350
0:34 0.577350
0:34 -0.577350
0:34 0.577350
0:34 add second child into first child ( temp float)
0:34 'n' ( temp float)
0:34 Constant:
0:34 1.000000
0:36 Sequence
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
0:36 vector-scale ( temp 3-component vector of float)
0:36 Constant:
0:36 -0.577350
0:36 0.577350
0:36 0.577350
0:36 add second child into first child ( temp float)
0:36 'n' ( temp float)
0:36 Constant:
0:36 1.000000
0:38 Sequence
0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 vector-scale ( temp 3-component vector of float)
0:38 Constant:
0:38 -0.577350
0:38 0.577350
0:38 0.577350
0:38 add second child into first child ( temp float)
0:38 'n' ( temp float)
0:38 Constant:
0:38 1.000000
0:35 vector-scale ( temp 3-component vector of float)
0:35 Constant:
0:35 0.577350
0:35 0.577350
0:35 -0.577350
0:35 add second child into first child ( temp float)
0:35 'n' ( temp float)
0:35 Constant:
0:35 1.000000
0:37 Sequence
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
0:37 vector-scale ( temp 3-component vector of float)
0:37 Constant:
0:37 -0.577350
0:37 0.577350
0:37 0.577350
0:37 add second child into first child ( temp float)
0:37 'n' ( temp float)
0:37 Constant:
0:37 1.000000
0:39 Sequence
0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 vector-scale ( temp 3-component vector of float)
0:39 Constant:
0:39 -0.577350
@@ -147,32 +138,41 @@ gl_FragCoord origin is upper left
0:39 'n' ( temp float)
0:39 Constant:
0:39 1.000000
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Function Parameters:
0:40 vector-scale ( temp 3-component vector of float)
0:40 Constant:
0:40 -0.577350
0:40 0.577350
0:40 0.577350
0:40 add second child into first child ( temp float)
0:40 'n' ( temp float)
0:40 Constant:
0:40 1.000000
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
0:46 Function Parameters:
0:? Sequence
0:46 Function Call: Test1( ( temp void)
0:49 move second child to first child ( temp 4-component vector of float)
0:49 color: direct index for structure ( temp 4-component vector of float)
0:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:49 Constant:
0:49 0 (const int)
0:49 Constant:
0:49 1.000000
0:49 1.000000
0:49 1.000000
0:49 1.000000
0:50 Branch: Return with expression
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:45 Function Definition: main( ( temp void)
0:45 Function Parameters:
0:47 Function Call: Test1( ( temp void)
0:50 move second child to first child ( temp 4-component vector of float)
0:50 color: direct index for structure ( temp 4-component vector of float)
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:50 Constant:
0:50 0 (const int)
0:50 Constant:
0:50 1.000000
0:50 1.000000
0:50 1.000000
0:50 1.000000
0:51 Branch: Return with expression
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:46 Function Definition: main( ( temp void)
0:46 Function Parameters:
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
0:46 Sequence
0:46 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:45 color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Constant:
0:45 0 (const int)
0:46 color: direct index for structure ( temp 4-component vector of float)
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:46 Constant:
0:46 0 (const int)
0:? Linker Objects
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
@@ -212,29 +212,20 @@ gl_FragCoord origin is upper left
0:20 10.000000
0:22 Constant:
0:22 10.000000
0:25 Sequence
0:25 move second child to first child ( temp float)
0:25 'n' ( temp float)
0:25 Constant:
0:25 0.000000
0:26 Sequence
0:26 move second child to first child ( temp 8-element array of 3-component vector of float)
0:26 'a' ( const (read only) 8-element array of 3-component vector of float)
0:26 Construct vec3 ( temp 8-element array of 3-component vector of float)
0:27 vector-scale ( temp 3-component vector of float)
0:27 Constant:
0:27 0.577350
0:27 0.577350
0:27 0.577350
0:27 add second child into first child ( temp float)
0:27 'n' ( temp float)
0:27 Constant:
0:27 1.000000
0:26 move second child to first child ( temp float)
0:26 'n' ( temp float)
0:26 Constant:
0:26 0.000000
0:27 Sequence
0:27 move second child to first child ( temp 8-element array of 3-component vector of float)
0:27 'a' ( const (read only) 8-element array of 3-component vector of float)
0:27 Construct vec3 ( temp 8-element array of 3-component vector of float)
0:28 vector-scale ( temp 3-component vector of float)
0:28 Constant:
0:28 -0.577350
0:28 -0.577350
0:28 -0.577350
0:28 0.577350
0:28 0.577350
0:28 0.577350
0:28 add second child into first child ( temp float)
0:28 'n' ( temp float)
0:28 Constant:
@@ -243,7 +234,7 @@ gl_FragCoord origin is upper left
0:29 Constant:
0:29 -0.577350
0:29 -0.577350
0:29 0.577350
0:29 -0.577350
0:29 add second child into first child ( temp float)
0:29 'n' ( temp float)
0:29 Constant:
@@ -251,8 +242,8 @@ gl_FragCoord origin is upper left
0:30 vector-scale ( temp 3-component vector of float)
0:30 Constant:
0:30 -0.577350
0:30 0.577350
0:30 -0.577350
0:30 0.577350
0:30 add second child into first child ( temp float)
0:30 'n' ( temp float)
0:30 Constant:
@@ -261,16 +252,16 @@ gl_FragCoord origin is upper left
0:31 Constant:
0:31 -0.577350
0:31 0.577350
0:31 0.577350
0:31 -0.577350
0:31 add second child into first child ( temp float)
0:31 'n' ( temp float)
0:31 Constant:
0:31 1.000000
0:32 vector-scale ( temp 3-component vector of float)
0:32 Constant:
0:32 -0.577350
0:32 0.577350
0:32 0.577350
0:32 -0.577350
0:32 -0.577350
0:32 add second child into first child ( temp float)
0:32 'n' ( temp float)
0:32 Constant:
@@ -279,7 +270,7 @@ gl_FragCoord origin is upper left
0:33 Constant:
0:33 0.577350
0:33 -0.577350
0:33 0.577350
0:33 -0.577350
0:33 add second child into first child ( temp float)
0:33 'n' ( temp float)
0:33 Constant:
@@ -287,38 +278,38 @@ gl_FragCoord origin is upper left
0:34 vector-scale ( temp 3-component vector of float)
0:34 Constant:
0:34 0.577350
0:34 0.577350
0:34 -0.577350
0:34 0.577350
0:34 add second child into first child ( temp float)
0:34 'n' ( temp float)
0:34 Constant:
0:34 1.000000
0:36 Sequence
0:36 move second child to first child ( temp structure{ temp 3-component vector of float a})
0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
0:36 Construct structure ( temp structure{ temp 3-component vector of float a})
0:36 vector-scale ( temp 3-component vector of float)
0:36 Constant:
0:36 -0.577350
0:36 0.577350
0:36 0.577350
0:36 add second child into first child ( temp float)
0:36 'n' ( temp float)
0:36 Constant:
0:36 1.000000
0:38 Sequence
0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:38 vector-scale ( temp 3-component vector of float)
0:38 Constant:
0:38 -0.577350
0:38 0.577350
0:38 0.577350
0:38 add second child into first child ( temp float)
0:38 'n' ( temp float)
0:38 Constant:
0:38 1.000000
0:35 vector-scale ( temp 3-component vector of float)
0:35 Constant:
0:35 0.577350
0:35 0.577350
0:35 -0.577350
0:35 add second child into first child ( temp float)
0:35 'n' ( temp float)
0:35 Constant:
0:35 1.000000
0:37 Sequence
0:37 move second child to first child ( temp structure{ temp 3-component vector of float a})
0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
0:37 Construct structure ( temp structure{ temp 3-component vector of float a})
0:37 vector-scale ( temp 3-component vector of float)
0:37 Constant:
0:37 -0.577350
0:37 0.577350
0:37 0.577350
0:37 add second child into first child ( temp float)
0:37 'n' ( temp float)
0:37 Constant:
0:37 1.000000
0:39 Sequence
0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b})
0:39 vector-scale ( temp 3-component vector of float)
0:39 Constant:
0:39 -0.577350
@@ -328,32 +319,41 @@ gl_FragCoord origin is upper left
0:39 'n' ( temp float)
0:39 Constant:
0:39 1.000000
0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Function Parameters:
0:40 vector-scale ( temp 3-component vector of float)
0:40 Constant:
0:40 -0.577350
0:40 0.577350
0:40 0.577350
0:40 add second child into first child ( temp float)
0:40 'n' ( temp float)
0:40 Constant:
0:40 1.000000
0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
0:46 Function Parameters:
0:? Sequence
0:46 Function Call: Test1( ( temp void)
0:49 move second child to first child ( temp 4-component vector of float)
0:49 color: direct index for structure ( temp 4-component vector of float)
0:49 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:49 Constant:
0:49 0 (const int)
0:49 Constant:
0:49 1.000000
0:49 1.000000
0:49 1.000000
0:49 1.000000
0:50 Branch: Return with expression
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:45 Function Definition: main( ( temp void)
0:45 Function Parameters:
0:47 Function Call: Test1( ( temp void)
0:50 move second child to first child ( temp 4-component vector of float)
0:50 color: direct index for structure ( temp 4-component vector of float)
0:50 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:50 Constant:
0:50 0 (const int)
0:50 Constant:
0:50 1.000000
0:50 1.000000
0:50 1.000000
0:50 1.000000
0:51 Branch: Return with expression
0:51 'ps_output' ( temp structure{ temp 4-component vector of float color})
0:46 Function Definition: main( ( temp void)
0:46 Function Parameters:
0:? Sequence
0:45 Sequence
0:45 move second child to first child ( temp 4-component vector of float)
0:46 Sequence
0:46 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
0:45 color: direct index for structure ( temp 4-component vector of float)
0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:45 Constant:
0:45 0 (const int)
0:46 color: direct index for structure ( temp 4-component vector of float)
0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color})
0:46 Constant:
0:46 0 (const int)
0:? Linker Objects
0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)