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:
@@ -135,14 +135,14 @@ local_size = (256, 1, 1)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 61
|
||||
// Id's are bound by 62
|
||||
|
||||
Capability Shader
|
||||
Capability ImageBuffer
|
||||
Capability StorageImageExtendedFormats
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 56
|
||||
EntryPoint GLCompute 4 "main" 57
|
||||
ExecutionMode 4 LocalSize 256 1 1
|
||||
Source HLSL 500
|
||||
Name 4 "main"
|
||||
@@ -155,13 +155,14 @@ local_size = (256, 1, 1)
|
||||
Name 18 "dispatchId"
|
||||
Name 22 "result"
|
||||
Name 25 "byteAddrTemp"
|
||||
Name 43 "result"
|
||||
Name 42 "result"
|
||||
Name 44 "g_input"
|
||||
Name 45 "param"
|
||||
Name 50 "g_output"
|
||||
Name 54 "dispatchId"
|
||||
Name 56 "dispatchId"
|
||||
Name 58 "param"
|
||||
Name 47 "param"
|
||||
Name 51 "g_output"
|
||||
Name 55 "dispatchId"
|
||||
Name 57 "dispatchId"
|
||||
Name 59 "param"
|
||||
Decorate 8 ArrayStride 4
|
||||
MemberDecorate 9 0 NonWritable
|
||||
MemberDecorate 9 0 Offset 0
|
||||
@@ -169,16 +170,16 @@ local_size = (256, 1, 1)
|
||||
Decorate 14(buffer) NonWritable
|
||||
Decorate 44(g_input) DescriptorSet 0
|
||||
Decorate 44(g_input) Binding 0
|
||||
Decorate 50(g_output) DescriptorSet 0
|
||||
Decorate 50(g_output) Binding 1
|
||||
Decorate 56(dispatchId) BuiltIn GlobalInvocationId
|
||||
Decorate 51(g_output) DescriptorSet 0
|
||||
Decorate 51(g_output) Binding 1
|
||||
Decorate 57(dispatchId) BuiltIn GlobalInvocationId
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypePointer Function 6(int)
|
||||
8: TypeRuntimeArray 6(int)
|
||||
9: TypeStruct 8
|
||||
10: TypePointer Uniform 9(struct)
|
||||
10: TypePointer Function 9(struct)
|
||||
11: TypeVector 6(int) 2
|
||||
12: TypeFunction 11(ivec2) 7(ptr) 10(ptr)
|
||||
17: TypeFunction 2 7(ptr)
|
||||
@@ -187,23 +188,23 @@ local_size = (256, 1, 1)
|
||||
24: TypePointer Function 23(int)
|
||||
27: 23(int) Constant 2
|
||||
29: 23(int) Constant 0
|
||||
31: TypePointer Uniform 6(int)
|
||||
35: 23(int) Constant 1
|
||||
44(g_input): 10(ptr) Variable Uniform
|
||||
48: TypeImage 6(int) Buffer nonsampled format:Rg32ui
|
||||
49: TypePointer UniformConstant 48
|
||||
50(g_output): 49(ptr) Variable UniformConstant
|
||||
55: TypePointer Input 6(int)
|
||||
56(dispatchId): 55(ptr) Variable Input
|
||||
34: 23(int) Constant 1
|
||||
43: TypePointer Uniform 9(struct)
|
||||
44(g_input): 43(ptr) Variable Uniform
|
||||
49: TypeImage 6(int) Buffer nonsampled format:Rg32ui
|
||||
50: TypePointer UniformConstant 49
|
||||
51(g_output): 50(ptr) Variable UniformConstant
|
||||
56: TypePointer Input 6(int)
|
||||
57(dispatchId): 56(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
54(dispatchId): 7(ptr) Variable Function
|
||||
58(param): 7(ptr) Variable Function
|
||||
57: 6(int) Load 56(dispatchId)
|
||||
Store 54(dispatchId) 57
|
||||
59: 6(int) Load 54(dispatchId)
|
||||
Store 58(param) 59
|
||||
60: 2 FunctionCall 19(@main(u1;) 58(param)
|
||||
55(dispatchId): 7(ptr) Variable Function
|
||||
59(param): 7(ptr) Variable Function
|
||||
58: 6(int) Load 57(dispatchId)
|
||||
Store 55(dispatchId) 58
|
||||
60: 6(int) Load 55(dispatchId)
|
||||
Store 59(param) 60
|
||||
61: 2 FunctionCall 19(@main(u1;) 59(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
15(testLoad(u1;block--u1[0]1;): 11(ivec2) Function None 12
|
||||
@@ -216,29 +217,30 @@ local_size = (256, 1, 1)
|
||||
28: 23(int) ShiftRightLogical 26 27
|
||||
Store 25(byteAddrTemp) 28
|
||||
30: 23(int) Load 25(byteAddrTemp)
|
||||
32: 31(ptr) AccessChain 14(buffer) 29 30
|
||||
33: 6(int) Load 32
|
||||
34: 23(int) Load 25(byteAddrTemp)
|
||||
36: 23(int) IAdd 34 35
|
||||
37: 31(ptr) AccessChain 14(buffer) 29 36
|
||||
38: 6(int) Load 37
|
||||
39: 11(ivec2) CompositeConstruct 33 38
|
||||
Store 22(result) 39
|
||||
40: 11(ivec2) Load 22(result)
|
||||
ReturnValue 40
|
||||
31: 7(ptr) AccessChain 14(buffer) 29 30
|
||||
32: 6(int) Load 31
|
||||
33: 23(int) Load 25(byteAddrTemp)
|
||||
35: 23(int) IAdd 33 34
|
||||
36: 7(ptr) AccessChain 14(buffer) 29 35
|
||||
37: 6(int) Load 36
|
||||
38: 11(ivec2) CompositeConstruct 32 37
|
||||
Store 22(result) 38
|
||||
39: 11(ivec2) Load 22(result)
|
||||
ReturnValue 39
|
||||
FunctionEnd
|
||||
19(@main(u1;): 2 Function None 17
|
||||
18(dispatchId): 7(ptr) FunctionParameter
|
||||
20: Label
|
||||
43(result): 21(ptr) Variable Function
|
||||
42(result): 21(ptr) Variable Function
|
||||
45(param): 7(ptr) Variable Function
|
||||
47(param): 10(ptr) Variable Function
|
||||
46: 6(int) Load 18(dispatchId)
|
||||
Store 45(param) 46
|
||||
47: 11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 44(g_input)
|
||||
Store 43(result) 47
|
||||
51: 48 Load 50(g_output)
|
||||
52: 6(int) Load 18(dispatchId)
|
||||
53: 11(ivec2) Load 43(result)
|
||||
ImageWrite 51 52 53
|
||||
48: 11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 47(param)
|
||||
Store 42(result) 48
|
||||
52: 49 Load 51(g_output)
|
||||
53: 6(int) Load 18(dispatchId)
|
||||
54: 11(ivec2) Load 42(result)
|
||||
ImageWrite 52 53 54
|
||||
Return
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user