blob: a14e472d854440a30622a1625d408eab54f58e16 [file]
<!-- webkit-test-runner [ enableMetalDebugDevice=true ] -->
<script src="../../../resources/js-test-pre.js"></script>
<script>
async function run() {
let adapter0 = await navigator.gpu.requestAdapter();
let device0 = await adapter0.requestDevice();
let texture = device0.createTexture({
size: { width: 96, height: 40 },
format: 'rg8sint',
usage: GPUTextureUsage.TEXTURE_BINDING,
viewFormats: [],
});
let texture2 = device0.createTexture({
size: { width: 24, height: 10, },
format: 'rgba32sint',
usage: GPUTextureUsage.RENDER_ATTACHMENT,
});
let textureView = texture.createView();
let textureView2 = texture2.createView();
let bindGroupLayout = device0.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.FRAGMENT | GPUShaderStage.VERTEX,
texture: { sampleType: 'sint' },
}],
});
let pipelineLayout1 = device0.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout]
});
let shaderModule0 = device0.createShaderModule({ code: `
@vertex fn vertex0() -> @builtin(position) vec4f {
return vec4f();
}
@fragment fn fragment0() -> @location(200) vec4i {
return vec4i();
}
`});
let pipeline1 = await device0.createRenderPipelineAsync({
layout: pipelineLayout1,
fragment: { module: shaderModule0, targets: [{ format: 'rgba32sint' }] },
vertex: { module: shaderModule0, buffers: [] },
});
let bindGroup = device0.createBindGroup({
layout: bindGroupLayout,
entries: [{ binding: 0, resource: textureView }],
});
let commandEncoder = device0.createCommandEncoder({});
let renderPassEncoder = commandEncoder.beginRenderPass({
colorAttachments: [{ view: textureView2, loadOp: 'load', storeOp: 'store' }],
maxDrawCount: 1,
});
let renderBundleEncoder = device0.createRenderBundleEncoder({ colorFormats: ['rgba32sint'] });
renderBundleEncoder.setPipeline(pipeline1);
renderBundleEncoder.setBindGroup(0, bindGroup);
renderBundleEncoder.draw(0);
renderBundleEncoder.draw(0);
renderPassEncoder.executeBundles([renderBundleEncoder.finish()]);
await device0.queue.onSubmittedWorkDone();
debug('Pass')
globalThis.testRunner?.notifyDone();
}
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.waitUntilDone();
run();
</script>