Apply memory decorations from GLSL source to the top-level OpVariable. Previously, these decorations would only be applied to individual members. While this is correct behavior, it is more convenient for some front ends to see the decorations (specifically ReadOnly and WriteOnly) applied to the whole variable rather than individual members.
391 lines
20 KiB
Text
391 lines
20 KiB
Text
hlsl.buffer_ref_parameter.comp
|
|
Shader version: 500
|
|
local_size = (64, 1, 1)
|
|
0:? Sequence
|
|
0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
|
0:4 Function Parameters:
|
|
0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:4 'vertex_id' ( in uint)
|
|
0:? Sequence
|
|
0:5 Branch: Return with expression
|
|
0:? intBitsToFloat ( temp 3-component vector of float)
|
|
0:? Sequence
|
|
0:5 move second child to first child ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 right-shift ( temp int)
|
|
0:5 component-wise multiply ( temp uint)
|
|
0:5 component-wise multiply ( temp uint)
|
|
0:5 'vertex_id' ( in uint)
|
|
0:5 Constant:
|
|
0:5 3 (const uint)
|
|
0:5 Constant:
|
|
0:5 4 (const uint)
|
|
0:5 Constant:
|
|
0:5 2 (const int)
|
|
0:? Construct vec3 ( temp 3-component vector of uint)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 add ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 Constant:
|
|
0:5 1 (const int)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 add ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 Constant:
|
|
0:5 2 (const int)
|
|
0:9 Function Definition: @main(u1; ( temp void)
|
|
0:9 Function Parameters:
|
|
0:9 'gi' ( in uint)
|
|
0:? Sequence
|
|
0:10 Sequence
|
|
0:10 move second child to first child ( temp 3-component vector of float)
|
|
0:10 'position_ms' ( temp 3-component vector of float)
|
|
0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
|
0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:10 'gi' ( in uint)
|
|
0:? Sequence
|
|
0:12 move second child to first child ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 right-shift ( temp int)
|
|
0:12 Constant:
|
|
0:12 0 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 0 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 add ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 add ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:9 Function Definition: main( ( temp void)
|
|
0:9 Function Parameters:
|
|
0:? Sequence
|
|
0:9 move second child to first child ( temp uint)
|
|
0:? 'gi' ( temp uint)
|
|
0:? 'gi' ( in uint LocalInvocationIndex)
|
|
0:9 Function Call: @main(u1; ( temp void)
|
|
0:? 'gi' ( temp uint)
|
|
0:? Linker Objects
|
|
0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:? 'gi' ( in uint LocalInvocationIndex)
|
|
|
|
|
|
Linked compute stage:
|
|
|
|
|
|
Shader version: 500
|
|
local_size = (64, 1, 1)
|
|
0:? Sequence
|
|
0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
|
0:4 Function Parameters:
|
|
0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:4 'vertex_id' ( in uint)
|
|
0:? Sequence
|
|
0:5 Branch: Return with expression
|
|
0:? intBitsToFloat ( temp 3-component vector of float)
|
|
0:? Sequence
|
|
0:5 move second child to first child ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 right-shift ( temp int)
|
|
0:5 component-wise multiply ( temp uint)
|
|
0:5 component-wise multiply ( temp uint)
|
|
0:5 'vertex_id' ( in uint)
|
|
0:5 Constant:
|
|
0:5 3 (const uint)
|
|
0:5 Constant:
|
|
0:5 4 (const uint)
|
|
0:5 Constant:
|
|
0:5 2 (const int)
|
|
0:? Construct vec3 ( temp 3-component vector of uint)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 add ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 Constant:
|
|
0:5 1 (const int)
|
|
0:5 indirect index ( temp uint)
|
|
0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:5 Constant:
|
|
0:5 0 (const uint)
|
|
0:5 add ( temp int)
|
|
0:5 'byteAddrTemp' ( temp int)
|
|
0:5 Constant:
|
|
0:5 2 (const int)
|
|
0:9 Function Definition: @main(u1; ( temp void)
|
|
0:9 Function Parameters:
|
|
0:9 'gi' ( in uint)
|
|
0:? Sequence
|
|
0:10 Sequence
|
|
0:10 move second child to first child ( temp 3-component vector of float)
|
|
0:10 'position_ms' ( temp 3-component vector of float)
|
|
0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
|
|
0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:10 'gi' ( in uint)
|
|
0:? Sequence
|
|
0:12 move second child to first child ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 right-shift ( temp int)
|
|
0:12 Constant:
|
|
0:12 0 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 0 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 add ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 move second child to first child ( temp uint)
|
|
0:12 indirect index (layout( row_major std430) buffer uint)
|
|
0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
|
|
0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 add ( temp int)
|
|
0:12 'byteAddrTemp' ( temp int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 direct index ( temp uint)
|
|
0:12 floatBitsToUint ( temp 3-component vector of uint)
|
|
0:12 'position_ms' ( temp 3-component vector of float)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:9 Function Definition: main( ( temp void)
|
|
0:9 Function Parameters:
|
|
0:? Sequence
|
|
0:9 move second child to first child ( temp uint)
|
|
0:? 'gi' ( temp uint)
|
|
0:? 'gi' ( in uint LocalInvocationIndex)
|
|
0:9 Function Call: @main(u1; ( temp void)
|
|
0:? 'gi' ( temp uint)
|
|
0:? Linker Objects
|
|
0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
|
|
0:? 'gi' ( in uint LocalInvocationIndex)
|
|
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 90
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint GLCompute 4 "main" 53 62 85
|
|
ExecutionMode 4 LocalSize 64 1 1
|
|
Source HLSL 500
|
|
Name 4 "main"
|
|
Name 8 ""
|
|
MemberName 8 0 "@data"
|
|
Name 16 "pull_position(block--u1[0]1;u1;"
|
|
Name 14 "buffer_position"
|
|
Name 15 "vertex_id"
|
|
Name 20 "@main(u1;"
|
|
Name 19 "gi"
|
|
Name 24 "byteAddrTemp"
|
|
Name 52 "position_ms"
|
|
Name 53 "buffer_position_ms"
|
|
Name 54 "param"
|
|
Name 57 "byteAddrTemp"
|
|
Name 60 "r"
|
|
MemberName 60(r) 0 "@data"
|
|
Name 62 "r"
|
|
Name 83 "gi"
|
|
Name 85 "gi"
|
|
Name 87 "param"
|
|
Decorate 7 ArrayStride 4
|
|
Decorate 8 Block
|
|
MemberDecorate 8 0 NonWritable
|
|
MemberDecorate 8 0 Offset 0
|
|
Decorate 14(buffer_position) NonWritable
|
|
Decorate 53(buffer_position_ms) NonWritable
|
|
Decorate 53(buffer_position_ms) Binding 0
|
|
Decorate 53(buffer_position_ms) DescriptorSet 0
|
|
Decorate 59 ArrayStride 4
|
|
Decorate 60(r) Block
|
|
MemberDecorate 60(r) 0 Offset 0
|
|
Decorate 62(r) Binding 1
|
|
Decorate 62(r) DescriptorSet 0
|
|
Decorate 85(gi) BuiltIn LocalInvocationIndex
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 0
|
|
7: TypeRuntimeArray 6(int)
|
|
8: TypeStruct 7
|
|
9: TypePointer StorageBuffer 8(struct)
|
|
10: TypePointer Function 6(int)
|
|
11: TypeFloat 32
|
|
12: TypeVector 11(float) 3
|
|
13: TypeFunction 12(fvec3) 9(ptr) 10(ptr)
|
|
18: TypeFunction 2 10(ptr)
|
|
22: TypeInt 32 1
|
|
23: TypePointer Function 22(int)
|
|
26: 6(int) Constant 3
|
|
28: 6(int) Constant 4
|
|
30: 22(int) Constant 2
|
|
32: 22(int) Constant 0
|
|
34: TypePointer StorageBuffer 6(int)
|
|
38: 22(int) Constant 1
|
|
46: TypeVector 6(int) 3
|
|
51: TypePointer Function 12(fvec3)
|
|
53(buffer_position_ms): 9(ptr) Variable StorageBuffer
|
|
59: TypeRuntimeArray 6(int)
|
|
60(r): TypeStruct 59
|
|
61: TypePointer StorageBuffer 60(r)
|
|
62(r): 61(ptr) Variable StorageBuffer
|
|
66: 6(int) Constant 0
|
|
73: 6(int) Constant 1
|
|
80: 6(int) Constant 2
|
|
84: TypePointer Input 6(int)
|
|
85(gi): 84(ptr) Variable Input
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
83(gi): 10(ptr) Variable Function
|
|
87(param): 10(ptr) Variable Function
|
|
86: 6(int) Load 85(gi)
|
|
Store 83(gi) 86
|
|
88: 6(int) Load 83(gi)
|
|
Store 87(param) 88
|
|
89: 2 FunctionCall 20(@main(u1;) 87(param)
|
|
Return
|
|
FunctionEnd
|
|
16(pull_position(block--u1[0]1;u1;): 12(fvec3) Function None 13
|
|
14(buffer_position): 9(ptr) FunctionParameter
|
|
15(vertex_id): 10(ptr) FunctionParameter
|
|
17: Label
|
|
24(byteAddrTemp): 23(ptr) Variable Function
|
|
25: 6(int) Load 15(vertex_id)
|
|
27: 6(int) IMul 25 26
|
|
29: 6(int) IMul 27 28
|
|
31: 22(int) ShiftRightLogical 29 30
|
|
Store 24(byteAddrTemp) 31
|
|
33: 22(int) Load 24(byteAddrTemp)
|
|
35: 34(ptr) AccessChain 14(buffer_position) 32 33
|
|
36: 6(int) Load 35
|
|
37: 22(int) Load 24(byteAddrTemp)
|
|
39: 22(int) IAdd 37 38
|
|
40: 34(ptr) AccessChain 14(buffer_position) 32 39
|
|
41: 6(int) Load 40
|
|
42: 22(int) Load 24(byteAddrTemp)
|
|
43: 22(int) IAdd 42 30
|
|
44: 34(ptr) AccessChain 14(buffer_position) 32 43
|
|
45: 6(int) Load 44
|
|
47: 46(ivec3) CompositeConstruct 36 41 45
|
|
48: 12(fvec3) Bitcast 47
|
|
ReturnValue 48
|
|
FunctionEnd
|
|
20(@main(u1;): 2 Function None 18
|
|
19(gi): 10(ptr) FunctionParameter
|
|
21: Label
|
|
52(position_ms): 51(ptr) Variable Function
|
|
54(param): 10(ptr) Variable Function
|
|
57(byteAddrTemp): 23(ptr) Variable Function
|
|
55: 6(int) Load 19(gi)
|
|
Store 54(param) 55
|
|
56: 12(fvec3) FunctionCall 16(pull_position(block--u1[0]1;u1;) 53(buffer_position_ms) 54(param)
|
|
Store 52(position_ms) 56
|
|
58: 22(int) ShiftRightArithmetic 32 30
|
|
Store 57(byteAddrTemp) 58
|
|
63: 22(int) Load 57(byteAddrTemp)
|
|
64: 12(fvec3) Load 52(position_ms)
|
|
65: 46(ivec3) Bitcast 64
|
|
67: 6(int) CompositeExtract 65 0
|
|
68: 34(ptr) AccessChain 62(r) 32 63
|
|
Store 68 67
|
|
69: 22(int) Load 57(byteAddrTemp)
|
|
70: 22(int) IAdd 69 38
|
|
71: 12(fvec3) Load 52(position_ms)
|
|
72: 46(ivec3) Bitcast 71
|
|
74: 6(int) CompositeExtract 72 1
|
|
75: 34(ptr) AccessChain 62(r) 32 70
|
|
Store 75 74
|
|
76: 22(int) Load 57(byteAddrTemp)
|
|
77: 22(int) IAdd 76 30
|
|
78: 12(fvec3) Load 52(position_ms)
|
|
79: 46(ivec3) Bitcast 78
|
|
81: 6(int) CompositeExtract 79 2
|
|
82: 34(ptr) AccessChain 62(r) 32 77
|
|
Store 82 81
|
|
Return
|
|
FunctionEnd
|