77 lines
1.5 KiB
GLSL
77 lines
1.5 KiB
GLSL
#version 450
|
|
|
|
// should get 3 SPV types for S: no layout, 140, and 430, plus extras for interpolation or invariant differences
|
|
struct S
|
|
{
|
|
highp uvec3 a;
|
|
mediump mat2 b[4];
|
|
lowp uint c;
|
|
};
|
|
|
|
layout(set = 0, binding = 0, std140) uniform Block140
|
|
{
|
|
mediump int u;
|
|
S s[2][3];
|
|
mediump vec2 v;
|
|
} inst140;
|
|
|
|
layout(set = 0, binding = 1, std430) buffer Block430
|
|
{
|
|
mediump int u;
|
|
S s[2][3];
|
|
mediump vec2 v;
|
|
} inst430;
|
|
|
|
S s;
|
|
|
|
// should get 5 SPV types for T: no layout, 140/row, 140/col, 430/row, and 430/col
|
|
struct T {
|
|
mat2 m;
|
|
int a;
|
|
};
|
|
|
|
T t;
|
|
|
|
struct Nestor {
|
|
T nestorT;
|
|
};
|
|
|
|
layout(set = 1, binding = 0, std140) uniform Bt1
|
|
{
|
|
layout(row_major) Nestor nt;
|
|
} Btn1;
|
|
|
|
layout(set = 1, binding = 0, std140) uniform Bt2
|
|
{
|
|
layout(column_major) Nestor nt;
|
|
} Btn2;
|
|
|
|
layout(row_major, set = 1, binding = 0, std140) uniform Bt3
|
|
{
|
|
layout(column_major) Nestor ntcol;
|
|
Nestor ntrow; // should be row major decoration version of Nestor
|
|
} Btn3;
|
|
|
|
layout(set = 1, binding = 0, std430) buffer bBt1
|
|
{
|
|
layout(row_major) Nestor nt;
|
|
} bBtn1;
|
|
|
|
layout(set = 1, binding = 0, std430) buffer bBt2
|
|
{
|
|
layout(column_major) Nestor nt;
|
|
} bBtn2;
|
|
|
|
layout(set = 1, binding = 0, std430) buffer bBt3
|
|
{
|
|
layout(row_major) Nestor ntcol;
|
|
Nestor ntrow; // should be col major decoration version of Nestor
|
|
} bBtn3;
|
|
|
|
void main()
|
|
{
|
|
}
|
|
|
|
flat out S sout;
|
|
invariant out S soutinv;
|