| #version 450 |
| #extension GL_EXT_scalar_block_layout : require |
| layout(local_size_x = 1) in; |
| |
| layout(binding = 0, std140) buffer SSBO1 |
| { |
| mat2 a; |
| layout(row_major) mat2 a2; |
| }; |
| |
| layout(scalar, binding = 1) buffer SSBO2 |
| { |
| mat2x3 b; |
| layout(row_major) mat3x2 b2; |
| }; |
| |
| void load_store_column() |
| { |
| vec2 u = a[0]; |
| vec2 v = a[1]; |
| u += v; |
| a[0] = u; |
| a[1] = v; |
| } |
| |
| void load_store_row() |
| { |
| vec2 u = a2[0]; |
| vec2 v = a2[1]; |
| u += v; |
| a2[0] = u; |
| a2[1] = v; |
| } |
| |
| void load_store_packed_column() |
| { |
| vec3 u = b[0]; |
| vec3 v = b[1]; |
| u += v; |
| b[0] = u; |
| b[1] = v; |
| } |
| |
| void load_store_packed_row() |
| { |
| vec2 u = b2[0]; |
| vec2 v = b2[1]; |
| u += v; |
| b2[0] = u; |
| b2[1] = v; |
| } |
| |
| void main() |
| { |
| load_store_column(); |
| load_store_row(); |
| load_store_packed_column(); |
| load_store_packed_row(); |
| } |