blob: a955964fbe17daea7a4a45499d5ed1a7c64ff5f0 [file] [log] [blame] [edit]
<script>
if (window.testRunner) { testRunner.waitUntilDone(); testRunner.dumpAsText() }
const log = globalThis.$vm?.print ?? console.log;
onload = async () => {
adapter1 = await navigator.gpu.requestAdapter( { } );
let promise3 = adapter1.requestDevice(
{
label: 'a',
requiredFeatures: [
'depth-clip-control',
'depth32float-stencil8',
'indirect-first-instance',
'shader-f16',
'rg11b10ufloat-renderable',
'bgra8unorm-storage'
],
requiredLimits: {
maxVertexAttributes: 22,
maxVertexBufferArrayStride: 60002,
maxStorageTexturesPerShaderStage: 36,
maxBindingsPerBindGroup: 205,
},
}
);
let device1 = await promise3;
let pipelineLayout2 = device1.createPipelineLayout(
{
label: 'a',
bindGroupLayouts: [
],
}
);
let shaderModule4 = device1.createShaderModule(
{
label: 'a',
code: `@group(1) @binding(121)
var<storage, read_write> __dynamicOffset2: array<u32>;
@group(1) @binding(632)
var<storage, read_write> field5: array<u32>;
@group(0) @binding(632)
var<storage, read_write> __DynamicOffsets0: array<u32>;
@group(2) @binding(523)
var<storage, read_write> global4: array<u32>;
@group(1) @binding(351)
var<storage, read_write> __DynamicOffsets1: array<u32>;
@group(2) @binding(623)
var<storage, read_write> type4: array<u32>;
@group(0) @binding(121)
var<storage, read_write> __ArgumentBuffer_2: array<u32>;
@group(2) @binding(559)
var<storage, read_write> function3: array<u32>;
@compute @workgroup_size(7, 1, 1)
fn compute0(@builtin(global_invocation_id) global_id : vec3<u32>, @builtin(local_invocation_id) local_id : vec3<u32>) {
var x: u32 = 0;
loop {
function3[x] = global_id.x;
x += 1;
__DynamicOffsets1[global_id.y-global_id.x] = __dynamicOffset2[x];
if (x > 2 * arrayLength(&field5)) {
break;
}
}
}
@compute @workgroup_size(8, 1, 4)
fn compute1(@builtin(global_invocation_id) global_id : vec3<u32>, @builtin(local_invocation_id) local_id : vec3<u32>) {
__dynamicOffset2[global_id.x*local_id.x] = u32(function3[global_id.x*local_id.x]);
}
struct S {
@location(0) out0: vec4<f32>,
@location(1) out1: vec4<f32>,
}
struct S2 {
@location(0) out0: vec4<f32>,
out1: vec4<f32>,
}
struct S3 {
@location(0) out0: vec4<f32>,
out1: S4,
}
struct S4 {
@location(1) out2: vec4<f32>,
@location(2) out3: vec4<f32>,
}
@fragment
fn fragment0(@builtin(position) coord_in: vec4<f32>) -> @location(123) i32 {
return i32();
}
@fragment
fn fragment1(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
return vec4<f32>(coord_in.x, coord_in.y, 0.0, 1.0);
}
@fragment
fn fragment2(@builtin(position) coord_in: vec4<f32>) -> S {
}
@fragment
fn fragment3(@builtin(position) coord_in: vec4<f32>) -> S {
return S();
}
@fragment
fn fragment4(@builtin(position) coord_in: vec4<f32>) -> S2 {
return S2();
}
@fragment
fn fragment5(x: S3) -> S3 {
return x;
}
@vertex
fn vertex0() -> @builtin(position) vec4<f32> {
return vec4<f32>(0.0, 0.0, 0.0, 1.0);
}
@vertex
fn vertex1(@builtin(vertex_index) v_index: u32, @builtin(instance_index) i_index: u32,) -> @builtin(position) vec4<f32> {
return vec4<f32>(f32(v_index), f32(i_index), 0.0, 1.0);
}
@vertex
fn vertex2(@builtin(vertex_index) v_index: u32, @builtin(instance_index) i_index: u32,) -> S {
}
@vertex
fn vertex3(@builtin(vertex_index) v_index: u32, @builtin(instance_index) i_index: u32,) -> S {
return S();
}
`,
sourceMap: {},
hints: {},
}
);
let pipeline6 = device1.createComputePipeline(
{
label: 'a',
layout: pipelineLayout2,
compute: {
module: shaderModule4,
entryPoint: 'compute0',
constants: {},
},
}
);
let bindGroupLayout11 = pipeline6.getBindGroupLayout(
75
);
bindGroupLayout11.label = '\u0afc';
if (window.testRunner) { testRunner.notifyDone() }
};
</script>
This test passes if it does not crash.