HLSL Test: Expand test, adding a user-patch-constant signature.
diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out
index 9cdf297..e8a1955 100644
--- a/Test/baseResults/hlsl.domain.1.tese.out
+++ b/Test/baseResults/hlsl.domain.1.tese.out
@@ -4,9 +4,10 @@
vertex spacing = none
triangle order = none
0:? Sequence
-0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Function Parameters:
0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'f' ( in float)
0:22 'tesscoord' ( in 3-component vector of float)
0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:? Sequence
@@ -23,10 +24,12 @@
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
-0:25 direct index ( temp float)
-0:25 'tesscoord' ( in 3-component vector of float)
-0:25 Constant:
-0:25 0 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 direct index ( temp float)
+0:25 'tesscoord' ( in 3-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 'f' ( in float)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 norm: direct index for structure ( temp 3-component vector of float)
0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
@@ -56,6 +59,9 @@
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 move second child to first child ( temp float)
+0:? 'f' ( temp float)
+0:? 'f' (layout( location=2) patch in float)
0:22 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
@@ -108,8 +114,9 @@
0:22 Sequence
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
-0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' ( temp float)
0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:22 move second child to first child ( temp 4-component vector of float)
@@ -128,6 +135,7 @@
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' (layout( location=2) patch in float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
@@ -141,9 +149,10 @@
vertex spacing = none
triangle order = none
0:? Sequence
-0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Function Parameters:
0:22 'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 'f' ( in float)
0:22 'tesscoord' ( in 3-component vector of float)
0:22 'pcf_data' ( in structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:? Sequence
@@ -160,10 +169,12 @@
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
-0:25 direct index ( temp float)
-0:25 'tesscoord' ( in 3-component vector of float)
-0:25 Constant:
-0:25 0 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 direct index ( temp float)
+0:25 'tesscoord' ( in 3-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 'f' ( in float)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 norm: direct index for structure ( temp 3-component vector of float)
0:26 'o' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
@@ -193,6 +204,9 @@
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 move second child to first child ( temp float)
+0:? 'f' ( temp float)
+0:? 'f' (layout( location=2) patch in float)
0:22 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
@@ -245,8 +259,9 @@
0:22 Sequence
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
-0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' ( temp float)
0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:22 move second child to first child ( temp 4-component vector of float)
@@ -265,56 +280,63 @@
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
+0:? 'f' (layout( location=2) patch in float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 95
+// Id's are bound by 103
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationEvaluation 4 "main" 51 55 61 76 88 92
+ EntryPoint TessellationEvaluation 4 "main" 54 58 62 68 82 96 100
ExecutionMode 4 Triangles
Source HLSL 500
Name 4 "main"
Name 9 "ds_in_t"
MemberName 9(ds_in_t) 0 "pos"
MemberName 9(ds_in_t) 1 "norm"
- Name 15 "pcf_in_t"
- MemberName 15(pcf_in_t) 0 "flTessFactor"
- MemberName 15(pcf_in_t) 1 "flInsideTessFactor"
- Name 17 "gs_in_t"
- MemberName 17(gs_in_t) 0 "pos"
- MemberName 17(gs_in_t) 1 "norm"
- Name 22 "@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;"
- Name 19 "i"
- Name 20 "tesscoord"
- Name 21 "pcf_data"
- Name 25 "o"
- Name 49 "i"
- Name 51 "i"
- Name 53 "tesscoord"
- Name 55 "tesscoord"
- Name 57 "pcf_data"
- Name 61 "pcf_data.flTessFactor"
- Name 76 "pcf_data.flInsideTessFactor"
- Name 80 "flattenTemp"
- Name 82 "param"
- Name 84 "param"
- Name 88 "@entryPointOutput.pos"
- Name 92 "@entryPointOutput.norm"
- Decorate 51(i) Location 0
- Decorate 55(tesscoord) Patch
- Decorate 55(tesscoord) BuiltIn TessCoord
- Decorate 61(pcf_data.flTessFactor) Patch
- Decorate 61(pcf_data.flTessFactor) BuiltIn TessLevelOuter
- Decorate 76(pcf_data.flInsideTessFactor) Patch
- Decorate 76(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
- Decorate 88(@entryPointOutput.pos) Location 0
- Decorate 92(@entryPointOutput.norm) Location 1
+ Name 16 "pcf_in_t"
+ MemberName 16(pcf_in_t) 0 "flTessFactor"
+ MemberName 16(pcf_in_t) 1 "flInsideTessFactor"
+ Name 18 "gs_in_t"
+ MemberName 18(gs_in_t) 0 "pos"
+ MemberName 18(gs_in_t) 1 "norm"
+ Name 24 "@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;"
+ Name 20 "i"
+ Name 21 "f"
+ Name 22 "tesscoord"
+ Name 23 "pcf_data"
+ Name 27 "o"
+ Name 52 "i"
+ Name 54 "i"
+ Name 56 "f"
+ Name 58 "f"
+ Name 60 "tesscoord"
+ Name 62 "tesscoord"
+ Name 64 "pcf_data"
+ Name 68 "pcf_data.flTessFactor"
+ Name 82 "pcf_data.flInsideTessFactor"
+ Name 86 "flattenTemp"
+ Name 88 "param"
+ Name 90 "param"
+ Name 92 "param"
+ Name 96 "@entryPointOutput.pos"
+ Name 100 "@entryPointOutput.norm"
+ Decorate 54(i) Location 0
+ Decorate 58(f) Patch
+ Decorate 58(f) Location 2
+ Decorate 62(tesscoord) Patch
+ Decorate 62(tesscoord) BuiltIn TessCoord
+ Decorate 68(pcf_data.flTessFactor) Patch
+ Decorate 68(pcf_data.flTessFactor) BuiltIn TessLevelOuter
+ Decorate 82(pcf_data.flInsideTessFactor) Patch
+ Decorate 82(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
+ Decorate 96(@entryPointOutput.pos) Location 0
+ Decorate 100(@entryPointOutput.norm) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -324,102 +346,112 @@
10: TypeInt 32 0
11: 10(int) Constant 3
12: TypeArray 9(ds_in_t) 11
- 13: TypePointer Function 8(fvec3)
- 14: TypeArray 6(float) 11
- 15(pcf_in_t): TypeStruct 14 6(float)
- 16: TypePointer Function 15(pcf_in_t)
- 17(gs_in_t): TypeStruct 7(fvec4) 8(fvec3)
- 18: TypeFunction 17(gs_in_t) 12 13(ptr) 16(ptr)
- 24: TypePointer Function 17(gs_in_t)
- 26: TypeInt 32 1
- 27: 26(int) Constant 0
- 29: 10(int) Constant 0
- 30: TypePointer Function 6(float)
- 35: TypePointer Function 7(fvec4)
- 37: 26(int) Constant 1
- 39: 10(int) Constant 1
- 48: TypePointer Function 12
- 50: TypePointer Input 12
- 51(i): 50(ptr) Variable Input
- 54: TypePointer Input 8(fvec3)
- 55(tesscoord): 54(ptr) Variable Input
- 58: 10(int) Constant 4
- 59: TypeArray 6(float) 58
- 60: TypePointer Input 59
-61(pcf_data.flTessFactor): 60(ptr) Variable Input
- 62: TypePointer Input 6(float)
- 69: 26(int) Constant 2
- 73: 10(int) Constant 2
- 74: TypeArray 6(float) 73
- 75: TypePointer Input 74
-76(pcf_data.flInsideTessFactor): 75(ptr) Variable Input
- 87: TypePointer Output 7(fvec4)
-88(@entryPointOutput.pos): 87(ptr) Variable Output
- 91: TypePointer Output 8(fvec3)
-92(@entryPointOutput.norm): 91(ptr) Variable Output
+ 13: TypePointer Function 6(float)
+ 14: TypePointer Function 8(fvec3)
+ 15: TypeArray 6(float) 11
+ 16(pcf_in_t): TypeStruct 15 6(float)
+ 17: TypePointer Function 16(pcf_in_t)
+ 18(gs_in_t): TypeStruct 7(fvec4) 8(fvec3)
+ 19: TypeFunction 18(gs_in_t) 12 13(ptr) 14(ptr) 17(ptr)
+ 26: TypePointer Function 18(gs_in_t)
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 31: 10(int) Constant 0
+ 38: TypePointer Function 7(fvec4)
+ 40: 28(int) Constant 1
+ 42: 10(int) Constant 1
+ 51: TypePointer Function 12
+ 53: TypePointer Input 12
+ 54(i): 53(ptr) Variable Input
+ 57: TypePointer Input 6(float)
+ 58(f): 57(ptr) Variable Input
+ 61: TypePointer Input 8(fvec3)
+ 62(tesscoord): 61(ptr) Variable Input
+ 65: 10(int) Constant 4
+ 66: TypeArray 6(float) 65
+ 67: TypePointer Input 66
+68(pcf_data.flTessFactor): 67(ptr) Variable Input
+ 75: 28(int) Constant 2
+ 79: 10(int) Constant 2
+ 80: TypeArray 6(float) 79
+ 81: TypePointer Input 80
+82(pcf_data.flInsideTessFactor): 81(ptr) Variable Input
+ 95: TypePointer Output 7(fvec4)
+96(@entryPointOutput.pos): 95(ptr) Variable Output
+ 99: TypePointer Output 8(fvec3)
+100(@entryPointOutput.norm): 99(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 49(i): 48(ptr) Variable Function
- 53(tesscoord): 13(ptr) Variable Function
- 57(pcf_data): 16(ptr) Variable Function
- 80(flattenTemp): 24(ptr) Variable Function
- 82(param): 13(ptr) Variable Function
- 84(param): 16(ptr) Variable Function
- 52: 12 Load 51(i)
- Store 49(i) 52
- 56: 8(fvec3) Load 55(tesscoord)
- Store 53(tesscoord) 56
- 63: 62(ptr) AccessChain 61(pcf_data.flTessFactor) 27
- 64: 6(float) Load 63
- 65: 30(ptr) AccessChain 57(pcf_data) 27 27
- Store 65 64
- 66: 62(ptr) AccessChain 61(pcf_data.flTessFactor) 37
- 67: 6(float) Load 66
- 68: 30(ptr) AccessChain 57(pcf_data) 27 37
- Store 68 67
- 70: 62(ptr) AccessChain 61(pcf_data.flTessFactor) 69
- 71: 6(float) Load 70
- 72: 30(ptr) AccessChain 57(pcf_data) 27 69
- Store 72 71
- 77: 62(ptr) AccessChain 76(pcf_data.flInsideTessFactor) 27
- 78: 6(float) Load 77
- 79: 30(ptr) AccessChain 57(pcf_data) 37
- Store 79 78
- 81: 12 Load 49(i)
- 83: 8(fvec3) Load 53(tesscoord)
- Store 82(param) 83
- 85:15(pcf_in_t) Load 57(pcf_data)
- Store 84(param) 85
- 86: 17(gs_in_t) FunctionCall 22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;) 81 82(param) 84(param)
- Store 80(flattenTemp) 86
- 89: 35(ptr) AccessChain 80(flattenTemp) 27
- 90: 7(fvec4) Load 89
- Store 88(@entryPointOutput.pos) 90
- 93: 13(ptr) AccessChain 80(flattenTemp) 37
- 94: 8(fvec3) Load 93
- Store 92(@entryPointOutput.norm) 94
+ 52(i): 51(ptr) Variable Function
+ 56(f): 13(ptr) Variable Function
+ 60(tesscoord): 14(ptr) Variable Function
+ 64(pcf_data): 17(ptr) Variable Function
+ 86(flattenTemp): 26(ptr) Variable Function
+ 88(param): 13(ptr) Variable Function
+ 90(param): 14(ptr) Variable Function
+ 92(param): 17(ptr) Variable Function
+ 55: 12 Load 54(i)
+ Store 52(i) 55
+ 59: 6(float) Load 58(f)
+ Store 56(f) 59
+ 63: 8(fvec3) Load 62(tesscoord)
+ Store 60(tesscoord) 63
+ 69: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 29
+ 70: 6(float) Load 69
+ 71: 13(ptr) AccessChain 64(pcf_data) 29 29
+ Store 71 70
+ 72: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 40
+ 73: 6(float) Load 72
+ 74: 13(ptr) AccessChain 64(pcf_data) 29 40
+ Store 74 73
+ 76: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 75
+ 77: 6(float) Load 76
+ 78: 13(ptr) AccessChain 64(pcf_data) 29 75
+ Store 78 77
+ 83: 57(ptr) AccessChain 82(pcf_data.flInsideTessFactor) 29
+ 84: 6(float) Load 83
+ 85: 13(ptr) AccessChain 64(pcf_data) 40
+ Store 85 84
+ 87: 12 Load 52(i)
+ 89: 6(float) Load 56(f)
+ Store 88(param) 89
+ 91: 8(fvec3) Load 60(tesscoord)
+ Store 90(param) 91
+ 93:16(pcf_in_t) Load 64(pcf_data)
+ Store 92(param) 93
+ 94: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 87 88(param) 90(param) 92(param)
+ Store 86(flattenTemp) 94
+ 97: 38(ptr) AccessChain 86(flattenTemp) 29
+ 98: 7(fvec4) Load 97
+ Store 96(@entryPointOutput.pos) 98
+ 101: 14(ptr) AccessChain 86(flattenTemp) 40
+ 102: 8(fvec3) Load 101
+ Store 100(@entryPointOutput.norm) 102
Return
FunctionEnd
-22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;): 17(gs_in_t) Function None 18
- 19(i): 12 FunctionParameter
- 20(tesscoord): 13(ptr) FunctionParameter
- 21(pcf_data): 16(ptr) FunctionParameter
- 23: Label
- 25(o): 24(ptr) Variable Function
- 28: 7(fvec4) CompositeExtract 19(i) 0 0
- 31: 30(ptr) AccessChain 20(tesscoord) 29
- 32: 6(float) Load 31
- 33: 7(fvec4) CompositeConstruct 32 32 32 32
- 34: 7(fvec4) FAdd 28 33
- 36: 35(ptr) AccessChain 25(o) 27
- Store 36 34
- 38: 8(fvec3) CompositeExtract 19(i) 0 1
- 40: 30(ptr) AccessChain 20(tesscoord) 39
- 41: 6(float) Load 40
- 42: 8(fvec3) CompositeConstruct 41 41 41
- 43: 8(fvec3) FAdd 38 42
- 44: 13(ptr) AccessChain 25(o) 37
- Store 44 43
- 45: 17(gs_in_t) Load 25(o)
- ReturnValue 45
+24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19
+ 20(i): 12 FunctionParameter
+ 21(f): 13(ptr) FunctionParameter
+ 22(tesscoord): 14(ptr) FunctionParameter
+ 23(pcf_data): 17(ptr) FunctionParameter
+ 25: Label
+ 27(o): 26(ptr) Variable Function
+ 30: 7(fvec4) CompositeExtract 20(i) 0 0
+ 32: 13(ptr) AccessChain 22(tesscoord) 31
+ 33: 6(float) Load 32
+ 34: 6(float) Load 21(f)
+ 35: 6(float) FMul 33 34
+ 36: 7(fvec4) CompositeConstruct 35 35 35 35
+ 37: 7(fvec4) FAdd 30 36
+ 39: 38(ptr) AccessChain 27(o) 29
+ Store 39 37
+ 41: 8(fvec3) CompositeExtract 20(i) 0 1
+ 43: 13(ptr) AccessChain 22(tesscoord) 42
+ 44: 6(float) Load 43
+ 45: 8(fvec3) CompositeConstruct 44 44 44
+ 46: 8(fvec3) FAdd 41 45
+ 47: 14(ptr) AccessChain 27(o) 40
+ Store 47 46
+ 48: 18(gs_in_t) Load 27(o)
+ ReturnValue 48
FunctionEnd
diff --git a/Test/hlsl.domain.1.tese b/Test/hlsl.domain.1.tese
index 5039410..7366e9b 100644
--- a/Test/hlsl.domain.1.tese
+++ b/Test/hlsl.domain.1.tese
@@ -18,11 +18,11 @@
};
[domain ( "tri" )]
-gs_in_t main (const OutputPatch <ds_in_t, 3> i, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
+gs_in_t main (const OutputPatch <ds_in_t, 3> i, float f : msem, float3 tesscoord : SV_DomainLocation, pcf_in_t pcf_data )
{
gs_in_t o;
- o.pos = i[0].pos + tesscoord.x;
+ o.pos = i[0].pos + tesscoord.x * f;
o.norm = i[0].norm + tesscoord.y;
tesscoord.z;