This PR adds the ability to pass structuredbuffer types by reference as function parameters. It also changes the representation of structuredbuffers from anonymous blocks with named members, to named blocks with pseudonymous members. That should not be an externally visible change.
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
|
|
0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
|
|
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 "@data"
|
|
Name 17 "sbuf"
|
|
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(sbuf) 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(sbuf): 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(sbuf) 19 22
|
|
28: 2 AtomicIAdd 24 26 27 25
|
|
30: 18(int) ShiftRightArithmetic 20 21
|
|
31: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 19 33
|
|
35: 2 AtomicAnd 34 26 27 25
|
|
36: 18(int) ShiftRightArithmetic 20 21
|
|
37: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 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(sbuf) 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(sbuf) 19 46
|
|
48: 2 AtomicSMax 47 26 27 25
|
|
49: 18(int) ShiftRightArithmetic 20 21
|
|
50: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 19 52
|
|
54: 2 AtomicSMin 53 26 27 25
|
|
55: 18(int) ShiftRightArithmetic 20 21
|
|
56: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 19 58
|
|
60: 2 AtomicOr 59 26 27 25
|
|
61: 18(int) ShiftRightArithmetic 20 21
|
|
62: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 19 64
|
|
66: 2 AtomicXor 65 26 27 25
|
|
67: 18(int) ShiftRightArithmetic 20 21
|
|
68: 23(ptr) AccessChain 17(sbuf) 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(sbuf) 19 71
|
|
73: 6(int) Load 72
|
|
74: 8(float) ConvertUToF 73
|
|
75: 9(fvec4) CompositeConstruct 74 74 74 74
|
|
ReturnValue 75
|
|
FunctionEnd
|