| #version 450 |
| #extension GL_EXT_buffer_reference : require |
| layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in; |
| |
| layout(buffer_reference) buffer RO; |
| layout(buffer_reference) buffer RW; |
| layout(buffer_reference) buffer WO; |
| layout(buffer_reference, buffer_reference_align = 16, std430) readonly buffer RO |
| { |
| vec4 v[]; |
| }; |
| |
| layout(buffer_reference, buffer_reference_align = 16, std430) restrict buffer RW |
| { |
| vec4 v[]; |
| }; |
| |
| layout(buffer_reference, buffer_reference_align = 16, std430) coherent writeonly buffer WO |
| { |
| vec4 v[]; |
| }; |
| |
| layout(push_constant, std430) uniform Registers |
| { |
| RO ro; |
| RW rw; |
| WO wo; |
| } registers; |
| |
| void main() |
| { |
| registers.rw.v[gl_GlobalInvocationID.x] = registers.ro.v[gl_GlobalInvocationID.x]; |
| registers.wo.v[gl_GlobalInvocationID.x] = registers.ro.v[gl_GlobalInvocationID.x]; |
| } |
| |