From abd8dca86dcb12bb19835e0f65951062abfa7211 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 1 Feb 2017 18:09:17 -0700 Subject: [PATCH] HLSL: Make the entry-point shadow function have non-IO params and return. This also removes an no longer needed makeTemporary() and rationalizes makeTypeNonIo()'s interface. --- Test/baseResults/hlsl.basic.comp.out | 16 +- Test/baseResults/hlsl.depthGreater.frag.out | 8 +- Test/baseResults/hlsl.depthLess.frag.out | 8 +- Test/baseResults/hlsl.entry-in.frag.out | 223 +++++++-------- .../hlsl.gather.basic.dx10.vert.out | 144 +++++----- .../hlsl.getdimensions.dx10.vert.out | 90 +++--- Test/baseResults/hlsl.inoutquals.frag.out | 12 +- .../baseResults/hlsl.load.basic.dx10.vert.out | 188 ++++++------- Test/baseResults/hlsl.multiEntry.vert.out | 16 +- Test/baseResults/hlsl.numthreads.comp.out | 4 +- .../hlsl.samplegrad.basic.dx10.vert.out | 84 +++--- .../hlsl.samplelevel.basic.dx10.vert.out | 84 +++--- Test/baseResults/hlsl.struct.frag.out | 81 +++--- Test/baseResults/hlsl.struct.split-1.vert.out | 254 ++++++++--------- .../hlsl.struct.split.array.geom.out | 259 +++++++++-------- .../hlsl.struct.split.assign.frag.out | 207 ++++++-------- .../hlsl.struct.split.call.vert.out | 264 ++++++++---------- .../hlsl.struct.split.nested.geom.out | 253 ++++++++--------- .../hlsl.struct.split.trivial.vert.out | 138 +++++---- .../hlsl.structarray.flatten.geom.out | 113 ++++---- Test/baseResults/hlsl.structin.vert.out | 8 +- glslang/Include/revision.h | 2 +- hlsl/hlslParseHelper.cpp | 34 +-- hlsl/hlslParseHelper.h | 2 +- 24 files changed, 1146 insertions(+), 1346 deletions(-) diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out index d206838a..ea0bb716 100755 --- a/Test/baseResults/hlsl.basic.comp.out +++ b/Test/baseResults/hlsl.basic.comp.out @@ -4,12 +4,12 @@ local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main(i1;i1; (temp void) 0:4 Function Parameters: -0:4 'dti' (in int GlobalInvocationID) -0:4 'gti' (in int LocalInvocationID) +0:4 'dti' (in int) +0:4 'gti' (in int) 0:? Sequence 0:5 subtract (temp int) -0:5 'dti' (in int GlobalInvocationID) -0:5 'gti' (in int LocalInvocationID) +0:5 'dti' (in int) +0:5 'gti' (in int) 0:4 Function Definition: main( (temp void) 0:4 Function Parameters: 0:? Sequence @@ -36,12 +36,12 @@ local_size = (1, 1, 1) 0:? Sequence 0:4 Function Definition: @main(i1;i1; (temp void) 0:4 Function Parameters: -0:4 'dti' (in int GlobalInvocationID) -0:4 'gti' (in int LocalInvocationID) +0:4 'dti' (in int) +0:4 'gti' (in int) 0:? Sequence 0:5 subtract (temp int) -0:5 'dti' (in int GlobalInvocationID) -0:5 'gti' (in int LocalInvocationID) +0:5 'dti' (in int) +0:5 'gti' (in int) 0:4 Function Definition: main( (temp void) 0:4 Function Parameters: 0:? Sequence diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out index 27455563..d291ff95 100755 --- a/Test/baseResults/hlsl.depthGreater.frag.out +++ b/Test/baseResults/hlsl.depthGreater.frag.out @@ -5,10 +5,10 @@ using depth_greater 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1; (temp void) 0:2 Function Parameters: -0:2 'depth' (out float unknown built-in variable) +0:2 'depth' (out float) 0:? Sequence 0:3 move second child to first child (temp float) -0:3 'depth' (out float unknown built-in variable) +0:3 'depth' (out float) 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( (temp void) @@ -32,10 +32,10 @@ using depth_greater 0:? Sequence 0:2 Function Definition: @PixelShaderFunction(f1; (temp void) 0:2 Function Parameters: -0:2 'depth' (out float unknown built-in variable) +0:2 'depth' (out float) 0:? Sequence 0:3 move second child to first child (temp float) -0:3 'depth' (out float unknown built-in variable) +0:3 'depth' (out float) 0:3 Constant: 0:3 0.200000 0:2 Function Definition: PixelShaderFunction( (temp void) diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out index 551b893d..467c40a0 100755 --- a/Test/baseResults/hlsl.depthLess.frag.out +++ b/Test/baseResults/hlsl.depthLess.frag.out @@ -3,7 +3,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_less 0:? Sequence -0:2 Function Definition: @PixelShaderFunction( (temp float unknown built-in variable) +0:2 Function Definition: @PixelShaderFunction( (temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression @@ -14,7 +14,7 @@ using depth_less 0:? Sequence 0:2 move second child to first child (temp float) 0:? '@entryPointOutput' (out float FragDepth) -0:2 Function Call: @PixelShaderFunction( (temp float unknown built-in variable) +0:2 Function Call: @PixelShaderFunction( (temp float) 0:? Linker Objects 0:? '@entryPointOutput' (out float FragDepth) @@ -26,7 +26,7 @@ Shader version: 450 gl_FragCoord origin is upper left using depth_less 0:? Sequence -0:2 Function Definition: @PixelShaderFunction( (temp float unknown built-in variable) +0:2 Function Definition: @PixelShaderFunction( (temp float) 0:2 Function Parameters: 0:? Sequence 0:3 Branch: Return with expression @@ -37,7 +37,7 @@ using depth_less 0:? Sequence 0:2 move second child to first child (temp float) 0:? '@entryPointOutput' (out float FragDepth) -0:2 Function Call: @PixelShaderFunction( (temp float unknown built-in variable) +0:2 Function Call: @PixelShaderFunction( (temp float) 0:? Linker Objects 0:? '@entryPointOutput' (out float FragDepth) diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index 3b35afdf..a9f8b2ca 100755 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -24,11 +24,11 @@ gl_FragCoord origin is upper left 0:9 0 (const int) 0:13 Function Definition: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) 0:13 Function Parameters: -0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:15 move second child to first child (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:15 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:15 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:16 Sequence 0:16 move second child to first child (temp float) 0:16 'ret1' (temp float) @@ -38,7 +38,7 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) -0:17 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:17 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Branch: Return with expression 0:19 vector-scale (temp 4-component vector of float) 0:19 vector-scale (temp 4-component vector of float) @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:13 Sequence 0:13 move second child to first child (temp 2-component vector of float) 0:13 v: direct index for structure (temp 2-component vector of float) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 0 (const int) 0:13 v: direct index for structure (temp 2-component vector of float) @@ -62,14 +62,14 @@ gl_FragCoord origin is upper left 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child (temp 4-component vector of float) -0:13 fragCoord: direct index for structure (temp 4-component vector of float FragCoord) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:13 fragCoord: direct index for structure (temp 4-component vector of float) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 1 (const int) 0:? 'i_fragCoord' (in 4-component vector of float FragCoord) 0:13 move second child to first child (temp 2-component vector of int) 0:13 i2: direct index for structure (temp 2-component vector of int) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 2 (const int) 0:13 i2: direct index for structure (temp 2-component vector of int) @@ -79,7 +79,7 @@ gl_FragCoord origin is upper left 0:13 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:13 Function Call: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'i' (layout(location=0 ) in structure{temp 2-component vector of float v, temp 2-component vector of int i2}) @@ -114,11 +114,11 @@ gl_FragCoord origin is upper left 0:9 0 (const int) 0:13 Function Definition: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) 0:13 Function Parameters: -0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Sequence 0:15 move second child to first child (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) -0:15 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:15 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:16 Sequence 0:16 move second child to first child (temp float) 0:16 'ret1' (temp float) @@ -128,7 +128,7 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp float) 0:17 'ret2' (temp float) 0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float) -0:17 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:17 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:19 Branch: Return with expression 0:19 vector-scale (temp 4-component vector of float) 0:19 vector-scale (temp 4-component vector of float) @@ -144,7 +144,7 @@ gl_FragCoord origin is upper left 0:13 Sequence 0:13 move second child to first child (temp 2-component vector of float) 0:13 v: direct index for structure (temp 2-component vector of float) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 0 (const int) 0:13 v: direct index for structure (temp 2-component vector of float) @@ -152,14 +152,14 @@ gl_FragCoord origin is upper left 0:13 Constant: 0:13 0 (const int) 0:13 move second child to first child (temp 4-component vector of float) -0:13 fragCoord: direct index for structure (temp 4-component vector of float FragCoord) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:13 fragCoord: direct index for structure (temp 4-component vector of float) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 1 (const int) 0:? 'i_fragCoord' (in 4-component vector of float FragCoord) 0:13 move second child to first child (temp 2-component vector of int) 0:13 i2: direct index for structure (temp 2-component vector of int) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:13 Constant: 0:13 2 (const int) 0:13 i2: direct index for structure (temp 2-component vector of int) @@ -169,7 +169,7 @@ gl_FragCoord origin is upper left 0:13 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:13 Function Call: @PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float) -0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float FragCoord fragCoord, temp 2-component vector of int i2}) +0:? 'i' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'i' (layout(location=0 ) in structure{temp 2-component vector of float v, temp 2-component vector of int i2}) @@ -177,12 +177,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 85 +// Id's are bound by 77 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 67 73 81 + EntryPoint Fragment 4 "PixelShaderFunction" 56 63 73 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 11 "InParam" @@ -191,29 +191,24 @@ gl_FragCoord origin is upper left MemberName 11(InParam) 2 "i2" Name 15 "fun(struct-InParam-vf2-vf4-vi21;" Name 14 "p" - Name 17 "InParam" - MemberName 17(InParam) 0 "v" - MemberName 17(InParam) 1 "fragCoord" - MemberName 17(InParam) 2 "i2" - Name 21 "@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;" - Name 20 "i" - Name 36 "local" - Name 48 "ret1" - Name 49 "param" - Name 52 "ret2" - Name 53 "param" - Name 64 "i" - Name 65 "InParam" - MemberName 65(InParam) 0 "v" - MemberName 65(InParam) 1 "i2" - Name 67 "i" - Name 73 "i_fragCoord" - Name 81 "@entryPointOutput" - Name 82 "param" - MemberDecorate 17(InParam) 1 BuiltIn FragCoord - Decorate 67(i) Location 0 - Decorate 73(i_fragCoord) BuiltIn FragCoord - Decorate 81(@entryPointOutput) Location 0 + Name 19 "@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;" + Name 18 "i" + Name 34 "local" + Name 36 "ret1" + Name 37 "param" + Name 40 "ret2" + Name 41 "param" + Name 53 "i" + Name 54 "InParam" + MemberName 54(InParam) 0 "v" + MemberName 54(InParam) 1 "i2" + Name 56 "i" + Name 63 "i_fragCoord" + Name 73 "@entryPointOutput" + Name 74 "param" + Decorate 56(i) Location 0 + Decorate 63(i_fragCoord) BuiltIn FragCoord + Decorate 73(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -224,90 +219,80 @@ gl_FragCoord origin is upper left 11(InParam): TypeStruct 7(fvec2) 8(fvec4) 10(ivec2) 12: TypePointer Function 11(InParam) 13: TypeFunction 6(float) 12(ptr) - 17(InParam): TypeStruct 7(fvec2) 8(fvec4) 10(ivec2) - 18: TypePointer Function 17(InParam) - 19: TypeFunction 8(fvec4) 18(ptr) - 23: 9(int) Constant 0 - 24: TypeInt 32 0 - 25: 24(int) Constant 1 - 26: TypePointer Function 6(float) - 29: 9(int) Constant 1 - 30: 24(int) Constant 0 - 39: TypePointer Function 7(fvec2) - 42: TypePointer Function 8(fvec4) - 45: 9(int) Constant 2 - 46: TypePointer Function 10(ivec2) - 65(InParam): TypeStruct 7(fvec2) 10(ivec2) - 66: TypePointer Input 65(InParam) - 67(i): 66(ptr) Variable Input - 68: TypePointer Input 7(fvec2) - 72: TypePointer Input 8(fvec4) - 73(i_fragCoord): 72(ptr) Variable Input - 76: TypePointer Input 10(ivec2) - 80: TypePointer Output 8(fvec4) -81(@entryPointOutput): 80(ptr) Variable Output + 17: TypeFunction 8(fvec4) 12(ptr) + 21: 9(int) Constant 0 + 22: TypeInt 32 0 + 23: 22(int) Constant 1 + 24: TypePointer Function 6(float) + 27: 9(int) Constant 1 + 28: 22(int) Constant 0 + 44: TypePointer Function 8(fvec4) + 54(InParam): TypeStruct 7(fvec2) 10(ivec2) + 55: TypePointer Input 54(InParam) + 56(i): 55(ptr) Variable Input + 57: TypePointer Input 7(fvec2) + 60: TypePointer Function 7(fvec2) + 62: TypePointer Input 8(fvec4) + 63(i_fragCoord): 62(ptr) Variable Input + 66: 9(int) Constant 2 + 67: TypePointer Input 10(ivec2) + 70: TypePointer Function 10(ivec2) + 72: TypePointer Output 8(fvec4) +73(@entryPointOutput): 72(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 64(i): 18(ptr) Variable Function - 82(param): 18(ptr) Variable Function - 69: 68(ptr) AccessChain 67(i) 23 - 70: 7(fvec2) Load 69 - 71: 39(ptr) AccessChain 64(i) 23 - Store 71 70 - 74: 8(fvec4) Load 73(i_fragCoord) - 75: 42(ptr) AccessChain 64(i) 29 - Store 75 74 - 77: 76(ptr) AccessChain 67(i) 29 - 78: 10(ivec2) Load 77 - 79: 46(ptr) AccessChain 64(i) 45 - Store 79 78 - 83: 17(InParam) Load 64(i) - Store 82(param) 83 - 84: 8(fvec4) FunctionCall 21(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;) 82(param) - Store 81(@entryPointOutput) 84 + 53(i): 12(ptr) Variable Function + 74(param): 12(ptr) Variable Function + 58: 57(ptr) AccessChain 56(i) 21 + 59: 7(fvec2) Load 58 + 61: 60(ptr) AccessChain 53(i) 21 + Store 61 59 + 64: 8(fvec4) Load 63(i_fragCoord) + 65: 44(ptr) AccessChain 53(i) 27 + Store 65 64 + 68: 67(ptr) AccessChain 56(i) 27 + 69: 10(ivec2) Load 68 + 71: 70(ptr) AccessChain 53(i) 66 + Store 71 69 + 75: 11(InParam) Load 53(i) + Store 74(param) 75 + 76: 8(fvec4) FunctionCall 19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;) 74(param) + Store 73(@entryPointOutput) 76 Return FunctionEnd 15(fun(struct-InParam-vf2-vf4-vi21;): 6(float) Function None 13 14(p): 12(ptr) FunctionParameter 16: Label - 27: 26(ptr) AccessChain 14(p) 23 25 - 28: 6(float) Load 27 - 31: 26(ptr) AccessChain 14(p) 29 30 - 32: 6(float) Load 31 - 33: 6(float) FAdd 28 32 - ReturnValue 33 + 25: 24(ptr) AccessChain 14(p) 21 23 + 26: 6(float) Load 25 + 29: 24(ptr) AccessChain 14(p) 27 28 + 30: 6(float) Load 29 + 31: 6(float) FAdd 26 30 + ReturnValue 31 FunctionEnd -21(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;): 8(fvec4) Function None 19 - 20(i): 18(ptr) FunctionParameter - 22: Label - 36(local): 12(ptr) Variable Function - 48(ret1): 26(ptr) Variable Function - 49(param): 12(ptr) Variable Function - 52(ret2): 26(ptr) Variable Function - 53(param): 18(ptr) Variable Function - 37: 17(InParam) Load 20(i) - 38: 7(fvec2) CompositeExtract 37 0 - 40: 39(ptr) AccessChain 36(local) 23 - Store 40 38 - 41: 8(fvec4) CompositeExtract 37 1 - 43: 42(ptr) AccessChain 36(local) 29 - Store 43 41 - 44: 10(ivec2) CompositeExtract 37 2 - 47: 46(ptr) AccessChain 36(local) 45 - Store 47 44 - 50: 11(InParam) Load 36(local) - Store 49(param) 50 - 51: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 49(param) - Store 48(ret1) 51 - 54: 17(InParam) Load 20(i) - Store 53(param) 54 - 55: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 53(param) - Store 52(ret2) 55 - 56: 42(ptr) AccessChain 36(local) 29 - 57: 8(fvec4) Load 56 - 58: 6(float) Load 48(ret1) - 59: 8(fvec4) VectorTimesScalar 57 58 - 60: 6(float) Load 52(ret2) - 61: 8(fvec4) VectorTimesScalar 59 60 - ReturnValue 61 +19(@PixelShaderFunction(struct-InParam-vf2-vf4-vi21;): 8(fvec4) Function None 17 + 18(i): 12(ptr) FunctionParameter + 20: Label + 34(local): 12(ptr) Variable Function + 36(ret1): 24(ptr) Variable Function + 37(param): 12(ptr) Variable Function + 40(ret2): 24(ptr) Variable Function + 41(param): 12(ptr) Variable Function + 35: 11(InParam) Load 18(i) + Store 34(local) 35 + 38: 11(InParam) Load 34(local) + Store 37(param) 38 + 39: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 37(param) + Store 36(ret1) 39 + 42: 11(InParam) Load 18(i) + Store 41(param) 42 + 43: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 41(param) + Store 40(ret2) 43 + 45: 44(ptr) AccessChain 34(local) 27 + 46: 8(fvec4) Load 45 + 47: 6(float) Load 36(ret1) + 48: 8(fvec4) VectorTimesScalar 46 47 + 49: 6(float) Load 40(ret2) + 50: 8(fvec4) VectorTimesScalar 48 49 + ReturnValue 50 FunctionEnd diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index a718ce03..343925ad 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.gather.basic.dx10.vert Shader version: 450 0:? Sequence -0:28 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:28 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -85,8 +85,8 @@ Shader version: 450 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:28 Pos: direct index for structure (temp 4-component vector of float Position) -0:28 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:28 Pos: direct index for structure (temp 4-component vector of float) +0:28 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:28 Constant: 0:28 0 (const int) 0:? Linker Objects @@ -113,7 +113,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:28 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:28 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:28 Function Parameters: 0:? Sequence 0:33 Sequence @@ -197,8 +197,8 @@ Shader version: 450 0:28 Sequence 0:28 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:28 Pos: direct index for structure (temp 4-component vector of float Position) -0:28 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:28 Pos: direct index for structure (temp 4-component vector of float) +0:28 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:28 Constant: 0:28 0 (const int) 0:? Linker Objects @@ -221,13 +221,13 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 135 +// Id's are bound by 129 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 109 134 + EntryPoint Vertex 4 "main" 103 128 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" @@ -245,22 +245,19 @@ Shader version: 450 Name 74 "g_tTexcdi4" Name 81 "txval42" Name 84 "g_tTexcdu4" - Name 94 "VS_OUTPUT" - MemberName 94(VS_OUTPUT) 0 "Pos" - Name 96 "vsout" - Name 109 "@entryPointOutput_Pos" - Name 112 "g_sSamp2d" - Name 115 "g_tTex1df4a" - Name 116 "g_tTex1df4" - Name 119 "g_tTex1di4" - Name 122 "g_tTex1du4" - Name 125 "g_tTex3df4" - Name 128 "g_tTex3di4" - Name 131 "g_tTex3du4" - Name 132 "PerVertex_out" - MemberName 132(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 134 "PerVertex_out" - MemberDecorate 8(VS_OUTPUT) 0 BuiltIn Position + Name 95 "vsout" + Name 103 "@entryPointOutput_Pos" + Name 106 "g_sSamp2d" + Name 109 "g_tTex1df4a" + Name 110 "g_tTex1df4" + Name 113 "g_tTex1di4" + Name 116 "g_tTex1du4" + Name 119 "g_tTex3df4" + Name 122 "g_tTex3di4" + Name 125 "g_tTex3du4" + Name 126 "PerVertex_out" + MemberName 126(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 128 "PerVertex_out" Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 @@ -269,19 +266,19 @@ Shader version: 450 Decorate 63(g_tTexcdf4) DescriptorSet 0 Decorate 74(g_tTexcdi4) DescriptorSet 0 Decorate 84(g_tTexcdu4) DescriptorSet 0 - Decorate 109(@entryPointOutput_Pos) BuiltIn Position - Decorate 112(g_sSamp2d) DescriptorSet 0 - Decorate 115(g_tTex1df4a) DescriptorSet 0 - Decorate 115(g_tTex1df4a) Binding 1 - Decorate 116(g_tTex1df4) DescriptorSet 0 - Decorate 116(g_tTex1df4) Binding 0 - Decorate 119(g_tTex1di4) DescriptorSet 0 - Decorate 122(g_tTex1du4) DescriptorSet 0 - Decorate 125(g_tTex3df4) DescriptorSet 0 - Decorate 128(g_tTex3di4) DescriptorSet 0 - Decorate 131(g_tTex3du4) DescriptorSet 0 - MemberDecorate 132(PerVertex_out) 0 BuiltIn Position - Decorate 132(PerVertex_out) Block + Decorate 103(@entryPointOutput_Pos) BuiltIn Position + Decorate 106(g_sSamp2d) DescriptorSet 0 + Decorate 109(g_tTex1df4a) DescriptorSet 0 + Decorate 109(g_tTex1df4a) Binding 1 + Decorate 110(g_tTex1df4) DescriptorSet 0 + Decorate 110(g_tTex1df4) Binding 0 + Decorate 113(g_tTex1di4) DescriptorSet 0 + Decorate 116(g_tTex1du4) DescriptorSet 0 + Decorate 119(g_tTex3df4) DescriptorSet 0 + Decorate 122(g_tTex3di4) DescriptorSet 0 + Decorate 125(g_tTex3du4) DescriptorSet 0 + MemberDecorate 126(PerVertex_out) 0 BuiltIn Position + Decorate 126(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -340,41 +337,39 @@ Shader version: 450 90: 6(float) Constant 1061997773 91: 6(float) Constant 1063675494 92: 68(fvec3) ConstantComposite 89 90 91 - 94(VS_OUTPUT): TypeStruct 7(fvec4) - 95: TypePointer Function 94(VS_OUTPUT) - 97: 6(float) Constant 0 - 98: 7(fvec4) ConstantComposite 97 97 97 97 - 101: TypePointer Function 8(VS_OUTPUT) - 108: TypePointer Output 7(fvec4) -109(@entryPointOutput_Pos): 108(ptr) Variable Output - 112(g_sSamp2d): 19(ptr) Variable UniformConstant - 113: TypeImage 6(float) 1D sampled format:Unknown - 114: TypePointer UniformConstant 113 -115(g_tTex1df4a): 114(ptr) Variable UniformConstant - 116(g_tTex1df4): 114(ptr) Variable UniformConstant - 117: TypeImage 28(int) 1D sampled format:Unknown + 94: TypePointer Function 8(VS_OUTPUT) + 96: 6(float) Constant 0 + 97: 7(fvec4) ConstantComposite 96 96 96 96 + 102: TypePointer Output 7(fvec4) +103(@entryPointOutput_Pos): 102(ptr) Variable Output + 106(g_sSamp2d): 19(ptr) Variable UniformConstant + 107: TypeImage 6(float) 1D sampled format:Unknown + 108: TypePointer UniformConstant 107 +109(g_tTex1df4a): 108(ptr) Variable UniformConstant + 110(g_tTex1df4): 108(ptr) Variable UniformConstant + 111: TypeImage 28(int) 1D sampled format:Unknown + 112: TypePointer UniformConstant 111 + 113(g_tTex1di4): 112(ptr) Variable UniformConstant + 114: TypeImage 45(int) 1D sampled format:Unknown + 115: TypePointer UniformConstant 114 + 116(g_tTex1du4): 115(ptr) Variable UniformConstant + 117: TypeImage 6(float) 3D sampled format:Unknown 118: TypePointer UniformConstant 117 - 119(g_tTex1di4): 118(ptr) Variable UniformConstant - 120: TypeImage 45(int) 1D sampled format:Unknown + 119(g_tTex3df4): 118(ptr) Variable UniformConstant + 120: TypeImage 28(int) 3D sampled format:Unknown 121: TypePointer UniformConstant 120 - 122(g_tTex1du4): 121(ptr) Variable UniformConstant - 123: TypeImage 6(float) 3D sampled format:Unknown + 122(g_tTex3di4): 121(ptr) Variable UniformConstant + 123: TypeImage 45(int) 3D sampled format:Unknown 124: TypePointer UniformConstant 123 - 125(g_tTex3df4): 124(ptr) Variable UniformConstant - 126: TypeImage 28(int) 3D sampled format:Unknown - 127: TypePointer UniformConstant 126 - 128(g_tTex3di4): 127(ptr) Variable UniformConstant - 129: TypeImage 45(int) 3D sampled format:Unknown - 130: TypePointer UniformConstant 129 - 131(g_tTex3du4): 130(ptr) Variable UniformConstant -132(PerVertex_out): TypeStruct 7(fvec4) - 133: TypePointer Output 132(PerVertex_out) -134(PerVertex_out): 133(ptr) Variable Output + 125(g_tTex3du4): 124(ptr) Variable UniformConstant +126(PerVertex_out): TypeStruct 7(fvec4) + 127: TypePointer Output 126(PerVertex_out) +128(PerVertex_out): 127(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 110:8(VS_OUTPUT) FunctionCall 10(@main() - 111: 7(fvec4) CompositeExtract 110 0 - Store 109(@entryPointOutput_Pos) 111 + 104:8(VS_OUTPUT) FunctionCall 10(@main() + 105: 7(fvec4) CompositeExtract 104 0 + Store 103(@entryPointOutput_Pos) 105 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 @@ -385,8 +380,7 @@ Shader version: 450 60(txval40): 12(ptr) Variable Function 71(txval41): 32(ptr) Variable Function 81(txval42): 47(ptr) Variable Function - 96(vsout): 95(ptr) Variable Function - 102: 101(ptr) Variable Function + 95(vsout): 94(ptr) Variable Function 17: 14 Load 16(g_tTex2df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 @@ -417,12 +411,8 @@ Shader version: 450 88: 87 SampledImage 85 86 93: 46(ivec4) ImageGather 88 92 29 Store 81(txval42) 93 - 99: 12(ptr) AccessChain 96(vsout) 29 - Store 99 98 - 100:94(VS_OUTPUT) Load 96(vsout) - 103: 7(fvec4) CompositeExtract 100 0 - 104: 12(ptr) AccessChain 102 29 - Store 104 103 - 105:8(VS_OUTPUT) Load 102 - ReturnValue 105 + 98: 12(ptr) AccessChain 95(vsout) 29 + Store 98 97 + 99:8(VS_OUTPUT) Load 95(vsout) + ReturnValue 99 FunctionEnd diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index 698a61ab..97671313 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.getdimensions.dx10.vert Shader version: 450 0:? Sequence -0:11 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:11 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence @@ -44,8 +44,8 @@ Shader version: 450 0:11 Sequence 0:11 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:11 Pos: direct index for structure (temp 4-component vector of float Position) -0:11 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:11 Pos: direct index for structure (temp 4-component vector of float) +0:11 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects @@ -59,7 +59,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:11 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:11 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:11 Function Parameters: 0:? Sequence 0:21 Sequence @@ -102,8 +102,8 @@ Shader version: 450 0:11 Sequence 0:11 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:11 Pos: direct index for structure (temp 4-component vector of float Position) -0:11 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:11 Pos: direct index for structure (temp 4-component vector of float) +0:11 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:11 Constant: 0:11 0 (const int) 0:? Linker Objects @@ -113,14 +113,14 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 57 +// Id's are bound by 51 Capability Shader Capability Sampled1D Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 48 56 + EntryPoint Vertex 4 "main" 42 50 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" @@ -130,22 +130,19 @@ Shader version: 450 Name 21 "WidthU" Name 23 "sizeQueryTemp" Name 28 "NumberOfLevelsU" - Name 31 "VS_OUTPUT" - MemberName 31(VS_OUTPUT) 0 "Pos" - Name 33 "vsout" - Name 48 "@entryPointOutput_Pos" - Name 53 "g_sSamp" - Name 54 "PerVertex_out" - MemberName 54(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 56 "PerVertex_out" - MemberDecorate 8(VS_OUTPUT) 0 BuiltIn Position + Name 32 "vsout" + Name 42 "@entryPointOutput_Pos" + Name 47 "g_sSamp" + Name 48 "PerVertex_out" + MemberName 48(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 50 "PerVertex_out" Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 17(g_tTex1df4) Binding 0 - Decorate 48(@entryPointOutput_Pos) BuiltIn Position - Decorate 53(g_sSamp) DescriptorSet 0 - Decorate 53(g_sSamp) Binding 0 - MemberDecorate 54(PerVertex_out) 0 BuiltIn Position - Decorate 54(PerVertex_out) Block + Decorate 42(@entryPointOutput_Pos) BuiltIn Position + Decorate 47(g_sSamp) DescriptorSet 0 + Decorate 47(g_sSamp) Binding 0 + MemberDecorate 48(PerVertex_out) 0 BuiltIn Position + Decorate 48(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -159,26 +156,24 @@ Shader version: 450 17(g_tTex1df4): 16(ptr) Variable UniformConstant 19: TypeInt 32 1 25: 12(int) Constant 6 - 31(VS_OUTPUT): TypeStruct 7(fvec4) - 32: TypePointer Function 31(VS_OUTPUT) - 34: 19(int) Constant 0 - 35: 6(float) Constant 0 - 36: 7(fvec4) ConstantComposite 35 35 35 35 - 37: TypePointer Function 7(fvec4) - 40: TypePointer Function 8(VS_OUTPUT) - 47: TypePointer Output 7(fvec4) -48(@entryPointOutput_Pos): 47(ptr) Variable Output - 51: TypeSampler - 52: TypePointer UniformConstant 51 - 53(g_sSamp): 52(ptr) Variable UniformConstant -54(PerVertex_out): TypeStruct 7(fvec4) - 55: TypePointer Output 54(PerVertex_out) -56(PerVertex_out): 55(ptr) Variable Output + 31: TypePointer Function 8(VS_OUTPUT) + 33: 19(int) Constant 0 + 34: 6(float) Constant 0 + 35: 7(fvec4) ConstantComposite 34 34 34 34 + 36: TypePointer Function 7(fvec4) + 41: TypePointer Output 7(fvec4) +42(@entryPointOutput_Pos): 41(ptr) Variable Output + 45: TypeSampler + 46: TypePointer UniformConstant 45 + 47(g_sSamp): 46(ptr) Variable UniformConstant +48(PerVertex_out): TypeStruct 7(fvec4) + 49: TypePointer Output 48(PerVertex_out) +50(PerVertex_out): 49(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 49:8(VS_OUTPUT) FunctionCall 10(@main() - 50: 7(fvec4) CompositeExtract 49 0 - Store 48(@entryPointOutput_Pos) 50 + 43:8(VS_OUTPUT) FunctionCall 10(@main() + 44: 7(fvec4) CompositeExtract 43 0 + Store 42(@entryPointOutput_Pos) 44 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 @@ -187,8 +182,7 @@ Shader version: 450 21(WidthU): 13(ptr) Variable Function 23(sizeQueryTemp): 13(ptr) Variable Function 28(NumberOfLevelsU): 13(ptr) Variable Function - 33(vsout): 32(ptr) Variable Function - 41: 40(ptr) Variable Function + 32(vsout): 31(ptr) Variable Function 18: 15 Load 17(g_tTex1df4) 20: 19(int) ImageQuerySize 18 Store 14(sizeQueryTemp) 20 @@ -202,12 +196,8 @@ Shader version: 450 29: 15 Load 17(g_tTex1df4) 30: 19(int) ImageQueryLevels 29 Store 28(NumberOfLevelsU) 30 - 38: 37(ptr) AccessChain 33(vsout) 34 - Store 38 36 - 39:31(VS_OUTPUT) Load 33(vsout) - 42: 7(fvec4) CompositeExtract 39 0 - 43: 37(ptr) AccessChain 41 34 - Store 43 42 - 44:8(VS_OUTPUT) Load 41 - ReturnValue 44 + 37: 36(ptr) AccessChain 32(vsout) 33 + Store 37 35 + 38:8(VS_OUTPUT) Load 32(vsout) + ReturnValue 38 FunctionEnd diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 17c9b334..b6adf012 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -20,8 +20,8 @@ gl_FragCoord origin is upper left 0:11 -1.000000 0:15 Function Definition: @main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: -0:15 'inpos' (noperspective in 4-component vector of float FragCoord) -0:15 'sampleMask' (out int SampleMaskIn) +0:15 'inpos' (in 4-component vector of float) +0:15 'sampleMask' (out int) 0:? Sequence 0:18 Sequence 0:18 move second child to first child (temp float) @@ -53,7 +53,7 @@ gl_FragCoord origin is upper left 0:22 Constant: 0:22 1 (const int) 0:22 direct index (temp float) -0:22 'inpos' (noperspective in 4-component vector of float FragCoord) +0:22 'inpos' (in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:24 Branch: Return with expression @@ -116,8 +116,8 @@ gl_FragCoord origin is upper left 0:11 -1.000000 0:15 Function Definition: @main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth}) 0:15 Function Parameters: -0:15 'inpos' (noperspective in 4-component vector of float FragCoord) -0:15 'sampleMask' (out int SampleMaskIn) +0:15 'inpos' (in 4-component vector of float) +0:15 'sampleMask' (out int) 0:? Sequence 0:18 Sequence 0:18 move second child to first child (temp float) @@ -149,7 +149,7 @@ gl_FragCoord origin is upper left 0:22 Constant: 0:22 1 (const int) 0:22 direct index (temp float) -0:22 'inpos' (noperspective in 4-component vector of float FragCoord) +0:22 'inpos' (in 4-component vector of float) 0:22 Constant: 0:22 3 (const int) 0:24 Branch: Return with expression diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index f6797ad8..a06d1e73 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.load.basic.dx10.vert Shader version: 450 0:? Sequence -0:47 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:47 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch (temp 4-component vector of float) @@ -193,8 +193,8 @@ Shader version: 450 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:47 Pos: direct index for structure (temp 4-component vector of float Position) -0:47 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:47 Pos: direct index for structure (temp 4-component vector of float) +0:47 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:47 Constant: 0:47 0 (const int) 0:? Linker Objects @@ -229,7 +229,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:47 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:47 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:47 Function Parameters: 0:? Sequence 0:51 textureFetch (temp 4-component vector of float) @@ -421,8 +421,8 @@ Shader version: 450 0:47 Sequence 0:47 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:47 Pos: direct index for structure (temp 4-component vector of float Position) -0:47 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:47 Pos: direct index for structure (temp 4-component vector of float) +0:47 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:47 Constant: 0:47 0 (const int) 0:? Linker Objects @@ -453,14 +453,14 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 180 +// Id's are bound by 174 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 135 179 + EntryPoint Vertex 4 "main" 129 173 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" @@ -484,27 +484,24 @@ Shader version: 450 Name 87 "g_tTex3df4" Name 100 "g_tTex3di4" Name 110 "g_tTex3du4" - Name 118 "VS_OUTPUT" - MemberName 118(VS_OUTPUT) 0 "Pos" - Name 120 "vsout" - Name 135 "@entryPointOutput_Pos" - Name 140 "g_sSamp" - Name 143 "g_tTexcdf4" - Name 146 "g_tTexcdi4" - Name 149 "g_tTexcdu4" - Name 152 "g_tTex1df4a" - Name 155 "g_tTex1di4a" - Name 158 "g_tTex1du4a" - Name 161 "g_tTex2df4a" - Name 164 "g_tTex2di4a" - Name 167 "g_tTex2du4a" - Name 170 "g_tTexcdf4a" - Name 173 "g_tTexcdi4a" - Name 176 "g_tTexcdu4a" - Name 177 "PerVertex_out" - MemberName 177(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 179 "PerVertex_out" - MemberDecorate 8(VS_OUTPUT) 0 BuiltIn Position + Name 119 "vsout" + Name 129 "@entryPointOutput_Pos" + Name 134 "g_sSamp" + Name 137 "g_tTexcdf4" + Name 140 "g_tTexcdi4" + Name 143 "g_tTexcdu4" + Name 146 "g_tTex1df4a" + Name 149 "g_tTex1di4a" + Name 152 "g_tTex1du4a" + Name 155 "g_tTex2df4a" + Name 158 "g_tTex2di4a" + Name 161 "g_tTex2du4a" + Name 164 "g_tTexcdf4a" + Name 167 "g_tTexcdi4a" + Name 170 "g_tTexcdu4a" + Name 171 "PerVertex_out" + MemberName 171(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 173 "PerVertex_out" Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 14(g_tTex1df4) Binding 0 MemberDecorate 20($Global) 0 Offset 0 @@ -525,23 +522,23 @@ Shader version: 450 Decorate 87(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) DescriptorSet 0 - Decorate 135(@entryPointOutput_Pos) BuiltIn Position - Decorate 140(g_sSamp) DescriptorSet 0 - Decorate 140(g_sSamp) Binding 0 - Decorate 143(g_tTexcdf4) DescriptorSet 0 - Decorate 146(g_tTexcdi4) DescriptorSet 0 - Decorate 149(g_tTexcdu4) DescriptorSet 0 - Decorate 152(g_tTex1df4a) DescriptorSet 0 - Decorate 155(g_tTex1di4a) DescriptorSet 0 - Decorate 158(g_tTex1du4a) DescriptorSet 0 - Decorate 161(g_tTex2df4a) DescriptorSet 0 - Decorate 164(g_tTex2di4a) DescriptorSet 0 - Decorate 167(g_tTex2du4a) DescriptorSet 0 - Decorate 170(g_tTexcdf4a) DescriptorSet 0 - Decorate 173(g_tTexcdi4a) DescriptorSet 0 - Decorate 176(g_tTexcdu4a) DescriptorSet 0 - MemberDecorate 177(PerVertex_out) 0 BuiltIn Position - Decorate 177(PerVertex_out) Block + Decorate 129(@entryPointOutput_Pos) BuiltIn Position + Decorate 134(g_sSamp) DescriptorSet 0 + Decorate 134(g_sSamp) Binding 0 + Decorate 137(g_tTexcdf4) DescriptorSet 0 + Decorate 140(g_tTexcdi4) DescriptorSet 0 + Decorate 143(g_tTexcdu4) DescriptorSet 0 + Decorate 146(g_tTex1df4a) DescriptorSet 0 + Decorate 149(g_tTex1di4a) DescriptorSet 0 + Decorate 152(g_tTex1du4a) DescriptorSet 0 + Decorate 155(g_tTex2df4a) DescriptorSet 0 + Decorate 158(g_tTex2di4a) DescriptorSet 0 + Decorate 161(g_tTex2du4a) DescriptorSet 0 + Decorate 164(g_tTexcdf4a) DescriptorSet 0 + Decorate 167(g_tTexcdi4a) DescriptorSet 0 + Decorate 170(g_tTexcdu4a) DescriptorSet 0 + MemberDecorate 171(PerVertex_out) 0 BuiltIn Position + Decorate 171(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -594,68 +591,65 @@ Shader version: 450 108: TypeImage 24(int) 3D sampled format:Unknown 109: TypePointer UniformConstant 108 110(g_tTex3du4): 109(ptr) Variable UniformConstant - 118(VS_OUTPUT): TypeStruct 7(fvec4) - 119: TypePointer Function 118(VS_OUTPUT) - 121: 16(int) Constant 0 - 122: 6(float) Constant 0 - 123: 7(fvec4) ConstantComposite 122 122 122 122 - 124: TypePointer Function 7(fvec4) - 127: TypePointer Function 8(VS_OUTPUT) - 134: TypePointer Output 7(fvec4) -135(@entryPointOutput_Pos): 134(ptr) Variable Output - 138: TypeSampler + 118: TypePointer Function 8(VS_OUTPUT) + 120: 16(int) Constant 0 + 121: 6(float) Constant 0 + 122: 7(fvec4) ConstantComposite 121 121 121 121 + 123: TypePointer Function 7(fvec4) + 128: TypePointer Output 7(fvec4) +129(@entryPointOutput_Pos): 128(ptr) Variable Output + 132: TypeSampler + 133: TypePointer UniformConstant 132 + 134(g_sSamp): 133(ptr) Variable UniformConstant + 135: TypeImage 6(float) Cube sampled format:Unknown + 136: TypePointer UniformConstant 135 + 137(g_tTexcdf4): 136(ptr) Variable UniformConstant + 138: TypeImage 16(int) Cube sampled format:Unknown 139: TypePointer UniformConstant 138 - 140(g_sSamp): 139(ptr) Variable UniformConstant - 141: TypeImage 6(float) Cube sampled format:Unknown + 140(g_tTexcdi4): 139(ptr) Variable UniformConstant + 141: TypeImage 24(int) Cube sampled format:Unknown 142: TypePointer UniformConstant 141 - 143(g_tTexcdf4): 142(ptr) Variable UniformConstant - 144: TypeImage 16(int) Cube sampled format:Unknown + 143(g_tTexcdu4): 142(ptr) Variable UniformConstant + 144: TypeImage 6(float) 1D array sampled format:Unknown 145: TypePointer UniformConstant 144 - 146(g_tTexcdi4): 145(ptr) Variable UniformConstant - 147: TypeImage 24(int) Cube sampled format:Unknown +146(g_tTex1df4a): 145(ptr) Variable UniformConstant + 147: TypeImage 16(int) 1D array sampled format:Unknown 148: TypePointer UniformConstant 147 - 149(g_tTexcdu4): 148(ptr) Variable UniformConstant - 150: TypeImage 6(float) 1D array sampled format:Unknown +149(g_tTex1di4a): 148(ptr) Variable UniformConstant + 150: TypeImage 24(int) 1D array sampled format:Unknown 151: TypePointer UniformConstant 150 -152(g_tTex1df4a): 151(ptr) Variable UniformConstant - 153: TypeImage 16(int) 1D array sampled format:Unknown +152(g_tTex1du4a): 151(ptr) Variable UniformConstant + 153: TypeImage 6(float) 2D array sampled format:Unknown 154: TypePointer UniformConstant 153 -155(g_tTex1di4a): 154(ptr) Variable UniformConstant - 156: TypeImage 24(int) 1D array sampled format:Unknown +155(g_tTex2df4a): 154(ptr) Variable UniformConstant + 156: TypeImage 16(int) 2D array sampled format:Unknown 157: TypePointer UniformConstant 156 -158(g_tTex1du4a): 157(ptr) Variable UniformConstant - 159: TypeImage 6(float) 2D array sampled format:Unknown +158(g_tTex2di4a): 157(ptr) Variable UniformConstant + 159: TypeImage 24(int) 2D array sampled format:Unknown 160: TypePointer UniformConstant 159 -161(g_tTex2df4a): 160(ptr) Variable UniformConstant - 162: TypeImage 16(int) 2D array sampled format:Unknown +161(g_tTex2du4a): 160(ptr) Variable UniformConstant + 162: TypeImage 6(float) Cube array sampled format:Unknown 163: TypePointer UniformConstant 162 -164(g_tTex2di4a): 163(ptr) Variable UniformConstant - 165: TypeImage 24(int) 2D array sampled format:Unknown +164(g_tTexcdf4a): 163(ptr) Variable UniformConstant + 165: TypeImage 16(int) Cube array sampled format:Unknown 166: TypePointer UniformConstant 165 -167(g_tTex2du4a): 166(ptr) Variable UniformConstant - 168: TypeImage 6(float) Cube array sampled format:Unknown +167(g_tTexcdi4a): 166(ptr) Variable UniformConstant + 168: TypeImage 24(int) Cube array sampled format:Unknown 169: TypePointer UniformConstant 168 -170(g_tTexcdf4a): 169(ptr) Variable UniformConstant - 171: TypeImage 16(int) Cube array sampled format:Unknown - 172: TypePointer UniformConstant 171 -173(g_tTexcdi4a): 172(ptr) Variable UniformConstant - 174: TypeImage 24(int) Cube array sampled format:Unknown - 175: TypePointer UniformConstant 174 -176(g_tTexcdu4a): 175(ptr) Variable UniformConstant -177(PerVertex_out): TypeStruct 7(fvec4) - 178: TypePointer Output 177(PerVertex_out) -179(PerVertex_out): 178(ptr) Variable Output +170(g_tTexcdu4a): 169(ptr) Variable UniformConstant +171(PerVertex_out): TypeStruct 7(fvec4) + 172: TypePointer Output 171(PerVertex_out) +173(PerVertex_out): 172(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 136:8(VS_OUTPUT) FunctionCall 10(@main() - 137: 7(fvec4) CompositeExtract 136 0 - Store 135(@entryPointOutput_Pos) 137 + 130:8(VS_OUTPUT) FunctionCall 10(@main() + 131: 7(fvec4) CompositeExtract 130 0 + Store 129(@entryPointOutput_Pos) 131 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 11: Label - 120(vsout): 119(ptr) Variable Function - 128: 127(ptr) Variable Function + 119(vsout): 118(ptr) Variable Function 15: 12 Load 14(g_tTex1df4) 27: 26(ptr) AccessChain 22 23 25 28: 16(int) Load 27 @@ -716,12 +710,8 @@ Shader version: 450 115: 26(ptr) AccessChain 22 89 94 116: 16(int) Load 115 117: 50(ivec4) ImageFetch 111 114 Lod 116 - 125: 124(ptr) AccessChain 120(vsout) 121 - Store 125 123 - 126:118(VS_OUTPUT) Load 120(vsout) - 129: 7(fvec4) CompositeExtract 126 0 - 130: 124(ptr) AccessChain 128 121 - Store 130 129 - 131:8(VS_OUTPUT) Load 128 - ReturnValue 131 + 124: 123(ptr) AccessChain 119(vsout) 120 + Store 124 122 + 125:8(VS_OUTPUT) Load 119(vsout) + ReturnValue 125 FunctionEnd diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index 6af474c9..45ec34eb 100755 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -10,13 +10,13 @@ Shader version: 450 0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) -0:9 Function Definition: @RealEntrypoint(u1; (temp 4-component vector of float Position) +0:9 Function Definition: @RealEntrypoint(u1; (temp 4-component vector of float) 0:9 Function Parameters: -0:9 'Index' (in uint VertexIndex) +0:9 'Index' (in uint) 0:? Sequence 0:10 Branch: Return with expression 0:10 Function Call: FakeEntrypoint(u1; (temp 4-component vector of float) -0:10 'Index' (in uint VertexIndex) +0:10 'Index' (in uint) 0:9 Function Definition: RealEntrypoint( (temp void) 0:9 Function Parameters: 0:? Sequence @@ -25,7 +25,7 @@ Shader version: 450 0:? 'Index' (in uint VertexIndex) 0:9 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (out 4-component vector of float Position) -0:9 Function Call: @RealEntrypoint(u1; (temp 4-component vector of float Position) +0:9 Function Call: @RealEntrypoint(u1; (temp 4-component vector of float) 0:? 'Index' (temp uint) 0:? Linker Objects 0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) @@ -47,13 +47,13 @@ Shader version: 450 0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) 0:5 Convert uint to int (temp int) 0:5 'Index' (in uint) -0:9 Function Definition: @RealEntrypoint(u1; (temp 4-component vector of float Position) +0:9 Function Definition: @RealEntrypoint(u1; (temp 4-component vector of float) 0:9 Function Parameters: -0:9 'Index' (in uint VertexIndex) +0:9 'Index' (in uint) 0:? Sequence 0:10 Branch: Return with expression 0:10 Function Call: FakeEntrypoint(u1; (temp 4-component vector of float) -0:10 'Index' (in uint VertexIndex) +0:10 'Index' (in uint) 0:9 Function Definition: RealEntrypoint( (temp void) 0:9 Function Parameters: 0:? Sequence @@ -62,7 +62,7 @@ Shader version: 450 0:? 'Index' (in uint VertexIndex) 0:9 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (out 4-component vector of float Position) -0:9 Function Call: @RealEntrypoint(u1; (temp 4-component vector of float Position) +0:9 Function Call: @RealEntrypoint(u1; (temp 4-component vector of float) 0:? 'Index' (temp uint) 0:? Linker Objects 0:? 'Position' (layout(rgba32f ) uniform samplerBuffer) diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out index fbc58dbc..fbad7d72 100644 --- a/Test/baseResults/hlsl.numthreads.comp.out +++ b/Test/baseResults/hlsl.numthreads.comp.out @@ -7,7 +7,7 @@ local_size = (4, 4, 2) 0:4 'tid' (in 3-component vector of uint) 0:9 Function Definition: @main_aux1(vu3; (temp void) 0:9 Function Parameters: -0:9 'tid' (in 3-component vector of uint GlobalInvocationID) +0:9 'tid' (in 3-component vector of uint) 0:9 Function Definition: main_aux1( (temp void) 0:9 Function Parameters: 0:? Sequence @@ -31,7 +31,7 @@ local_size = (4, 4, 2) 0:4 'tid' (in 3-component vector of uint) 0:9 Function Definition: @main_aux1(vu3; (temp void) 0:9 Function Parameters: -0:9 'tid' (in 3-component vector of uint GlobalInvocationID) +0:9 'tid' (in 3-component vector of uint) 0:9 Function Definition: main_aux1( (temp void) 0:9 Function Parameters: 0:? Sequence diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index 90de6890..06c202d6 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.samplegrad.basic.dx10.vert Shader version: 450 0:? Sequence -0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -223,8 +223,8 @@ Shader version: 450 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:27 Pos: direct index for structure (temp 4-component vector of float Position) -0:27 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Pos: direct index for structure (temp 4-component vector of float) +0:27 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects @@ -250,7 +250,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -472,8 +472,8 @@ Shader version: 450 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:27 Pos: direct index for structure (temp 4-component vector of float Position) -0:27 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Pos: direct index for structure (temp 4-component vector of float) +0:27 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects @@ -495,13 +495,13 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 175 +// Id's are bound by 169 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 168 174 + EntryPoint Vertex 4 "main" 162 168 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" @@ -531,15 +531,12 @@ Shader version: 450 Name 137 "g_tTexcdi4" Name 143 "txval42" Name 146 "g_tTexcdu4" - Name 152 "VS_OUTPUT" - MemberName 152(VS_OUTPUT) 0 "Pos" - Name 154 "vsout" - Name 168 "@entryPointOutput_Pos" - Name 171 "g_tTex1df4a" - Name 172 "PerVertex_out" - MemberName 172(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 174 "PerVertex_out" - MemberDecorate 8(VS_OUTPUT) 0 BuiltIn Position + Name 153 "vsout" + Name 162 "@entryPointOutput_Pos" + Name 165 "g_tTex1df4a" + Name 166 "PerVertex_out" + MemberName 166(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 168 "PerVertex_out" Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 @@ -555,11 +552,11 @@ Shader version: 450 Decorate 128(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 146(g_tTexcdu4) DescriptorSet 0 - Decorate 168(@entryPointOutput_Pos) BuiltIn Position - Decorate 171(g_tTex1df4a) DescriptorSet 0 - Decorate 171(g_tTex1df4a) Binding 1 - MemberDecorate 172(PerVertex_out) 0 BuiltIn Position - Decorate 172(PerVertex_out) Block + Decorate 162(@entryPointOutput_Pos) BuiltIn Position + Decorate 165(g_tTex1df4a) DescriptorSet 0 + Decorate 165(g_tTex1df4a) Binding 1 + MemberDecorate 166(PerVertex_out) 0 BuiltIn Position + Decorate 166(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -646,23 +643,21 @@ Shader version: 450 145: TypePointer UniformConstant 144 146(g_tTexcdu4): 145(ptr) Variable UniformConstant 149: TypeSampledImage 144 - 152(VS_OUTPUT): TypeStruct 7(fvec4) - 153: TypePointer Function 152(VS_OUTPUT) - 155: 28(int) Constant 0 - 156: 6(float) Constant 0 - 157: 7(fvec4) ConstantComposite 156 156 156 156 - 160: TypePointer Function 8(VS_OUTPUT) - 167: TypePointer Output 7(fvec4) -168(@entryPointOutput_Pos): 167(ptr) Variable Output -171(g_tTex1df4a): 15(ptr) Variable UniformConstant -172(PerVertex_out): TypeStruct 7(fvec4) - 173: TypePointer Output 172(PerVertex_out) -174(PerVertex_out): 173(ptr) Variable Output + 152: TypePointer Function 8(VS_OUTPUT) + 154: 28(int) Constant 0 + 155: 6(float) Constant 0 + 156: 7(fvec4) ConstantComposite 155 155 155 155 + 161: TypePointer Output 7(fvec4) +162(@entryPointOutput_Pos): 161(ptr) Variable Output +165(g_tTex1df4a): 15(ptr) Variable UniformConstant +166(PerVertex_out): TypeStruct 7(fvec4) + 167: TypePointer Output 166(PerVertex_out) +168(PerVertex_out): 167(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 169:8(VS_OUTPUT) FunctionCall 10(@main() - 170: 7(fvec4) CompositeExtract 169 0 - Store 168(@entryPointOutput_Pos) 170 + 163:8(VS_OUTPUT) FunctionCall 10(@main() + 164: 7(fvec4) CompositeExtract 163 0 + Store 162(@entryPointOutput_Pos) 164 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 @@ -679,8 +674,7 @@ Shader version: 450 125(txval40): 12(ptr) Variable Function 134(txval41): 30(ptr) Variable Function 143(txval42): 43(ptr) Variable Function - 154(vsout): 153(ptr) Variable Function - 161: 160(ptr) Variable Function + 153(vsout): 152(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 @@ -741,12 +735,8 @@ Shader version: 450 150: 149 SampledImage 147 148 151: 42(ivec4) ImageSampleExplicitLod 150 123 Grad 100 100 Store 143(txval42) 151 - 158: 12(ptr) AccessChain 154(vsout) 155 - Store 158 157 - 159:152(VS_OUTPUT) Load 154(vsout) - 162: 7(fvec4) CompositeExtract 159 0 - 163: 12(ptr) AccessChain 161 155 - Store 163 162 - 164:8(VS_OUTPUT) Load 161 - ReturnValue 164 + 157: 12(ptr) AccessChain 153(vsout) 154 + Store 157 156 + 158:8(VS_OUTPUT) Load 153(vsout) + ReturnValue 158 FunctionEnd diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index bb88c221..dd3bddbc 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -1,7 +1,7 @@ hlsl.samplelevel.basic.dx10.vert Shader version: 450 0:? Sequence -0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -169,8 +169,8 @@ Shader version: 450 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:27 Pos: direct index for structure (temp 4-component vector of float Position) -0:27 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Pos: direct index for structure (temp 4-component vector of float) +0:27 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects @@ -196,7 +196,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Function Definition: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Function Parameters: 0:? Sequence 0:30 Sequence @@ -364,8 +364,8 @@ Shader version: 450 0:27 Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:27 Pos: direct index for structure (temp 4-component vector of float Position) -0:27 Function Call: @main( (temp structure{temp 4-component vector of float Position Pos}) +0:27 Pos: direct index for structure (temp 4-component vector of float) +0:27 Function Call: @main( (temp structure{temp 4-component vector of float Pos}) 0:27 Constant: 0:27 0 (const int) 0:? Linker Objects @@ -387,13 +387,13 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 171 +// Id's are bound by 165 Capability Shader Capability Sampled1D 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 164 170 + EntryPoint Vertex 4 "main" 158 164 Name 4 "main" Name 8 "VS_OUTPUT" MemberName 8(VS_OUTPUT) 0 "Pos" @@ -423,15 +423,12 @@ Shader version: 450 Name 133 "g_tTexcdi4" Name 139 "txval42" Name 142 "g_tTexcdu4" - Name 148 "VS_OUTPUT" - MemberName 148(VS_OUTPUT) 0 "Pos" - Name 150 "vsout" - Name 164 "@entryPointOutput_Pos" - Name 167 "g_tTex1df4a" - Name 168 "PerVertex_out" - MemberName 168(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 170 "PerVertex_out" - MemberDecorate 8(VS_OUTPUT) 0 BuiltIn Position + Name 149 "vsout" + Name 158 "@entryPointOutput_Pos" + Name 161 "g_tTex1df4a" + Name 162 "PerVertex_out" + MemberName 162(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 164 "PerVertex_out" Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 Decorate 20(g_sSamp) DescriptorSet 0 @@ -447,11 +444,11 @@ Shader version: 450 Decorate 124(g_tTexcdf4) DescriptorSet 0 Decorate 133(g_tTexcdi4) DescriptorSet 0 Decorate 142(g_tTexcdu4) DescriptorSet 0 - Decorate 164(@entryPointOutput_Pos) BuiltIn Position - Decorate 167(g_tTex1df4a) DescriptorSet 0 - Decorate 167(g_tTex1df4a) Binding 1 - MemberDecorate 168(PerVertex_out) 0 BuiltIn Position - Decorate 168(PerVertex_out) Block + Decorate 158(@entryPointOutput_Pos) BuiltIn Position + Decorate 161(g_tTex1df4a) DescriptorSet 0 + Decorate 161(g_tTex1df4a) Binding 1 + MemberDecorate 162(PerVertex_out) 0 BuiltIn Position + Decorate 162(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -534,23 +531,21 @@ Shader version: 450 141: TypePointer UniformConstant 140 142(g_tTexcdu4): 141(ptr) Variable UniformConstant 145: TypeSampledImage 140 - 148(VS_OUTPUT): TypeStruct 7(fvec4) - 149: TypePointer Function 148(VS_OUTPUT) - 151: 27(int) Constant 0 - 152: 6(float) Constant 0 - 153: 7(fvec4) ConstantComposite 152 152 152 152 - 156: TypePointer Function 8(VS_OUTPUT) - 163: TypePointer Output 7(fvec4) -164(@entryPointOutput_Pos): 163(ptr) Variable Output -167(g_tTex1df4a): 15(ptr) Variable UniformConstant -168(PerVertex_out): TypeStruct 7(fvec4) - 169: TypePointer Output 168(PerVertex_out) -170(PerVertex_out): 169(ptr) Variable Output + 148: TypePointer Function 8(VS_OUTPUT) + 150: 27(int) Constant 0 + 151: 6(float) Constant 0 + 152: 7(fvec4) ConstantComposite 151 151 151 151 + 157: TypePointer Output 7(fvec4) +158(@entryPointOutput_Pos): 157(ptr) Variable Output +161(g_tTex1df4a): 15(ptr) Variable UniformConstant +162(PerVertex_out): TypeStruct 7(fvec4) + 163: TypePointer Output 162(PerVertex_out) +164(PerVertex_out): 163(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 165:8(VS_OUTPUT) FunctionCall 10(@main() - 166: 7(fvec4) CompositeExtract 165 0 - Store 164(@entryPointOutput_Pos) 166 + 159:8(VS_OUTPUT) FunctionCall 10(@main() + 160: 7(fvec4) CompositeExtract 159 0 + Store 158(@entryPointOutput_Pos) 160 Return FunctionEnd 10(@main():8(VS_OUTPUT) Function None 9 @@ -567,8 +562,7 @@ Shader version: 450 121(txval40): 12(ptr) Variable Function 130(txval41): 29(ptr) Variable Function 139(txval42): 42(ptr) Variable Function - 150(vsout): 149(ptr) Variable Function - 157: 156(ptr) Variable Function + 149(vsout): 148(ptr) Variable Function 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 @@ -629,12 +623,8 @@ Shader version: 450 146: 145 SampledImage 143 144 147: 41(ivec4) ImageSampleExplicitLod 146 119 Lod 25 Store 139(txval42) 147 - 154: 12(ptr) AccessChain 150(vsout) 151 - Store 154 153 - 155:148(VS_OUTPUT) Load 150(vsout) - 158: 7(fvec4) CompositeExtract 155 0 - 159: 12(ptr) AccessChain 157 151 - Store 159 158 - 160:8(VS_OUTPUT) Load 157 - ReturnValue 160 + 153: 12(ptr) AccessChain 149(vsout) 150 + Store 153 152 + 154:8(VS_OUTPUT) Load 149(vsout) + ReturnValue 154 FunctionEnd diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 3a3ea8c9..e4aa492d 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -9,7 +9,7 @@ gl_FragCoord origin is upper left 0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:34 Function Parameters: 0:34 'input' (in 4-component vector of float) -0:34 's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Sequence 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) @@ -19,8 +19,8 @@ gl_FragCoord origin is upper left 0:40 's2' (global structure{temp 4-component vector of float i}) 0:40 Constant: 0:40 0 (const int) -0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) -0:40 's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:40 ff4: direct index for structure (temp 4-component vector of float) +0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 7 (const int) 0:42 Branch: Return with expression @@ -33,8 +33,8 @@ gl_FragCoord origin is upper left 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) -0:34 a: direct index for structure (smooth temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 a: direct index for structure (temp 4-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 0 (const int) 0:34 a: direct index for structure (smooth temp 4-component vector of float) @@ -42,8 +42,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 0 (const int) 0:34 move second child to first child (temp bool) -0:34 b: direct index for structure (flat temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 b: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 1 (const int) 0:34 b: direct index for structure (flat temp bool) @@ -51,8 +51,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 1 (const int) 0:34 move second child to first child (temp 1-component vector of float) -0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 c: direct index for structure (temp 1-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 2 (const int) 0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) @@ -60,8 +60,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 2 (const int) 0:34 move second child to first child (temp 2-component vector of float) -0:34 d: direct index for structure (centroid sample temp 2-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 d: direct index for structure (temp 2-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 3 (const int) 0:34 d: direct index for structure (centroid sample temp 2-component vector of float) @@ -69,14 +69,14 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 3 (const int) 0:34 move second child to first child (temp bool) -0:34 ff1: direct index for structure (temp bool Face) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff1: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 4 (const int) 0:? 's_ff1' (in bool Face) 0:34 move second child to first child (temp bool) -0:34 ff2: direct index for structure (layout(offset=4 ) temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff2: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 5 (const int) 0:34 ff2: direct index for structure (layout(offset=4 ) temp bool) @@ -84,8 +84,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 4 (const int) 0:34 move second child to first child (temp bool) -0:34 ff3: direct index for structure (layout(binding=0 offset=4 ) temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff3: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 6 (const int) 0:34 ff3: direct index for structure (layout(binding=0 offset=4 ) temp bool) @@ -93,8 +93,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 5 (const int) 0:34 move second child to first child (temp 4-component vector of float) -0:34 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff4: direct index for structure (temp 4-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 7 (const int) 0:34 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) @@ -105,7 +105,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects 0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:34 Function Parameters: 0:34 'input' (in 4-component vector of float) -0:34 's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Sequence 0:39 Compare Equal (temp bool) 0:39 's3' (temp structure{temp 3-component vector of bool b3}) @@ -134,8 +134,8 @@ gl_FragCoord origin is upper left 0:40 's2' (global structure{temp 4-component vector of float i}) 0:40 Constant: 0:40 0 (const int) -0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) -0:40 's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:40 ff4: direct index for structure (temp 4-component vector of float) +0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 Constant: 0:40 7 (const int) 0:42 Branch: Return with expression @@ -148,8 +148,8 @@ gl_FragCoord origin is upper left 0:? 'input' (layout(location=0 ) in 4-component vector of float) 0:34 Sequence 0:34 move second child to first child (temp 4-component vector of float) -0:34 a: direct index for structure (smooth temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 a: direct index for structure (temp 4-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 0 (const int) 0:34 a: direct index for structure (smooth temp 4-component vector of float) @@ -157,8 +157,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 0 (const int) 0:34 move second child to first child (temp bool) -0:34 b: direct index for structure (flat temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 b: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 1 (const int) 0:34 b: direct index for structure (flat temp bool) @@ -166,8 +166,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 1 (const int) 0:34 move second child to first child (temp 1-component vector of float) -0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 c: direct index for structure (temp 1-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 2 (const int) 0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) @@ -175,8 +175,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 2 (const int) 0:34 move second child to first child (temp 2-component vector of float) -0:34 d: direct index for structure (centroid sample temp 2-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 d: direct index for structure (temp 2-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 3 (const int) 0:34 d: direct index for structure (centroid sample temp 2-component vector of float) @@ -184,14 +184,14 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 3 (const int) 0:34 move second child to first child (temp bool) -0:34 ff1: direct index for structure (temp bool Face) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff1: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 4 (const int) 0:? 's_ff1' (in bool Face) 0:34 move second child to first child (temp bool) -0:34 ff2: direct index for structure (layout(offset=4 ) temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff2: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 5 (const int) 0:34 ff2: direct index for structure (layout(offset=4 ) temp bool) @@ -199,8 +199,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 4 (const int) 0:34 move second child to first child (temp bool) -0:34 ff3: direct index for structure (layout(binding=0 offset=4 ) temp bool) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff3: direct index for structure (temp bool) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 6 (const int) 0:34 ff3: direct index for structure (layout(binding=0 offset=4 ) temp bool) @@ -208,8 +208,8 @@ gl_FragCoord origin is upper left 0:34 Constant: 0:34 5 (const int) 0:34 move second child to first child (temp 4-component vector of float) -0:34 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:34 ff4: direct index for structure (temp 4-component vector of float) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:34 Constant: 0:34 7 (const int) 0:34 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) @@ -220,7 +220,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) -0:? 's' (temp structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) +0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects 0:? 's2' (global structure{temp 4-component vector of float i}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) @@ -283,7 +283,6 @@ gl_FragCoord origin is upper left MemberName 94($Global) 1 "ff5" MemberName 94($Global) 2 "ff6" Name 96 "" - MemberDecorate 11(IN_S) 4 BuiltIn FrontFacing Decorate 43(input) Location 0 Decorate 48(s) Location 1 Decorate 71(s_ff1) BuiltIn FrontFacing diff --git a/Test/baseResults/hlsl.struct.split-1.vert.out b/Test/baseResults/hlsl.struct.split-1.vert.out index cb8b3e39..f3b2a5ee 100644 --- a/Test/baseResults/hlsl.struct.split-1.vert.out +++ b/Test/baseResults/hlsl.struct.split-1.vert.out @@ -1,10 +1,10 @@ hlsl.struct.split-1.vert Shader version: 450 0:? Sequence -0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Parameters: 0:17 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) -0:17 'Pos_loose' (in 4-component vector of float Position) +0:17 'Pos_loose' (in 4-component vector of float) 0:? Sequence 0:20 move second child to first child (temp int) 0:20 x0_out: direct index for structure (temp int) @@ -25,7 +25,7 @@ Shader version: 450 0:21 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:21 Constant: 0:21 1 (const int) -0:21 'Pos_loose' (in 4-component vector of float Position) +0:21 'Pos_loose' (in 4-component vector of float) 0:22 move second child to first child (temp int) 0:22 x1_out: direct index for structure (temp int) 0:22 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) @@ -63,9 +63,9 @@ Shader version: 450 0:? 'Pos_loose' (temp 4-component vector of float) 0:? 'Pos_loose' (in 4-component vector of float Position) 0:17 Sequence -0:17 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? 'Pos_loose' (temp 4-component vector of float) 0:17 move second child to first child (temp int) @@ -74,13 +74,13 @@ Shader version: 450 0:17 Constant: 0:17 0 (const int) 0:17 x0_out: direct index for structure (temp int) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position) -0:17 Pos_out: direct index for structure (temp 4-component vector of float Position) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 Pos_out: direct index for structure (temp 4-component vector of float) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 1 (const int) 0:17 move second child to first child (temp int) @@ -89,7 +89,7 @@ Shader version: 450 0:17 Constant: 0:17 1 (const int) 0:17 x1_out: direct index for structure (temp int) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 2 (const int) 0:? Linker Objects @@ -106,10 +106,10 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Function Parameters: 0:17 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) -0:17 'Pos_loose' (in 4-component vector of float Position) +0:17 'Pos_loose' (in 4-component vector of float) 0:? Sequence 0:20 move second child to first child (temp int) 0:20 x0_out: direct index for structure (temp int) @@ -130,7 +130,7 @@ Shader version: 450 0:21 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:21 Constant: 0:21 1 (const int) -0:21 'Pos_loose' (in 4-component vector of float Position) +0:21 'Pos_loose' (in 4-component vector of float) 0:22 move second child to first child (temp int) 0:22 x1_out: direct index for structure (temp int) 0:22 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) @@ -168,9 +168,9 @@ Shader version: 450 0:? 'Pos_loose' (temp 4-component vector of float) 0:? 'Pos_loose' (in 4-component vector of float Position) 0:17 Sequence -0:17 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:17 Function Call: @main(struct-VS_INPUT-i1-vf4-i11;vf4; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? 'Pos_loose' (temp 4-component vector of float) 0:17 move second child to first child (temp int) @@ -179,13 +179,13 @@ Shader version: 450 0:17 Constant: 0:17 0 (const int) 0:17 x0_out: direct index for structure (temp int) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 0 (const int) 0:17 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position) -0:17 Pos_out: direct index for structure (temp 4-component vector of float Position) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 Pos_out: direct index for structure (temp 4-component vector of float) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 1 (const int) 0:17 move second child to first child (temp int) @@ -194,7 +194,7 @@ Shader version: 450 0:17 Constant: 0:17 1 (const int) 0:17 x1_out: direct index for structure (temp int) -0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:17 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:17 Constant: 0:17 2 (const int) 0:? Linker Objects @@ -207,12 +207,12 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 86 +// Id's are bound by 76 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 50 54 57 61 71 77 85 + EntryPoint Vertex 4 "main" 40 44 47 51 61 67 75 Name 4 "main" Name 9 "VS_INPUT" MemberName 9(VS_INPUT) 0 "x0_in" @@ -225,37 +225,32 @@ Shader version: 450 Name 16 "@main(struct-VS_INPUT-i1-vf4-i11;vf4;" Name 14 "vsin" Name 15 "Pos_loose" - Name 18 "VS_OUTPUT" - MemberName 18(VS_OUTPUT) 0 "x0_out" - MemberName 18(VS_OUTPUT) 1 "Pos_out" - MemberName 18(VS_OUTPUT) 2 "x1_out" - Name 20 "vsout" - Name 48 "vsin" - Name 50 "x0_in" - Name 54 "Pos_in" - Name 57 "x1_in" - Name 60 "Pos_loose" - Name 61 "Pos_loose" - Name 63 "flattenTemp" - Name 64 "param" - Name 66 "param" - Name 69 "VS_OUTPUT" - MemberName 69(VS_OUTPUT) 0 "x0_out" - MemberName 69(VS_OUTPUT) 1 "x1_out" - Name 71 "@entryPointOutput" - Name 77 "@entryPointOutput_Pos_out" - Name 83 "PerVertex_out" - MemberName 83(PerVertex_out) 0 "@entryPointOutput_Pos_out" - Name 85 "PerVertex_out" - MemberDecorate 12(VS_OUTPUT) 1 BuiltIn Position - Decorate 50(x0_in) Location 0 - Decorate 54(Pos_in) BuiltIn Position - Decorate 57(x1_in) Location 1 - Decorate 61(Pos_loose) BuiltIn Position - Decorate 71(@entryPointOutput) Location 0 - Decorate 77(@entryPointOutput_Pos_out) BuiltIn Position - MemberDecorate 83(PerVertex_out) 0 BuiltIn Position - Decorate 83(PerVertex_out) Block + Name 19 "vsout" + Name 38 "vsin" + Name 40 "x0_in" + Name 44 "Pos_in" + Name 47 "x1_in" + Name 50 "Pos_loose" + Name 51 "Pos_loose" + Name 53 "flattenTemp" + Name 54 "param" + Name 56 "param" + Name 59 "VS_OUTPUT" + MemberName 59(VS_OUTPUT) 0 "x0_out" + MemberName 59(VS_OUTPUT) 1 "x1_out" + Name 61 "@entryPointOutput" + Name 67 "@entryPointOutput_Pos_out" + Name 73 "PerVertex_out" + MemberName 73(PerVertex_out) 0 "@entryPointOutput_Pos_out" + Name 75 "PerVertex_out" + Decorate 40(x0_in) Location 0 + Decorate 44(Pos_in) BuiltIn Position + Decorate 47(x1_in) Location 1 + Decorate 51(Pos_loose) BuiltIn Position + Decorate 61(@entryPointOutput) Location 0 + Decorate 67(@entryPointOutput_Pos_out) BuiltIn Position + MemberDecorate 73(PerVertex_out) 0 BuiltIn Position + Decorate 73(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -266,95 +261,82 @@ Shader version: 450 11: TypePointer Function 8(fvec4) 12(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) 13: TypeFunction 12(VS_OUTPUT) 10(ptr) 11(ptr) - 18(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) - 19: TypePointer Function 18(VS_OUTPUT) - 21: 6(int) Constant 0 - 22: TypePointer Function 6(int) - 26: 6(int) Constant 1 - 32: 6(int) Constant 2 - 37: TypePointer Function 12(VS_OUTPUT) - 49: TypePointer Input 6(int) - 50(x0_in): 49(ptr) Variable Input - 53: TypePointer Input 8(fvec4) - 54(Pos_in): 53(ptr) Variable Input - 57(x1_in): 49(ptr) Variable Input - 61(Pos_loose): 53(ptr) Variable Input - 69(VS_OUTPUT): TypeStruct 6(int) 6(int) - 70: TypePointer Output 69(VS_OUTPUT) -71(@entryPointOutput): 70(ptr) Variable Output - 74: TypePointer Output 6(int) - 76: TypePointer Output 8(fvec4) -77(@entryPointOutput_Pos_out): 76(ptr) Variable Output -83(PerVertex_out): TypeStruct 8(fvec4) - 84: TypePointer Output 83(PerVertex_out) -85(PerVertex_out): 84(ptr) Variable Output + 18: TypePointer Function 12(VS_OUTPUT) + 20: 6(int) Constant 0 + 21: TypePointer Function 6(int) + 25: 6(int) Constant 1 + 31: 6(int) Constant 2 + 39: TypePointer Input 6(int) + 40(x0_in): 39(ptr) Variable Input + 43: TypePointer Input 8(fvec4) + 44(Pos_in): 43(ptr) Variable Input + 47(x1_in): 39(ptr) Variable Input + 51(Pos_loose): 43(ptr) Variable Input + 59(VS_OUTPUT): TypeStruct 6(int) 6(int) + 60: TypePointer Output 59(VS_OUTPUT) +61(@entryPointOutput): 60(ptr) Variable Output + 64: TypePointer Output 6(int) + 66: TypePointer Output 8(fvec4) +67(@entryPointOutput_Pos_out): 66(ptr) Variable Output +73(PerVertex_out): TypeStruct 8(fvec4) + 74: TypePointer Output 73(PerVertex_out) +75(PerVertex_out): 74(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 48(vsin): 10(ptr) Variable Function - 60(Pos_loose): 11(ptr) Variable Function - 63(flattenTemp): 37(ptr) Variable Function - 64(param): 10(ptr) Variable Function - 66(param): 11(ptr) Variable Function - 51: 6(int) Load 50(x0_in) - 52: 22(ptr) AccessChain 48(vsin) 21 - Store 52 51 - 55: 8(fvec4) Load 54(Pos_in) - 56: 11(ptr) AccessChain 48(vsin) 26 - Store 56 55 - 58: 6(int) Load 57(x1_in) - 59: 22(ptr) AccessChain 48(vsin) 32 - Store 59 58 - 62: 8(fvec4) Load 61(Pos_loose) - Store 60(Pos_loose) 62 - 65: 9(VS_INPUT) Load 48(vsin) - Store 64(param) 65 - 67: 8(fvec4) Load 60(Pos_loose) - Store 66(param) 67 - 68:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 64(param) 66(param) - Store 63(flattenTemp) 68 - 72: 22(ptr) AccessChain 63(flattenTemp) 21 - 73: 6(int) Load 72 - 75: 74(ptr) AccessChain 71(@entryPointOutput) 21 - Store 75 73 - 78: 11(ptr) AccessChain 63(flattenTemp) 26 - 79: 8(fvec4) Load 78 - Store 77(@entryPointOutput_Pos_out) 79 - 80: 22(ptr) AccessChain 63(flattenTemp) 32 - 81: 6(int) Load 80 - 82: 74(ptr) AccessChain 71(@entryPointOutput) 26 - Store 82 81 + 38(vsin): 10(ptr) Variable Function + 50(Pos_loose): 11(ptr) Variable Function + 53(flattenTemp): 18(ptr) Variable Function + 54(param): 10(ptr) Variable Function + 56(param): 11(ptr) Variable Function + 41: 6(int) Load 40(x0_in) + 42: 21(ptr) AccessChain 38(vsin) 20 + Store 42 41 + 45: 8(fvec4) Load 44(Pos_in) + 46: 11(ptr) AccessChain 38(vsin) 25 + Store 46 45 + 48: 6(int) Load 47(x1_in) + 49: 21(ptr) AccessChain 38(vsin) 31 + Store 49 48 + 52: 8(fvec4) Load 51(Pos_loose) + Store 50(Pos_loose) 52 + 55: 9(VS_INPUT) Load 38(vsin) + Store 54(param) 55 + 57: 8(fvec4) Load 50(Pos_loose) + Store 56(param) 57 + 58:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 54(param) 56(param) + Store 53(flattenTemp) 58 + 62: 21(ptr) AccessChain 53(flattenTemp) 20 + 63: 6(int) Load 62 + 65: 64(ptr) AccessChain 61(@entryPointOutput) 20 + Store 65 63 + 68: 11(ptr) AccessChain 53(flattenTemp) 25 + 69: 8(fvec4) Load 68 + Store 67(@entryPointOutput_Pos_out) 69 + 70: 21(ptr) AccessChain 53(flattenTemp) 31 + 71: 6(int) Load 70 + 72: 64(ptr) AccessChain 61(@entryPointOutput) 25 + Store 72 71 Return FunctionEnd 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;):12(VS_OUTPUT) Function None 13 14(vsin): 10(ptr) FunctionParameter 15(Pos_loose): 11(ptr) FunctionParameter 17: Label - 20(vsout): 19(ptr) Variable Function - 38: 37(ptr) Variable Function - 23: 22(ptr) AccessChain 14(vsin) 21 - 24: 6(int) Load 23 - 25: 22(ptr) AccessChain 20(vsout) 21 - Store 25 24 - 27: 11(ptr) AccessChain 14(vsin) 26 - 28: 8(fvec4) Load 27 - 29: 8(fvec4) Load 15(Pos_loose) - 30: 8(fvec4) FAdd 28 29 - 31: 11(ptr) AccessChain 20(vsout) 26 - Store 31 30 - 33: 22(ptr) AccessChain 14(vsin) 32 - 34: 6(int) Load 33 - 35: 22(ptr) AccessChain 20(vsout) 32 - Store 35 34 - 36:18(VS_OUTPUT) Load 20(vsout) - 39: 6(int) CompositeExtract 36 0 - 40: 22(ptr) AccessChain 38 21 - Store 40 39 - 41: 8(fvec4) CompositeExtract 36 1 - 42: 11(ptr) AccessChain 38 26 - Store 42 41 - 43: 6(int) CompositeExtract 36 2 - 44: 22(ptr) AccessChain 38 32 - Store 44 43 - 45:12(VS_OUTPUT) Load 38 - ReturnValue 45 + 19(vsout): 18(ptr) Variable Function + 22: 21(ptr) AccessChain 14(vsin) 20 + 23: 6(int) Load 22 + 24: 21(ptr) AccessChain 19(vsout) 20 + Store 24 23 + 26: 11(ptr) AccessChain 14(vsin) 25 + 27: 8(fvec4) Load 26 + 28: 8(fvec4) Load 15(Pos_loose) + 29: 8(fvec4) FAdd 27 28 + 30: 11(ptr) AccessChain 19(vsout) 25 + Store 30 29 + 32: 21(ptr) AccessChain 14(vsin) 31 + 33: 6(int) Load 32 + 34: 21(ptr) AccessChain 19(vsout) 31 + Store 34 33 + 35:12(VS_OUTPUT) Load 19(vsout) + ReturnValue 35 FunctionEnd diff --git a/Test/baseResults/hlsl.struct.split.array.geom.out b/Test/baseResults/hlsl.struct.split.array.geom.out index aa06c402..c136ac95 100644 --- a/Test/baseResults/hlsl.struct.split.array.geom.out +++ b/Test/baseResults/hlsl.struct.split.array.geom.out @@ -8,7 +8,7 @@ output primitive = triangle_strip 0:13 Function Definition: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void) 0:13 Function Parameters: 0:13 'v' (in 1-element array of uint) -0:13 'OutputStream' (out structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) +0:13 'OutputStream' (out structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Sequence 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 TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) @@ -69,7 +69,7 @@ output primitive = triangle_strip 0:? 'v' (layout(location=0 ) in 1-element array of uint) 0:13 Function Call: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void) 0:? 'v' (temp 1-element array of uint) -0:? 'OutputStream' (temp structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) +0:? 'OutputStream' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Linker Objects 0:? 'v' (layout(location=0 ) in 1-element array of uint) @@ -86,7 +86,7 @@ output primitive = triangle_strip 0:13 Function Definition: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void) 0:13 Function Parameters: 0:13 'v' (in 1-element array of uint) -0:13 'OutputStream' (out structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) +0:13 'OutputStream' (out structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Sequence 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 TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) @@ -147,18 +147,18 @@ output primitive = triangle_strip 0:? 'v' (layout(location=0 ) in 1-element array of uint) 0:13 Function Call: @main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void) 0:? 'v' (temp 1-element array of uint) -0:? 'OutputStream' (temp structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) +0:? 'OutputStream' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID}) 0:? Linker Objects 0:? 'v' (layout(location=0 ) in 1-element array of uint) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 98 +// Id's are bound by 97 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 4 "main" 91 + EntryPoint Geometry 4 "main" 90 ExecutionMode 4 InputPoints ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip @@ -172,27 +172,27 @@ output primitive = triangle_strip Name 19 "@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;" Name 17 "v" Name 18 "OutputStream" - Name 21 "PSInput" - MemberName 21(PSInput) 0 "Pos" - MemberName 21(PSInput) 1 "TexCoord" - MemberName 21(PSInput) 2 "TerrainPos" - MemberName 21(PSInput) 3 "VertexID" - Name 23 "Out" - Name 48 "x" - Name 57 "y" - Name 65 "PSInput" - MemberName 65(PSInput) 0 "Pos" - MemberName 65(PSInput) 1 "TexCoord" - MemberName 65(PSInput) 2 "TerrainPos" - MemberName 65(PSInput) 3 "VertexID" - Name 71 "Verts" - Name 89 "v" - Name 91 "v" - Name 93 "OutputStream" - Name 94 "param" - Name 96 "param" - MemberDecorate 14(PSInput) 0 BuiltIn Position - Decorate 91(v) Location 0 + Name 21 "Out" + Name 22 "PSInput" + MemberName 22(PSInput) 0 "Pos" + MemberName 22(PSInput) 1 "TexCoord" + MemberName 22(PSInput) 2 "TerrainPos" + MemberName 22(PSInput) 3 "VertexID" + Name 47 "x" + Name 56 "y" + Name 64 "PSInput" + MemberName 64(PSInput) 0 "Pos" + MemberName 64(PSInput) 1 "TexCoord" + MemberName 64(PSInput) 2 "TerrainPos" + MemberName 64(PSInput) 3 "VertexID" + Name 70 "Verts" + Name 88 "v" + Name 90 "v" + Name 92 "OutputStream" + Name 93 "param" + Name 95 "param" + MemberDecorate 22(PSInput) 0 BuiltIn Position + Decorate 90(v) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -206,116 +206,115 @@ output primitive = triangle_strip 14(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) 15: TypePointer Function 14(PSInput) 16: TypeFunction 2 9(ptr) 15(ptr) - 21(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) - 22: TypePointer Function 21(PSInput) - 24: 10(float) Constant 0 - 25: 11(fvec4) ConstantComposite 24 24 24 24 - 26: 12(fvec2) ConstantComposite 24 24 - 27: 13(fvec3) ConstantComposite 24 24 24 - 28: 6(int) Constant 0 - 29: 14(PSInput) ConstantComposite 25 26 27 28 - 31: TypeInt 32 1 - 32: 31(int) Constant 0 - 33: TypePointer Function 11(fvec4) - 36: 31(int) Constant 1 - 37: TypePointer Function 12(fvec2) - 40: 31(int) Constant 2 - 41: TypePointer Function 13(fvec3) - 44: 31(int) Constant 3 - 45: TypePointer Function 6(int) - 47: TypePointer Function 31(int) - 55: TypeBool - 65(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) - 66: 6(int) Constant 3 - 67: TypeArray 65(PSInput) 66 - 68: 6(int) Constant 2 - 69: TypeArray 67 68 - 70: TypePointer Function 69 - 75: TypePointer Function 65(PSInput) - 90: TypePointer Input 8 - 91(v): 90(ptr) Variable Input + 22(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) + 23: 10(float) Constant 0 + 24: 11(fvec4) ConstantComposite 23 23 23 23 + 25: 12(fvec2) ConstantComposite 23 23 + 26: 13(fvec3) ConstantComposite 23 23 23 + 27: 6(int) Constant 0 + 28: 22(PSInput) ConstantComposite 24 25 26 27 + 30: TypeInt 32 1 + 31: 30(int) Constant 0 + 32: TypePointer Function 11(fvec4) + 35: 30(int) Constant 1 + 36: TypePointer Function 12(fvec2) + 39: 30(int) Constant 2 + 40: TypePointer Function 13(fvec3) + 43: 30(int) Constant 3 + 44: TypePointer Function 6(int) + 46: TypePointer Function 30(int) + 54: TypeBool + 64(PSInput): TypeStruct 11(fvec4) 12(fvec2) 13(fvec3) 6(int) + 65: 6(int) Constant 3 + 66: TypeArray 64(PSInput) 65 + 67: 6(int) Constant 2 + 68: TypeArray 66 67 + 69: TypePointer Function 68 + 74: TypePointer Function 64(PSInput) + 89: TypePointer Input 8 + 90(v): 89(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 89(v): 9(ptr) Variable Function -93(OutputStream): 15(ptr) Variable Function - 94(param): 9(ptr) Variable Function - 96(param): 15(ptr) Variable Function - 92: 8 Load 91(v) - Store 89(v) 92 - 95: 8 Load 89(v) - Store 94(param) 95 - 97: 2 FunctionCall 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;) 94(param) 96(param) + 88(v): 9(ptr) Variable Function +92(OutputStream): 15(ptr) Variable Function + 93(param): 9(ptr) Variable Function + 95(param): 15(ptr) Variable Function + 91: 8 Load 90(v) + Store 88(v) 91 + 94: 8 Load 88(v) + Store 93(param) 94 + 96: 2 FunctionCall 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;) 93(param) 95(param) Return FunctionEnd 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;): 2 Function None 16 17(v): 9(ptr) FunctionParameter 18(OutputStream): 15(ptr) FunctionParameter 20: Label - 23(Out): 22(ptr) Variable Function - 48(x): 47(ptr) Variable Function - 57(y): 47(ptr) Variable Function - 71(Verts): 70(ptr) Variable Function - 30: 11(fvec4) CompositeExtract 29 0 - 34: 33(ptr) AccessChain 23(Out) 32 - Store 34 30 - 35: 12(fvec2) CompositeExtract 29 1 - 38: 37(ptr) AccessChain 23(Out) 36 - Store 38 35 - 39: 13(fvec3) CompositeExtract 29 2 - 42: 41(ptr) AccessChain 23(Out) 40 - Store 42 39 - 43: 6(int) CompositeExtract 29 3 - 46: 45(ptr) AccessChain 23(Out) 44 - Store 46 43 - Store 48(x) 32 - Branch 49 - 49: Label - LoopMerge 51 52 None - Branch 53 - 53: Label - 54: 31(int) Load 48(x) - 56: 55(bool) SLessThan 54 40 - BranchConditional 56 50 51 - 50: Label - Store 57(y) 32 - Branch 58 - 58: Label - LoopMerge 60 61 None - Branch 62 - 62: Label - 63: 31(int) Load 57(y) - 64: 55(bool) SLessThan 63 40 - BranchConditional 64 59 60 - 59: Label - 72: 31(int) Load 48(x) - 73: 31(int) Load 57(y) - 74: 21(PSInput) Load 23(Out) - 76: 75(ptr) AccessChain 71(Verts) 72 73 - 77: 11(fvec4) CompositeExtract 74 0 - 78: 33(ptr) AccessChain 76 32 - Store 78 77 - 79: 12(fvec2) CompositeExtract 74 1 - 80: 37(ptr) AccessChain 76 36 - Store 80 79 - 81: 13(fvec3) CompositeExtract 74 2 - 82: 41(ptr) AccessChain 76 40 - Store 82 81 - 83: 6(int) CompositeExtract 74 3 - 84: 45(ptr) AccessChain 76 44 - Store 84 83 - Branch 61 - 61: Label - 85: 31(int) Load 57(y) - 86: 31(int) IAdd 85 36 - Store 57(y) 86 - Branch 58 - 60: Label - Branch 52 - 52: Label - 87: 31(int) Load 48(x) - 88: 31(int) IAdd 87 36 - Store 48(x) 88 - Branch 49 - 51: Label + 21(Out): 15(ptr) Variable Function + 47(x): 46(ptr) Variable Function + 56(y): 46(ptr) Variable Function + 70(Verts): 69(ptr) Variable Function + 29: 11(fvec4) CompositeExtract 28 0 + 33: 32(ptr) AccessChain 21(Out) 31 + Store 33 29 + 34: 12(fvec2) CompositeExtract 28 1 + 37: 36(ptr) AccessChain 21(Out) 35 + Store 37 34 + 38: 13(fvec3) CompositeExtract 28 2 + 41: 40(ptr) AccessChain 21(Out) 39 + Store 41 38 + 42: 6(int) CompositeExtract 28 3 + 45: 44(ptr) AccessChain 21(Out) 43 + Store 45 42 + Store 47(x) 31 + Branch 48 + 48: Label + LoopMerge 50 51 None + Branch 52 + 52: Label + 53: 30(int) Load 47(x) + 55: 54(bool) SLessThan 53 39 + BranchConditional 55 49 50 + 49: Label + Store 56(y) 31 + Branch 57 + 57: Label + LoopMerge 59 60 None + Branch 61 + 61: Label + 62: 30(int) Load 56(y) + 63: 54(bool) SLessThan 62 39 + BranchConditional 63 58 59 + 58: Label + 71: 30(int) Load 47(x) + 72: 30(int) Load 56(y) + 73: 14(PSInput) Load 21(Out) + 75: 74(ptr) AccessChain 70(Verts) 71 72 + 76: 11(fvec4) CompositeExtract 73 0 + 77: 32(ptr) AccessChain 75 31 + Store 77 76 + 78: 12(fvec2) CompositeExtract 73 1 + 79: 36(ptr) AccessChain 75 35 + Store 79 78 + 80: 13(fvec3) CompositeExtract 73 2 + 81: 40(ptr) AccessChain 75 39 + Store 81 80 + 82: 6(int) CompositeExtract 73 3 + 83: 44(ptr) AccessChain 75 43 + Store 83 82 + Branch 60 + 60: Label + 84: 30(int) Load 56(y) + 85: 30(int) IAdd 84 35 + Store 56(y) 85 + Branch 57 + 59: Label + Branch 51 + 51: Label + 86: 30(int) Load 47(x) + 87: 30(int) IAdd 86 35 + Store 47(x) 87 + Branch 48 + 50: Label Return FunctionEnd diff --git a/Test/baseResults/hlsl.struct.split.assign.frag.out b/Test/baseResults/hlsl.struct.split.assign.frag.out index 4ccbf260..8af830b0 100644 --- a/Test/baseResults/hlsl.struct.split.assign.frag.out +++ b/Test/baseResults/hlsl.struct.split.assign.frag.out @@ -5,10 +5,10 @@ gl_FragCoord origin is upper left 0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'i' (in int) -0:7 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:? Sequence -0:9 move second child to first child (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:9 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:9 move second child to first child (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) +0:9 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:9 'a' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:11 Branch: Return with expression 0:11 Constant: @@ -24,8 +24,8 @@ gl_FragCoord origin is upper left 0:7 Sequence 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: @@ -39,8 +39,8 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: @@ -54,8 +54,8 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: @@ -71,7 +71,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:7 Function Call: @main(i1;struct-S-f1-vf41[3]; (temp 4-component vector of float) 0:? 'i' (temp int) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'i' (layout(location=0 ) in int) @@ -88,10 +88,10 @@ gl_FragCoord origin is upper left 0:7 Function Definition: @main(i1;struct-S-f1-vf41[3]; (temp 4-component vector of float) 0:7 Function Parameters: 0:7 'i' (in int) -0:7 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:? Sequence -0:9 move second child to first child (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:9 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:9 move second child to first child (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) +0:9 'input' (in 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:9 'a' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:11 Branch: Return with expression 0:11 Constant: @@ -107,8 +107,8 @@ gl_FragCoord origin is upper left 0:7 Sequence 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 0 (const int) 0:7 Constant: @@ -122,8 +122,8 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 1 (const int) 0:7 Constant: @@ -137,8 +137,8 @@ gl_FragCoord origin is upper left 0:7 0 (const int) 0:7 move second child to first child (temp float) 0:7 f: direct index for structure (temp float) -0:7 direct index (temp structure{temp float f, temp 4-component vector of float FragCoord pos}) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:7 direct index (temp structure{temp float f, temp 4-component vector of float pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:7 Constant: 0:7 2 (const int) 0:7 Constant: @@ -154,7 +154,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:7 Function Call: @main(i1;struct-S-f1-vf41[3]; (temp 4-component vector of float) 0:? 'i' (temp int) -0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float FragCoord pos}) +0:? 'input' (temp 3-element array of structure{temp float f, temp 4-component vector of float pos}) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'i' (layout(location=0 ) in int) @@ -163,12 +163,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 85 +// Id's are bound by 63 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 58 64 76 84 + EntryPoint Fragment 4 "main" 32 39 54 62 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 10 "S" @@ -177,25 +177,21 @@ gl_FragCoord origin is upper left Name 18 "@main(i1;struct-S-f1-vf41[3];" Name 16 "i" Name 17 "input" - Name 20 "S" - MemberName 20(S) 0 "f" - MemberName 20(S) 1 "pos" - Name 23 "a" - Name 56 "i" - Name 58 "i" - Name 60 "input" - Name 61 "S" - MemberName 61(S) 0 "f" - Name 64 "input" - Name 76 "@entryPointOutput" - Name 77 "param" - Name 79 "param" - Name 84 "input_pos" - MemberDecorate 10(S) 1 BuiltIn FragCoord - Decorate 58(i) Location 0 - Decorate 64(input) Location 1 - Decorate 76(@entryPointOutput) Location 0 - Decorate 84(input_pos) BuiltIn FragCoord + Name 20 "a" + Name 30 "i" + Name 32 "i" + Name 34 "input" + Name 36 "S" + MemberName 36(S) 0 "f" + Name 39 "input" + Name 54 "@entryPointOutput" + Name 55 "param" + Name 57 "param" + Name 62 "input_pos" + Decorate 32(i) Location 0 + Decorate 39(input) Location 1 + Decorate 54(@entryPointOutput) Location 0 + Decorate 62(input_pos) BuiltIn FragCoord 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -208,90 +204,63 @@ gl_FragCoord origin is upper left 13: TypeArray 10(S) 12 14: TypePointer Function 13 15: TypeFunction 9(fvec4) 7(ptr) 14(ptr) - 20(S): TypeStruct 8(float) 9(fvec4) - 21: TypeArray 20(S) 12 - 22: TypePointer Function 21 - 26: 6(int) Constant 0 - 27: TypePointer Function 10(S) - 30: TypePointer Function 8(float) - 33: 6(int) Constant 1 - 34: TypePointer Function 9(fvec4) - 43: 6(int) Constant 2 - 49: TypeVector 8(float) 3 - 50: 8(float) Constant 1065353216 - 51: 49(fvec3) ConstantComposite 50 50 50 - 57: TypePointer Input 6(int) - 58(i): 57(ptr) Variable Input - 61(S): TypeStruct 8(float) - 62: TypeArray 61(S) 12 - 63: TypePointer Input 62 - 64(input): 63(ptr) Variable Input - 65: TypePointer Input 8(float) - 75: TypePointer Output 9(fvec4) -76(@entryPointOutput): 75(ptr) Variable Output - 82: TypeArray 9(fvec4) 12 - 83: TypePointer Input 82 - 84(input_pos): 83(ptr) Variable Input + 22: TypeVector 8(float) 3 + 23: 8(float) Constant 1065353216 + 24: 22(fvec3) ConstantComposite 23 23 23 + 25: TypePointer Function 9(fvec4) + 31: TypePointer Input 6(int) + 32(i): 31(ptr) Variable Input + 35: 6(int) Constant 0 + 36(S): TypeStruct 8(float) + 37: TypeArray 36(S) 12 + 38: TypePointer Input 37 + 39(input): 38(ptr) Variable Input + 40: TypePointer Input 8(float) + 43: TypePointer Function 8(float) + 45: 6(int) Constant 1 + 49: 6(int) Constant 2 + 53: TypePointer Output 9(fvec4) +54(@entryPointOutput): 53(ptr) Variable Output + 60: TypeArray 9(fvec4) 12 + 61: TypePointer Input 60 + 62(input_pos): 61(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 56(i): 7(ptr) Variable Function - 60(input): 14(ptr) Variable Function - 77(param): 7(ptr) Variable Function - 79(param): 14(ptr) Variable Function - 59: 6(int) Load 58(i) - Store 56(i) 59 - 66: 65(ptr) AccessChain 64(input) 26 26 - 67: 8(float) Load 66 - 68: 30(ptr) AccessChain 60(input) 26 26 - Store 68 67 - 69: 65(ptr) AccessChain 64(input) 33 26 - 70: 8(float) Load 69 - 71: 30(ptr) AccessChain 60(input) 33 26 - Store 71 70 - 72: 65(ptr) AccessChain 64(input) 43 26 - 73: 8(float) Load 72 - 74: 30(ptr) AccessChain 60(input) 43 26 - Store 74 73 - 78: 6(int) Load 56(i) - Store 77(param) 78 - 80: 13 Load 60(input) - Store 79(param) 80 - 81: 9(fvec4) FunctionCall 18(@main(i1;struct-S-f1-vf41[3];) 77(param) 79(param) - Store 76(@entryPointOutput) 81 + 30(i): 7(ptr) Variable Function + 34(input): 14(ptr) Variable Function + 55(param): 7(ptr) Variable Function + 57(param): 14(ptr) Variable Function + 33: 6(int) Load 32(i) + Store 30(i) 33 + 41: 40(ptr) AccessChain 39(input) 35 35 + 42: 8(float) Load 41 + 44: 43(ptr) AccessChain 34(input) 35 35 + Store 44 42 + 46: 40(ptr) AccessChain 39(input) 45 35 + 47: 8(float) Load 46 + 48: 43(ptr) AccessChain 34(input) 45 35 + Store 48 47 + 50: 40(ptr) AccessChain 39(input) 49 35 + 51: 8(float) Load 50 + 52: 43(ptr) AccessChain 34(input) 49 35 + Store 52 51 + 56: 6(int) Load 30(i) + Store 55(param) 56 + 58: 13 Load 34(input) + Store 57(param) 58 + 59: 9(fvec4) FunctionCall 18(@main(i1;struct-S-f1-vf41[3];) 55(param) 57(param) + Store 54(@entryPointOutput) 59 Return FunctionEnd 18(@main(i1;struct-S-f1-vf41[3];): 9(fvec4) Function None 15 16(i): 7(ptr) FunctionParameter 17(input): 14(ptr) FunctionParameter 19: Label - 23(a): 22(ptr) Variable Function - 52: 34(ptr) Variable Function - 24: 21 Load 23(a) - 25: 20(S) CompositeExtract 24 0 - 28: 27(ptr) AccessChain 17(input) 26 - 29: 8(float) CompositeExtract 25 0 - 31: 30(ptr) AccessChain 28 26 - Store 31 29 - 32: 9(fvec4) CompositeExtract 25 1 - 35: 34(ptr) AccessChain 28 33 - Store 35 32 - 36: 20(S) CompositeExtract 24 1 - 37: 27(ptr) AccessChain 17(input) 33 - 38: 8(float) CompositeExtract 36 0 - 39: 30(ptr) AccessChain 37 26 - Store 39 38 - 40: 9(fvec4) CompositeExtract 36 1 - 41: 34(ptr) AccessChain 37 33 - Store 41 40 - 42: 20(S) CompositeExtract 24 2 - 44: 27(ptr) AccessChain 17(input) 43 - 45: 8(float) CompositeExtract 42 0 - 46: 30(ptr) AccessChain 44 26 - Store 46 45 - 47: 9(fvec4) CompositeExtract 42 1 - 48: 34(ptr) AccessChain 44 33 - Store 48 47 - Store 52 51 - 53: 9(fvec4) Load 52 - ReturnValue 53 + 20(a): 14(ptr) Variable Function + 26: 25(ptr) Variable Function + 21: 13 Load 20(a) + Store 17(input) 21 + Store 26 24 + 27: 9(fvec4) Load 26 + ReturnValue 27 FunctionEnd diff --git a/Test/baseResults/hlsl.struct.split.call.vert.out b/Test/baseResults/hlsl.struct.split.call.vert.out index e284de49..0264fbef 100644 --- a/Test/baseResults/hlsl.struct.split.call.vert.out +++ b/Test/baseResults/hlsl.struct.split.call.vert.out @@ -15,7 +15,7 @@ Shader version: 450 0:18 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:18 Constant: 0:18 1 (const int) -0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Parameters: 0:22 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? Sequence @@ -74,9 +74,9 @@ Shader version: 450 0:22 2 (const int) 0:? 'x1_in' (layout(location=1 ) in int) 0:22 Sequence -0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 move second child to first child (temp int) 0:22 x0_out: direct index for structure (temp int) @@ -84,13 +84,13 @@ Shader version: 450 0:22 Constant: 0:22 0 (const int) 0:22 x0_out: direct index for structure (temp int) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position) -0:22 Pos_out: direct index for structure (temp 4-component vector of float Position) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 Pos_out: direct index for structure (temp 4-component vector of float) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child (temp int) @@ -99,7 +99,7 @@ Shader version: 450 0:22 Constant: 0:22 1 (const int) 0:22 x1_out: direct index for structure (temp int) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:? Linker Objects @@ -129,7 +129,7 @@ Shader version: 450 0:18 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:18 Constant: 0:18 1 (const int) -0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Function Parameters: 0:22 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:? Sequence @@ -188,9 +188,9 @@ Shader version: 450 0:22 2 (const int) 0:? 'x1_in' (layout(location=1 ) in int) 0:22 Sequence -0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) -0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) +0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in}) 0:22 move second child to first child (temp int) 0:22 x0_out: direct index for structure (temp int) @@ -198,13 +198,13 @@ Shader version: 450 0:22 Constant: 0:22 0 (const int) 0:22 x0_out: direct index for structure (temp int) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 0 (const int) 0:22 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position) -0:22 Pos_out: direct index for structure (temp 4-component vector of float Position) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 Pos_out: direct index for structure (temp 4-component vector of float) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 1 (const int) 0:22 move second child to first child (temp int) @@ -213,7 +213,7 @@ Shader version: 450 0:22 Constant: 0:22 1 (const int) 0:22 x1_out: direct index for structure (temp int) -0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out}) +0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out}) 0:22 Constant: 0:22 2 (const int) 0:? Linker Objects @@ -225,12 +225,12 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 95 +// Id's are bound by 83 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 64 68 71 80 86 94 + EntryPoint Vertex 4 "main" 52 56 59 68 74 82 Name 4 "main" Name 9 "VS_INPUT" MemberName 9(VS_INPUT) 0 "x0_in" @@ -243,41 +243,32 @@ Shader version: 450 Name 16 "Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;" Name 14 "fn1_in" Name 15 "fn1_out" - Name 18 "VS_INPUT" - MemberName 18(VS_INPUT) 0 "x0_in" - MemberName 18(VS_INPUT) 1 "Pos_in" - MemberName 18(VS_INPUT) 2 "x1_in" - Name 20 "VS_OUTPUT" - MemberName 20(VS_OUTPUT) 0 "x0_out" - MemberName 20(VS_OUTPUT) 1 "Pos_out" - MemberName 20(VS_OUTPUT) 2 "x1_out" - Name 23 "@main(struct-VS_INPUT-i1-vf4-i11;" - Name 22 "vsin" - Name 32 "vsout" - Name 45 "param" - Name 47 "param" - Name 62 "vsin" - Name 64 "x0_in" - Name 68 "Pos_in" - Name 71 "x1_in" - Name 74 "flattenTemp" - Name 75 "param" - Name 78 "VS_OUTPUT" - MemberName 78(VS_OUTPUT) 0 "x0_out" - MemberName 78(VS_OUTPUT) 1 "x1_out" - Name 80 "@entryPointOutput" - Name 86 "@entryPointOutput_Pos_out" - Name 92 "PerVertex_out" - MemberName 92(PerVertex_out) 0 "@entryPointOutput_Pos_out" - Name 94 "PerVertex_out" - MemberDecorate 20(VS_OUTPUT) 1 BuiltIn Position - Decorate 64(x0_in) Location 0 - Decorate 68(Pos_in) BuiltIn Position - Decorate 71(x1_in) Location 1 - Decorate 80(@entryPointOutput) Location 0 - Decorate 86(@entryPointOutput_Pos_out) BuiltIn Position - MemberDecorate 92(PerVertex_out) 0 BuiltIn Position - Decorate 92(PerVertex_out) Block + Name 20 "@main(struct-VS_INPUT-i1-vf4-i11;" + Name 19 "vsin" + Name 29 "vsout" + Name 42 "param" + Name 44 "param" + Name 50 "vsin" + Name 52 "x0_in" + Name 56 "Pos_in" + Name 59 "x1_in" + Name 62 "flattenTemp" + Name 63 "param" + Name 66 "VS_OUTPUT" + MemberName 66(VS_OUTPUT) 0 "x0_out" + MemberName 66(VS_OUTPUT) 1 "x1_out" + Name 68 "@entryPointOutput" + Name 74 "@entryPointOutput_Pos_out" + Name 80 "PerVertex_out" + MemberName 80(PerVertex_out) 0 "@entryPointOutput_Pos_out" + Name 82 "PerVertex_out" + Decorate 52(x0_in) Location 0 + Decorate 56(Pos_in) BuiltIn Position + Decorate 59(x1_in) Location 1 + Decorate 68(@entryPointOutput) Location 0 + Decorate 74(@entryPointOutput_Pos_out) BuiltIn Position + MemberDecorate 80(PerVertex_out) 0 BuiltIn Position + Decorate 80(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -288,106 +279,91 @@ Shader version: 450 11(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) 12: TypePointer Function 11(VS_OUTPUT) 13: TypeFunction 2 10(ptr) 12(ptr) - 18(VS_INPUT): TypeStruct 6(int) 8(fvec4) 6(int) - 19: TypePointer Function 18(VS_INPUT) - 20(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int) - 21: TypeFunction 20(VS_OUTPUT) 19(ptr) - 25: 6(int) Constant 1 - 26: TypePointer Function 8(fvec4) - 33: 6(int) Constant 0 - 34: TypePointer Function 6(int) - 41: 6(int) Constant 2 - 51: TypePointer Function 20(VS_OUTPUT) - 63: TypePointer Input 6(int) - 64(x0_in): 63(ptr) Variable Input - 67: TypePointer Input 8(fvec4) - 68(Pos_in): 67(ptr) Variable Input - 71(x1_in): 63(ptr) Variable Input - 78(VS_OUTPUT): TypeStruct 6(int) 6(int) - 79: TypePointer Output 78(VS_OUTPUT) -80(@entryPointOutput): 79(ptr) Variable Output - 83: TypePointer Output 6(int) - 85: TypePointer Output 8(fvec4) -86(@entryPointOutput_Pos_out): 85(ptr) Variable Output -92(PerVertex_out): TypeStruct 8(fvec4) - 93: TypePointer Output 92(PerVertex_out) -94(PerVertex_out): 93(ptr) Variable Output + 18: TypeFunction 11(VS_OUTPUT) 10(ptr) + 22: 6(int) Constant 1 + 23: TypePointer Function 8(fvec4) + 30: 6(int) Constant 0 + 31: TypePointer Function 6(int) + 38: 6(int) Constant 2 + 51: TypePointer Input 6(int) + 52(x0_in): 51(ptr) Variable Input + 55: TypePointer Input 8(fvec4) + 56(Pos_in): 55(ptr) Variable Input + 59(x1_in): 51(ptr) Variable Input + 66(VS_OUTPUT): TypeStruct 6(int) 6(int) + 67: TypePointer Output 66(VS_OUTPUT) +68(@entryPointOutput): 67(ptr) Variable Output + 71: TypePointer Output 6(int) + 73: TypePointer Output 8(fvec4) +74(@entryPointOutput_Pos_out): 73(ptr) Variable Output +80(PerVertex_out): TypeStruct 8(fvec4) + 81: TypePointer Output 80(PerVertex_out) +82(PerVertex_out): 81(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 62(vsin): 19(ptr) Variable Function - 74(flattenTemp): 51(ptr) Variable Function - 75(param): 19(ptr) Variable Function - 65: 6(int) Load 64(x0_in) - 66: 34(ptr) AccessChain 62(vsin) 33 - Store 66 65 - 69: 8(fvec4) Load 68(Pos_in) - 70: 26(ptr) AccessChain 62(vsin) 25 - Store 70 69 - 72: 6(int) Load 71(x1_in) - 73: 34(ptr) AccessChain 62(vsin) 41 - Store 73 72 - 76:18(VS_INPUT) Load 62(vsin) - Store 75(param) 76 - 77:20(VS_OUTPUT) FunctionCall 23(@main(struct-VS_INPUT-i1-vf4-i11;) 75(param) - Store 74(flattenTemp) 77 - 81: 34(ptr) AccessChain 74(flattenTemp) 33 - 82: 6(int) Load 81 - 84: 83(ptr) AccessChain 80(@entryPointOutput) 33 - Store 84 82 - 87: 26(ptr) AccessChain 74(flattenTemp) 25 - 88: 8(fvec4) Load 87 - Store 86(@entryPointOutput_Pos_out) 88 - 89: 34(ptr) AccessChain 74(flattenTemp) 41 - 90: 6(int) Load 89 - 91: 83(ptr) AccessChain 80(@entryPointOutput) 25 - Store 91 90 + 50(vsin): 10(ptr) Variable Function + 62(flattenTemp): 12(ptr) Variable Function + 63(param): 10(ptr) Variable Function + 53: 6(int) Load 52(x0_in) + 54: 31(ptr) AccessChain 50(vsin) 30 + Store 54 53 + 57: 8(fvec4) Load 56(Pos_in) + 58: 23(ptr) AccessChain 50(vsin) 22 + Store 58 57 + 60: 6(int) Load 59(x1_in) + 61: 31(ptr) AccessChain 50(vsin) 38 + Store 61 60 + 64: 9(VS_INPUT) Load 50(vsin) + Store 63(param) 64 + 65:11(VS_OUTPUT) FunctionCall 20(@main(struct-VS_INPUT-i1-vf4-i11;) 63(param) + Store 62(flattenTemp) 65 + 69: 31(ptr) AccessChain 62(flattenTemp) 30 + 70: 6(int) Load 69 + 72: 71(ptr) AccessChain 68(@entryPointOutput) 30 + Store 72 70 + 75: 23(ptr) AccessChain 62(flattenTemp) 22 + 76: 8(fvec4) Load 75 + Store 74(@entryPointOutput_Pos_out) 76 + 77: 31(ptr) AccessChain 62(flattenTemp) 38 + 78: 6(int) Load 77 + 79: 71(ptr) AccessChain 68(@entryPointOutput) 22 + Store 79 78 Return FunctionEnd 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;): 2 Function None 13 14(fn1_in): 10(ptr) FunctionParameter 15(fn1_out): 12(ptr) FunctionParameter 17: Label - 27: 26(ptr) AccessChain 14(fn1_in) 25 - 28: 8(fvec4) Load 27 - 29: 26(ptr) AccessChain 15(fn1_out) 25 - 30: 8(fvec4) Load 29 - 31: 8(fvec4) FAdd 28 30 + 24: 23(ptr) AccessChain 14(fn1_in) 22 + 25: 8(fvec4) Load 24 + 26: 23(ptr) AccessChain 15(fn1_out) 22 + 27: 8(fvec4) Load 26 + 28: 8(fvec4) FAdd 25 27 Return FunctionEnd -23(@main(struct-VS_INPUT-i1-vf4-i11;):20(VS_OUTPUT) Function None 21 - 22(vsin): 19(ptr) FunctionParameter - 24: Label - 32(vsout): 12(ptr) Variable Function - 45(param): 19(ptr) Variable Function - 47(param): 12(ptr) Variable Function - 52: 51(ptr) Variable Function - 35: 34(ptr) AccessChain 22(vsin) 33 - 36: 6(int) Load 35 - 37: 34(ptr) AccessChain 32(vsout) 33 +20(@main(struct-VS_INPUT-i1-vf4-i11;):11(VS_OUTPUT) Function None 18 + 19(vsin): 10(ptr) FunctionParameter + 21: Label + 29(vsout): 12(ptr) Variable Function + 42(param): 10(ptr) Variable Function + 44(param): 12(ptr) Variable Function + 32: 31(ptr) AccessChain 19(vsin) 30 + 33: 6(int) Load 32 + 34: 31(ptr) AccessChain 29(vsout) 30 + Store 34 33 + 35: 23(ptr) AccessChain 19(vsin) 22 + 36: 8(fvec4) Load 35 + 37: 23(ptr) AccessChain 29(vsout) 22 Store 37 36 - 38: 26(ptr) AccessChain 22(vsin) 25 - 39: 8(fvec4) Load 38 - 40: 26(ptr) AccessChain 32(vsout) 25 - Store 40 39 - 42: 34(ptr) AccessChain 22(vsin) 41 - 43: 6(int) Load 42 - 44: 34(ptr) AccessChain 32(vsout) 41 - Store 44 43 - 46:18(VS_INPUT) Load 22(vsin) - Store 45(param) 46 - 48:11(VS_OUTPUT) Load 32(vsout) - Store 47(param) 48 - 49: 2 FunctionCall 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;) 45(param) 47(param) - 50:11(VS_OUTPUT) Load 32(vsout) - 53: 6(int) CompositeExtract 50 0 - 54: 34(ptr) AccessChain 52 33 - Store 54 53 - 55: 8(fvec4) CompositeExtract 50 1 - 56: 26(ptr) AccessChain 52 25 - Store 56 55 - 57: 6(int) CompositeExtract 50 2 - 58: 34(ptr) AccessChain 52 41 - Store 58 57 - 59:20(VS_OUTPUT) Load 52 - ReturnValue 59 + 39: 31(ptr) AccessChain 19(vsin) 38 + 40: 6(int) Load 39 + 41: 31(ptr) AccessChain 29(vsout) 38 + Store 41 40 + 43: 9(VS_INPUT) Load 19(vsin) + Store 42(param) 43 + 45:11(VS_OUTPUT) Load 29(vsout) + Store 44(param) 45 + 46: 2 FunctionCall 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;) 42(param) 44(param) + 47:11(VS_OUTPUT) Load 29(vsout) + ReturnValue 47 FunctionEnd diff --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out index 11e235a4..44320400 100644 --- a/Test/baseResults/hlsl.struct.split.nested.geom.out +++ b/Test/baseResults/hlsl.struct.split.nested.geom.out @@ -7,8 +7,8 @@ output primitive = triangle_strip 0:? Sequence 0:24 Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; (temp void) 0:24 Function Parameters: -0:24 'tin' (in 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:24 'ts' (out structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:24 'tin' (in 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:24 'ts' (out structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 pos: direct index for structure (temp 4-component vector of float) @@ -35,8 +35,8 @@ output primitive = triangle_strip 0:? 5.000000 0:? 6.000000 0:30 Sequence -0:30 move second child to first child (temp structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) -0:30 'ts' (out structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:30 move second child to first child (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:30 'ts' (out structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 'o' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 EmitVertex (temp void) 0:24 Function Definition: main( (temp void) @@ -45,8 +45,8 @@ output primitive = triangle_strip 0:24 Sequence 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: @@ -60,8 +60,8 @@ output primitive = triangle_strip 0:24 0 (const int) 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: @@ -75,8 +75,8 @@ output primitive = triangle_strip 0:24 0 (const int) 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: @@ -89,8 +89,8 @@ output primitive = triangle_strip 0:24 Constant: 0:24 0 (const int) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; (temp void) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'ts' (temp structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Linker Objects 0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc}) 0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position tin_pos}) @@ -107,8 +107,8 @@ output primitive = triangle_strip 0:? Sequence 0:24 Function Definition: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; (temp void) 0:24 Function Parameters: -0:24 'tin' (in 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:24 'ts' (out structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:24 'tin' (in 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:24 'ts' (out structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Sequence 0:27 move second child to first child (temp 4-component vector of float) 0:27 pos: direct index for structure (temp 4-component vector of float) @@ -135,8 +135,8 @@ output primitive = triangle_strip 0:? 5.000000 0:? 6.000000 0:30 Sequence -0:30 move second child to first child (temp structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) -0:30 'ts' (out structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:30 move second child to first child (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:30 'ts' (out structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 'o' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:30 EmitVertex (temp void) 0:24 Function Definition: main( (temp void) @@ -145,8 +145,8 @@ output primitive = triangle_strip 0:24 Sequence 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 0 (const int) 0:24 Constant: @@ -160,8 +160,8 @@ output primitive = triangle_strip 0:24 0 (const int) 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: @@ -175,8 +175,8 @@ output primitive = triangle_strip 0:24 0 (const int) 0:24 move second child to first child (temp 2-component vector of float) 0:24 tc: direct index for structure (temp 2-component vector of float) -0:24 direct index (temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) +0:24 direct index (temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 Constant: 0:24 2 (const int) 0:24 Constant: @@ -189,20 +189,20 @@ output primitive = triangle_strip 0:24 Constant: 0:24 0 (const int) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; (temp void) -0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc}) -0:? 'ts' (temp structure{temp structure{temp 4-component vector of float Position pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) +0:? 'tin' (temp 3-element array of structure{temp 4-component vector of float pos, temp 2-component vector of float tc}) +0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? Linker Objects 0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc}) 0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position tin_pos}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 86 +// Id's are bound by 67 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 4 "main" 65 85 + EntryPoint Geometry 4 "main" 46 66 ExecutionMode 4 Triangles ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip @@ -211,39 +211,32 @@ output primitive = triangle_strip Name 9 "PS_IN" MemberName 9(PS_IN) 0 "pos" MemberName 9(PS_IN) 1 "tc" - Name 17 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO" - MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array" - MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1" - Name 18 "GS_OUT" - MemberName 18(GS_OUT) 0 "psIn" - MemberName 18(GS_OUT) 1 "contains_no_builtin_io" - Name 23 "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;" - Name 21 "tin" - Name 22 "ts" - Name 25 "PS_IN" - MemberName 25(PS_IN) 0 "pos" - MemberName 25(PS_IN) 1 "tc" - Name 26 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO" - MemberName 26(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array" - MemberName 26(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1" - Name 27 "GS_OUT" - MemberName 27(GS_OUT) 0 "psIn" - MemberName 27(GS_OUT) 1 "contains_no_builtin_io" - Name 29 "o" - Name 61 "tin" - Name 62 "PS_IN" - MemberName 62(PS_IN) 0 "tc" - Name 65 "tin" - Name 77 "ts" - Name 78 "param" - Name 80 "param" - Name 82 "PerVertex_in" - MemberName 82(PerVertex_in) 0 "tin_pos" - Name 85 "PerVertex_in" - MemberDecorate 9(PS_IN) 0 BuiltIn Position - Decorate 65(tin) Location 0 - MemberDecorate 82(PerVertex_in) 0 BuiltIn Position - Decorate 82(PerVertex_in) Block + Name 14 "PS_IN" + MemberName 14(PS_IN) 0 "pos" + MemberName 14(PS_IN) 1 "tc" + Name 18 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO" + MemberName 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array" + MemberName 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1" + Name 19 "GS_OUT" + MemberName 19(GS_OUT) 0 "psIn" + MemberName 19(GS_OUT) 1 "contains_no_builtin_io" + Name 24 "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;" + Name 22 "tin" + Name 23 "ts" + Name 26 "o" + Name 42 "tin" + Name 43 "PS_IN" + MemberName 43(PS_IN) 0 "tc" + Name 46 "tin" + Name 58 "ts" + Name 59 "param" + Name 61 "param" + Name 63 "PerVertex_in" + MemberName 63(PerVertex_in) 0 "tin_pos" + Name 66 "PerVertex_in" + Decorate 46(tin) Location 0 + MemberDecorate 63(PerVertex_in) 0 BuiltIn Position + Decorate 63(PerVertex_in) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -254,92 +247,70 @@ output primitive = triangle_strip 11: 10(int) Constant 3 12: TypeArray 9(PS_IN) 11 13: TypePointer Function 12 - 14: 10(int) Constant 2 - 15: TypeArray 6(float) 14 - 16: TypeInt 32 1 -17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 15 16(int) - 18(GS_OUT): TypeStruct 9(PS_IN) 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) - 19: TypePointer Function 18(GS_OUT) - 20: TypeFunction 2 13(ptr) 19(ptr) - 25(PS_IN): TypeStruct 7(fvec4) 8(fvec2) -26(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 15 16(int) - 27(GS_OUT): TypeStruct 25(PS_IN) 26(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) - 28: TypePointer Function 27(GS_OUT) - 30: 16(int) Constant 0 - 31: 6(float) Constant 1065353216 - 32: 6(float) Constant 1073741824 - 33: 6(float) Constant 1077936128 - 34: 6(float) Constant 1082130432 - 35: 7(fvec4) ConstantComposite 31 32 33 34 - 36: TypePointer Function 7(fvec4) - 38: 16(int) Constant 1 - 39: 6(float) Constant 1084227584 - 40: 6(float) Constant 1086324736 - 41: 8(fvec2) ConstantComposite 39 40 - 42: TypePointer Function 8(fvec2) - 46: TypePointer Function 9(PS_IN) - 53: TypePointer Function 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) - 56: TypePointer Function 15 - 59: TypePointer Function 16(int) - 62(PS_IN): TypeStruct 8(fvec2) - 63: TypeArray 62(PS_IN) 11 - 64: TypePointer Input 63 - 65(tin): 64(ptr) Variable Input - 66: TypePointer Input 8(fvec2) - 73: 16(int) Constant 2 -82(PerVertex_in): TypeStruct 7(fvec4) - 83: TypeArray 82(PerVertex_in) 11 - 84: TypePointer Input 83 -85(PerVertex_in): 84(ptr) Variable Input + 14(PS_IN): TypeStruct 7(fvec4) 8(fvec2) + 15: 10(int) Constant 2 + 16: TypeArray 6(float) 15 + 17: TypeInt 32 1 +18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 16 17(int) + 19(GS_OUT): TypeStruct 14(PS_IN) 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) + 20: TypePointer Function 19(GS_OUT) + 21: TypeFunction 2 13(ptr) 20(ptr) + 27: 17(int) Constant 0 + 28: 6(float) Constant 1065353216 + 29: 6(float) Constant 1073741824 + 30: 6(float) Constant 1077936128 + 31: 6(float) Constant 1082130432 + 32: 7(fvec4) ConstantComposite 28 29 30 31 + 33: TypePointer Function 7(fvec4) + 35: 17(int) Constant 1 + 36: 6(float) Constant 1084227584 + 37: 6(float) Constant 1086324736 + 38: 8(fvec2) ConstantComposite 36 37 + 39: TypePointer Function 8(fvec2) + 43(PS_IN): TypeStruct 8(fvec2) + 44: TypeArray 43(PS_IN) 11 + 45: TypePointer Input 44 + 46(tin): 45(ptr) Variable Input + 47: TypePointer Input 8(fvec2) + 54: 17(int) Constant 2 +63(PerVertex_in): TypeStruct 7(fvec4) + 64: TypeArray 63(PerVertex_in) 11 + 65: TypePointer Input 64 +66(PerVertex_in): 65(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 61(tin): 13(ptr) Variable Function - 77(ts): 19(ptr) Variable Function - 78(param): 13(ptr) Variable Function - 80(param): 19(ptr) Variable Function - 67: 66(ptr) AccessChain 65(tin) 30 30 - 68: 8(fvec2) Load 67 - 69: 42(ptr) AccessChain 61(tin) 30 38 - Store 69 68 - 70: 66(ptr) AccessChain 65(tin) 38 30 - 71: 8(fvec2) Load 70 - 72: 42(ptr) AccessChain 61(tin) 38 38 - Store 72 71 - 74: 66(ptr) AccessChain 65(tin) 73 30 - 75: 8(fvec2) Load 74 - 76: 42(ptr) AccessChain 61(tin) 73 38 - Store 76 75 - 79: 12 Load 61(tin) - Store 78(param) 79 - 81: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 78(param) 80(param) + 42(tin): 13(ptr) Variable Function + 58(ts): 20(ptr) Variable Function + 59(param): 13(ptr) Variable Function + 61(param): 20(ptr) Variable Function + 48: 47(ptr) AccessChain 46(tin) 27 27 + 49: 8(fvec2) Load 48 + 50: 39(ptr) AccessChain 42(tin) 27 35 + Store 50 49 + 51: 47(ptr) AccessChain 46(tin) 35 27 + 52: 8(fvec2) Load 51 + 53: 39(ptr) AccessChain 42(tin) 35 35 + Store 53 52 + 55: 47(ptr) AccessChain 46(tin) 54 27 + 56: 8(fvec2) Load 55 + 57: 39(ptr) AccessChain 42(tin) 54 35 + Store 57 56 + 60: 12 Load 42(tin) + Store 59(param) 60 + 62: 2 FunctionCall 24(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 59(param) 61(param) Return FunctionEnd -23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20 - 21(tin): 13(ptr) FunctionParameter - 22(ts): 19(ptr) FunctionParameter - 24: Label - 29(o): 28(ptr) Variable Function - 37: 36(ptr) AccessChain 29(o) 30 30 - Store 37 35 - 43: 42(ptr) AccessChain 29(o) 30 38 - Store 43 41 - 44: 27(GS_OUT) Load 29(o) - 45: 25(PS_IN) CompositeExtract 44 0 - 47: 46(ptr) AccessChain 22(ts) 30 - 48: 7(fvec4) CompositeExtract 45 0 - 49: 36(ptr) AccessChain 47 30 - Store 49 48 - 50: 8(fvec2) CompositeExtract 45 1 - 51: 42(ptr) AccessChain 47 38 - Store 51 50 - 52:26(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) CompositeExtract 44 1 - 54: 53(ptr) AccessChain 22(ts) 38 - 55: 15 CompositeExtract 52 0 - 57: 56(ptr) AccessChain 54 30 - Store 57 55 - 58: 16(int) CompositeExtract 52 1 - 60: 59(ptr) AccessChain 54 38 - Store 60 58 +24(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 21 + 22(tin): 13(ptr) FunctionParameter + 23(ts): 20(ptr) FunctionParameter + 25: Label + 26(o): 20(ptr) Variable Function + 34: 33(ptr) AccessChain 26(o) 27 27 + Store 34 32 + 40: 39(ptr) AccessChain 26(o) 27 35 + Store 40 38 + 41: 19(GS_OUT) Load 26(o) + Store 23(ts) 41 EmitVertex Return FunctionEnd diff --git a/Test/baseResults/hlsl.struct.split.trivial.vert.out b/Test/baseResults/hlsl.struct.split.trivial.vert.out index e445f1f5..427b03e5 100644 --- a/Test/baseResults/hlsl.struct.split.trivial.vert.out +++ b/Test/baseResults/hlsl.struct.split.trivial.vert.out @@ -1,10 +1,10 @@ hlsl.struct.split.trivial.vert Shader version: 450 0:? Sequence -0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Position Pos}) +0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Pos}) 0:16 Function Parameters: 0:16 'vsin' (in structure{temp 4-component vector of float Pos_in}) -0:16 'Pos_loose' (in 4-component vector of float Position) +0:16 'Pos_loose' (in 4-component vector of float) 0:? Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:19 Pos: direct index for structure (temp 4-component vector of float) @@ -16,7 +16,7 @@ Shader version: 450 0:19 'vsin' (in structure{temp 4-component vector of float Pos_in}) 0:19 Constant: 0:19 0 (const int) -0:19 'Pos_loose' (in 4-component vector of float Position) +0:19 'Pos_loose' (in 4-component vector of float) 0:21 Branch: Return with expression 0:21 'vsout' (temp structure{temp 4-component vector of float Pos}) 0:16 Function Definition: main( (temp void) @@ -35,8 +35,8 @@ Shader version: 450 0:16 Sequence 0:16 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:16 Pos: direct index for structure (temp 4-component vector of float Position) -0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Position Pos}) +0:16 Pos: direct index for structure (temp 4-component vector of float) +0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Pos}) 0:? 'vsin' (temp structure{temp 4-component vector of float Pos_in}) 0:? 'Pos_loose' (temp 4-component vector of float) 0:16 Constant: @@ -52,10 +52,10 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Position Pos}) +0:16 Function Definition: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Pos}) 0:16 Function Parameters: 0:16 'vsin' (in structure{temp 4-component vector of float Pos_in}) -0:16 'Pos_loose' (in 4-component vector of float Position) +0:16 'Pos_loose' (in 4-component vector of float) 0:? Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:19 Pos: direct index for structure (temp 4-component vector of float) @@ -67,7 +67,7 @@ Shader version: 450 0:19 'vsin' (in structure{temp 4-component vector of float Pos_in}) 0:19 Constant: 0:19 0 (const int) -0:19 'Pos_loose' (in 4-component vector of float Position) +0:19 'Pos_loose' (in 4-component vector of float) 0:21 Branch: Return with expression 0:21 'vsout' (temp structure{temp 4-component vector of float Pos}) 0:16 Function Definition: main( (temp void) @@ -86,8 +86,8 @@ Shader version: 450 0:16 Sequence 0:16 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput_Pos' (out 4-component vector of float Position) -0:16 Pos: direct index for structure (temp 4-component vector of float Position) -0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Position Pos}) +0:16 Pos: direct index for structure (temp 4-component vector of float) +0:16 Function Call: @main(struct-VS_INPUT-vf41;vf4; (temp structure{temp 4-component vector of float Pos}) 0:? 'vsin' (temp structure{temp 4-component vector of float Pos_in}) 0:? 'Pos_loose' (temp 4-component vector of float) 0:16 Constant: @@ -99,12 +99,12 @@ Shader version: 450 // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 54 +// Id's are bound by 48 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 37 41 44 53 + EntryPoint Vertex 4 "main" 31 35 38 47 Name 4 "main" Name 8 "VS_INPUT" MemberName 8(VS_INPUT) 0 "Pos_in" @@ -113,25 +113,22 @@ Shader version: 450 Name 15 "@main(struct-VS_INPUT-vf41;vf4;" Name 13 "vsin" Name 14 "Pos_loose" - Name 17 "VS_OUTPUT" - MemberName 17(VS_OUTPUT) 0 "Pos" - Name 19 "vsout" - Name 35 "vsin" - Name 37 "Pos_in" - Name 40 "Pos_loose" - Name 41 "Pos_loose" - Name 44 "@entryPointOutput_Pos" - Name 45 "param" - Name 47 "param" - Name 51 "PerVertex_out" - MemberName 51(PerVertex_out) 0 "@entryPointOutput_Pos" - Name 53 "PerVertex_out" - MemberDecorate 11(VS_OUTPUT) 0 BuiltIn Position - Decorate 37(Pos_in) BuiltIn Position - Decorate 41(Pos_loose) BuiltIn Position - Decorate 44(@entryPointOutput_Pos) BuiltIn Position - MemberDecorate 51(PerVertex_out) 0 BuiltIn Position - Decorate 51(PerVertex_out) Block + Name 18 "vsout" + Name 29 "vsin" + Name 31 "Pos_in" + Name 34 "Pos_loose" + Name 35 "Pos_loose" + Name 38 "@entryPointOutput_Pos" + Name 39 "param" + Name 41 "param" + Name 45 "PerVertex_out" + MemberName 45(PerVertex_out) 0 "@entryPointOutput_Pos" + Name 47 "PerVertex_out" + Decorate 31(Pos_in) BuiltIn Position + Decorate 35(Pos_loose) BuiltIn Position + Decorate 38(@entryPointOutput_Pos) BuiltIn Position + MemberDecorate 45(PerVertex_out) 0 BuiltIn Position + Decorate 45(PerVertex_out) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -141,55 +138,48 @@ Shader version: 450 10: TypePointer Function 7(fvec4) 11(VS_OUTPUT): TypeStruct 7(fvec4) 12: TypeFunction 11(VS_OUTPUT) 9(ptr) 10(ptr) - 17(VS_OUTPUT): TypeStruct 7(fvec4) - 18: TypePointer Function 17(VS_OUTPUT) - 20: TypeInt 32 1 - 21: 20(int) Constant 0 - 28: TypePointer Function 11(VS_OUTPUT) - 36: TypePointer Input 7(fvec4) - 37(Pos_in): 36(ptr) Variable Input - 41(Pos_loose): 36(ptr) Variable Input - 43: TypePointer Output 7(fvec4) -44(@entryPointOutput_Pos): 43(ptr) Variable Output -51(PerVertex_out): TypeStruct 7(fvec4) - 52: TypePointer Output 51(PerVertex_out) -53(PerVertex_out): 52(ptr) Variable Output + 17: TypePointer Function 11(VS_OUTPUT) + 19: TypeInt 32 1 + 20: 19(int) Constant 0 + 30: TypePointer Input 7(fvec4) + 31(Pos_in): 30(ptr) Variable Input + 35(Pos_loose): 30(ptr) Variable Input + 37: TypePointer Output 7(fvec4) +38(@entryPointOutput_Pos): 37(ptr) Variable Output +45(PerVertex_out): TypeStruct 7(fvec4) + 46: TypePointer Output 45(PerVertex_out) +47(PerVertex_out): 46(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 35(vsin): 9(ptr) Variable Function - 40(Pos_loose): 10(ptr) Variable Function - 45(param): 9(ptr) Variable Function - 47(param): 10(ptr) Variable Function - 38: 7(fvec4) Load 37(Pos_in) - 39: 10(ptr) AccessChain 35(vsin) 21 - Store 39 38 - 42: 7(fvec4) Load 41(Pos_loose) - Store 40(Pos_loose) 42 - 46: 8(VS_INPUT) Load 35(vsin) - Store 45(param) 46 - 48: 7(fvec4) Load 40(Pos_loose) - Store 47(param) 48 - 49:11(VS_OUTPUT) FunctionCall 15(@main(struct-VS_INPUT-vf41;vf4;) 45(param) 47(param) - 50: 7(fvec4) CompositeExtract 49 0 - Store 44(@entryPointOutput_Pos) 50 + 29(vsin): 9(ptr) Variable Function + 34(Pos_loose): 10(ptr) Variable Function + 39(param): 9(ptr) Variable Function + 41(param): 10(ptr) Variable Function + 32: 7(fvec4) Load 31(Pos_in) + 33: 10(ptr) AccessChain 29(vsin) 20 + Store 33 32 + 36: 7(fvec4) Load 35(Pos_loose) + Store 34(Pos_loose) 36 + 40: 8(VS_INPUT) Load 29(vsin) + Store 39(param) 40 + 42: 7(fvec4) Load 34(Pos_loose) + Store 41(param) 42 + 43:11(VS_OUTPUT) FunctionCall 15(@main(struct-VS_INPUT-vf41;vf4;) 39(param) 41(param) + 44: 7(fvec4) CompositeExtract 43 0 + Store 38(@entryPointOutput_Pos) 44 Return FunctionEnd 15(@main(struct-VS_INPUT-vf41;vf4;):11(VS_OUTPUT) Function None 12 13(vsin): 9(ptr) FunctionParameter 14(Pos_loose): 10(ptr) FunctionParameter 16: Label - 19(vsout): 18(ptr) Variable Function - 29: 28(ptr) Variable Function - 22: 10(ptr) AccessChain 13(vsin) 21 - 23: 7(fvec4) Load 22 - 24: 7(fvec4) Load 14(Pos_loose) - 25: 7(fvec4) FAdd 23 24 - 26: 10(ptr) AccessChain 19(vsout) 21 - Store 26 25 - 27:17(VS_OUTPUT) Load 19(vsout) - 30: 7(fvec4) CompositeExtract 27 0 - 31: 10(ptr) AccessChain 29 21 - Store 31 30 - 32:11(VS_OUTPUT) Load 29 - ReturnValue 32 + 18(vsout): 17(ptr) Variable Function + 21: 10(ptr) AccessChain 13(vsin) 20 + 22: 7(fvec4) Load 21 + 23: 7(fvec4) Load 14(Pos_loose) + 24: 7(fvec4) FAdd 22 23 + 25: 10(ptr) AccessChain 18(vsout) 20 + Store 25 24 + 26:11(VS_OUTPUT) Load 18(vsout) + ReturnValue 26 FunctionEnd diff --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out index a7758699..fabc8a68 100644 --- a/Test/baseResults/hlsl.structarray.flatten.geom.out +++ b/Test/baseResults/hlsl.structarray.flatten.geom.out @@ -8,7 +8,7 @@ output primitive = triangle_strip 0:16 Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; (temp void) 0:16 Function Parameters: 0:16 'vin' (in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:16 'outStream' (out structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:19 color: direct index for structure (temp 4-component vector of float) @@ -47,8 +47,8 @@ output primitive = triangle_strip 0:21 Constant: 0:21 0 (const int) 0:22 Sequence -0:22 move second child to first child (temp structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:22 'outStream' (out structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:22 move second child to first child (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:22 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 EmitVertex (temp void) 0:16 Function Definition: main( (temp void) @@ -59,7 +59,7 @@ output primitive = triangle_strip 0:? 'vin' (layout(location=0 ) in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; (temp void) 0:? 'vin' (temp 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:? 'outStream' (temp structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:? 'outStream' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Linker Objects 0:? 'vin' (layout(location=0 ) in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) @@ -76,7 +76,7 @@ output primitive = triangle_strip 0:16 Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; (temp void) 0:16 Function Parameters: 0:16 'vin' (in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:16 'outStream' (out structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:16 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Sequence 0:19 move second child to first child (temp 4-component vector of float) 0:19 color: direct index for structure (temp 4-component vector of float) @@ -115,8 +115,8 @@ output primitive = triangle_strip 0:21 Constant: 0:21 0 (const int) 0:22 Sequence -0:22 move second child to first child (temp structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:22 'outStream' (out structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:22 move second child to first child (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:22 'outStream' (out structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 'vout' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:22 EmitVertex (temp void) 0:16 Function Definition: main( (temp void) @@ -127,18 +127,18 @@ output primitive = triangle_strip 0:? 'vin' (layout(location=0 ) in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; (temp void) 0:? 'vin' (temp 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) -0:? 'outStream' (temp structure{temp 4-component vector of float Position position, temp 4-component vector of float color, temp 2-component vector of float uv}) +0:? 'outStream' (temp structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) 0:? Linker Objects 0:? 'vin' (layout(location=0 ) in 2-element array of structure{temp 4-component vector of float position, temp 4-component vector of float color, temp 2-component vector of float uv}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 55 +// Id's are bound by 47 Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 4 "main" 48 + EntryPoint Geometry 4 "main" 40 ExecutionMode 4 InputLines ExecutionMode 4 Invocations 1 ExecutionMode 4 OutputTriangleStrip @@ -155,18 +155,13 @@ output primitive = triangle_strip Name 19 "@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;" Name 17 "vin" Name 18 "outStream" - Name 21 "PS_IN" - MemberName 21(PS_IN) 0 "position" - MemberName 21(PS_IN) 1 "color" - MemberName 21(PS_IN) 2 "uv" - Name 23 "vout" - Name 46 "vin" - Name 48 "vin" - Name 50 "outStream" - Name 51 "param" - Name 53 "param" - MemberDecorate 14(PS_IN) 0 BuiltIn Position - Decorate 48(vin) Location 0 + Name 21 "vout" + Name 38 "vin" + Name 40 "vin" + Name 42 "outStream" + Name 43 "param" + Name 45 "param" + Decorate 40(vin) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -180,56 +175,46 @@ output primitive = triangle_strip 14(PS_IN): TypeStruct 7(fvec4) 7(fvec4) 8(fvec2) 15: TypePointer Function 14(PS_IN) 16: TypeFunction 2 13(ptr) 15(ptr) - 21(PS_IN): TypeStruct 7(fvec4) 7(fvec4) 8(fvec2) - 22: TypePointer Function 21(PS_IN) - 24: TypeInt 32 1 - 25: 24(int) Constant 1 - 26: TypePointer Function 7(fvec4) - 30: 24(int) Constant 2 - 31: TypePointer Function 8(fvec2) - 35: 24(int) Constant 0 - 47: TypePointer Input 12 - 48(vin): 47(ptr) Variable Input + 22: TypeInt 32 1 + 23: 22(int) Constant 1 + 24: TypePointer Function 7(fvec4) + 28: 22(int) Constant 2 + 29: TypePointer Function 8(fvec2) + 33: 22(int) Constant 0 + 39: TypePointer Input 12 + 40(vin): 39(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 46(vin): 13(ptr) Variable Function - 50(outStream): 15(ptr) Variable Function - 51(param): 13(ptr) Variable Function - 53(param): 15(ptr) Variable Function - 49: 12 Load 48(vin) - Store 46(vin) 49 - 52: 12 Load 46(vin) - Store 51(param) 52 - 54: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 51(param) 53(param) + 38(vin): 13(ptr) Variable Function + 42(outStream): 15(ptr) Variable Function + 43(param): 13(ptr) Variable Function + 45(param): 15(ptr) Variable Function + 41: 12 Load 40(vin) + Store 38(vin) 41 + 44: 12 Load 38(vin) + Store 43(param) 44 + 46: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 43(param) 45(param) Return FunctionEnd 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;): 2 Function None 16 17(vin): 13(ptr) FunctionParameter 18(outStream): 15(ptr) FunctionParameter 20: Label - 23(vout): 22(ptr) Variable Function - 27: 26(ptr) AccessChain 17(vin) 25 25 - 28: 7(fvec4) Load 27 - 29: 26(ptr) AccessChain 23(vout) 25 - Store 29 28 - 32: 31(ptr) AccessChain 17(vin) 25 30 - 33: 8(fvec2) Load 32 - 34: 31(ptr) AccessChain 23(vout) 30 - Store 34 33 - 36: 26(ptr) AccessChain 17(vin) 25 35 - 37: 7(fvec4) Load 36 - 38: 26(ptr) AccessChain 23(vout) 35 - Store 38 37 - 39: 21(PS_IN) Load 23(vout) - 40: 7(fvec4) CompositeExtract 39 0 - 41: 26(ptr) AccessChain 18(outStream) 35 - Store 41 40 - 42: 7(fvec4) CompositeExtract 39 1 - 43: 26(ptr) AccessChain 18(outStream) 25 - Store 43 42 - 44: 8(fvec2) CompositeExtract 39 2 - 45: 31(ptr) AccessChain 18(outStream) 30 - Store 45 44 + 21(vout): 15(ptr) Variable Function + 25: 24(ptr) AccessChain 17(vin) 23 23 + 26: 7(fvec4) Load 25 + 27: 24(ptr) AccessChain 21(vout) 23 + Store 27 26 + 30: 29(ptr) AccessChain 17(vin) 23 28 + 31: 8(fvec2) Load 30 + 32: 29(ptr) AccessChain 21(vout) 28 + Store 32 31 + 34: 24(ptr) AccessChain 17(vin) 23 33 + 35: 7(fvec4) Load 34 + 36: 24(ptr) AccessChain 21(vout) 33 + Store 36 35 + 37: 14(PS_IN) Load 21(vout) + Store 18(outStream) 37 EmitVertex Return FunctionEnd diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index 6debd681..7b088d39 100755 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -1,7 +1,7 @@ hlsl.structin.vert Shader version: 450 0:? Sequence -0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' (in 4-component vector of float) 0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) @@ -86,7 +86,7 @@ Shader version: 450 0:8 Sequence 0:8 move second child to first child (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 'flattenTemp' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) -0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:? 'd' (temp 4-component vector of float) 0:? 'vi' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:? 'e' (temp 4-component vector of float) @@ -134,7 +134,7 @@ Linked vertex stage: Shader version: 450 0:? Sequence -0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Definition: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 Function Parameters: 0:8 'd' (in 4-component vector of float) 0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) @@ -219,7 +219,7 @@ Shader version: 450 0:8 Sequence 0:8 move second child to first child (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:8 'flattenTemp' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) -0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) +0:8 Function Call: @main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:? 'd' (temp 4-component vector of float) 0:? 'vi' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b}) 0:? 'e' (temp 4-component vector of float) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index d767ba5d..f2685bb9 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1780" +#define GLSLANG_REVISION "Overload400-PrecQual.1783" #define GLSLANG_DATE "01-Feb-2017" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index e1baa542..b4b22f2e 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1094,8 +1094,8 @@ int HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable, // Add a single flattened member to the flattened data being tracked for the composite // Returns true for the final flattening level. int HlslParseContext::addFlattenedMember(const TSourceLoc& loc, - const TVariable& variable, const TType& type, TFlattenData& flattenData, - const TString& memberName, bool track) + const TVariable& variable, const TType& type, TFlattenData& flattenData, + const TString& memberName, bool track) { if (isFinalFlattening(type)) { // This is as far as we flatten. Insert the variable. @@ -1121,12 +1121,9 @@ int HlslParseContext::addFlattenedMember(const TSourceLoc& loc, // Figure out the mapping between an aggregate's top members and an // equivalent set of individual variables. // -// N.B. Erases memory of I/O-related annotations in the original type's member, -// effecting a transfer of this information to the flattened variable form. -// // Assumes shouldFlatten() or equivalent was called first. int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& variable, const TType& type, - TFlattenData& flattenData, TString name) + TFlattenData& flattenData, TString name) { assert(type.isStruct()); @@ -1143,9 +1140,6 @@ int HlslParseContext::flattenStruct(const TSourceLoc& loc, const TVariable& vari const int mpos = addFlattenedMember(loc, variable, dereferencedType, flattenData, memberName, false); flattenData.offsets[pos++] = mpos; - - // N.B. Erase I/O-related annotations from the source-type member. - dereferencedType.getQualifier().makeTemporary(); } return start; @@ -1643,6 +1637,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TVector inputs; TVector outputs; remapEntryPointIO(userFunction, entryPointOutput, inputs, outputs); + // Once the parameters are moved to shader I/O, they should be non-I/O + remapNonEntryPointIO(userFunction); // Further this return/in/out transform by flattening, splitting, and assigning locations const auto makeVariableInOut = [&](TVariable& variable) { @@ -1805,11 +1801,11 @@ void HlslParseContext::remapNonEntryPointIO(TFunction& function) { // return value if (function.getType().getBasicType() != EbtVoid) - makeNonIoType(&function.getWritableType()); + makeTypeNonIo(&function.getWritableType()); // parameters for (int i = 0; i < function.getParamCount(); i++) - makeNonIoType(function[i].type); + makeTypeNonIo(function[i].type); } // Handle function returns, including type conversions to the function return type @@ -5391,20 +5387,20 @@ void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier error(loc, "name already defined", "typedef", identifier.c_str()); } -// Create a non-IO type from an IO type. If there is no IO data, this -// returns the input type unmodified. Otherwise, it modifies the type -// in place, and returns a pointer to it. -TType* HlslParseContext::makeNonIoType(TType* type) +// Create a non-IO type from an IO type. If there is no IO data, +// the input type is unmodified. Otherwise, it modifies the type +// in place. +void HlslParseContext::makeTypeNonIo(TType* type) { // early out if there's nothing to do: prevents introduction of unneeded types. if (!type->hasIoData()) - return type; + return; type->getQualifier().makeNonIo(); // Sanitize the qualifier. // Nothing more to do if there is no deep structure. if (!type->isStruct()) - return type; + return; const auto typeIter = nonIoTypeMap.find(type->getStruct()); @@ -5426,8 +5422,6 @@ TType* HlslParseContext::makeNonIoType(TType* type) nonIoTypeMap[type->getStruct()] = nonIoType.getWritableStruct(); type->shallowCopy(nonIoType); // we modify the input type in place } - - return type; } // @@ -5460,7 +5454,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i switch (type.getQualifier().storage) { case EvqGlobal: case EvqTemporary: - makeNonIoType(&type); + makeTypeNonIo(&type); default: break; } diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index 4000a028..912e510f 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -230,7 +230,7 @@ protected: // Create a non-IO type from an IO type. If there is no IO data, this returns the input type unmodified. // Otherwise, it modifies the type in place, and returns a pointer to it. - TType* makeNonIoType(TType*); + void makeTypeNonIo(TType*); void finish() override; // post-processing