SPIRV-Cross/reference/opt/shaders/vulkan/comp/buffer-reference.nocompat.vk.comp.vk
Hans-Kristian Arntzen f1b411c9e8 GLSL: Deal with buffer_reference_align.
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.
2021-11-07 17:11:46 +01:00

36 lines
772 B
Plaintext

#version 450
#extension GL_ARB_gpu_shader_int64 : require
#extension GL_EXT_buffer_reference : require
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(buffer_reference) buffer Node;
layout(buffer_reference, buffer_reference_align = 16, std430) buffer Node
{
layout(offset = 0) int value;
layout(offset = 16) Node next;
layout(offset = 32) Node prev;
};
layout(set = 0, binding = 0, std430) restrict buffer LinkedList
{
Node head1;
Node head2;
} _50;
void main()
{
Node _114;
if (gl_WorkGroupID.x < 4u)
{
_114 = _50.head1;
}
else
{
_114 = _50.head2;
}
_114.next.value = _50.head1.value + _50.head2.value;
_50.head1.value = 20;
_50.head1.value = _50.head2.value * 10;
}