// Covers row_major/column_major layouts on direct heap matrix members.
#version 460
#extension GL_EXT_descriptor_heap : require
#extension GL_EXT_structured_descriptor_heap : require
#extension GL_EXT_scalar_block_layout : require

layout(local_size_x = 1) in;

layout(column_major, heap_offset = 2048) resourceheap MatrixHeap {
    layout(row_major) mat4x3 rowMajorMatrix;
    mat3x4 columnMajorMatrix;
    texture2D textureDescriptor;
} matrixHeap;

layout(binding = 0, std430) buffer Result {
    vec3 rowMajorValue;
    vec4 columnMajorValue;
} resultBuffer;

void main()
{
    resultBuffer.rowMajorValue = matrixHeap.rowMajorMatrix[0];
    resultBuffer.columnMajorValue = matrixHeap.columnMajorMatrix[0];
}
