1#version 450
2#extension GL_EXT_scalar_block_layout : require
3layout(local_size_x = 1) in;
4
5layout(binding = 0, std140) buffer SSBO1
6{
7	mat2 a;
8	layout(row_major) mat2 a2;
9};
10
11layout(scalar, binding = 1) buffer SSBO2
12{
13	mat2x3 b;
14	layout(row_major) mat3x2 b2;
15};
16
17void load_store_column()
18{
19	vec2 u = a[0];
20	vec2 v = a[1];
21	u += v;
22	a[0] = u;
23	a[1] = v;
24}
25
26void load_store_row()
27{
28	vec2 u = a2[0];
29	vec2 v = a2[1];
30	u += v;
31	a2[0] = u;
32	a2[1] = v;
33}
34
35void load_store_packed_column()
36{
37	vec3 u = b[0];
38	vec3 v = b[1];
39	u += v;
40	b[0] = u;
41	b[1] = v;
42}
43
44void load_store_packed_row()
45{
46	vec2 u = b2[0];
47	vec2 v = b2[1];
48	u += v;
49	b2[0] = u;
50	b2[1] = v;
51}
52
53void main()
54{
55	load_store_column();
56	load_store_row();
57	load_store_packed_column();
58	load_store_packed_row();
59}
60