// Covers heap buffer layout qualifiers for inline buffer references and buffer types. #version 460 #extension GL_EXT_descriptor_heap : require #extension GL_EXT_structured_descriptor_heap : require #extension GL_EXT_buffer_reference : require #extension GL_EXT_buffer_reference2 : require #extension GL_EXT_scalar_block_layout : require layout(local_size_x = 1) in; layout(buffer_type, std140) buffer Std140Type { vec4 v; uint x; }; layout(buffer_type, std430) buffer Std430Type { vec4 v; uint x; }; layout(buffer_type, scalar) buffer ScalarType { vec3 v; uint x; }; layout(heap_offset = 512) resourceheap LayoutHeap { layout(buffer_reference, std140) buffer { vec4 v; uint x; } inlineStd140; layout(buffer_reference, std430) buffer { vec4 v; uint x; } inlineStd430; layout(buffer_reference, scalar) buffer { vec3 v; uint x; } inlineScalar; Std140Type typeStd140; Std430Type typeStd430; ScalarType typeScalar; } layoutHeap; layout(binding = 0, std430) buffer Result { uint value; } resultBuffer; void main() { resultBuffer.value = layoutHeap.inlineStd140.x + layoutHeap.inlineStd430.x + layoutHeap.inlineScalar.x + layoutHeap.typeStd140.x + layoutHeap.typeStd430.x + layoutHeap.typeScalar.x; }