This is a partial implemention of structurebuffers supporting: * structured buffer types of: * StructuredBuffer * RWStructuredBuffer * ByteAddressBuffer * RWByteAddressBuffer * Atomic operations on RWByteAddressBuffer * Load/Load[234], Store/Store[234], GetDimensions methods (where allowed by type) * globallycoherent flag But NOT yet supporting: * AppendStructuredBuffer / ConsumeStructuredBuffer types * IncrementCounter/DecrementCounter methods Please note: the stride returned by GetDimensions is as calculated by glslang for std430, and may not match other environments in all cases.
600 lines
28 KiB
Plaintext
600 lines
28 KiB
Plaintext
hlsl.structbuffer.atomics.frag
|
|
Shader version: 450
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:5 Function Definition: @main(u1; (temp 4-component vector of float)
|
|
0:5 Function Parameters:
|
|
0:5 'pos' (in uint)
|
|
0:? Sequence
|
|
0:8 AtomicAdd (temp void)
|
|
0:8 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:8 Constant:
|
|
0:8 0 (const uint)
|
|
0:8 right-shift (temp int)
|
|
0:8 Constant:
|
|
0:8 8 (const int)
|
|
0:8 Constant:
|
|
0:8 2 (const int)
|
|
0:8 Constant:
|
|
0:8 1 (const int)
|
|
0:9 move second child to first child (temp uint)
|
|
0:9 'u' (temp uint)
|
|
0:9 AtomicAdd (temp uint)
|
|
0:9 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:9 Constant:
|
|
0:9 0 (const uint)
|
|
0:9 right-shift (temp int)
|
|
0:9 Constant:
|
|
0:9 8 (const int)
|
|
0:9 Constant:
|
|
0:9 2 (const int)
|
|
0:9 Constant:
|
|
0:9 1 (const int)
|
|
0:10 AtomicAnd (temp void)
|
|
0:10 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:10 Constant:
|
|
0:10 0 (const uint)
|
|
0:10 right-shift (temp int)
|
|
0:10 Constant:
|
|
0:10 8 (const int)
|
|
0:10 Constant:
|
|
0:10 2 (const int)
|
|
0:10 Constant:
|
|
0:10 1 (const int)
|
|
0:11 move second child to first child (temp uint)
|
|
0:11 'u' (temp uint)
|
|
0:11 AtomicAnd (temp uint)
|
|
0:11 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:11 Constant:
|
|
0:11 0 (const uint)
|
|
0:11 right-shift (temp int)
|
|
0:11 Constant:
|
|
0:11 8 (const int)
|
|
0:11 Constant:
|
|
0:11 2 (const int)
|
|
0:11 Constant:
|
|
0:11 1 (const int)
|
|
0:12 move second child to first child (temp uint)
|
|
0:12 'u' (temp uint)
|
|
0:12 Convert int to uint (temp uint)
|
|
0:12 AtomicCompSwap (temp int)
|
|
0:12 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 right-shift (temp int)
|
|
0:12 Constant:
|
|
0:12 8 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:14 move second child to first child (temp uint)
|
|
0:14 'u' (temp uint)
|
|
0:14 AtomicExchange (temp uint)
|
|
0:14 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:14 Constant:
|
|
0:14 0 (const uint)
|
|
0:14 right-shift (temp int)
|
|
0:14 Constant:
|
|
0:14 8 (const int)
|
|
0:14 Constant:
|
|
0:14 2 (const int)
|
|
0:14 Constant:
|
|
0:14 1 (const int)
|
|
0:15 AtomicMax (temp void)
|
|
0:15 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:15 Constant:
|
|
0:15 0 (const uint)
|
|
0:15 right-shift (temp int)
|
|
0:15 Constant:
|
|
0:15 8 (const int)
|
|
0:15 Constant:
|
|
0:15 2 (const int)
|
|
0:15 Constant:
|
|
0:15 1 (const int)
|
|
0:16 move second child to first child (temp uint)
|
|
0:16 'u' (temp uint)
|
|
0:16 AtomicMax (temp uint)
|
|
0:16 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:16 Constant:
|
|
0:16 0 (const uint)
|
|
0:16 right-shift (temp int)
|
|
0:16 Constant:
|
|
0:16 8 (const int)
|
|
0:16 Constant:
|
|
0:16 2 (const int)
|
|
0:16 Constant:
|
|
0:16 1 (const int)
|
|
0:17 AtomicMin (temp void)
|
|
0:17 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:17 Constant:
|
|
0:17 0 (const uint)
|
|
0:17 right-shift (temp int)
|
|
0:17 Constant:
|
|
0:17 8 (const int)
|
|
0:17 Constant:
|
|
0:17 2 (const int)
|
|
0:17 Constant:
|
|
0:17 1 (const int)
|
|
0:18 move second child to first child (temp uint)
|
|
0:18 'u' (temp uint)
|
|
0:18 AtomicMin (temp uint)
|
|
0:18 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:18 Constant:
|
|
0:18 0 (const uint)
|
|
0:18 right-shift (temp int)
|
|
0:18 Constant:
|
|
0:18 8 (const int)
|
|
0:18 Constant:
|
|
0:18 2 (const int)
|
|
0:18 Constant:
|
|
0:18 1 (const int)
|
|
0:19 AtomicOr (temp void)
|
|
0:19 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:19 Constant:
|
|
0:19 0 (const uint)
|
|
0:19 right-shift (temp int)
|
|
0:19 Constant:
|
|
0:19 8 (const int)
|
|
0:19 Constant:
|
|
0:19 2 (const int)
|
|
0:19 Constant:
|
|
0:19 1 (const int)
|
|
0:20 move second child to first child (temp uint)
|
|
0:20 'u' (temp uint)
|
|
0:20 AtomicOr (temp uint)
|
|
0:20 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:20 Constant:
|
|
0:20 0 (const uint)
|
|
0:20 right-shift (temp int)
|
|
0:20 Constant:
|
|
0:20 8 (const int)
|
|
0:20 Constant:
|
|
0:20 2 (const int)
|
|
0:20 Constant:
|
|
0:20 1 (const int)
|
|
0:21 AtomicXor (temp void)
|
|
0:21 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:21 Constant:
|
|
0:21 0 (const uint)
|
|
0:21 right-shift (temp int)
|
|
0:21 Constant:
|
|
0:21 8 (const int)
|
|
0:21 Constant:
|
|
0:21 2 (const int)
|
|
0:21 Constant:
|
|
0:21 1 (const int)
|
|
0:22 move second child to first child (temp uint)
|
|
0:22 'u' (temp uint)
|
|
0:22 AtomicXor (temp uint)
|
|
0:22 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:22 Constant:
|
|
0:22 0 (const uint)
|
|
0:22 right-shift (temp int)
|
|
0:22 Constant:
|
|
0:22 8 (const int)
|
|
0:22 Constant:
|
|
0:22 2 (const int)
|
|
0:22 Constant:
|
|
0:22 1 (const int)
|
|
0:24 Branch: Return with expression
|
|
0:24 Construct vec4 (temp 4-component vector of float)
|
|
0:24 Convert uint to float (temp float)
|
|
0:24 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:24 Constant:
|
|
0:24 0 (const uint)
|
|
0:24 right-shift (temp int)
|
|
0:24 'pos' (in uint)
|
|
0:24 Constant:
|
|
0:24 2 (const int)
|
|
0:5 Function Definition: main( (temp void)
|
|
0:5 Function Parameters:
|
|
0:? Sequence
|
|
0:5 move second child to first child (temp uint)
|
|
0:? 'pos' (temp uint)
|
|
0:? 'pos' (layout(location=0 ) in uint)
|
|
0:5 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:5 Function Call: @main(u1; (temp 4-component vector of float)
|
|
0:? 'pos' (temp uint)
|
|
0:? Linker Objects
|
|
0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:? 'pos' (layout(location=0 ) in uint)
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
Shader version: 450
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:5 Function Definition: @main(u1; (temp 4-component vector of float)
|
|
0:5 Function Parameters:
|
|
0:5 'pos' (in uint)
|
|
0:? Sequence
|
|
0:8 AtomicAdd (temp void)
|
|
0:8 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:8 Constant:
|
|
0:8 0 (const uint)
|
|
0:8 right-shift (temp int)
|
|
0:8 Constant:
|
|
0:8 8 (const int)
|
|
0:8 Constant:
|
|
0:8 2 (const int)
|
|
0:8 Constant:
|
|
0:8 1 (const int)
|
|
0:9 move second child to first child (temp uint)
|
|
0:9 'u' (temp uint)
|
|
0:9 AtomicAdd (temp uint)
|
|
0:9 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:9 Constant:
|
|
0:9 0 (const uint)
|
|
0:9 right-shift (temp int)
|
|
0:9 Constant:
|
|
0:9 8 (const int)
|
|
0:9 Constant:
|
|
0:9 2 (const int)
|
|
0:9 Constant:
|
|
0:9 1 (const int)
|
|
0:10 AtomicAnd (temp void)
|
|
0:10 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:10 Constant:
|
|
0:10 0 (const uint)
|
|
0:10 right-shift (temp int)
|
|
0:10 Constant:
|
|
0:10 8 (const int)
|
|
0:10 Constant:
|
|
0:10 2 (const int)
|
|
0:10 Constant:
|
|
0:10 1 (const int)
|
|
0:11 move second child to first child (temp uint)
|
|
0:11 'u' (temp uint)
|
|
0:11 AtomicAnd (temp uint)
|
|
0:11 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:11 Constant:
|
|
0:11 0 (const uint)
|
|
0:11 right-shift (temp int)
|
|
0:11 Constant:
|
|
0:11 8 (const int)
|
|
0:11 Constant:
|
|
0:11 2 (const int)
|
|
0:11 Constant:
|
|
0:11 1 (const int)
|
|
0:12 move second child to first child (temp uint)
|
|
0:12 'u' (temp uint)
|
|
0:12 Convert int to uint (temp uint)
|
|
0:12 AtomicCompSwap (temp int)
|
|
0:12 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:12 Constant:
|
|
0:12 0 (const uint)
|
|
0:12 right-shift (temp int)
|
|
0:12 Constant:
|
|
0:12 8 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:12 Constant:
|
|
0:12 1 (const int)
|
|
0:12 Constant:
|
|
0:12 2 (const int)
|
|
0:14 move second child to first child (temp uint)
|
|
0:14 'u' (temp uint)
|
|
0:14 AtomicExchange (temp uint)
|
|
0:14 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:14 Constant:
|
|
0:14 0 (const uint)
|
|
0:14 right-shift (temp int)
|
|
0:14 Constant:
|
|
0:14 8 (const int)
|
|
0:14 Constant:
|
|
0:14 2 (const int)
|
|
0:14 Constant:
|
|
0:14 1 (const int)
|
|
0:15 AtomicMax (temp void)
|
|
0:15 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:15 Constant:
|
|
0:15 0 (const uint)
|
|
0:15 right-shift (temp int)
|
|
0:15 Constant:
|
|
0:15 8 (const int)
|
|
0:15 Constant:
|
|
0:15 2 (const int)
|
|
0:15 Constant:
|
|
0:15 1 (const int)
|
|
0:16 move second child to first child (temp uint)
|
|
0:16 'u' (temp uint)
|
|
0:16 AtomicMax (temp uint)
|
|
0:16 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:16 Constant:
|
|
0:16 0 (const uint)
|
|
0:16 right-shift (temp int)
|
|
0:16 Constant:
|
|
0:16 8 (const int)
|
|
0:16 Constant:
|
|
0:16 2 (const int)
|
|
0:16 Constant:
|
|
0:16 1 (const int)
|
|
0:17 AtomicMin (temp void)
|
|
0:17 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:17 Constant:
|
|
0:17 0 (const uint)
|
|
0:17 right-shift (temp int)
|
|
0:17 Constant:
|
|
0:17 8 (const int)
|
|
0:17 Constant:
|
|
0:17 2 (const int)
|
|
0:17 Constant:
|
|
0:17 1 (const int)
|
|
0:18 move second child to first child (temp uint)
|
|
0:18 'u' (temp uint)
|
|
0:18 AtomicMin (temp uint)
|
|
0:18 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:18 Constant:
|
|
0:18 0 (const uint)
|
|
0:18 right-shift (temp int)
|
|
0:18 Constant:
|
|
0:18 8 (const int)
|
|
0:18 Constant:
|
|
0:18 2 (const int)
|
|
0:18 Constant:
|
|
0:18 1 (const int)
|
|
0:19 AtomicOr (temp void)
|
|
0:19 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:19 Constant:
|
|
0:19 0 (const uint)
|
|
0:19 right-shift (temp int)
|
|
0:19 Constant:
|
|
0:19 8 (const int)
|
|
0:19 Constant:
|
|
0:19 2 (const int)
|
|
0:19 Constant:
|
|
0:19 1 (const int)
|
|
0:20 move second child to first child (temp uint)
|
|
0:20 'u' (temp uint)
|
|
0:20 AtomicOr (temp uint)
|
|
0:20 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:20 Constant:
|
|
0:20 0 (const uint)
|
|
0:20 right-shift (temp int)
|
|
0:20 Constant:
|
|
0:20 8 (const int)
|
|
0:20 Constant:
|
|
0:20 2 (const int)
|
|
0:20 Constant:
|
|
0:20 1 (const int)
|
|
0:21 AtomicXor (temp void)
|
|
0:21 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:21 Constant:
|
|
0:21 0 (const uint)
|
|
0:21 right-shift (temp int)
|
|
0:21 Constant:
|
|
0:21 8 (const int)
|
|
0:21 Constant:
|
|
0:21 2 (const int)
|
|
0:21 Constant:
|
|
0:21 1 (const int)
|
|
0:22 move second child to first child (temp uint)
|
|
0:22 'u' (temp uint)
|
|
0:22 AtomicXor (temp uint)
|
|
0:22 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:22 Constant:
|
|
0:22 0 (const uint)
|
|
0:22 right-shift (temp int)
|
|
0:22 Constant:
|
|
0:22 8 (const int)
|
|
0:22 Constant:
|
|
0:22 2 (const int)
|
|
0:22 Constant:
|
|
0:22 1 (const int)
|
|
0:24 Branch: Return with expression
|
|
0:24 Construct vec4 (temp 4-component vector of float)
|
|
0:24 Convert uint to float (temp float)
|
|
0:24 indirect index (layout(row_major std430 ) buffer uint)
|
|
0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:24 Constant:
|
|
0:24 0 (const uint)
|
|
0:24 right-shift (temp int)
|
|
0:24 'pos' (in uint)
|
|
0:24 Constant:
|
|
0:24 2 (const int)
|
|
0:5 Function Definition: main( (temp void)
|
|
0:5 Function Parameters:
|
|
0:? Sequence
|
|
0:5 move second child to first child (temp uint)
|
|
0:? 'pos' (temp uint)
|
|
0:? 'pos' (layout(location=0 ) in uint)
|
|
0:5 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:5 Function Call: @main(u1; (temp 4-component vector of float)
|
|
0:? 'pos' (temp uint)
|
|
0:? Linker Objects
|
|
0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf})
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:? 'pos' (layout(location=0 ) in uint)
|
|
|
|
// Module Version 10000
|
|
// Generated by (magic number): 80001
|
|
// Id's are bound by 87
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main" 80 83
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Name 4 "main"
|
|
Name 12 "@main(u1;"
|
|
Name 11 "pos"
|
|
Name 15 "sbuf"
|
|
MemberName 15(sbuf) 0 "sbuf"
|
|
Name 17 ""
|
|
Name 29 "u"
|
|
Name 78 "pos"
|
|
Name 80 "pos"
|
|
Name 83 "@entryPointOutput"
|
|
Name 84 "param"
|
|
Decorate 14 ArrayStride 4
|
|
MemberDecorate 15(sbuf) 0 Offset 0
|
|
Decorate 15(sbuf) BufferBlock
|
|
Decorate 17 DescriptorSet 0
|
|
Decorate 80(pos) Location 0
|
|
Decorate 83(@entryPointOutput) Location 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 0
|
|
7: TypePointer Function 6(int)
|
|
8: TypeFloat 32
|
|
9: TypeVector 8(float) 4
|
|
10: TypeFunction 9(fvec4) 7(ptr)
|
|
14: TypeRuntimeArray 6(int)
|
|
15(sbuf): TypeStruct 14
|
|
16: TypePointer Uniform 15(sbuf)
|
|
17: 16(ptr) Variable Uniform
|
|
18: TypeInt 32 1
|
|
19: 18(int) Constant 0
|
|
20: 18(int) Constant 8
|
|
21: 18(int) Constant 2
|
|
23: TypePointer Uniform 6(int)
|
|
25: 18(int) Constant 1
|
|
26: 6(int) Constant 1
|
|
27: 6(int) Constant 0
|
|
79: TypePointer Input 6(int)
|
|
80(pos): 79(ptr) Variable Input
|
|
82: TypePointer Output 9(fvec4)
|
|
83(@entryPointOutput): 82(ptr) Variable Output
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
78(pos): 7(ptr) Variable Function
|
|
84(param): 7(ptr) Variable Function
|
|
81: 6(int) Load 80(pos)
|
|
Store 78(pos) 81
|
|
85: 6(int) Load 78(pos)
|
|
Store 84(param) 85
|
|
86: 9(fvec4) FunctionCall 12(@main(u1;) 84(param)
|
|
Store 83(@entryPointOutput) 86
|
|
Return
|
|
FunctionEnd
|
|
12(@main(u1;): 9(fvec4) Function None 10
|
|
11(pos): 7(ptr) FunctionParameter
|
|
13: Label
|
|
29(u): 7(ptr) Variable Function
|
|
22: 18(int) ShiftRightArithmetic 20 21
|
|
24: 23(ptr) AccessChain 17 19 22
|
|
28: 2 AtomicIAdd 24 26 27 25
|
|
30: 18(int) ShiftRightArithmetic 20 21
|
|
31: 23(ptr) AccessChain 17 19 30
|
|
32: 6(int) AtomicIAdd 31 26 27 25
|
|
Store 29(u) 32
|
|
33: 18(int) ShiftRightArithmetic 20 21
|
|
34: 23(ptr) AccessChain 17 19 33
|
|
35: 2 AtomicAnd 34 26 27 25
|
|
36: 18(int) ShiftRightArithmetic 20 21
|
|
37: 23(ptr) AccessChain 17 19 36
|
|
38: 6(int) AtomicAnd 37 26 27 25
|
|
Store 29(u) 38
|
|
39: 18(int) ShiftRightArithmetic 20 21
|
|
40: 23(ptr) AccessChain 17 19 39
|
|
41: 18(int) AtomicCompareExchange 40 26 27 27 21 25
|
|
42: 6(int) Bitcast 41
|
|
Store 29(u) 42
|
|
43: 18(int) ShiftRightArithmetic 20 21
|
|
44: 23(ptr) AccessChain 17 19 43
|
|
45: 6(int) AtomicExchange 44 26 27 25
|
|
Store 29(u) 45
|
|
46: 18(int) ShiftRightArithmetic 20 21
|
|
47: 23(ptr) AccessChain 17 19 46
|
|
48: 2 AtomicSMax 47 26 27 25
|
|
49: 18(int) ShiftRightArithmetic 20 21
|
|
50: 23(ptr) AccessChain 17 19 49
|
|
51: 6(int) AtomicUMax 50 26 27 25
|
|
Store 29(u) 51
|
|
52: 18(int) ShiftRightArithmetic 20 21
|
|
53: 23(ptr) AccessChain 17 19 52
|
|
54: 2 AtomicSMin 53 26 27 25
|
|
55: 18(int) ShiftRightArithmetic 20 21
|
|
56: 23(ptr) AccessChain 17 19 55
|
|
57: 6(int) AtomicUMin 56 26 27 25
|
|
Store 29(u) 57
|
|
58: 18(int) ShiftRightArithmetic 20 21
|
|
59: 23(ptr) AccessChain 17 19 58
|
|
60: 2 AtomicOr 59 26 27 25
|
|
61: 18(int) ShiftRightArithmetic 20 21
|
|
62: 23(ptr) AccessChain 17 19 61
|
|
63: 6(int) AtomicOr 62 26 27 25
|
|
Store 29(u) 63
|
|
64: 18(int) ShiftRightArithmetic 20 21
|
|
65: 23(ptr) AccessChain 17 19 64
|
|
66: 2 AtomicXor 65 26 27 25
|
|
67: 18(int) ShiftRightArithmetic 20 21
|
|
68: 23(ptr) AccessChain 17 19 67
|
|
69: 6(int) AtomicXor 68 26 27 25
|
|
Store 29(u) 69
|
|
70: 6(int) Load 11(pos)
|
|
71: 18(int) ShiftRightLogical 70 21
|
|
72: 23(ptr) AccessChain 17 19 71
|
|
73: 6(int) Load 72
|
|
74: 8(float) ConvertUToF 73
|
|
75: 9(fvec4) CompositeConstruct 74 74 74 74
|
|
ReturnValue 75
|
|
FunctionEnd
|