diff --git a/3rdparty/glslang/SPIRV/hex_float.h b/3rdparty/glslang/SPIRV/hex_float.h index 31b9f9ed8..905b21a45 100644 --- a/3rdparty/glslang/SPIRV/hex_float.h +++ b/3rdparty/glslang/SPIRV/hex_float.h @@ -23,7 +23,7 @@ #include #include -#if defined(_MSC_VER) && _MSC_VER < 1700 +#if defined(_MSC_VER) && _MSC_VER < 1800 namespace std { bool isnan(double f) { diff --git a/3rdparty/glslang/SPIRV/spvIR.h b/3rdparty/glslang/SPIRV/spvIR.h index 087a53f26..6880595e9 100755 --- a/3rdparty/glslang/SPIRV/spvIR.h +++ b/3rdparty/glslang/SPIRV/spvIR.h @@ -65,6 +65,14 @@ const Id NoResult = 0; const Id NoType = 0; const Decoration NoPrecision = DecorationMax; + +#ifdef __GNUC__ +# define POTENTIALLY_UNUSED __attribute__((unused)) +#else +# define POTENTIALLY_UNUSED +#endif + +POTENTIALLY_UNUSED const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask | MemorySemanticsUniformMemoryMask | diff --git a/3rdparty/glslang/Test/baseResults/glspv.frag.out b/3rdparty/glslang/Test/baseResults/glspv.frag.out index 36afc8317..5622d0182 100755 --- a/3rdparty/glslang/Test/baseResults/glspv.frag.out +++ b/3rdparty/glslang/Test/baseResults/glspv.frag.out @@ -1,10 +1,9 @@ glspv.frag ERROR: 0:4: '#error' : GL_SPIRV is set ( correct , not an error ) ERROR: 0:6: '#error' : GL_SPIR is 100 -ERROR: 0:14: 'f' : non-opaque uniform variables need a layout(location=L) ERROR: 0:19: 'input_attachment_index' : only allowed when using GLSL for Vulkan ERROR: 0:19: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON -ERROR: 5 compilation errors. No code generated. +ERROR: 4 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out index 70465c8e9..b3cdb61d7 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out @@ -23,14 +23,14 @@ gl_FragCoord origin is upper left 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'clip' ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'cull' ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -74,14 +74,14 @@ gl_FragCoord origin is upper left 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'clip' ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) 0:? 'cull' ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out index c9263bc09..bde7822f2 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out @@ -1,80 +1,276 @@ hlsl.clipdistance-1.geom -ERROR: 0:13: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 0:13: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 0:20: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 0:20: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 4 compilation errors. No code generated. - - Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! -0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void) -0:13 Function Parameters: -0:13 'pos' ( in 3-element array of 4-component vector of float) -0:13 'VertexID' ( in 3-element array of uint) -0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:13 'clip' ( in 3-element array of float) -0:13 'cull' ( in 3-element array of float) +0:? Sequence +0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) +0:11 Function Parameters: +0:11 'pos' ( in 3-element array of 4-component vector of float) +0:11 'VertexID' ( in 3-element array of uint) +0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:11 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence -0:16 move second child to first child ( temp 4-component vector of float) -0:16 pos: direct index for structure ( temp 4-component vector of float) -0:16 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:16 Constant: -0:16 0 (const int) -0:16 direct index ( temp 4-component vector of float) -0:16 'pos' ( in 3-element array of 4-component vector of float) -0:16 Constant: -0:16 0 (const int) -0:17 move second child to first child ( temp float) -0:17 clip: direct index for structure ( temp float) -0:17 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:17 Constant: -0:17 1 (const int) -0:17 direct index ( temp float) -0:17 'clip' ( in 3-element array of float) -0:17 Constant: -0:17 0 (const int) -0:18 move second child to first child ( temp float) -0:18 cull: direct index for structure ( temp float) -0:18 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:18 Constant: -0:18 2 (const int) -0:18 direct index ( temp float) -0:18 'cull' ( in 3-element array of float) -0:18 Constant: -0:18 0 (const int) -0:20 Sequence -0:20 Sequence -0:20 move second child to first child ( temp 4-component vector of float) +0:14 move second child to first child ( temp 4-component vector of float) +0:14 pos: direct index for structure ( temp 4-component vector of float) +0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:14 Constant: +0:14 0 (const int) +0:14 direct index ( temp 4-component vector of float) +0:14 'pos' ( in 3-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:15 move second child to first child ( temp 2-component vector of float) +0:15 clip: direct index for structure ( temp 2-component vector of float) +0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:15 Constant: +0:15 1 (const int) +0:15 vector swizzle ( temp 2-component vector of float) +0:15 direct index ( temp 4-component vector of float) +0:15 'clip' ( in 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:15 Sequence +0:15 Constant: +0:15 0 (const int) +0:15 Constant: +0:15 1 (const int) +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) -0:20 pos: direct index for structure ( temp 4-component vector of float) -0:20 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:20 Constant: -0:20 0 (const int) -0:20 EmitVertex ( temp void) -0:13 Function Definition: main( ( temp void) -0:13 Function Parameters: +0:17 pos: direct index for structure ( temp 4-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 0 (const int) +0:? Sequence +0:17 move second child to first child ( temp float) +0:17 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) +0:17 Constant: +0:17 0 (const int) +0:17 direct index ( temp float) +0:17 clip: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child ( temp float) +0:17 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) +0:17 Constant: +0:17 1 (const int) +0:17 direct index ( temp float) +0:17 clip: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 1 (const int) +0:17 EmitVertex ( temp void) +0:11 Function Definition: main( ( temp void) +0:11 Function Parameters: 0:? Sequence -0:13 move second child to first child ( temp 3-element array of 4-component vector of float) +0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) -0:13 move second child to first child ( temp 3-element array of uint) +0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) -0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void) +0:? Sequence +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) -0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:? 'clip' ( temp 3-element array of float) -0:? 'cull' ( temp 3-element array of float) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) Linked geometry stage: @@ -85,69 +281,457 @@ invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! -0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void) -0:13 Function Parameters: -0:13 'pos' ( in 3-element array of 4-component vector of float) -0:13 'VertexID' ( in 3-element array of uint) -0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:13 'clip' ( in 3-element array of float) -0:13 'cull' ( in 3-element array of float) +0:? Sequence +0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) +0:11 Function Parameters: +0:11 'pos' ( in 3-element array of 4-component vector of float) +0:11 'VertexID' ( in 3-element array of uint) +0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:11 'clip' ( in 3-element array of 4-component vector of float) 0:? Sequence -0:16 move second child to first child ( temp 4-component vector of float) -0:16 pos: direct index for structure ( temp 4-component vector of float) -0:16 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:16 Constant: -0:16 0 (const int) -0:16 direct index ( temp 4-component vector of float) -0:16 'pos' ( in 3-element array of 4-component vector of float) -0:16 Constant: -0:16 0 (const int) -0:17 move second child to first child ( temp float) -0:17 clip: direct index for structure ( temp float) -0:17 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:17 Constant: -0:17 1 (const int) -0:17 direct index ( temp float) -0:17 'clip' ( in 3-element array of float) -0:17 Constant: -0:17 0 (const int) -0:18 move second child to first child ( temp float) -0:18 cull: direct index for structure ( temp float) -0:18 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:18 Constant: -0:18 2 (const int) -0:18 direct index ( temp float) -0:18 'cull' ( in 3-element array of float) -0:18 Constant: -0:18 0 (const int) -0:20 Sequence -0:20 Sequence -0:20 move second child to first child ( temp 4-component vector of float) +0:14 move second child to first child ( temp 4-component vector of float) +0:14 pos: direct index for structure ( temp 4-component vector of float) +0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:14 Constant: +0:14 0 (const int) +0:14 direct index ( temp 4-component vector of float) +0:14 'pos' ( in 3-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:15 move second child to first child ( temp 2-component vector of float) +0:15 clip: direct index for structure ( temp 2-component vector of float) +0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:15 Constant: +0:15 1 (const int) +0:15 vector swizzle ( temp 2-component vector of float) +0:15 direct index ( temp 4-component vector of float) +0:15 'clip' ( in 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:15 Sequence +0:15 Constant: +0:15 0 (const int) +0:15 Constant: +0:15 1 (const int) +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) -0:20 pos: direct index for structure ( temp 4-component vector of float) -0:20 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:20 Constant: -0:20 0 (const int) -0:20 EmitVertex ( temp void) -0:13 Function Definition: main( ( temp void) -0:13 Function Parameters: +0:17 pos: direct index for structure ( temp 4-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 0 (const int) +0:? Sequence +0:17 move second child to first child ( temp float) +0:17 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) +0:17 Constant: +0:17 0 (const int) +0:17 direct index ( temp float) +0:17 clip: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child ( temp float) +0:17 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) +0:17 Constant: +0:17 1 (const int) +0:17 direct index ( temp float) +0:17 clip: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:17 Constant: +0:17 1 (const int) +0:17 Constant: +0:17 1 (const int) +0:17 EmitVertex ( temp void) +0:11 Function Definition: main( ( temp void) +0:11 Function Parameters: 0:? Sequence -0:13 move second child to first child ( temp 3-element array of 4-component vector of float) +0:11 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'pos' ( in 3-element array of 4-component vector of float Position) -0:13 move second child to first child ( temp 3-element array of uint) +0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) -0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void) +0:? Sequence +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) -0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull}) -0:? 'clip' ( temp 3-element array of float) -0:? 'cull' ( temp 3-element array of float) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip}) +0:? 'clip' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) -SPIR-V is not generated for failed compile or link +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 118 + + Capability Geometry + Capability ClipDistance + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 38 44 57 61 68 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 3 + Source HLSL 500 + Name 4 "main" + Name 15 "S" + MemberName 15(S) 0 "pos" + MemberName 15(S) 1 "clip" + Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];" + Name 18 "pos" + Name 19 "VertexID" + Name 20 "OutputStream" + Name 21 "clip" + Name 24 "s" + Name 38 "OutputStream.pos" + Name 44 "OutputStream.clip" + Name 55 "pos" + Name 57 "pos" + Name 59 "VertexID" + Name 61 "VertexID" + Name 63 "clip" + Name 68 "clip" + Name 108 "OutputStream" + Name 109 "param" + Name 111 "param" + Name 113 "param" + Name 114 "param" + Decorate 38(OutputStream.pos) BuiltIn Position + Decorate 44(OutputStream.clip) BuiltIn ClipDistance + Decorate 57(pos) BuiltIn Position + Decorate 61(VertexID) Location 0 + Decorate 68(clip) BuiltIn ClipDistance + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: TypePointer Function 10 + 12: TypeArray 8(int) 9 + 13: TypePointer Function 12 + 14: TypeVector 6(float) 2 + 15(S): TypeStruct 7(fvec4) 14(fvec2) + 16: TypePointer Function 15(S) + 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr) + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 27: TypePointer Function 7(fvec4) + 31: 25(int) Constant 1 + 35: TypePointer Function 14(fvec2) + 37: TypePointer Output 7(fvec4) +38(OutputStream.pos): 37(ptr) Variable Output + 41: 8(int) Constant 2 + 42: TypeArray 6(float) 41 + 43: TypePointer Output 42 +44(OutputStream.clip): 43(ptr) Variable Output + 45: 8(int) Constant 0 + 46: TypePointer Function 6(float) + 49: TypePointer Output 6(float) + 51: 8(int) Constant 1 + 56: TypePointer Input 10 + 57(pos): 56(ptr) Variable Input + 60: TypePointer Input 12 + 61(VertexID): 60(ptr) Variable Input + 64: 8(int) Constant 4 + 65: TypeArray 6(float) 64 + 66: TypeArray 65 9 + 67: TypePointer Input 66 + 68(clip): 67(ptr) Variable Input + 69: TypePointer Input 6(float) + 76: 25(int) Constant 2 + 80: 25(int) Constant 3 + 4(main): 2 Function None 3 + 5: Label + 55(pos): 11(ptr) Variable Function + 59(VertexID): 13(ptr) Variable Function + 63(clip): 11(ptr) Variable Function +108(OutputStream): 16(ptr) Variable Function + 109(param): 11(ptr) Variable Function + 111(param): 13(ptr) Variable Function + 113(param): 16(ptr) Variable Function + 114(param): 11(ptr) Variable Function + 58: 10 Load 57(pos) + Store 55(pos) 58 + 62: 12 Load 61(VertexID) + Store 59(VertexID) 62 + 70: 69(ptr) AccessChain 68(clip) 26 26 + 71: 6(float) Load 70 + 72: 46(ptr) AccessChain 63(clip) 26 45 + Store 72 71 + 73: 69(ptr) AccessChain 68(clip) 26 31 + 74: 6(float) Load 73 + 75: 46(ptr) AccessChain 63(clip) 26 51 + Store 75 74 + 77: 69(ptr) AccessChain 68(clip) 26 76 + 78: 6(float) Load 77 + 79: 46(ptr) AccessChain 63(clip) 26 41 + Store 79 78 + 81: 69(ptr) AccessChain 68(clip) 26 80 + 82: 6(float) Load 81 + 83: 46(ptr) AccessChain 63(clip) 26 9 + Store 83 82 + 84: 69(ptr) AccessChain 68(clip) 31 26 + 85: 6(float) Load 84 + 86: 46(ptr) AccessChain 63(clip) 31 45 + Store 86 85 + 87: 69(ptr) AccessChain 68(clip) 31 31 + 88: 6(float) Load 87 + 89: 46(ptr) AccessChain 63(clip) 31 51 + Store 89 88 + 90: 69(ptr) AccessChain 68(clip) 31 76 + 91: 6(float) Load 90 + 92: 46(ptr) AccessChain 63(clip) 31 41 + Store 92 91 + 93: 69(ptr) AccessChain 68(clip) 31 80 + 94: 6(float) Load 93 + 95: 46(ptr) AccessChain 63(clip) 31 9 + Store 95 94 + 96: 69(ptr) AccessChain 68(clip) 76 26 + 97: 6(float) Load 96 + 98: 46(ptr) AccessChain 63(clip) 76 45 + Store 98 97 + 99: 69(ptr) AccessChain 68(clip) 76 31 + 100: 6(float) Load 99 + 101: 46(ptr) AccessChain 63(clip) 76 51 + Store 101 100 + 102: 69(ptr) AccessChain 68(clip) 76 76 + 103: 6(float) Load 102 + 104: 46(ptr) AccessChain 63(clip) 76 41 + Store 104 103 + 105: 69(ptr) AccessChain 68(clip) 76 80 + 106: 6(float) Load 105 + 107: 46(ptr) AccessChain 63(clip) 76 9 + Store 107 106 + 110: 10 Load 55(pos) + Store 109(param) 110 + 112: 12 Load 59(VertexID) + Store 111(param) 112 + 115: 10 Load 63(clip) + Store 114(param) 115 + 116: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];) 109(param) 111(param) 113(param) 114(param) + 117: 15(S) Load 113(param) + Store 108(OutputStream) 117 + Return + FunctionEnd +22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];): 2 Function None 17 + 18(pos): 11(ptr) FunctionParameter + 19(VertexID): 13(ptr) FunctionParameter +20(OutputStream): 16(ptr) FunctionParameter + 21(clip): 11(ptr) FunctionParameter + 23: Label + 24(s): 16(ptr) Variable Function + 28: 27(ptr) AccessChain 18(pos) 26 + 29: 7(fvec4) Load 28 + 30: 27(ptr) AccessChain 24(s) 26 + Store 30 29 + 32: 27(ptr) AccessChain 21(clip) 26 + 33: 7(fvec4) Load 32 + 34: 14(fvec2) VectorShuffle 33 33 0 1 + 36: 35(ptr) AccessChain 24(s) 31 + Store 36 34 + 39: 27(ptr) AccessChain 24(s) 26 + 40: 7(fvec4) Load 39 + Store 38(OutputStream.pos) 40 + 47: 46(ptr) AccessChain 24(s) 31 45 + 48: 6(float) Load 47 + 50: 49(ptr) AccessChain 44(OutputStream.clip) 26 + Store 50 48 + 52: 46(ptr) AccessChain 24(s) 31 51 + 53: 6(float) Load 52 + 54: 49(ptr) AccessChain 44(OutputStream.clip) 31 + Store 54 53 + EmitVertex + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out index 5a254ecb4..b11c1cf2c 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out @@ -34,14 +34,14 @@ Shader version: 500 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'clip' ( temp float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -90,14 +90,14 @@ Shader version: 500 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 1-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) 0:? 'clip' ( temp float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 1-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out index f7b8256b5..f39295edc 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out @@ -41,7 +41,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) @@ -90,7 +90,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -102,7 +102,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) @@ -126,7 +126,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) @@ -188,7 +188,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) @@ -200,7 +200,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) @@ -212,7 +212,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float ClipDistance) 0:? 'clip' ( in 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) @@ -237,7 +237,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -249,7 +249,7 @@ gl_FragCoord origin is upper left 0:4 0 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) @@ -261,7 +261,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 0 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) @@ -273,7 +273,7 @@ gl_FragCoord origin is upper left 0:4 1 (const int) 0:4 Constant: 0:4 1 (const int) -0:4 direct index ( temp float) +0:4 direct index ( in float CullDistance) 0:? 'cull' ( in 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out index a2b568af4..158cb2c86 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out @@ -1,15 +1,10 @@ hlsl.clipdistance-2.geom -ERROR: 0:11: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 0:18: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 2 compilation errors. No code generated. - - Shader version: 500 invocations = -1 max_vertices = 3 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! +0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) @@ -64,6 +59,67 @@ ERROR: node is still EOpNull! 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 0 (const int) +0:? Sequence +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 0 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 1 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 2 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 3 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) 0:18 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: @@ -74,6 +130,223 @@ ERROR: node is still EOpNull! 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) @@ -83,6 +356,8 @@ ERROR: node is still EOpNull! 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) Linked geometry stage: @@ -93,7 +368,7 @@ invocations = 1 max_vertices = 3 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! +0:? Sequence 0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:11 Function Parameters: 0:11 'pos' ( in 3-element array of 4-component vector of float) @@ -148,6 +423,67 @@ ERROR: node is still EOpNull! 0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) 0:18 Constant: 0:18 0 (const int) +0:? Sequence +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 0 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 1 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 2 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 move second child to first child ( temp float) +0:18 direct index ( out float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) +0:18 Constant: +0:18 3 (const int) +0:18 direct index ( temp float) +0:18 direct index ( temp 2-component vector of float) +0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip}) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 1 (const int) 0:18 EmitVertex ( temp void) 0:11 Function Definition: main( ( temp void) 0:11 Function Parameters: @@ -158,6 +494,223 @@ ERROR: node is still EOpNull! 0:11 move second child to first child ( temp 3-element array of uint) 0:? 'VertexID' ( temp 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 3 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 0 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 2 (const int) +0:11 move second child to first child ( temp float) +0:11 direct index ( temp float) +0:11 direct index ( temp 2-component vector of float) +0:11 direct index ( temp 2-element array of 2-component vector of float) +0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 Constant: +0:11 1 (const int) +0:11 direct index ( in float ClipDistance) +0:11 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:11 Constant: +0:11 2 (const int) +0:11 Constant: +0:11 3 (const int) 0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void) 0:? 'pos' ( temp 3-element array of 4-component vector of float) 0:? 'VertexID' ( temp 3-element array of uint) @@ -167,5 +720,205 @@ ERROR: node is still EOpNull! 0:? 'pos' ( in 3-element array of 4-component vector of float Position) 0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) -SPIR-V is not generated for failed compile or link +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 128 + + Capability Geometry + Capability ClipDistance + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 44 50 71 75 80 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 3 + Source HLSL 500 + Name 4 "main" + Name 17 "S" + MemberName 17(S) 0 "pos" + MemberName 17(S) 1 "clip" + Name 26 "@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];" + Name 22 "pos" + Name 23 "VertexID" + Name 24 "OutputStream" + Name 25 "clip" + Name 28 "s" + Name 44 "OutputStream.pos" + Name 50 "OutputStream.clip" + Name 69 "pos" + Name 71 "pos" + Name 73 "VertexID" + Name 75 "VertexID" + Name 77 "clip" + Name 80 "clip" + Name 118 "OutputStream" + Name 119 "param" + Name 121 "param" + Name 123 "param" + Name 124 "param" + Decorate 44(OutputStream.pos) BuiltIn Position + Decorate 50(OutputStream.clip) BuiltIn ClipDistance + Decorate 71(pos) BuiltIn Position + Decorate 75(VertexID) Location 0 + Decorate 80(clip) BuiltIn ClipDistance + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: TypePointer Function 10 + 12: TypeArray 8(int) 9 + 13: TypePointer Function 12 + 14: TypeVector 6(float) 2 + 15: 8(int) Constant 2 + 16: TypeArray 14(fvec2) 15 + 17(S): TypeStruct 7(fvec4) 16 + 18: TypePointer Function 17(S) + 19: TypeArray 16 9 + 20: TypePointer Function 19 + 21: TypeFunction 2 11(ptr) 13(ptr) 18(ptr) 20(ptr) + 29: TypeInt 32 1 + 30: 29(int) Constant 0 + 31: TypePointer Function 7(fvec4) + 35: 29(int) Constant 1 + 36: TypePointer Function 14(fvec2) + 43: TypePointer Output 7(fvec4) +44(OutputStream.pos): 43(ptr) Variable Output + 47: 8(int) Constant 4 + 48: TypeArray 6(float) 47 + 49: TypePointer Output 48 +50(OutputStream.clip): 49(ptr) Variable Output + 51: 8(int) Constant 0 + 52: TypePointer Function 6(float) + 55: TypePointer Output 6(float) + 57: 8(int) Constant 1 + 61: 29(int) Constant 2 + 65: 29(int) Constant 3 + 70: TypePointer Input 10 + 71(pos): 70(ptr) Variable Input + 74: TypePointer Input 12 + 75(VertexID): 74(ptr) Variable Input + 78: TypeArray 48 9 + 79: TypePointer Input 78 + 80(clip): 79(ptr) Variable Input + 81: TypePointer Input 6(float) + 4(main): 2 Function None 3 + 5: Label + 69(pos): 11(ptr) Variable Function + 73(VertexID): 13(ptr) Variable Function + 77(clip): 20(ptr) Variable Function +118(OutputStream): 18(ptr) Variable Function + 119(param): 11(ptr) Variable Function + 121(param): 13(ptr) Variable Function + 123(param): 18(ptr) Variable Function + 124(param): 20(ptr) Variable Function + 72: 10 Load 71(pos) + Store 69(pos) 72 + 76: 12 Load 75(VertexID) + Store 73(VertexID) 76 + 82: 81(ptr) AccessChain 80(clip) 30 30 + 83: 6(float) Load 82 + 84: 52(ptr) AccessChain 77(clip) 30 30 51 + Store 84 83 + 85: 81(ptr) AccessChain 80(clip) 30 35 + 86: 6(float) Load 85 + 87: 52(ptr) AccessChain 77(clip) 30 30 57 + Store 87 86 + 88: 81(ptr) AccessChain 80(clip) 30 61 + 89: 6(float) Load 88 + 90: 52(ptr) AccessChain 77(clip) 30 35 51 + Store 90 89 + 91: 81(ptr) AccessChain 80(clip) 30 65 + 92: 6(float) Load 91 + 93: 52(ptr) AccessChain 77(clip) 30 35 57 + Store 93 92 + 94: 81(ptr) AccessChain 80(clip) 35 30 + 95: 6(float) Load 94 + 96: 52(ptr) AccessChain 77(clip) 35 30 51 + Store 96 95 + 97: 81(ptr) AccessChain 80(clip) 35 35 + 98: 6(float) Load 97 + 99: 52(ptr) AccessChain 77(clip) 35 30 57 + Store 99 98 + 100: 81(ptr) AccessChain 80(clip) 35 61 + 101: 6(float) Load 100 + 102: 52(ptr) AccessChain 77(clip) 35 35 51 + Store 102 101 + 103: 81(ptr) AccessChain 80(clip) 35 65 + 104: 6(float) Load 103 + 105: 52(ptr) AccessChain 77(clip) 35 35 57 + Store 105 104 + 106: 81(ptr) AccessChain 80(clip) 61 30 + 107: 6(float) Load 106 + 108: 52(ptr) AccessChain 77(clip) 61 30 51 + Store 108 107 + 109: 81(ptr) AccessChain 80(clip) 61 35 + 110: 6(float) Load 109 + 111: 52(ptr) AccessChain 77(clip) 61 30 57 + Store 111 110 + 112: 81(ptr) AccessChain 80(clip) 61 61 + 113: 6(float) Load 112 + 114: 52(ptr) AccessChain 77(clip) 61 35 51 + Store 114 113 + 115: 81(ptr) AccessChain 80(clip) 61 65 + 116: 6(float) Load 115 + 117: 52(ptr) AccessChain 77(clip) 61 35 57 + Store 117 116 + 120: 10 Load 69(pos) + Store 119(param) 120 + 122: 12 Load 73(VertexID) + Store 121(param) 122 + 125: 19 Load 77(clip) + Store 124(param) 125 + 126: 2 FunctionCall 26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];) 119(param) 121(param) 123(param) 124(param) + 127: 17(S) Load 123(param) + Store 118(OutputStream) 127 + Return + FunctionEnd +26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];): 2 Function None 21 + 22(pos): 11(ptr) FunctionParameter + 23(VertexID): 13(ptr) FunctionParameter +24(OutputStream): 18(ptr) FunctionParameter + 25(clip): 20(ptr) FunctionParameter + 27: Label + 28(s): 18(ptr) Variable Function + 32: 31(ptr) AccessChain 22(pos) 30 + 33: 7(fvec4) Load 32 + 34: 31(ptr) AccessChain 28(s) 30 + Store 34 33 + 37: 36(ptr) AccessChain 25(clip) 30 30 + 38: 14(fvec2) Load 37 + 39: 36(ptr) AccessChain 28(s) 35 30 + Store 39 38 + 40: 36(ptr) AccessChain 25(clip) 30 35 + 41: 14(fvec2) Load 40 + 42: 36(ptr) AccessChain 28(s) 35 35 + Store 42 41 + 45: 31(ptr) AccessChain 28(s) 30 + 46: 7(fvec4) Load 45 + Store 44(OutputStream.pos) 46 + 53: 52(ptr) AccessChain 28(s) 35 30 51 + 54: 6(float) Load 53 + 56: 55(ptr) AccessChain 50(OutputStream.clip) 30 + Store 56 54 + 58: 52(ptr) AccessChain 28(s) 35 30 57 + 59: 6(float) Load 58 + 60: 55(ptr) AccessChain 50(OutputStream.clip) 35 + Store 60 59 + 62: 52(ptr) AccessChain 28(s) 35 35 51 + 63: 6(float) Load 62 + 64: 55(ptr) AccessChain 50(OutputStream.clip) 61 + Store 64 63 + 66: 52(ptr) AccessChain 28(s) 35 35 57 + 67: 6(float) Load 66 + 68: 55(ptr) AccessChain 50(OutputStream.clip) 65 + Store 68 67 + EmitVertex + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out index cb6d8870a..bdab0649e 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out @@ -106,7 +106,7 @@ Shader version: 500 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) @@ -118,7 +118,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) @@ -130,7 +130,7 @@ Shader version: 500 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) @@ -142,7 +142,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) @@ -155,7 +155,7 @@ Shader version: 500 0:4 1 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -167,7 +167,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) @@ -179,7 +179,7 @@ Shader version: 500 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) @@ -191,7 +191,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) @@ -318,7 +318,7 @@ Shader version: 500 0:? 'pos' ( temp 4-component vector of float) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 0 (const int) @@ -330,7 +330,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 1 (const int) @@ -342,7 +342,7 @@ Shader version: 500 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 2 (const int) @@ -354,7 +354,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float ClipDistance) 0:? 'clip' ( out 4-element array of float ClipDistance) 0:4 Constant: 0:4 3 (const int) @@ -367,7 +367,7 @@ Shader version: 500 0:4 1 (const int) 0:? Sequence 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 0 (const int) @@ -379,7 +379,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 1 (const int) @@ -391,7 +391,7 @@ Shader version: 500 0:4 Constant: 0:4 1 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 2 (const int) @@ -403,7 +403,7 @@ Shader version: 500 0:4 Constant: 0:4 0 (const int) 0:4 move second child to first child ( temp float) -0:4 direct index ( temp float) +0:4 direct index ( out float CullDistance) 0:? 'cull' ( out 4-element array of float CullDistance) 0:4 Constant: 0:4 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out new file mode 100644 index 000000000..d48c73ac0 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out @@ -0,0 +1,830 @@ +hlsl.clipdistance-3.geom +Shader version: 500 +invocations = -1 +max_vertices = 3 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) +0:12 Function Parameters: +0:12 'pos' ( in 3-element array of 4-component vector of float) +0:12 'VertexID' ( in 3-element array of uint) +0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:12 'clip' ( in 3-element array of 4-component vector of float) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 pos: direct index for structure ( temp 4-component vector of float) +0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:15 Constant: +0:15 0 (const int) +0:15 direct index ( temp 4-component vector of float) +0:15 'pos' ( in 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:16 clip0: direct index for structure ( temp 2-component vector of float) +0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:16 Constant: +0:16 1 (const int) +0:16 vector swizzle ( temp 2-component vector of float) +0:16 direct index ( temp 4-component vector of float) +0:16 'clip' ( in 3-element array of 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:17 move second child to first child ( temp 2-component vector of float) +0:17 clip1: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:17 Constant: +0:17 2 (const int) +0:17 vector swizzle ( temp 2-component vector of float) +0:17 direct index ( temp 4-component vector of float) +0:17 'clip' ( in 3-element array of 4-component vector of float) +0:17 Constant: +0:17 0 (const int) +0:17 Sequence +0:17 Constant: +0:17 2 (const int) +0:17 Constant: +0:17 3 (const int) +0:19 Sequence +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:19 pos: direct index for structure ( temp 4-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 0 (const int) +0:? Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 0 (const int) +0:19 direct index ( temp float) +0:19 clip0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 0 (const int) +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 1 (const int) +0:19 direct index ( temp float) +0:19 clip0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 1 (const int) +0:? Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 2 (const int) +0:19 direct index ( temp float) +0:19 clip1: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0 (const int) +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 3 (const int) +0:19 direct index ( temp float) +0:19 clip1: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 1 (const int) +0:19 EmitVertex ( temp void) +0:12 Function Definition: main( ( temp void) +0:12 Function Parameters: +0:? Sequence +0:12 move second child to first child ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:12 move second child to first child ( temp 3-element array of uint) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:? Linker Objects +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) + + +Linked geometry stage: + + +Shader version: 500 +invocations = 1 +max_vertices = 3 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) +0:12 Function Parameters: +0:12 'pos' ( in 3-element array of 4-component vector of float) +0:12 'VertexID' ( in 3-element array of uint) +0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:12 'clip' ( in 3-element array of 4-component vector of float) +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:15 pos: direct index for structure ( temp 4-component vector of float) +0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:15 Constant: +0:15 0 (const int) +0:15 direct index ( temp 4-component vector of float) +0:15 'pos' ( in 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:16 clip0: direct index for structure ( temp 2-component vector of float) +0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:16 Constant: +0:16 1 (const int) +0:16 vector swizzle ( temp 2-component vector of float) +0:16 direct index ( temp 4-component vector of float) +0:16 'clip' ( in 3-element array of 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:17 move second child to first child ( temp 2-component vector of float) +0:17 clip1: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:17 Constant: +0:17 2 (const int) +0:17 vector swizzle ( temp 2-component vector of float) +0:17 direct index ( temp 4-component vector of float) +0:17 'clip' ( in 3-element array of 4-component vector of float) +0:17 Constant: +0:17 0 (const int) +0:17 Sequence +0:17 Constant: +0:17 2 (const int) +0:17 Constant: +0:17 3 (const int) +0:19 Sequence +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:19 pos: direct index for structure ( temp 4-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 0 (const int) +0:? Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 0 (const int) +0:19 direct index ( temp float) +0:19 clip0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 0 (const int) +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 1 (const int) +0:19 direct index ( temp float) +0:19 clip0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 1 (const int) +0:? Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 2 (const int) +0:19 direct index ( temp float) +0:19 clip1: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0 (const int) +0:19 move second child to first child ( temp float) +0:19 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:19 Constant: +0:19 3 (const int) +0:19 direct index ( temp float) +0:19 clip1: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 1 (const int) +0:19 EmitVertex ( temp void) +0:12 Function Definition: main( ( temp void) +0:12 Function Parameters: +0:? Sequence +0:12 move second child to first child ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:12 move second child to first child ( temp 3-element array of uint) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp float) +0:12 direct index ( temp float) +0:12 direct index ( temp 4-component vector of float) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 direct index ( in float ClipDistance) +0:12 direct index ( in 4-element array of float ClipDistance) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:? 'clip' ( temp 3-element array of 4-component vector of float) +0:? Linker Objects +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 127 + + Capability Geometry + Capability ClipDistance + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 43 49 69 73 78 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 3 + Source HLSL 500 + Name 4 "main" + Name 15 "S" + MemberName 15(S) 0 "pos" + MemberName 15(S) 1 "clip0" + MemberName 15(S) 2 "clip1" + Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];" + Name 18 "pos" + Name 19 "VertexID" + Name 20 "OutputStream" + Name 21 "clip" + Name 24 "s" + Name 43 "OutputStream.pos" + Name 49 "OutputStream.clip1" + Name 67 "pos" + Name 69 "pos" + Name 71 "VertexID" + Name 73 "VertexID" + Name 75 "clip" + Name 78 "clip" + Name 117 "OutputStream" + Name 118 "param" + Name 120 "param" + Name 122 "param" + Name 123 "param" + Decorate 43(OutputStream.pos) BuiltIn Position + Decorate 49(OutputStream.clip1) BuiltIn ClipDistance + Decorate 69(pos) BuiltIn Position + Decorate 73(VertexID) Location 0 + Decorate 78(clip) BuiltIn ClipDistance + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: TypePointer Function 10 + 12: TypeArray 8(int) 9 + 13: TypePointer Function 12 + 14: TypeVector 6(float) 2 + 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2) + 16: TypePointer Function 15(S) + 17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr) + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 27: TypePointer Function 7(fvec4) + 31: 25(int) Constant 1 + 35: TypePointer Function 14(fvec2) + 37: 25(int) Constant 2 + 42: TypePointer Output 7(fvec4) +43(OutputStream.pos): 42(ptr) Variable Output + 46: 8(int) Constant 4 + 47: TypeArray 6(float) 46 + 48: TypePointer Output 47 +49(OutputStream.clip1): 48(ptr) Variable Output + 50: 8(int) Constant 0 + 51: TypePointer Function 6(float) + 54: TypePointer Output 6(float) + 56: 8(int) Constant 1 + 63: 25(int) Constant 3 + 68: TypePointer Input 10 + 69(pos): 68(ptr) Variable Input + 72: TypePointer Input 12 + 73(VertexID): 72(ptr) Variable Input + 76: TypeArray 47 9 + 77: TypePointer Input 76 + 78(clip): 77(ptr) Variable Input + 79: TypePointer Input 6(float) + 88: 8(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 67(pos): 11(ptr) Variable Function + 71(VertexID): 13(ptr) Variable Function + 75(clip): 11(ptr) Variable Function +117(OutputStream): 16(ptr) Variable Function + 118(param): 11(ptr) Variable Function + 120(param): 13(ptr) Variable Function + 122(param): 16(ptr) Variable Function + 123(param): 11(ptr) Variable Function + 70: 10 Load 69(pos) + Store 67(pos) 70 + 74: 12 Load 73(VertexID) + Store 71(VertexID) 74 + 80: 79(ptr) AccessChain 78(clip) 26 26 + 81: 6(float) Load 80 + 82: 51(ptr) AccessChain 75(clip) 26 50 + Store 82 81 + 83: 79(ptr) AccessChain 78(clip) 26 31 + 84: 6(float) Load 83 + 85: 51(ptr) AccessChain 75(clip) 26 56 + Store 85 84 + 86: 79(ptr) AccessChain 78(clip) 26 37 + 87: 6(float) Load 86 + 89: 51(ptr) AccessChain 75(clip) 26 88 + Store 89 87 + 90: 79(ptr) AccessChain 78(clip) 26 63 + 91: 6(float) Load 90 + 92: 51(ptr) AccessChain 75(clip) 26 9 + Store 92 91 + 93: 79(ptr) AccessChain 78(clip) 31 26 + 94: 6(float) Load 93 + 95: 51(ptr) AccessChain 75(clip) 31 50 + Store 95 94 + 96: 79(ptr) AccessChain 78(clip) 31 31 + 97: 6(float) Load 96 + 98: 51(ptr) AccessChain 75(clip) 31 56 + Store 98 97 + 99: 79(ptr) AccessChain 78(clip) 31 37 + 100: 6(float) Load 99 + 101: 51(ptr) AccessChain 75(clip) 31 88 + Store 101 100 + 102: 79(ptr) AccessChain 78(clip) 31 63 + 103: 6(float) Load 102 + 104: 51(ptr) AccessChain 75(clip) 31 9 + Store 104 103 + 105: 79(ptr) AccessChain 78(clip) 37 26 + 106: 6(float) Load 105 + 107: 51(ptr) AccessChain 75(clip) 37 50 + Store 107 106 + 108: 79(ptr) AccessChain 78(clip) 37 31 + 109: 6(float) Load 108 + 110: 51(ptr) AccessChain 75(clip) 37 56 + Store 110 109 + 111: 79(ptr) AccessChain 78(clip) 37 37 + 112: 6(float) Load 111 + 113: 51(ptr) AccessChain 75(clip) 37 88 + Store 113 112 + 114: 79(ptr) AccessChain 78(clip) 37 63 + 115: 6(float) Load 114 + 116: 51(ptr) AccessChain 75(clip) 37 9 + Store 116 115 + 119: 10 Load 67(pos) + Store 118(param) 119 + 121: 12 Load 71(VertexID) + Store 120(param) 121 + 124: 10 Load 75(clip) + Store 123(param) 124 + 125: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];) 118(param) 120(param) 122(param) 123(param) + 126: 15(S) Load 122(param) + Store 117(OutputStream) 126 + Return + FunctionEnd +22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];): 2 Function None 17 + 18(pos): 11(ptr) FunctionParameter + 19(VertexID): 13(ptr) FunctionParameter +20(OutputStream): 16(ptr) FunctionParameter + 21(clip): 11(ptr) FunctionParameter + 23: Label + 24(s): 16(ptr) Variable Function + 28: 27(ptr) AccessChain 18(pos) 26 + 29: 7(fvec4) Load 28 + 30: 27(ptr) AccessChain 24(s) 26 + Store 30 29 + 32: 27(ptr) AccessChain 21(clip) 26 + 33: 7(fvec4) Load 32 + 34: 14(fvec2) VectorShuffle 33 33 0 1 + 36: 35(ptr) AccessChain 24(s) 31 + Store 36 34 + 38: 27(ptr) AccessChain 21(clip) 26 + 39: 7(fvec4) Load 38 + 40: 14(fvec2) VectorShuffle 39 39 2 3 + 41: 35(ptr) AccessChain 24(s) 37 + Store 41 40 + 44: 27(ptr) AccessChain 24(s) 26 + 45: 7(fvec4) Load 44 + Store 43(OutputStream.pos) 45 + 52: 51(ptr) AccessChain 24(s) 31 50 + 53: 6(float) Load 52 + 55: 54(ptr) AccessChain 49(OutputStream.clip1) 26 + Store 55 53 + 57: 51(ptr) AccessChain 24(s) 31 56 + 58: 6(float) Load 57 + 59: 54(ptr) AccessChain 49(OutputStream.clip1) 31 + Store 59 58 + 60: 51(ptr) AccessChain 24(s) 37 50 + 61: 6(float) Load 60 + 62: 54(ptr) AccessChain 49(OutputStream.clip1) 37 + Store 62 61 + 64: 51(ptr) AccessChain 24(s) 37 56 + 65: 6(float) Load 64 + 66: 54(ptr) AccessChain 49(OutputStream.clip1) 63 + Store 66 65 + EmitVertex + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out index 54a540545..b5fa6c541 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out @@ -35,7 +35,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -47,7 +47,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -59,7 +59,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 2 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -71,7 +71,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 3 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -136,7 +136,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -148,7 +148,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 2 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -160,7 +160,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 3 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out new file mode 100644 index 000000000..82d0c0afd --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out @@ -0,0 +1,819 @@ +hlsl.clipdistance-4.geom +Shader version: 500 +invocations = -1 +max_vertices = 3 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) +0:13 Function Parameters: +0:13 'pos' ( in 3-element array of 4-component vector of float) +0:13 'VertexID' ( in 3-element array of uint) +0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:13 'clip0' ( in 3-element array of 2-component vector of float) +0:13 'clip1' ( in 3-element array of 2-component vector of float) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 pos: direct index for structure ( temp 4-component vector of float) +0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:16 Constant: +0:16 0 (const int) +0:16 direct index ( temp 4-component vector of float) +0:16 'pos' ( in 3-element array of 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:17 move second child to first child ( temp 2-component vector of float) +0:17 clip0: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:17 Constant: +0:17 1 (const int) +0:17 direct index ( temp 2-component vector of float) +0:17 'clip0' ( in 3-element array of 2-component vector of float) +0:17 Constant: +0:17 0 (const int) +0:18 move second child to first child ( temp 2-component vector of float) +0:18 clip1: direct index for structure ( temp 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:18 Constant: +0:18 2 (const int) +0:18 direct index ( temp 2-component vector of float) +0:18 'clip1' ( in 3-element array of 2-component vector of float) +0:18 Constant: +0:18 0 (const int) +0:20 Sequence +0:20 Sequence +0:20 move second child to first child ( temp 4-component vector of float) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:20 pos: direct index for structure ( temp 4-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 0 (const int) +0:? Sequence +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 0 (const int) +0:20 direct index ( temp float) +0:20 clip0: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 1 (const int) +0:20 direct index ( temp float) +0:20 clip0: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 1 (const int) +0:? Sequence +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 2 (const int) +0:20 direct index ( temp float) +0:20 clip1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 2 (const int) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 3 (const int) +0:20 direct index ( temp float) +0:20 clip1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 2 (const int) +0:20 Constant: +0:20 1 (const int) +0:20 EmitVertex ( temp void) +0:13 Function Definition: main( ( temp void) +0:13 Function Parameters: +0:? Sequence +0:13 move second child to first child ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:13 move second child to first child ( temp 3-element array of uint) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:? Sequence +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:? Linker Objects +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) + + +Linked geometry stage: + + +Shader version: 500 +invocations = 1 +max_vertices = 3 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) +0:13 Function Parameters: +0:13 'pos' ( in 3-element array of 4-component vector of float) +0:13 'VertexID' ( in 3-element array of uint) +0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:13 'clip0' ( in 3-element array of 2-component vector of float) +0:13 'clip1' ( in 3-element array of 2-component vector of float) +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 pos: direct index for structure ( temp 4-component vector of float) +0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:16 Constant: +0:16 0 (const int) +0:16 direct index ( temp 4-component vector of float) +0:16 'pos' ( in 3-element array of 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:17 move second child to first child ( temp 2-component vector of float) +0:17 clip0: direct index for structure ( temp 2-component vector of float) +0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:17 Constant: +0:17 1 (const int) +0:17 direct index ( temp 2-component vector of float) +0:17 'clip0' ( in 3-element array of 2-component vector of float) +0:17 Constant: +0:17 0 (const int) +0:18 move second child to first child ( temp 2-component vector of float) +0:18 clip1: direct index for structure ( temp 2-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:18 Constant: +0:18 2 (const int) +0:18 direct index ( temp 2-component vector of float) +0:18 'clip1' ( in 3-element array of 2-component vector of float) +0:18 Constant: +0:18 0 (const int) +0:20 Sequence +0:20 Sequence +0:20 move second child to first child ( temp 4-component vector of float) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:20 pos: direct index for structure ( temp 4-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 0 (const int) +0:? Sequence +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 0 (const int) +0:20 direct index ( temp float) +0:20 clip0: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 1 (const int) +0:20 direct index ( temp float) +0:20 clip0: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 1 (const int) +0:? Sequence +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 2 (const int) +0:20 direct index ( temp float) +0:20 clip1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 2 (const int) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child ( temp float) +0:20 direct index ( out float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) +0:20 Constant: +0:20 3 (const int) +0:20 direct index ( temp float) +0:20 clip1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:20 Constant: +0:20 2 (const int) +0:20 Constant: +0:20 1 (const int) +0:20 EmitVertex ( temp void) +0:13 Function Definition: main( ( temp void) +0:13 Function Parameters: +0:? Sequence +0:13 move second child to first child ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:13 move second child to first child ( temp 3-element array of uint) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? Sequence +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:? Sequence +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 2 (const int) +0:13 move second child to first child ( temp float) +0:13 direct index ( temp float) +0:13 direct index ( temp 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( in float ClipDistance) +0:13 direct index ( in 4-element array of float ClipDistance) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 3 (const int) +0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void) +0:? 'pos' ( temp 3-element array of 4-component vector of float) +0:? 'VertexID' ( temp 3-element array of uint) +0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1}) +0:? 'clip0' ( temp 3-element array of 2-component vector of float) +0:? 'clip1' ( temp 3-element array of 2-component vector of float) +0:? Linker Objects +0:? 'pos' ( in 3-element array of 4-component vector of float Position) +0:? 'VertexID' (layout( location=0) in 3-element array of uint) +0:? 'OutputStream.pos' ( out 4-component vector of float Position) +0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance) +0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 130 + + Capability Geometry + Capability ClipDistance + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 44 50 70 74 79 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 3 + Source HLSL 500 + Name 4 "main" + Name 15 "S" + MemberName 15(S) 0 "pos" + MemberName 15(S) 1 "clip0" + MemberName 15(S) 2 "clip1" + Name 25 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];" + Name 20 "pos" + Name 21 "VertexID" + Name 22 "OutputStream" + Name 23 "clip0" + Name 24 "clip1" + Name 27 "s" + Name 44 "OutputStream.pos" + Name 50 "OutputStream.clip1" + Name 68 "pos" + Name 70 "pos" + Name 72 "VertexID" + Name 74 "VertexID" + Name 76 "clip0" + Name 79 "clip0" + Name 99 "clip1" + Name 118 "OutputStream" + Name 119 "param" + Name 121 "param" + Name 123 "param" + Name 124 "param" + Name 126 "param" + Decorate 44(OutputStream.pos) BuiltIn Position + Decorate 50(OutputStream.clip1) BuiltIn ClipDistance + Decorate 70(pos) BuiltIn Position + Decorate 74(VertexID) Location 0 + Decorate 79(clip0) BuiltIn ClipDistance + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: TypePointer Function 10 + 12: TypeArray 8(int) 9 + 13: TypePointer Function 12 + 14: TypeVector 6(float) 2 + 15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2) + 16: TypePointer Function 15(S) + 17: TypeArray 14(fvec2) 9 + 18: TypePointer Function 17 + 19: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 18(ptr) 18(ptr) + 28: TypeInt 32 1 + 29: 28(int) Constant 0 + 30: TypePointer Function 7(fvec4) + 34: 28(int) Constant 1 + 35: TypePointer Function 14(fvec2) + 39: 28(int) Constant 2 + 43: TypePointer Output 7(fvec4) +44(OutputStream.pos): 43(ptr) Variable Output + 47: 8(int) Constant 4 + 48: TypeArray 6(float) 47 + 49: TypePointer Output 48 +50(OutputStream.clip1): 49(ptr) Variable Output + 51: 8(int) Constant 0 + 52: TypePointer Function 6(float) + 55: TypePointer Output 6(float) + 57: 8(int) Constant 1 + 64: 28(int) Constant 3 + 69: TypePointer Input 10 + 70(pos): 69(ptr) Variable Input + 73: TypePointer Input 12 + 74(VertexID): 73(ptr) Variable Input + 77: TypeArray 48 9 + 78: TypePointer Input 77 + 79(clip0): 78(ptr) Variable Input + 80: TypePointer Input 6(float) + 4(main): 2 Function None 3 + 5: Label + 68(pos): 11(ptr) Variable Function + 72(VertexID): 13(ptr) Variable Function + 76(clip0): 18(ptr) Variable Function + 99(clip1): 18(ptr) Variable Function +118(OutputStream): 16(ptr) Variable Function + 119(param): 11(ptr) Variable Function + 121(param): 13(ptr) Variable Function + 123(param): 16(ptr) Variable Function + 124(param): 18(ptr) Variable Function + 126(param): 18(ptr) Variable Function + 71: 10 Load 70(pos) + Store 68(pos) 71 + 75: 12 Load 74(VertexID) + Store 72(VertexID) 75 + 81: 80(ptr) AccessChain 79(clip0) 29 29 + 82: 6(float) Load 81 + 83: 52(ptr) AccessChain 76(clip0) 29 51 + Store 83 82 + 84: 80(ptr) AccessChain 79(clip0) 29 34 + 85: 6(float) Load 84 + 86: 52(ptr) AccessChain 76(clip0) 29 57 + Store 86 85 + 87: 80(ptr) AccessChain 79(clip0) 29 39 + 88: 6(float) Load 87 + 89: 52(ptr) AccessChain 76(clip0) 34 51 + Store 89 88 + 90: 80(ptr) AccessChain 79(clip0) 29 64 + 91: 6(float) Load 90 + 92: 52(ptr) AccessChain 76(clip0) 34 57 + Store 92 91 + 93: 80(ptr) AccessChain 79(clip0) 34 29 + 94: 6(float) Load 93 + 95: 52(ptr) AccessChain 76(clip0) 39 51 + Store 95 94 + 96: 80(ptr) AccessChain 79(clip0) 34 34 + 97: 6(float) Load 96 + 98: 52(ptr) AccessChain 76(clip0) 39 57 + Store 98 97 + 100: 80(ptr) AccessChain 79(clip0) 29 39 + 101: 6(float) Load 100 + 102: 52(ptr) AccessChain 99(clip1) 29 51 + Store 102 101 + 103: 80(ptr) AccessChain 79(clip0) 29 64 + 104: 6(float) Load 103 + 105: 52(ptr) AccessChain 99(clip1) 29 57 + Store 105 104 + 106: 80(ptr) AccessChain 79(clip0) 34 39 + 107: 6(float) Load 106 + 108: 52(ptr) AccessChain 99(clip1) 34 51 + Store 108 107 + 109: 80(ptr) AccessChain 79(clip0) 34 64 + 110: 6(float) Load 109 + 111: 52(ptr) AccessChain 99(clip1) 34 57 + Store 111 110 + 112: 80(ptr) AccessChain 79(clip0) 39 39 + 113: 6(float) Load 112 + 114: 52(ptr) AccessChain 99(clip1) 39 51 + Store 114 113 + 115: 80(ptr) AccessChain 79(clip0) 39 64 + 116: 6(float) Load 115 + 117: 52(ptr) AccessChain 99(clip1) 39 57 + Store 117 116 + 120: 10 Load 68(pos) + Store 119(param) 120 + 122: 12 Load 72(VertexID) + Store 121(param) 122 + 125: 17 Load 76(clip0) + Store 124(param) 125 + 127: 17 Load 99(clip1) + Store 126(param) 127 + 128: 2 FunctionCall 25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];) 119(param) 121(param) 123(param) 124(param) 126(param) + 129: 15(S) Load 123(param) + Store 118(OutputStream) 129 + Return + FunctionEnd +25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];): 2 Function None 19 + 20(pos): 11(ptr) FunctionParameter + 21(VertexID): 13(ptr) FunctionParameter +22(OutputStream): 16(ptr) FunctionParameter + 23(clip0): 18(ptr) FunctionParameter + 24(clip1): 18(ptr) FunctionParameter + 26: Label + 27(s): 16(ptr) Variable Function + 31: 30(ptr) AccessChain 20(pos) 29 + 32: 7(fvec4) Load 31 + 33: 30(ptr) AccessChain 27(s) 29 + Store 33 32 + 36: 35(ptr) AccessChain 23(clip0) 29 + 37: 14(fvec2) Load 36 + 38: 35(ptr) AccessChain 27(s) 34 + Store 38 37 + 40: 35(ptr) AccessChain 24(clip1) 29 + 41: 14(fvec2) Load 40 + 42: 35(ptr) AccessChain 27(s) 39 + Store 42 41 + 45: 30(ptr) AccessChain 27(s) 29 + 46: 7(fvec4) Load 45 + Store 44(OutputStream.pos) 46 + 53: 52(ptr) AccessChain 27(s) 34 51 + 54: 6(float) Load 53 + 56: 55(ptr) AccessChain 50(OutputStream.clip1) 29 + Store 56 54 + 58: 52(ptr) AccessChain 27(s) 34 57 + 59: 6(float) Load 58 + 60: 55(ptr) AccessChain 50(OutputStream.clip1) 34 + Store 60 59 + 61: 52(ptr) AccessChain 27(s) 39 51 + 62: 6(float) Load 61 + 63: 55(ptr) AccessChain 50(OutputStream.clip1) 39 + Store 63 62 + 65: 52(ptr) AccessChain 27(s) 39 57 + 66: 6(float) Load 65 + 67: 55(ptr) AccessChain 50(OutputStream.clip1) 64 + Store 67 66 + EmitVertex + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out index 617f05b32..ac993344f 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out @@ -80,7 +80,7 @@ Shader version: 500 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) @@ -92,7 +92,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) @@ -104,7 +104,7 @@ Shader version: 500 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) @@ -116,7 +116,7 @@ Shader version: 500 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) @@ -217,7 +217,7 @@ Shader version: 500 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) @@ -229,7 +229,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) @@ -241,7 +241,7 @@ Shader version: 500 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) @@ -253,7 +253,7 @@ Shader version: 500 0:11 Constant: 0:11 2 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out index 4b0ce7f78..7c1bac5fb 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out @@ -55,7 +55,7 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -85,7 +85,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -100,7 +100,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) @@ -173,7 +173,7 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -188,7 +188,7 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -203,7 +203,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 0 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -218,7 +218,7 @@ gl_FragCoord origin is upper left 0:7 1 (const int) 0:7 Constant: 0:7 1 (const int) -0:7 direct index ( temp float) +0:7 direct index ( in float ClipDistance) 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out index 35a966bbd..7a5097354 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out @@ -92,7 +92,7 @@ Shader version: 500 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) @@ -107,7 +107,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) @@ -122,7 +122,7 @@ Shader version: 500 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) @@ -137,7 +137,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) @@ -253,7 +253,7 @@ Shader version: 500 0:11 0 (const int) 0:? Sequence 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 0 (const int) @@ -268,7 +268,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 1 (const int) @@ -283,7 +283,7 @@ Shader version: 500 0:11 Constant: 0:11 1 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 2 (const int) @@ -298,7 +298,7 @@ Shader version: 500 0:11 Constant: 0:11 0 (const int) 0:11 move second child to first child ( temp float) -0:11 direct index ( temp float) +0:11 direct index ( out float ClipDistance) 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) 0:11 Constant: 0:11 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out index 57166ae80..c249b0ec1 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out @@ -40,7 +40,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -52,7 +52,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -76,7 +76,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -89,7 +89,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -101,7 +101,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -113,7 +113,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -125,7 +125,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) @@ -183,7 +183,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -195,7 +195,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -207,7 +207,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -219,7 +219,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -256,7 +256,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out index 44ce6fd60..6449482a5 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out @@ -111,7 +111,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -123,7 +123,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -135,7 +135,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -147,7 +147,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -160,7 +160,7 @@ Shader version: 500 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -172,7 +172,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -184,7 +184,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -196,7 +196,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) @@ -327,7 +327,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -339,7 +339,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -351,7 +351,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -363,7 +363,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -376,7 +376,7 @@ Shader version: 500 0:8 3 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -388,7 +388,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -400,7 +400,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -412,7 +412,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out index 22cb0e5ac..e6e5c0054 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out @@ -46,7 +46,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -58,7 +58,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -83,7 +83,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -107,7 +107,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) @@ -183,7 +183,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -195,7 +195,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -207,7 +207,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -220,7 +220,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -256,7 +256,7 @@ gl_FragCoord origin is upper left 0:8 2 (const int) 0:8 Constant: 0:8 3 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out index 49e6aee8a..5a93c2ccb 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out @@ -101,7 +101,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -113,7 +113,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -125,7 +125,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -138,7 +138,7 @@ Shader version: 500 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -150,7 +150,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -162,7 +162,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -174,7 +174,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) @@ -295,7 +295,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -307,7 +307,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -319,7 +319,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -332,7 +332,7 @@ Shader version: 500 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 4 (const int) @@ -344,7 +344,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 5 (const int) @@ -356,7 +356,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 6 (const int) @@ -368,7 +368,7 @@ Shader version: 500 0:8 Constant: 0:8 2 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) 0:8 Constant: 0:8 7 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out index a1f66483d..6777efaa2 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out @@ -43,7 +43,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -55,7 +55,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -67,7 +67,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -138,7 +138,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 0 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -150,7 +150,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 1 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -162,7 +162,7 @@ gl_FragCoord origin is upper left 0:8 1 (const int) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:? 'v' ( temp structure{ temp 4-component vector of float Position, temp 3-component vector of float clip0, temp float clip1}) 0:8 Constant: 0:8 2 (const int) -0:8 direct index ( temp float) +0:8 direct index ( in float ClipDistance) 0:? 'v.clip1' ( in 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out index 80a29091e..1705f2b97 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out @@ -68,7 +68,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -80,7 +80,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -92,7 +92,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -105,7 +105,7 @@ Shader version: 500 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) @@ -190,7 +190,7 @@ Shader version: 500 0:8 0 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 0 (const int) @@ -202,7 +202,7 @@ Shader version: 500 0:8 Constant: 0:8 0 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 1 (const int) @@ -214,7 +214,7 @@ Shader version: 500 0:8 Constant: 0:8 1 (const int) 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 2 (const int) @@ -227,7 +227,7 @@ Shader version: 500 0:8 2 (const int) 0:? Sequence 0:8 move second child to first child ( temp float) -0:8 direct index ( temp float) +0:8 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) 0:8 Constant: 0:8 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out index ef52b230f..b5c092681 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 0 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 0 (const int) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 1 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 1 (const int) @@ -47,14 +47,14 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 2 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 2 (const int) 0:? Sequence 0:6 move second child to first child ( temp float) 0:? 'clip1' ( temp float) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 3 (const int) @@ -103,7 +103,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 0 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 0 (const int) @@ -112,7 +112,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 1 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 1 (const int) @@ -121,14 +121,14 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( temp 3-component vector of float) 0:6 Constant: 0:6 2 (const int) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 2 (const int) 0:? Sequence 0:6 move second child to first child ( temp float) 0:? 'clip1' ( temp float) -0:6 direct index ( temp float) +0:6 direct index ( in float ClipDistance) 0:? 'clip0' ( in 4-element array of float ClipDistance) 0:6 Constant: 0:6 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out index 8e5b3dd3a..f984be090 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out @@ -57,7 +57,7 @@ Shader version: 500 0:7 0 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -66,7 +66,7 @@ Shader version: 500 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -75,7 +75,7 @@ Shader version: 500 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -85,7 +85,7 @@ Shader version: 500 0:7 2 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) @@ -156,7 +156,7 @@ Shader version: 500 0:7 0 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 0 (const int) @@ -165,7 +165,7 @@ Shader version: 500 0:7 Constant: 0:7 0 (const int) 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 1 (const int) @@ -174,7 +174,7 @@ Shader version: 500 0:7 Constant: 0:7 1 (const int) 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 2 (const int) @@ -184,7 +184,7 @@ Shader version: 500 0:7 2 (const int) 0:? Sequence 0:7 move second child to first child ( temp float) -0:7 direct index ( temp float) +0:7 direct index ( out float ClipDistance) 0:? 'clip0' ( out 4-element array of float ClipDistance) 0:7 Constant: 0:7 3 (const int) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out new file mode 100644 index 000000000..1db7c2453 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.preprocessor.frag.out @@ -0,0 +1,163 @@ +hlsl.preprocessor.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: @main(vf4; ( temp 4-component vector of float) +0:9 Function Parameters: +0:9 'input' ( in 4-component vector of float) +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'tex' ( temp 4-component vector of float) +0:10 texture ( temp 4-component vector of float) +0:10 Construct combined texture-sampler ( temp sampler2D) +0:10 'test_texture' ( uniform texture2D) +0:10 'test_texture_ss' ( uniform sampler) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 'input' ( in 4-component vector of float) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:11 Branch: Return with expression +0:11 'tex' ( temp 4-component vector of float) +0:9 Function Definition: main( ( temp void) +0:9 Function Parameters: +0:? Sequence +0:9 move second child to first child ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) +0:9 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:9 Function Call: @main(vf4; ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'test_texture' ( uniform texture2D) +0:? 'test_texture_ss' ( uniform sampler) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: @main(vf4; ( temp 4-component vector of float) +0:9 Function Parameters: +0:9 'input' ( in 4-component vector of float) +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 'tex' ( temp 4-component vector of float) +0:10 texture ( temp 4-component vector of float) +0:10 Construct combined texture-sampler ( temp sampler2D) +0:10 'test_texture' ( uniform texture2D) +0:10 'test_texture_ss' ( uniform sampler) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 vector swizzle ( temp 2-component vector of float) +0:10 'input' ( in 4-component vector of float) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 Sequence +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:11 Branch: Return with expression +0:11 'tex' ( temp 4-component vector of float) +0:9 Function Definition: main( ( temp void) +0:9 Function Parameters: +0:? Sequence +0:9 move second child to first child ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) +0:9 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:9 Function Call: @main(vf4; ( temp 4-component vector of float) +0:? 'input' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'test_texture' ( uniform texture2D) +0:? 'test_texture_ss' ( uniform sampler) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'input' (layout( location=0) in 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 40 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 33 36 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 11 "@main(vf4;" + Name 10 "input" + Name 13 "tex" + Name 16 "test_texture" + Name 20 "test_texture_ss" + Name 31 "input" + Name 33 "input" + Name 36 "@entryPointOutput" + Name 37 "param" + Decorate 16(test_texture) DescriptorSet 0 + Decorate 20(test_texture_ss) DescriptorSet 0 + Decorate 33(input) Location 0 + Decorate 36(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 7(fvec4) 8(ptr) + 14: TypeImage 6(float) 2D sampled format:Unknown + 15: TypePointer UniformConstant 14 +16(test_texture): 15(ptr) Variable UniformConstant + 18: TypeSampler + 19: TypePointer UniformConstant 18 +20(test_texture_ss): 19(ptr) Variable UniformConstant + 22: TypeSampledImage 14 + 24: TypeVector 6(float) 2 + 32: TypePointer Input 7(fvec4) + 33(input): 32(ptr) Variable Input + 35: TypePointer Output 7(fvec4) +36(@entryPointOutput): 35(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 31(input): 8(ptr) Variable Function + 37(param): 8(ptr) Variable Function + 34: 7(fvec4) Load 33(input) + Store 31(input) 34 + 38: 7(fvec4) Load 31(input) + Store 37(param) 38 + 39: 7(fvec4) FunctionCall 11(@main(vf4;) 37(param) + Store 36(@entryPointOutput) 39 + Return + FunctionEnd + 11(@main(vf4;): 7(fvec4) Function None 9 + 10(input): 8(ptr) FunctionParameter + 12: Label + 13(tex): 8(ptr) Variable Function + 17: 14 Load 16(test_texture) + 21: 18 Load 20(test_texture_ss) + 23: 22 SampledImage 17 21 + 25: 7(fvec4) Load 10(input) + 26: 24(fvec2) VectorShuffle 25 25 0 1 + 27: 7(fvec4) ImageSampleImplicitLod 23 26 + Store 13(tex) 27 + 28: 7(fvec4) Load 13(tex) + ReturnValue 28 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out new file mode 100644 index 000000000..9678570da --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.semantic-1.vert.out @@ -0,0 +1,374 @@ +hlsl.semantic-1.vert +Shader version: 500 +0:? Sequence +0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Parameters: +0:16 'v' ( in 4-component vector of float) +0:? Sequence +0:18 move second child to first child ( temp 4-component vector of float) +0:18 pos: direct index for structure ( temp 4-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:18 Constant: +0:18 0 (const int) +0:18 'v' ( in 4-component vector of float) +0:19 move second child to first child ( temp 2-component vector of float) +0:19 UV0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:19 Constant: +0:19 1 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:19 direct index ( temp float) +0:19 'v' ( in 4-component vector of float) +0:19 Constant: +0:19 0 (const int) +0:19 direct index ( temp float) +0:19 'v' ( in 4-component vector of float) +0:19 Constant: +0:19 0 (const int) +0:20 move second child to first child ( temp 2-component vector of float) +0:20 UV1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:20 Constant: +0:20 2 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:20 direct index ( temp float) +0:20 'v' ( in 4-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:20 direct index ( temp float) +0:20 'v' ( in 4-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:21 move second child to first child ( temp 2-component vector of float) +0:21 UV2: direct index for structure ( temp 2-component vector of float) +0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:21 Constant: +0:21 3 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:21 direct index ( temp float) +0:21 'v' ( in 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 direct index ( temp float) +0:21 'v' ( in 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:22 move second child to first child ( temp 2-component vector of float) +0:22 UV3: direct index for structure ( temp 2-component vector of float) +0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:22 Constant: +0:22 4 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:22 direct index ( temp float) +0:22 'v' ( in 4-component vector of float) +0:22 Constant: +0:22 3 (const int) +0:22 direct index ( temp float) +0:22 'v' ( in 4-component vector of float) +0:22 Constant: +0:22 3 (const int) +0:23 Branch: Return with expression +0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Definition: main( ( temp void) +0:16 Function Parameters: +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:? 'v' ( temp 4-component vector of float) +0:? 'v' (layout( location=0) in 4-component vector of float) +0:16 Sequence +0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:? 'v' ( temp 4-component vector of float) +0:16 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) +0:16 pos: direct index for structure ( temp 4-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 0 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) +0:16 UV0: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 1 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) +0:16 UV1: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 2 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) +0:16 UV2: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 3 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) +0:16 UV3: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 4 (const int) +0:? Linker Objects +0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) +0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) +0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) +0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) +0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) +0:? 'v' (layout( location=0) in 4-component vector of float) + + +Linked vertex stage: + + +Shader version: 500 +0:? Sequence +0:16 Function Definition: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Parameters: +0:16 'v' ( in 4-component vector of float) +0:? Sequence +0:18 move second child to first child ( temp 4-component vector of float) +0:18 pos: direct index for structure ( temp 4-component vector of float) +0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:18 Constant: +0:18 0 (const int) +0:18 'v' ( in 4-component vector of float) +0:19 move second child to first child ( temp 2-component vector of float) +0:19 UV0: direct index for structure ( temp 2-component vector of float) +0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:19 Constant: +0:19 1 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:19 direct index ( temp float) +0:19 'v' ( in 4-component vector of float) +0:19 Constant: +0:19 0 (const int) +0:19 direct index ( temp float) +0:19 'v' ( in 4-component vector of float) +0:19 Constant: +0:19 0 (const int) +0:20 move second child to first child ( temp 2-component vector of float) +0:20 UV1: direct index for structure ( temp 2-component vector of float) +0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:20 Constant: +0:20 2 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:20 direct index ( temp float) +0:20 'v' ( in 4-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:20 direct index ( temp float) +0:20 'v' ( in 4-component vector of float) +0:20 Constant: +0:20 1 (const int) +0:21 move second child to first child ( temp 2-component vector of float) +0:21 UV2: direct index for structure ( temp 2-component vector of float) +0:21 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:21 Constant: +0:21 3 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:21 direct index ( temp float) +0:21 'v' ( in 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 direct index ( temp float) +0:21 'v' ( in 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:22 move second child to first child ( temp 2-component vector of float) +0:22 UV3: direct index for structure ( temp 2-component vector of float) +0:22 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:22 Constant: +0:22 4 (const int) +0:? Construct vec2 ( temp 2-component vector of float) +0:22 direct index ( temp float) +0:22 'v' ( in 4-component vector of float) +0:22 Constant: +0:22 3 (const int) +0:22 direct index ( temp float) +0:22 'v' ( in 4-component vector of float) +0:22 Constant: +0:22 3 (const int) +0:23 Branch: Return with expression +0:23 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Definition: main( ( temp void) +0:16 Function Parameters: +0:? Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:? 'v' ( temp 4-component vector of float) +0:? 'v' (layout( location=0) in 4-component vector of float) +0:16 Sequence +0:16 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Function Call: @main(vf4; ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:? 'v' ( temp 4-component vector of float) +0:16 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) +0:16 pos: direct index for structure ( temp 4-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 0 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) +0:16 UV0: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 1 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) +0:16 UV1: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 2 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) +0:16 UV2: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 3 (const int) +0:16 move second child to first child ( temp 2-component vector of float) +0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) +0:16 UV3: direct index for structure ( temp 2-component vector of float) +0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float UV0, temp 2-component vector of float UV1, temp 2-component vector of float UV2, temp 2-component vector of float UV3}) +0:16 Constant: +0:16 4 (const int) +0:? Linker Objects +0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) +0:? '@entryPointOutput.UV0' (layout( location=1) out 2-component vector of float) +0:? '@entryPointOutput.UV1' (layout( location=2) out 2-component vector of float) +0:? '@entryPointOutput.UV2' (layout( location=3) out 2-component vector of float) +0:? '@entryPointOutput.UV3' (layout( location=4) out 2-component vector of float) +0:? 'v' (layout( location=0) in 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 84 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 61 68 72 75 78 81 + Source HLSL 500 + Name 4 "main" + Name 10 "S" + MemberName 10(S) 0 "pos" + MemberName 10(S) 1 "UV0" + MemberName 10(S) 2 "UV1" + MemberName 10(S) 3 "UV2" + MemberName 10(S) 4 "UV3" + Name 13 "@main(vf4;" + Name 12 "v" + Name 16 "s" + Name 59 "v" + Name 61 "v" + Name 63 "flattenTemp" + Name 64 "param" + Name 68 "@entryPointOutput.pos" + Name 72 "@entryPointOutput.UV0" + Name 75 "@entryPointOutput.UV1" + Name 78 "@entryPointOutput.UV2" + Name 81 "@entryPointOutput.UV3" + Decorate 61(v) Location 0 + Decorate 68(@entryPointOutput.pos) Location 0 + Decorate 72(@entryPointOutput.UV0) Location 1 + Decorate 75(@entryPointOutput.UV1) Location 2 + Decorate 78(@entryPointOutput.UV2) Location 3 + Decorate 81(@entryPointOutput.UV3) Location 4 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeVector 6(float) 2 + 10(S): TypeStruct 7(fvec4) 9(fvec2) 9(fvec2) 9(fvec2) 9(fvec2) + 11: TypeFunction 10(S) 8(ptr) + 15: TypePointer Function 10(S) + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 21: 17(int) Constant 1 + 22: TypeInt 32 0 + 23: 22(int) Constant 0 + 24: TypePointer Function 6(float) + 30: TypePointer Function 9(fvec2) + 32: 17(int) Constant 2 + 33: 22(int) Constant 1 + 40: 17(int) Constant 3 + 41: 22(int) Constant 2 + 48: 17(int) Constant 4 + 49: 22(int) Constant 3 + 60: TypePointer Input 7(fvec4) + 61(v): 60(ptr) Variable Input + 67: TypePointer Output 7(fvec4) +68(@entryPointOutput.pos): 67(ptr) Variable Output + 71: TypePointer Output 9(fvec2) +72(@entryPointOutput.UV0): 71(ptr) Variable Output +75(@entryPointOutput.UV1): 71(ptr) Variable Output +78(@entryPointOutput.UV2): 71(ptr) Variable Output +81(@entryPointOutput.UV3): 71(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 59(v): 8(ptr) Variable Function + 63(flattenTemp): 15(ptr) Variable Function + 64(param): 8(ptr) Variable Function + 62: 7(fvec4) Load 61(v) + Store 59(v) 62 + 65: 7(fvec4) Load 59(v) + Store 64(param) 65 + 66: 10(S) FunctionCall 13(@main(vf4;) 64(param) + Store 63(flattenTemp) 66 + 69: 8(ptr) AccessChain 63(flattenTemp) 18 + 70: 7(fvec4) Load 69 + Store 68(@entryPointOutput.pos) 70 + 73: 30(ptr) AccessChain 63(flattenTemp) 21 + 74: 9(fvec2) Load 73 + Store 72(@entryPointOutput.UV0) 74 + 76: 30(ptr) AccessChain 63(flattenTemp) 32 + 77: 9(fvec2) Load 76 + Store 75(@entryPointOutput.UV1) 77 + 79: 30(ptr) AccessChain 63(flattenTemp) 40 + 80: 9(fvec2) Load 79 + Store 78(@entryPointOutput.UV2) 80 + 82: 30(ptr) AccessChain 63(flattenTemp) 48 + 83: 9(fvec2) Load 82 + Store 81(@entryPointOutput.UV3) 83 + Return + FunctionEnd + 13(@main(vf4;): 10(S) Function None 11 + 12(v): 8(ptr) FunctionParameter + 14: Label + 16(s): 15(ptr) Variable Function + 19: 7(fvec4) Load 12(v) + 20: 8(ptr) AccessChain 16(s) 18 + Store 20 19 + 25: 24(ptr) AccessChain 12(v) 23 + 26: 6(float) Load 25 + 27: 24(ptr) AccessChain 12(v) 23 + 28: 6(float) Load 27 + 29: 9(fvec2) CompositeConstruct 26 28 + 31: 30(ptr) AccessChain 16(s) 21 + Store 31 29 + 34: 24(ptr) AccessChain 12(v) 33 + 35: 6(float) Load 34 + 36: 24(ptr) AccessChain 12(v) 33 + 37: 6(float) Load 36 + 38: 9(fvec2) CompositeConstruct 35 37 + 39: 30(ptr) AccessChain 16(s) 32 + Store 39 38 + 42: 24(ptr) AccessChain 12(v) 41 + 43: 6(float) Load 42 + 44: 24(ptr) AccessChain 12(v) 41 + 45: 6(float) Load 44 + 46: 9(fvec2) CompositeConstruct 43 45 + 47: 30(ptr) AccessChain 16(s) 40 + Store 47 46 + 50: 24(ptr) AccessChain 12(v) 49 + 51: 6(float) Load 50 + 52: 24(ptr) AccessChain 12(v) 49 + 53: 6(float) Load 52 + 54: 9(fvec2) CompositeConstruct 51 53 + 55: 30(ptr) AccessChain 16(s) 48 + Store 55 54 + 56: 10(S) Load 16(s) + ReturnValue 56 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out b/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out index 38acc2732..74f7a2681 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.semantic.geom.out @@ -1,15 +1,10 @@ hlsl.semantic.geom -ERROR: 0:15: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 0:15: '' : unimplemented: clip/cull not currently implemented for this stage -ERROR: 2 compilation errors. No code generated. - - Shader version: 500 invocations = -1 max_vertices = 4 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! +0:? Sequence 0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:13 Function Parameters: 0:13 'VertexID' ( in 3-element array of uint) @@ -23,6 +18,26 @@ ERROR: node is still EOpNull! 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 0 (const int) +0:? Sequence +0:15 move second child to first child ( temp float) +0:15 direct index ( out float ClipDistance) +0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) +0:15 Constant: +0:15 0 (const int) +0:15 clip0: direct index for structure ( temp float) +0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) +0:15 Constant: +0:15 1 (const int) +0:? Sequence +0:15 move second child to first child ( temp float) +0:15 direct index ( out float CullDistance) +0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) +0:15 Constant: +0:15 0 (const int) +0:15 cull0: direct index for structure ( temp float) +0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) +0:15 Constant: +0:15 2 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:15 vpai: direct index for structure ( temp uint) @@ -57,6 +72,8 @@ ERROR: node is still EOpNull! 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:? 'OutputStream.rtai' ( out uint Layer) 0:? 'OutputStream.ii' (layout( location=0) out int) +0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) +0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) Linked geometry stage: @@ -67,7 +84,7 @@ invocations = 1 max_vertices = 4 input primitive = triangles output primitive = line_strip -ERROR: node is still EOpNull! +0:? Sequence 0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void) 0:13 Function Parameters: 0:13 'VertexID' ( in 3-element array of uint) @@ -81,6 +98,26 @@ ERROR: node is still EOpNull! 0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) 0:15 Constant: 0:15 0 (const int) +0:? Sequence +0:15 move second child to first child ( temp float) +0:15 direct index ( out float ClipDistance) +0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) +0:15 Constant: +0:15 0 (const int) +0:15 clip0: direct index for structure ( temp float) +0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) +0:15 Constant: +0:15 1 (const int) +0:? Sequence +0:15 move second child to first child ( temp float) +0:15 direct index ( out float CullDistance) +0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) +0:15 Constant: +0:15 0 (const int) +0:15 cull0: direct index for structure ( temp float) +0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii}) +0:15 Constant: +0:15 2 (const int) 0:15 move second child to first child ( temp uint) 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:15 vpai: direct index for structure ( temp uint) @@ -115,5 +152,129 @@ ERROR: node is still EOpNull! 0:? 'OutputStream.vpai' ( out uint ViewportIndex) 0:? 'OutputStream.rtai' ( out uint Layer) 0:? 'OutputStream.ii' (layout( location=0) out int) +0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance) +0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance) -SPIR-V is not generated for failed compile or link +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 65 + + Capability Geometry + Capability ClipDistance + Capability CullDistance + Capability MultiViewport + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "main" 20 29 34 40 45 50 57 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 1 + ExecutionMode 4 OutputLineStrip + ExecutionMode 4 OutputVertices 4 + Source HLSL 500 + Name 4 "main" + Name 12 "S" + MemberName 12(S) 0 "clip0" + MemberName 12(S) 1 "clip0" + MemberName 12(S) 2 "cull0" + MemberName 12(S) 3 "vpai" + MemberName 12(S) 4 "rtai" + MemberName 12(S) 5 "ii" + Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;" + Name 15 "VertexID" + Name 16 "OutputStream" + Name 20 "OutputStream.clip0" + Name 21 "s" + Name 29 "OutputStream.clip0" + Name 34 "OutputStream.cull0" + Name 40 "OutputStream.vpai" + Name 45 "OutputStream.rtai" + Name 50 "OutputStream.ii" + Name 55 "VertexID" + Name 57 "VertexID" + Name 59 "OutputStream" + Name 60 "param" + Name 62 "param" + Decorate 20(OutputStream.clip0) BuiltIn Position + Decorate 29(OutputStream.clip0) BuiltIn ClipDistance + Decorate 34(OutputStream.cull0) BuiltIn CullDistance + Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex + Decorate 45(OutputStream.rtai) BuiltIn Layer + Decorate 50(OutputStream.ii) Location 0 + Decorate 57(VertexID) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: 6(int) Constant 3 + 8: TypeArray 6(int) 7 + 9: TypePointer Function 8 + 10: TypeFloat 32 + 11: TypeInt 32 1 + 12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int) + 13: TypePointer Function 12(S) + 14: TypeFunction 2 9(ptr) 13(ptr) + 19: TypePointer Output 10(float) +20(OutputStream.clip0): 19(ptr) Variable Output + 22: 11(int) Constant 0 + 23: TypePointer Function 10(float) + 26: 6(int) Constant 1 + 27: TypeArray 10(float) 26 + 28: TypePointer Output 27 +29(OutputStream.clip0): 28(ptr) Variable Output + 30: 11(int) Constant 1 +34(OutputStream.cull0): 28(ptr) Variable Output + 35: 11(int) Constant 2 + 39: TypePointer Output 6(int) +40(OutputStream.vpai): 39(ptr) Variable Output + 41: 11(int) Constant 3 + 42: TypePointer Function 6(int) +45(OutputStream.rtai): 39(ptr) Variable Output + 46: 11(int) Constant 4 + 49: TypePointer Output 11(int) +50(OutputStream.ii): 49(ptr) Variable Output + 51: 11(int) Constant 5 + 52: TypePointer Function 11(int) + 56: TypePointer Input 8 + 57(VertexID): 56(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 55(VertexID): 9(ptr) Variable Function +59(OutputStream): 13(ptr) Variable Function + 60(param): 9(ptr) Variable Function + 62(param): 13(ptr) Variable Function + 58: 8 Load 57(VertexID) + Store 55(VertexID) 58 + 61: 8 Load 55(VertexID) + Store 60(param) 61 + 63: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param) + 64: 12(S) Load 62(param) + Store 59(OutputStream) 64 + Return + FunctionEnd +17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14 + 15(VertexID): 9(ptr) FunctionParameter +16(OutputStream): 13(ptr) FunctionParameter + 18: Label + 21(s): 13(ptr) Variable Function + 24: 23(ptr) AccessChain 21(s) 22 + 25: 10(float) Load 24 + Store 20(OutputStream.clip0) 25 + 31: 23(ptr) AccessChain 21(s) 30 + 32: 10(float) Load 31 + 33: 19(ptr) AccessChain 29(OutputStream.clip0) 22 + Store 33 32 + 36: 23(ptr) AccessChain 21(s) 35 + 37: 10(float) Load 36 + 38: 19(ptr) AccessChain 34(OutputStream.cull0) 22 + Store 38 37 + 43: 42(ptr) AccessChain 21(s) 41 + 44: 6(int) Load 43 + Store 40(OutputStream.vpai) 44 + 47: 42(ptr) AccessChain 21(s) 46 + 48: 6(int) Load 47 + Store 45(OutputStream.rtai) 48 + 53: 52(ptr) AccessChain 21(s) 51 + 54: 11(int) Load 53 + Store 50(OutputStream.ii) 54 + EmitVertex + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out index 086a4aace..50a653de6 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.semantic.vert.out @@ -48,7 +48,7 @@ Shader version: 500 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 0 (const int) @@ -58,7 +58,7 @@ Shader version: 500 0:10 0 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 1 (const int) @@ -68,7 +68,7 @@ Shader version: 500 0:10 1 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 0 (const int) @@ -78,7 +78,7 @@ Shader version: 500 0:10 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 1 (const int) @@ -155,7 +155,7 @@ Shader version: 500 0:? 'ins' ( temp structure{ temp float clip0, temp float clip1, temp float cull0, temp float cull1, temp int ii}) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 0 (const int) @@ -165,7 +165,7 @@ Shader version: 500 0:10 0 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float ClipDistance) 0:? '@entryPointOutput.clip1' ( out 2-element array of float ClipDistance) 0:10 Constant: 0:10 1 (const int) @@ -175,7 +175,7 @@ Shader version: 500 0:10 1 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 0 (const int) @@ -185,7 +185,7 @@ Shader version: 500 0:10 2 (const int) 0:? Sequence 0:10 move second child to first child ( temp float) -0:10 direct index ( temp float) +0:10 direct index ( out float CullDistance) 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) 0:10 Constant: 0:10 1 (const int) diff --git a/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out b/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out new file mode 100644 index 000000000..55d1639cb --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.looseUniformNoLoc.vert.out @@ -0,0 +1,8 @@ +spv.looseUniformNoLoc.vert +ERROR: spv.looseUniformNoLoc.vert:9: 'uv' : non-opaque uniform variables need a layout(location=L) +ERROR: 1 compilation errors. No code generated. + + +ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out b/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out index 3d980bf0f..d6cbeaa87 100644 --- a/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.noBuiltInLoc.vert.out @@ -1,12 +1,12 @@ spv.noBuiltInLoc.vert // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 23 +// Id's are bound by 33 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 9 11 18 + EntryPoint Vertex 4 "main" 9 11 18 31 32 Source GLSL 450 Name 4 "main" Name 9 "bar" @@ -17,6 +17,11 @@ spv.noBuiltInLoc.vert MemberName 16(gl_PerVertex) 2 "gl_ClipDistance" MemberName 16(gl_PerVertex) 3 "gl_CullDistance" Name 18 "" + Name 24 "uv1" + Name 26 "uv2" + Name 29 "uv3" + Name 31 "gl_VertexID" + Name 32 "gl_InstanceID" Decorate 9(bar) Location 0 Decorate 11(foo) Location 0 MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position @@ -24,6 +29,14 @@ spv.noBuiltInLoc.vert MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance Decorate 16(gl_PerVertex) Block + Decorate 24(uv1) Location 0 + Decorate 24(uv1) DescriptorSet 0 + Decorate 26(uv2) Location 1 + Decorate 26(uv2) DescriptorSet 0 + Decorate 29(uv3) Location 2 + Decorate 29(uv3) DescriptorSet 0 + Decorate 31(gl_VertexID) BuiltIn VertexId + Decorate 32(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -40,6 +53,16 @@ spv.noBuiltInLoc.vert 18: 17(ptr) Variable Output 19: TypeInt 32 1 20: 19(int) Constant 0 + 23: TypePointer UniformConstant 7(fvec4) + 24(uv1): 23(ptr) Variable UniformConstant + 25: TypePointer UniformConstant 6(float) + 26(uv2): 25(ptr) Variable UniformConstant + 27: TypeVector 6(float) 3 + 28: TypePointer UniformConstant 27(fvec3) + 29(uv3): 28(ptr) Variable UniformConstant + 30: TypePointer Input 19(int) + 31(gl_VertexID): 30(ptr) Variable Input +32(gl_InstanceID): 30(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(foo) diff --git a/3rdparty/glslang/Test/hlsl.clipdistance-1.geom b/3rdparty/glslang/Test/hlsl.clipdistance-1.geom index d056ebd04..76c34b355 100644 --- a/3rdparty/glslang/Test/hlsl.clipdistance-1.geom +++ b/3rdparty/glslang/Test/hlsl.clipdistance-1.geom @@ -1,21 +1,18 @@ struct S { - float4 pos : SV_Position; - float clip : SV_ClipDistance0; - float cull : SV_CullDistance0; + float4 pos : SV_Position; + float2 clip : SV_ClipDistance0; }; [maxvertexcount(3)] void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, - triangle in float clip[3] : SV_ClipDistance, // scalar float - triangle in float cull[3] : SV_CullDistance) // scalar float + triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float. { S s; s.pos = pos[0]; - s.clip = clip[0]; - s.cull = cull[0]; + s.clip = clip[0].xy; OutputStream.Append(s); } diff --git a/3rdparty/glslang/Test/hlsl.clipdistance-2.geom b/3rdparty/glslang/Test/hlsl.clipdistance-2.geom index 49d27349b..90f047feb 100644 --- a/3rdparty/glslang/Test/hlsl.clipdistance-2.geom +++ b/3rdparty/glslang/Test/hlsl.clipdistance-2.geom @@ -7,7 +7,7 @@ struct S { void main(triangle in float4 pos[3] : SV_Position, triangle in uint VertexID[3] : VertexID, inout LineStream OutputStream, - triangle in float2 clip[3][2] : SV_ClipDistance) // scalar float + triangle in float2 clip[3][2] : SV_ClipDistance) // externally: an array 3 of array 4 of float. { S s; diff --git a/3rdparty/glslang/Test/hlsl.clipdistance-3.frag b/3rdparty/glslang/Test/hlsl.clipdistance-3.frag index c590fa4f5..e2b6b8627 100644 --- a/3rdparty/glslang/Test/hlsl.clipdistance-3.frag +++ b/3rdparty/glslang/Test/hlsl.clipdistance-3.frag @@ -4,5 +4,3 @@ float4 main(in float4 pos : SV_Position, { return pos + clip[0] + cull[0]; } - - diff --git a/3rdparty/glslang/Test/hlsl.clipdistance-3.geom b/3rdparty/glslang/Test/hlsl.clipdistance-3.geom new file mode 100644 index 000000000..2aa4cd46d --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.clipdistance-3.geom @@ -0,0 +1,20 @@ +struct S { + float4 pos : SV_Position; + float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally. + float2 clip1 : SV_ClipDistance1; +}; + +[maxvertexcount(3)] +void main(triangle in float4 pos[3] : SV_Position, + triangle in uint VertexID[3] : VertexID, + inout LineStream OutputStream, + triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float. +{ + S s; + + s.pos = pos[0]; + s.clip0 = clip[0].xy; + s.clip1 = clip[0].zw; + + OutputStream.Append(s); +} diff --git a/3rdparty/glslang/Test/hlsl.clipdistance-4.geom b/3rdparty/glslang/Test/hlsl.clipdistance-4.geom new file mode 100644 index 000000000..ff296a88c --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.clipdistance-4.geom @@ -0,0 +1,21 @@ +struct S { + float4 pos : SV_Position; + float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally. + float2 clip1 : SV_ClipDistance1; +}; + +[maxvertexcount(3)] +void main(triangle in float4 pos[3] : SV_Position, + triangle in uint VertexID[3] : VertexID, + inout LineStream OutputStream, + triangle in float2 clip0[3] : SV_ClipDistance0, // test input arrayed semantic vars + triangle in float2 clip1[3] : SV_ClipDistance1) +{ + S s; + + s.pos = pos[0]; + s.clip0 = clip0[0]; + s.clip1 = clip1[0]; + + OutputStream.Append(s); +} diff --git a/3rdparty/glslang/Test/hlsl.preprocessor.frag b/3rdparty/glslang/Test/hlsl.preprocessor.frag new file mode 100644 index 000000000..dba341efd --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.preprocessor.frag @@ -0,0 +1,13 @@ +#define DEFINE_TEXTURE(name) Texture2D name; SamplerState name##_ss; +#define SAMPLE_TEXTURE(name, uv) name.Sample(name##_ss, (uv).xy) + +#define test_texture2 test_texture + +DEFINE_TEXTURE(test_texture) + +float4 main(float4 input : TEXCOORD0) : SV_TARGET +{ + float4 tex = SAMPLE_TEXTURE(test_texture2, input.xy); + return tex; +} + diff --git a/3rdparty/glslang/Test/hlsl.semantic-1.vert b/3rdparty/glslang/Test/hlsl.semantic-1.vert new file mode 100644 index 000000000..ec92428ca --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.semantic-1.vert @@ -0,0 +1,24 @@ +#define DLAYER 3 + +#define DMACRO1 TEXCOORD1 +#define DMACRO(num) TEXCOORD##num + +struct S { + float4 pos : POSITION; + float2 UV0 : TEXCOORD0; + float2 UV1 : DMACRO1; + float2 UV2 : DMACRO(2); + float2 UV3 : DMACRO(DLAYER); +}; + + +S main(float4 v : POSITION) +{ + S s; + s.pos = v; + s.UV0 = float2(v.x,v.x); + s.UV1 = float2(v.y,v.y); + s.UV2 = float2(v.z,v.z); + s.UV3 = float2(v.w,v.w); + return s; +} diff --git a/3rdparty/glslang/Test/runtests b/3rdparty/glslang/Test/runtests index 98cd944db..f0da75f54 100755 --- a/3rdparty/glslang/Test/runtests +++ b/3rdparty/glslang/Test/runtests @@ -109,8 +109,10 @@ diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out $TARGETDIR/hlsl.explicitD echo Testing SPV no location $EXE -V -C spv.noLocation.vert > $TARGETDIR/spv.noLocation.vert.out diff -b $BASEDIR/spv.noLocation.vert.out $TARGETDIR/spv.noLocation.vert.out || HASERROR=1 -$EXE -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out +$EXE -G -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out diff -b $BASEDIR/spv.noBuiltInLoc.vert.out $TARGETDIR/spv.noBuiltInLoc.vert.out || HASERROR=1 +$EXE -G spv.looseUniformNoLoc.vert > $TARGETDIR/spv.looseUniformNoLoc.vert.out +diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out $TARGETDIR/spv.looseUniformNoLoc.vert.out || HASERROR=1 # # Testing debug information diff --git a/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert b/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert new file mode 100644 index 000000000..e88735944 --- /dev/null +++ b/3rdparty/glslang/Test/spv.looseUniformNoLoc.vert @@ -0,0 +1,15 @@ +#version 450 core + +layout(location = 0) +in vec4 foo; + +layout(location = 0) +out vec4 bar; + +uniform vec4 uv; + +void main() +{ + bar = foo; + gl_Position = foo; +} \ No newline at end of file diff --git a/3rdparty/glslang/Test/spv.noBuiltInLoc.vert b/3rdparty/glslang/Test/spv.noBuiltInLoc.vert index e75489272..5fbe25219 100644 --- a/3rdparty/glslang/Test/spv.noBuiltInLoc.vert +++ b/3rdparty/glslang/Test/spv.noBuiltInLoc.vert @@ -6,6 +6,10 @@ in vec4 foo; layout(location = 0) out vec4 bar; +uniform vec4 uv1; +uniform float uv2; +uniform vec3 uv3; + void main() { bar = foo; diff --git a/3rdparty/glslang/glslang/Include/Common.h b/3rdparty/glslang/glslang/Include/Common.h index 17c2bd984..c3803191e 100644 --- a/3rdparty/glslang/glslang/Include/Common.h +++ b/3rdparty/glslang/glslang/Include/Common.h @@ -63,7 +63,7 @@ std::string to_string(const T& val) { } #endif -#if defined(_MSC_VER) && _MSC_VER < 1700 +#if defined(_MSC_VER) && _MSC_VER < 1800 inline long long int strtoll (const char* str, char** endptr, int base) { return _strtoi64(str, endptr, base); diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index 6e6660e82..e71ec5ef0 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -3425,6 +3425,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in int gl_DrawIDARB;" ); } + if (version >= 450) { + stageBuiltins[EShLangVertex].append( + "out int gl_ViewportIndex;" + "out int gl_Layer;" + ); + } if (version >= 460) { stageBuiltins[EShLangVertex].append( "in int gl_BaseVertex;" @@ -3436,8 +3442,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #ifdef NV_EXTENSIONS if (version >= 450) stageBuiltins[EShLangVertex].append( - "out int gl_ViewportIndex;" - "out int gl_Layer;" "out int gl_ViewportMask[];" // GL_NV_viewport_array2 "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering @@ -3730,11 +3734,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "};" "\n"); + if (version >= 450) + stageBuiltins[EShLangTessEvaluation].append( + "out int gl_ViewportIndex;" + "out int gl_Layer;" + ); + #ifdef NV_EXTENSIONS if (version >= 450) stageBuiltins[EShLangTessEvaluation].append( - "out int gl_ViewportIndex;" - "out int gl_Layer;" "out int gl_ViewportMask[];" // GL_NV_viewport_array2 "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering @@ -5467,6 +5475,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_Layer", Num_viewportEXTs, viewportEXTs); symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs); } +#else + if (language == EShLangVertex || language == EShLangTessEvaluation) { + symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array); + symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array); + } +#endif + +#ifdef NV_EXTENSIONS symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2); symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering); diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index 7902db8a1..6decfea72 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -2493,8 +2493,8 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t // Vulkan doesn't allow transparent uniforms outside of blocks if (spvVersion.vulkan > 0) vulkanRemoved(loc, "non-opaque uniforms outside a block"); - // OpenGL wants locations on these - if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation()) + // OpenGL wants locations on these (unless they are getting automapped) + if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation() && !intermediate.getAutoMapLocations()) error(loc, "non-opaque uniform variables need a layout(location=L)", identifier.c_str(), ""); } } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h index 73f2470ca..d04607a04 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h @@ -76,6 +76,7 @@ public: EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), + scopeMangler("::"), symbolTable(symbolTable), statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), postEntryPointReturn(false), @@ -143,7 +144,7 @@ public: virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); - const char* const scopeMangler = "::"; + const char* const scopeMangler; // Basic parsing state, easily accessible to the grammar diff --git a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp index fc85e9789..1758d00a8 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp @@ -253,10 +253,14 @@ struct TResolverUniformAdaptor ent.newBinding = -1; ent.newSet = -1; ent.newIndex = -1; - const bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + const bool isValid = resolver.validateBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), + ent.live); if (isValid) { - ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + ent.newBinding = resolver.resolveBinding(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), + ent.live); ent.newSet = resolver.resolveSet(stage, ent.symbol->getName().c_str(), ent.symbol->getType(), ent.live); + ent.newLocation = resolver.resolveUniformLocation(stage, ent.symbol->getName().c_str(), + ent.symbol->getType(), ent.live); if (ent.newBinding != -1) { if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) { @@ -356,6 +360,7 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver std::vector baseResourceSetBinding; bool doAutoBindingMapping; bool doAutoLocationMapping; + int nextUniformLocation; typedef std::vector TSlotSet; typedef std::unordered_map TSlotSetMap; TSlotSetMap slots; @@ -411,7 +416,27 @@ struct TDefaultIoResolverBase : public glslang::TIoMapResolver return 0; } + int resolveUniformLocation(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + { + // kick out of not doing this + if (!doAutoLocationMapping) + return -1; + // no locations added if already present, a built-in variable, a block, or an opaque + if (type.getQualifier().hasLocation() || type.isBuiltIn() || + type.getBasicType() == EbtBlock || type.containsOpaque()) + return -1; + + // no locations on blocks of built-in variables + if (type.isStruct()) { + if (type.getStruct()->size() < 1) + return -1; + if ((*type.getStruct())[0].type->isBuiltIn()) + return -1; + } + + return nextUniformLocation++; + } bool validateInOut(EShLanguage /*stage*/, const char* /*name*/, const TType& /*type*/, bool /*is_live*/) override { return true; @@ -700,6 +725,7 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate &intermediate, TInfoSi resolverBase->baseResourceSetBinding = intermediate.getResourceSetBinding(); resolverBase->doAutoBindingMapping = intermediate.getAutoMapBindings(); resolverBase->doAutoLocationMapping = intermediate.getAutoMapLocations(); + resolverBase->nextUniformLocation = 0; resolver = resolverBase; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h index d3219cc54..9f6e3da25 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h +++ b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h @@ -208,11 +208,14 @@ class TVariable; class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : + implicitThisName("@this"), language(l), source(EShSourceNone), profile(p), version(v), treeRoot(0), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), - invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), + invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), + inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false), - vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false), postDepthCoverage(false), depthLayout(EldNone), depthReplacing(false), + vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false), + postDepthCoverage(false), depthLayout(EldNone), depthReplacing(false), blendEquations(0), xfbMode(false), multiStream(false), #ifdef NV_EXTENSIONS layoutOverrideCoverage(false), @@ -607,7 +610,7 @@ public: void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } const std::vector& getProcesses() const { return processes.getProcesses(); } - const char* const implicitThisName = "@this"; + const char* const implicitThisName; protected: TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp index 92423507e..ecda34cd6 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -1068,6 +1068,10 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) pasting = true; } + // HLSL does expand macros before concatenation + if (pasting && pp->parseContext.isReadingHLSL()) + pasting = false; + // TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding if (token == PpAtomIdentifier) { int i; diff --git a/3rdparty/glslang/glslang/Public/ShaderLang.h b/3rdparty/glslang/glslang/Public/ShaderLang.h index b968967d2..b36e384fa 100644 --- a/3rdparty/glslang/glslang/Public/ShaderLang.h +++ b/3rdparty/glslang/glslang/Public/ShaderLang.h @@ -533,9 +533,10 @@ class TIoMapper; // Allows to customize the binding layout after linking. // All used uniform variables will invoke at least validateBinding. -// If validateBinding returned true then the other resolveBinding -// and resolveSet are invoked to resolve the binding and descriptor -// set index respectively. +// If validateBinding returned true then the other resolveBinding, +// resolveSet, and resolveLocation are invoked to resolve the binding +// and descriptor set index respectively. +// // Invocations happen in a particular order: // 1) all shader inputs // 2) all shader outputs @@ -567,6 +568,9 @@ public: // Should return a value >= 0 if the current set should be overridden. // Return -1 if the current set (including no set) should be kept. virtual int resolveSet(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; + // Should return a value >= 0 if the current location should be overridden. + // Return -1 if the current location (including no location) should be kept. + virtual int resolveUniformLocation(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; // Should return true if the resulting/current setup would be okay. // Basic idea is to do aliasing checks and reject invalid semantic names. virtual bool validateInOut(EShLanguage stage, const char* name, const TType& type, bool is_live) = 0; diff --git a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp index 0488eb792..4079d8358 100644 --- a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp +++ b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp @@ -104,8 +104,10 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.clipdistance-2.geom", "main"}, {"hlsl.clipdistance-2.vert", "main"}, {"hlsl.clipdistance-3.frag", "main"}, + {"hlsl.clipdistance-3.geom", "main"}, {"hlsl.clipdistance-3.vert", "main"}, {"hlsl.clipdistance-4.frag", "main"}, + {"hlsl.clipdistance-4.geom", "main"}, {"hlsl.clipdistance-4.vert", "main"}, {"hlsl.clipdistance-5.frag", "main"}, {"hlsl.clipdistance-5.vert", "main"}, @@ -311,11 +313,13 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.matType.bool.frag", "main"}, {"hlsl.matType.int.frag", "main"}, {"hlsl.max.frag", "PixelShaderFunction"}, + {"hlsl.preprocessor.frag", "main"}, {"hlsl.precedence.frag", "PixelShaderFunction"}, {"hlsl.precedence2.frag", "PixelShaderFunction"}, {"hlsl.scalar2matrix.frag", "main"}, {"hlsl.semantic.geom", "main"}, {"hlsl.semantic.vert", "main"}, + {"hlsl.semantic-1.vert", "main"}, {"hlsl.scope.frag", "PixelShaderFunction"}, {"hlsl.sin.frag", "PixelShaderFunction"}, {"hlsl.struct.frag", "PixelShaderFunction"}, diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.cpp b/3rdparty/glslang/hlsl/hlslParseHelper.cpp index 2d7e59340..346a1170d 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.cpp +++ b/3rdparty/glslang/hlsl/hlslParseHelper.cpp @@ -66,8 +66,10 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int entryPointFunction(nullptr), entryPointFunctionBody(nullptr), gsStreamOutput(nullptr), - clipDistanceVariable(nullptr), - cullDistanceVariable(nullptr) + clipDistanceInput(nullptr), + cullDistanceInput(nullptr), + clipDistanceOutput(nullptr), + cullDistanceOutput(nullptr) { globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmRowMajor; @@ -80,8 +82,10 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int globalInputDefaults.clear(); globalOutputDefaults.clear(); - clipSemanticNSize.fill(0); - cullSemanticNSize.fill(0); + clipSemanticNSizeIn.fill(0); + cullSemanticNSizeIn.fill(0); + clipSemanticNSizeOut.fill(0); + cullSemanticNSizeOut.fill(0); // "Shaders in the transform // feedback capturing mode have an initial global default of @@ -1152,14 +1156,18 @@ void HlslParseContext::splitBuiltIn(const TString& baseName, const TType& member if (arraySizes != nullptr && !memberType.isArray()) ioVar->getWritableType().newArraySizes(*arraySizes); - fixBuiltInIoType(ioVar->getWritableType()); - splitBuiltIns[tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)] = ioVar; if (!isClipOrCullDistance(ioVar->getType())) trackLinkage(*ioVar); // Merge qualifier from the user structure mergeQualifiers(ioVar->getWritableType().getQualifier(), outerQualifier); + + // Fix the builtin type if needed (e.g, some types require fixed array sizes, no matter how the + // shader declared them). This is done after mergeQualifiers(), in case fixBuiltInIoType looks + // at the qualifier to determine e.g, in or out qualifications. + fixBuiltInIoType(ioVar->getWritableType()); + // But, not location, we're losing that ioVar->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd; } @@ -1483,10 +1491,18 @@ void HlslParseContext::fixBuiltInIoType(TType& type) } default: if (isClipOrCullDistance(type)) { + const int loc = type.getQualifier().layoutLocation; + if (type.getQualifier().builtIn == EbvClipDistance) { - clipSemanticNSize[type.getQualifier().layoutLocation] = type.getVectorSize(); + if (type.getQualifier().storage == EvqVaryingIn) + clipSemanticNSizeIn[loc] = type.getVectorSize(); + else + clipSemanticNSizeOut[loc] = type.getVectorSize(); } else { - cullSemanticNSize[type.getQualifier().layoutLocation] = type.getVectorSize(); + if (type.getQualifier().storage == EvqVaryingIn) + cullSemanticNSizeIn[loc] = type.getVectorSize(); + else + cullSemanticNSizeOut[loc] = type.getVectorSize(); } } @@ -2274,6 +2290,7 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc switch (language) { case EShLangFragment: case EShLangVertex: + case EShLangGeometry: break; default: error(loc, "unimplemented: clip/cull not currently implemented for this stage", "", ""); @@ -2292,17 +2309,17 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc const TBuiltInVariable builtInType = clipCullNode->getQualifier().builtIn; - decltype(clipSemanticNSize)* semanticNSize = nullptr; + decltype(clipSemanticNSizeIn)* semanticNSize = nullptr; // Refer to either the clip or the cull distance, depending on semantic. switch (builtInType) { case EbvClipDistance: - clipCullVar = &clipDistanceVariable; - semanticNSize = &clipSemanticNSize; + clipCullVar = isOutput ? &clipDistanceOutput : &clipDistanceInput; + semanticNSize = isOutput ? &clipSemanticNSizeOut : &clipSemanticNSizeIn; break; case EbvCullDistance: - clipCullVar = &cullDistanceVariable; - semanticNSize = &cullSemanticNSize; + clipCullVar = isOutput ? &cullDistanceOutput : &cullDistanceInput; + semanticNSize = isOutput ? &cullSemanticNSizeOut : &cullSemanticNSizeIn; break; // called invalidly: we expected a clip or a cull distance. @@ -2328,28 +2345,48 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc vecItems += (*semanticNSize)[x]; arrayLoc += (*semanticNSize)[x]; } - - // array sizes, or 1 if it's not an array: - const int internalNodeArraySize = (internalNode->getType().isArray() ? internalNode->getType().getOuterArraySize() : 1); + + + // It can have up to 2 array dimensions (in the case of geometry shader inputs) + const TArraySizes* const internalArraySizes = internalNode->getType().getArraySizes(); + const int internalArrayDims = internalNode->getType().isArray() ? internalArraySizes->getNumDims() : 0; // vector sizes: - const int internalNodeVectorSize = internalNode->getType().getVectorSize(); + const int internalVectorSize = internalNode->getType().getVectorSize(); + // array sizes, or 1 if it's not an array: + const int internalInnerArraySize = (internalArrayDims > 0 ? internalArraySizes->getDimSize(internalArrayDims-1) : 1); + const int internalOuterArraySize = (internalArrayDims > 1 ? internalArraySizes->getDimSize(0) : 1); + + // The created type may be an array of arrays, e.g, for geometry shader inputs. + const bool isImplicitlyArrayed = (language == EShLangGeometry && !isOutput); // If we haven't created the output already, create it now. if (*clipCullVar == nullptr) { // ClipDistance and CullDistance are handled specially in the entry point input/output copy // algorithm, because they may need to be unpacked from components of vectors (or a scalar) // into a float array, or vice versa. Here, we make the array the right size and type, - // which depends on the incoming data, which has several potential dimensions: Semantic ID - // vector size array size Of those, semantic ID and array size cannot appear - // simultaneously. - const int requiredArraySize = arrayLoc * internalNodeArraySize; + // which depends on the incoming data, which has several potential dimensions: + // * Semantic ID + // * vector size + // * array size + // Of those, semantic ID and array size cannot appear simultaneously. + // + // Also to note: for implicitly arrayed forms (e.g, geometry shader inputs), we need to create two + // array dimensions. The shader's declaration may have one or two array dimensions. One is always + // the geometry's dimension. + + const bool useInnerSize = internalArrayDims > 1 || !isImplicitlyArrayed; + + const int requiredInnerArraySize = arrayLoc * (useInnerSize ? internalInnerArraySize : 1); + const int requiredOuterArraySize = (internalArrayDims > 0) ? internalArraySizes->getDimSize(0) : 1; TType clipCullType(EbtFloat, clipCullNode->getType().getQualifier().storage, 1); clipCullType.getQualifier() = clipCullNode->getType().getQualifier(); // Create required array dimension TArraySizes arraySizes; - arraySizes.addInnerSize(requiredArraySize); + if (isImplicitlyArrayed) + arraySizes.addInnerSize(requiredOuterArraySize); + arraySizes.addInnerSize(requiredInnerArraySize); clipCullType.newArraySizes(arraySizes); // Obtain symbol name: we'll use that for the symbol we introduce. @@ -2369,10 +2406,13 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc // Create symbol for the clip or cull variable. TIntermSymbol* clipCullSym = intermediate.addSymbol(**clipCullVar); - // array sizes, or 1 if it's not an array: - const int clipCullSymArraySize = (clipCullSym->getType().isArray() ? clipCullSym->getType().getOuterArraySize() : 1); // vector sizes: - const int clipCullSymVectorSize = clipCullSym->getType().getVectorSize(); + const int clipCullVectorSize = clipCullSym->getType().getVectorSize(); + + // array sizes, or 1 if it's not an array: + const TArraySizes* const clipCullArraySizes = clipCullSym->getType().getArraySizes(); + const int clipCullOuterArraySize = isImplicitlyArrayed ? clipCullArraySizes->getDimSize(0) : 1; + const int clipCullInnerArraySize = clipCullArraySizes->getDimSize(isImplicitlyArrayed ? 1 : 0); // clipCullSym has got to be an array of scalar floats, per SPIR-V semantics. // fixBuiltInIoType() should have handled that upstream. @@ -2390,8 +2430,9 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc // If the types are homomorphic, use a simple assign. No need to mess about with // individual components. if (clipCullSym->getType().isArray() == internalNode->getType().isArray() && - clipCullSymArraySize == internalNodeArraySize && - clipCullSymVectorSize == internalNodeVectorSize) { + clipCullInnerArraySize == internalInnerArraySize && + clipCullOuterArraySize == internalOuterArraySize && + clipCullVectorSize == internalVectorSize) { if (isOutput) clipCullAssign = intermediate.addAssign(op, clipCullSym, internalNode, loc); @@ -2407,41 +2448,61 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc // We are going to copy each component of the internal (per array element if indicated) to sequential // array elements of the clipCullSym. This tracks the lhs element we're writing to as we go along. // We may be starting in the middle - e.g, for a non-zero semantic ID calculated above. - int clipCullArrayPos = semanticOffset[semanticId]; + int clipCullInnerArrayPos = semanticOffset[semanticId]; + int clipCullOuterArrayPos = 0; + + // Lambda to add an index to a node, set the type of the result, and return the new node. + const auto addIndex = [this, &loc](TIntermTyped* node, int pos) -> TIntermTyped* { + const TType derefType(node->getType(), 0); + node = intermediate.addIndex(EOpIndexDirect, node, intermediate.addConstantUnion(pos, loc), loc); + node->setType(derefType); + return node; + }; // Loop through every component of every element of the internal, and copy to or from the matching external. - for (int internalArrayPos = 0; internalArrayPos < internalNodeArraySize; ++internalArrayPos) { - for (int internalComponent = 0; internalComponent < internalNodeVectorSize; ++internalComponent) { - // array member to read from / write to: - TIntermTyped* clipCullMember = intermediate.addIndex(EOpIndexDirect, clipCullSym, - intermediate.addConstantUnion(clipCullArrayPos++, loc), loc); + for (int internalOuterArrayPos = 0; internalOuterArrayPos < internalOuterArraySize; ++internalOuterArrayPos) { + for (int internalInnerArrayPos = 0; internalInnerArrayPos < internalInnerArraySize; ++internalInnerArrayPos) { + for (int internalComponent = 0; internalComponent < internalVectorSize; ++internalComponent) { + // clip/cull array member to read from / write to: + TIntermTyped* clipCullMember = clipCullSym; - TIntermTyped* internalMember = internalNode; + // If implicitly arrayed, there is an outer array dimension involved + if (isImplicitlyArrayed) + clipCullMember = addIndex(clipCullMember, clipCullOuterArrayPos); - // If internal node is an array, extract the element of interest - if (internalNode->getType().isArray()) { - const TType derefType(internalMember->getType(), 0); - internalMember = intermediate.addIndex(EOpIndexDirect, internalMember, - intermediate.addConstantUnion(internalArrayPos, loc), loc); - internalMember->setType(derefType); + // Index into proper array position for clip cull member + clipCullMember = addIndex(clipCullMember, clipCullInnerArrayPos++); + + // if needed, start over with next outer array slice. + if (isImplicitlyArrayed && clipCullInnerArrayPos >= clipCullInnerArraySize) { + clipCullInnerArrayPos = semanticOffset[semanticId]; + ++clipCullOuterArrayPos; + } + + // internal member to read from / write to: + TIntermTyped* internalMember = internalNode; + + // If internal node has outer array dimension, index appropriately. + if (internalArrayDims > 1) + internalMember = addIndex(internalMember, internalOuterArrayPos); + + // If internal node has inner array dimension, index appropriately. + if (internalArrayDims > 0) + internalMember = addIndex(internalMember, internalInnerArrayPos); + + // If internal node is a vector, extract the component of interest. + if (internalNode->getType().isVector()) + internalMember = addIndex(internalMember, internalComponent); + + // Create an assignment: output from internal to clip cull, or input from clip cull to internal. + if (isOutput) + clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc); + else + clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc); + + // Track assignment in the sequence. + assignList = intermediate.growAggregate(assignList, clipCullAssign); } - - // If internal node is a vector, extract the component of interest. - if (internalNode->getType().isVector()) { - const TType derefType(internalMember->getType(), 0); - internalMember = intermediate.addIndex(EOpIndexDirect, internalMember, - intermediate.addConstantUnion(internalComponent, loc), loc); - internalMember->setType(derefType); - } - - // Create an assignment: output from internal to clip cull, or input from clip cull to internal. - if (isOutput) - clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc); - else - clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc); - - // Track assignment in the sequence. - assignList = intermediate.growAggregate(assignList, clipCullAssign); } } @@ -5089,7 +5150,7 @@ void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& f const auto setArgList = [&](int paramNum, const TVector& args) { if (args.size() == 1) setArg(paramNum, args.front()); - else { + else if (args.size() > 1) { if (function.getParamCount() + functionParamNumberOffset == 1) { arguments = intermediate.makeAggregate(args.front()); std::for_each(args.begin() + 1, args.end(), @@ -5100,8 +5161,8 @@ void HlslParseContext::expandArguments(const TSourceLoc& loc, const TFunction& f auto it = aggregate->getSequence().erase(aggregate->getSequence().begin() + paramNum); aggregate->getSequence().insert(it, args.begin(), args.end()); } + functionParamNumberOffset += (int)(args.size() - 1); } - functionParamNumberOffset += (args.size() - 1); }; // Process each argument's conversion diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.h b/3rdparty/glslang/hlsl/hlslParseHelper.h index e545109cd..a276d6e93 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.h +++ b/3rdparty/glslang/hlsl/hlslParseHelper.h @@ -435,12 +435,16 @@ protected: TVariable* gsStreamOutput; // geometry shader stream outputs, for emit (Append method) - TVariable* clipDistanceVariable; // synthesized clip distance variable (shader might have >1) - TVariable* cullDistanceVariable; // synthesized cull distance variable (shader might have >1) + TVariable* clipDistanceOutput; // synthesized clip distance out variable (shader might have >1) + TVariable* cullDistanceOutput; // synthesized cull distance out variable (shader might have >1) + TVariable* clipDistanceInput; // synthesized clip distance in variable (shader might have >1) + TVariable* cullDistanceInput; // synthesized cull distance in variable (shader might have >1) static const int maxClipCullRegs = 2; - std::array clipSemanticNSize; // vector, indexed by clip semantic ID - std::array cullSemanticNSize; // vector, indexed by cull semantic ID + std::array clipSemanticNSizeIn; // vector, indexed by clip semantic ID + std::array cullSemanticNSizeIn; // vector, indexed by cull semantic ID + std::array clipSemanticNSizeOut; // vector, indexed by clip semantic ID + std::array cullSemanticNSizeOut; // vector, indexed by cull semantic ID // This tracks the first (mip level) argument to the .mips[][] operator. Since this can be nested as // in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting