HLSL: Pass opaques by local copy, instead of by interface original.
Also, remove assumption that if something is opaque that it must be in the UniformConstant storage class. This allows function declarations to know all parameters will be in the Function storage class.
This commit is contained in:
@@ -139,12 +139,12 @@ gl_FragCoord origin is upper left
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 78
|
||||
// Id's are bound by 83
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 63 66
|
||||
EntryPoint Fragment 4 "main" 68 71
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
@@ -165,21 +165,24 @@ gl_FragCoord origin is upper left
|
||||
Name 35 "@main(u1;"
|
||||
Name 34 "pos"
|
||||
Name 47 "sbuf2"
|
||||
Name 48 "sbuf2@count"
|
||||
Name 50 "sbuf"
|
||||
Name 52 "param"
|
||||
Name 49 "sbuf2@count"
|
||||
Name 52 "sbuf"
|
||||
Name 54 "param"
|
||||
Name 55 "param"
|
||||
Name 61 "pos"
|
||||
Name 63 "pos"
|
||||
Name 66 "@entryPointOutput"
|
||||
Name 67 "param"
|
||||
Name 70 "sbuf2@count"
|
||||
MemberName 70(sbuf2@count) 0 "@count"
|
||||
Name 72 "sbuf2@count"
|
||||
Name 75 "sbuf3"
|
||||
MemberName 75(sbuf3) 0 "@data"
|
||||
Name 77 "sbuf3"
|
||||
Name 57 "param"
|
||||
Name 58 "param"
|
||||
Name 59 "param"
|
||||
Name 60 "param"
|
||||
Name 66 "pos"
|
||||
Name 68 "pos"
|
||||
Name 71 "@entryPointOutput"
|
||||
Name 72 "param"
|
||||
Name 75 "sbuf2@count"
|
||||
MemberName 75(sbuf2@count) 0 "@count"
|
||||
Name 77 "sbuf2@count"
|
||||
Name 80 "sbuf3"
|
||||
MemberName 80(sbuf3) 0 "@data"
|
||||
Name 82 "sbuf3"
|
||||
Decorate 8 ArrayStride 16
|
||||
MemberDecorate 9 0 NonWritable
|
||||
MemberDecorate 9 0 Offset 0
|
||||
@@ -190,72 +193,74 @@ gl_FragCoord origin is upper left
|
||||
Decorate 18 BufferBlock
|
||||
Decorate 21 BufferBlock
|
||||
Decorate 47(sbuf2) DescriptorSet 0
|
||||
Decorate 48(sbuf2@count) DescriptorSet 0
|
||||
Decorate 50(sbuf) DescriptorSet 0
|
||||
Decorate 50(sbuf) Binding 10
|
||||
Decorate 63(pos) Flat
|
||||
Decorate 63(pos) Location 0
|
||||
Decorate 66(@entryPointOutput) Location 0
|
||||
MemberDecorate 70(sbuf2@count) 0 Offset 0
|
||||
Decorate 70(sbuf2@count) BufferBlock
|
||||
Decorate 72(sbuf2@count) DescriptorSet 0
|
||||
Decorate 74 ArrayStride 16
|
||||
MemberDecorate 75(sbuf3) 0 NonWritable
|
||||
MemberDecorate 75(sbuf3) 0 Offset 0
|
||||
Decorate 75(sbuf3) BufferBlock
|
||||
Decorate 77(sbuf3) DescriptorSet 0
|
||||
Decorate 77(sbuf3) Binding 12
|
||||
Decorate 49(sbuf2@count) DescriptorSet 0
|
||||
Decorate 52(sbuf) DescriptorSet 0
|
||||
Decorate 52(sbuf) Binding 10
|
||||
Decorate 68(pos) Flat
|
||||
Decorate 68(pos) Location 0
|
||||
Decorate 71(@entryPointOutput) Location 0
|
||||
MemberDecorate 75(sbuf2@count) 0 Offset 0
|
||||
Decorate 75(sbuf2@count) BufferBlock
|
||||
Decorate 77(sbuf2@count) DescriptorSet 0
|
||||
Decorate 79 ArrayStride 16
|
||||
MemberDecorate 80(sbuf3) 0 NonWritable
|
||||
MemberDecorate 80(sbuf3) 0 Offset 0
|
||||
Decorate 80(sbuf3) BufferBlock
|
||||
Decorate 82(sbuf3) DescriptorSet 0
|
||||
Decorate 82(sbuf3) Binding 12
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeVector 6(int) 4
|
||||
8: TypeRuntimeArray 7(ivec4)
|
||||
9: TypeStruct 8
|
||||
10: TypePointer Uniform 9(struct)
|
||||
10: TypePointer Function 9(struct)
|
||||
11: TypePointer Function 6(int)
|
||||
12: TypeFunction 7(ivec4) 10(ptr) 11(ptr)
|
||||
17: TypeRuntimeArray 7(ivec4)
|
||||
18: TypeStruct 17
|
||||
19: TypePointer Uniform 18(struct)
|
||||
19: TypePointer Function 18(struct)
|
||||
20: TypeInt 32 1
|
||||
21: TypeStruct 20(int)
|
||||
22: TypePointer Uniform 21(struct)
|
||||
22: TypePointer Function 21(struct)
|
||||
23: TypePointer Function 7(ivec4)
|
||||
24: TypeFunction 2 19(ptr) 22(ptr) 11(ptr) 23(ptr)
|
||||
31: TypeFloat 32
|
||||
32: TypeVector 31(float) 4
|
||||
33: TypeFunction 32(fvec4) 11(ptr)
|
||||
37: 20(int) Constant 0
|
||||
39: TypePointer Uniform 7(ivec4)
|
||||
47(sbuf2): 19(ptr) Variable Uniform
|
||||
48(sbuf2@count): 22(ptr) Variable Uniform
|
||||
49: 6(int) Constant 2
|
||||
50(sbuf): 10(ptr) Variable Uniform
|
||||
51: 6(int) Constant 3
|
||||
57: 31(float) Constant 0
|
||||
58: 32(fvec4) ConstantComposite 57 57 57 57
|
||||
62: TypePointer Input 6(int)
|
||||
63(pos): 62(ptr) Variable Input
|
||||
65: TypePointer Output 32(fvec4)
|
||||
66(@entryPointOutput): 65(ptr) Variable Output
|
||||
70(sbuf2@count): TypeStruct 20(int)
|
||||
71: TypePointer Uniform 70(sbuf2@count)
|
||||
72(sbuf2@count): 71(ptr) Variable Uniform
|
||||
73: TypeVector 6(int) 3
|
||||
74: TypeRuntimeArray 73(ivec3)
|
||||
75(sbuf3): TypeStruct 74
|
||||
76: TypePointer Uniform 75(sbuf3)
|
||||
77(sbuf3): 76(ptr) Variable Uniform
|
||||
46: TypePointer Uniform 18(struct)
|
||||
47(sbuf2): 46(ptr) Variable Uniform
|
||||
48: TypePointer Uniform 21(struct)
|
||||
49(sbuf2@count): 48(ptr) Variable Uniform
|
||||
50: 6(int) Constant 2
|
||||
51: TypePointer Uniform 9(struct)
|
||||
52(sbuf): 51(ptr) Variable Uniform
|
||||
53: 6(int) Constant 3
|
||||
62: 31(float) Constant 0
|
||||
63: 32(fvec4) ConstantComposite 62 62 62 62
|
||||
67: TypePointer Input 6(int)
|
||||
68(pos): 67(ptr) Variable Input
|
||||
70: TypePointer Output 32(fvec4)
|
||||
71(@entryPointOutput): 70(ptr) Variable Output
|
||||
75(sbuf2@count): TypeStruct 20(int)
|
||||
76: TypePointer Uniform 75(sbuf2@count)
|
||||
77(sbuf2@count): 76(ptr) Variable Uniform
|
||||
78: TypeVector 6(int) 3
|
||||
79: TypeRuntimeArray 78(ivec3)
|
||||
80(sbuf3): TypeStruct 79
|
||||
81: TypePointer Uniform 80(sbuf3)
|
||||
82(sbuf3): 81(ptr) Variable Uniform
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
61(pos): 11(ptr) Variable Function
|
||||
67(param): 11(ptr) Variable Function
|
||||
64: 6(int) Load 63(pos)
|
||||
Store 61(pos) 64
|
||||
68: 6(int) Load 61(pos)
|
||||
Store 67(param) 68
|
||||
69: 32(fvec4) FunctionCall 35(@main(u1;) 67(param)
|
||||
Store 66(@entryPointOutput) 69
|
||||
66(pos): 11(ptr) Variable Function
|
||||
72(param): 11(ptr) Variable Function
|
||||
69: 6(int) Load 68(pos)
|
||||
Store 66(pos) 69
|
||||
73: 6(int) Load 66(pos)
|
||||
Store 72(param) 73
|
||||
74: 32(fvec4) FunctionCall 35(@main(u1;) 72(param)
|
||||
Store 71(@entryPointOutput) 74
|
||||
Return
|
||||
FunctionEnd
|
||||
15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12
|
||||
@@ -263,9 +268,9 @@ gl_FragCoord origin is upper left
|
||||
14(bufferOffset): 11(ptr) FunctionParameter
|
||||
16: Label
|
||||
38: 6(int) Load 14(bufferOffset)
|
||||
40: 39(ptr) AccessChain 13(sb) 37 38
|
||||
41: 7(ivec4) Load 40
|
||||
ReturnValue 41
|
||||
39: 23(ptr) AccessChain 13(sb) 37 38
|
||||
40: 7(ivec4) Load 39
|
||||
ReturnValue 40
|
||||
FunctionEnd
|
||||
29(set(block--vu4[0]1;u1;vu4;): 2 Function None 24
|
||||
25(sb): 19(ptr) FunctionParameter
|
||||
@@ -273,22 +278,25 @@ gl_FragCoord origin is upper left
|
||||
27(bufferOffset): 11(ptr) FunctionParameter
|
||||
28(data): 23(ptr) FunctionParameter
|
||||
30: Label
|
||||
44: 6(int) Load 27(bufferOffset)
|
||||
45: 7(ivec4) Load 28(data)
|
||||
46: 39(ptr) AccessChain 25(sb) 37 44
|
||||
Store 46 45
|
||||
43: 6(int) Load 27(bufferOffset)
|
||||
44: 7(ivec4) Load 28(data)
|
||||
45: 23(ptr) AccessChain 25(sb) 37 43
|
||||
Store 45 44
|
||||
Return
|
||||
FunctionEnd
|
||||
35(@main(u1;): 32(fvec4) Function None 33
|
||||
34(pos): 11(ptr) FunctionParameter
|
||||
36: Label
|
||||
52(param): 11(ptr) Variable Function
|
||||
54(param): 11(ptr) Variable Function
|
||||
55(param): 23(ptr) Variable Function
|
||||
Store 52(param) 51
|
||||
53: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 50(sbuf) 52(param)
|
||||
Store 54(param) 49
|
||||
54(param): 10(ptr) Variable Function
|
||||
55(param): 11(ptr) Variable Function
|
||||
57(param): 19(ptr) Variable Function
|
||||
58(param): 22(ptr) Variable Function
|
||||
59(param): 11(ptr) Variable Function
|
||||
60(param): 23(ptr) Variable Function
|
||||
Store 55(param) 53
|
||||
56: 2 FunctionCall 29(set(block--vu4[0]1;u1;vu4;) 47(sbuf2) 48(sbuf2@count) 54(param) 55(param)
|
||||
ReturnValue 58
|
||||
56: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 54(param) 55(param)
|
||||
Store 59(param) 50
|
||||
Store 60(param) 56
|
||||
61: 2 FunctionCall 29(set(block--vu4[0]1;u1;vu4;) 57(param) 58(param) 59(param) 60(param)
|
||||
ReturnValue 63
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user