struct strided_arr { @size(16) el : vec2, } struct SSBO { m : array, } @group(0) @binding(0) var ssbo : SSBO; fn arr_to_mat2x2_stride_16(arr : array) -> mat2x2 { return mat2x2(arr[0u].el, arr[1u].el); } fn mat2x2_stride_16_to_arr(m : mat2x2) -> array { return array(strided_arr(m[0u]), strided_arr(m[1u])); } fn f_1() { let x_15 : mat2x2 = arr_to_mat2x2_stride_16(ssbo.m); ssbo.m = mat2x2_stride_16_to_arr(x_15); return; } @stage(compute) @workgroup_size(1i, 1i, 1i) fn f() { f_1(); }