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