f1b411c9e8
This is somewhat awkward to support, but the best effort we can do here is to analyze various Load/Store opcodes and deduce the ideal overall alignment based on this. This is not a 100% perfect solution, but should be correct for any reasonable use case. Also fix various nitpicks with BDA support while I'm at it.
36 lines
843 B
Plaintext
36 lines
843 B
Plaintext
#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 Alias;
|
|
layout(buffer_reference) buffer _6;
|
|
layout(buffer_reference) buffer _7;
|
|
layout(buffer_reference, buffer_reference_align = 16, std430) readonly buffer Alias
|
|
{
|
|
vec4 v[];
|
|
};
|
|
|
|
layout(buffer_reference, buffer_reference_align = 16, std430) restrict buffer _6
|
|
{
|
|
vec4 v[];
|
|
};
|
|
|
|
layout(buffer_reference, buffer_reference_align = 16, std430) coherent writeonly buffer _7
|
|
{
|
|
vec4 v[];
|
|
};
|
|
|
|
layout(push_constant, std430) uniform Registers
|
|
{
|
|
Alias ro;
|
|
_6 rw;
|
|
_7 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];
|
|
}
|
|
|