blob: 8feb23da168b71a5dc0668fcaf3c929860d32c72 [file] [log] [blame] [edit]
<!-- 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 pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [] });
let texture = device.createTexture({ size: { width: 80 }, dimension: '3d', format: 'r8unorm', usage: GPUTextureUsage.RENDER_ATTACHMENT });
let texture2 = device.createTexture({ size: { width: 80 }, format: 'rgba32uint', usage: GPUTextureUsage.RENDER_ATTACHMENT });
let buffer = device.createBuffer({ size: 215, usage: GPUBufferUsage.INDIRECT });
let shaderModule = device.createShaderModule({ code: `
struct f {
@location(0) h: vec4u,
@location(1) g: f32,
}
@vertex fn j() -> @builtin(position) vec4f {
return vec4f();
}
@fragment fn l() -> f {
var k: f;
return k;
}
`});
let renderPipeline = await device.createRenderPipelineAsync({
layout: pipelineLayout,
fragment: { module: shaderModule, targets: [{ format: 'rgba32uint' }, { format: 'r8unorm' }] },
vertex: { module: shaderModule }
});
let renderBundleEncoder = device.createRenderBundleEncoder({colorFormats: [ 'rgba32uint', 'r8unorm' ]});
renderBundleEncoder.setPipeline(renderPipeline);
renderBundleEncoder.drawIndirect(buffer, 4);
renderBundleEncoder.draw(9, 7, 4_294_967_295);
let renderPassEncoder = device.createCommandEncoder().beginRenderPass({
colorAttachments: [
{ view: texture2.createView(), loadOp: 'load', storeOp: 'discard' },
{ view: texture.createView(), depthSlice: 0, loadOp: 'load', storeOp: 'store' },
]
});
renderPassEncoder.executeBundles([renderBundleEncoder.finish()])
await device.queue.onSubmittedWorkDone();
debug('Pass')
globalThis.testRunner?.notifyDone();
}
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.waitUntilDone();
run();
</script>