dawn-cmake/test/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
Ben Clayton 009d129103 reader/spirv: Decompose arrays with strides
Transform any SPIR-V that has an array with a custom stride:

  @stride(S) array<T, N>

into:

  struct strided_arr {
    @size(S) er : T;
  };
  array<strided_arr, N>

Also remove any @stride decorations that match the default array stride.

Bug: tint:1394
Bug: tint:1381
Change-Id: I8be8f3a76c5335fdb2bc5183388366091dbc7642
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/78781
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-02-04 15:39:34 +00:00

30 lines
626 B
WebGPU Shading Language

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