// Tests that the index, buffer, and texture bounds checks policies are // implemented separately. // Storage and Uniform storage classes struct InStorage { a: array, 10> } @group(0) @binding(0) var in_storage: InStorage; struct InUniform { a: array, 20> } @group(0) @binding(1) var in_uniform: InUniform; // Textures automatically land in the `handle` storage class. @group(0) @binding(2) var image_2d_array: texture_2d_array; // None of the above. var in_workgroup: array; var in_private: array; fn mock_function(c: vec2, i: i32, l: i32) -> vec4 { var in_function: array, 2> = array, 2>(vec4(0.707, 0.0, 0.0, 1.0), vec4(0.0, 0.707, 0.0, 1.0)); return (in_storage.a[i] + in_uniform.a[i] + textureLoad(image_2d_array, c, i, l) + in_workgroup[i] + in_private[i] + in_function[i]); }