blob: 11c8d52bf8db94e14609129624198e23aa238172 [file]
<!-- webkit-test-runner [ enableMetalDebugDevice=true ] -->
<script src="../../../resources/js-test-pre.js"></script>
<script>
async function run() {
let adapter = await navigator.gpu.requestAdapter();
let device = await adapter.requestDevice();
let buffer = device.createBuffer({ size: 3827, usage: GPUBufferUsage.INDIRECT });
let texture = device.createTexture({ size: { width: 1100 }, dimension: '3d', format: 'rgba16sint', usage: GPUTextureUsage.RENDER_ATTACHMENT });
let textureView = texture.createView();
let bindGroupLayout = device.createBindGroupLayout({
entries: [
{ binding: 922, visibility: GPUShaderStage.VERTEX, buffer: { hasDynamicOffset: true } },
]
});
let sampler = device.createSampler({ compare: 'not-equal' });
let pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [] });
let buffer2 = device.createBuffer({ size: 10023, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.VERTEX });
let bindGroup = device.createBindGroup({
layout: bindGroupLayout,
entries: [
{ binding: 922, resource: { buffer: buffer2 } },
]
});
let shaderModule = device.createShaderModule({ code: `
struct FragmentOutput0 {
@location(1) f0: vec4<i32>
}
@fragment fn fragment0() -> FragmentOutput0 {
return FragmentOutput0();
}
@vertex fn vertex0() -> @builtin(position) vec4f {
return vec4f();
}
`});
let renderBundleEncoder = device.createRenderBundleEncoder({ colorFormats: [, 'rgba16sint'], stencilReadOnly: true });
let shaderModule2 = device.createShaderModule({ code: `
struct FragmentOutput0 {
@location(2) f0: vec4<u32>,
@location(1) f1: vec4<i32>
}
@fragment fn fragment0() -> FragmentOutput0 {
return FragmentOutput0();
}
@vertex fn vertex0() -> @builtin(position) vec4<f32> {
return vec4();
}
`});
renderBundleEncoder.setVertexBuffer(7, buffer2);
let pipelineLayout2 = device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout] });
let pipeline2 = device.createRenderPipeline({
layout: pipelineLayout2,
fragment: {
module: shaderModule,
targets: [, { format: 'rgba16sint', writeMask: GPUColorWrite.ALPHARED }]
},
vertex: { module: shaderModule, buffers: [] }
});
let pipeline = device.createRenderPipeline({
layout: pipelineLayout,
fragment: { module: shaderModule2, targets: [, { format: 'rgba16sint' }] },
vertex: { module: shaderModule2, buffers: [] }
});
renderBundleEncoder.setPipeline(pipeline2);
renderBundleEncoder.setVertexBuffer(1, buffer2);
renderBundleEncoder.setBindGroup(0, bindGroup, new Uint32Array(651), 599, 1);
renderBundleEncoder.drawIndirect(buffer, 48);
renderBundleEncoder.setPipeline(pipeline);
renderBundleEncoder.draw(982);
let renderBundle = renderBundleEncoder.finish();
let commandEncoder = device.createCommandEncoder();
let renderPassEncoder = commandEncoder.beginRenderPass({
colorAttachments: [, { view: textureView, depthSlice: 0, loadOp: 'clear', storeOp: 'discard' }]
});
renderPassEncoder.executeBundles([renderBundle]);
await device.queue.onSubmittedWorkDone();
debug('Pass')
globalThis.testRunner?.notifyDone();
}
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.waitUntilDone();
run();
</script>