blob: 2386d9da0191f0b0074b39f0afd44834b75128cb [file]
<!-- webkit-test-runner [ enableMetalShaderValidation=true ] -->
<script src="../../../resources/js-test-pre.js"></script>
<script>
async function run() {
let adapter = await navigator.gpu.requestAdapter();
let device = await adapter.requestDevice({ requiredLimits: { maxTextureArrayLayers: 1875 } });
let texture = device.createTexture({ size: { width: 604 }, mipLevelCount: 2, format: 'rg16uint', usage: GPUTextureUsage.RENDER_ATTACHMENT });
let textureView = texture.createView({ baseMipLevel: 1, arrayLayerCount: 1 });
let pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: []});
let shaderModule = device.createShaderModule({ code: `
@fragment fn fragment0() -> @location(0) vec4u {
return vec4u();
}
@vertex fn vertex0() -> @builtin(position) vec4<f32> {
return vec4();
}
`});
let pipeline = await device.createRenderPipelineAsync({
layout: pipelineLayout,
fragment: { module: shaderModule, targets: [{ format: 'rg16uint', writeMask: GPUColorWrite.RED }] },
vertex: { module: shaderModule, buffers: [, , , , { arrayStride: 1004, attributes: [{ format: 'float32x3', offset: 256, shaderLocation: 0 }] }] },
});
let buffer = device.createBuffer({ size: 280, usage: GPUBufferUsage.VERTEX });
let buffer2 = device.createBuffer({ size: 320, usage: GPUBufferUsage.INDEX });
let renderPassEncoder = device.createCommandEncoder().beginRenderPass({
colorAttachments: [{ view: textureView, loadOp: 'load', storeOp: 'store' }]
});
renderPassEncoder.setPipeline(pipeline);
renderPassEncoder.setIndexBuffer(buffer2, 'uint16');
renderPassEncoder.setVertexBuffer(4, buffer);
device.destroy();
renderPassEncoder.drawIndexed(153);
await device.queue.onSubmittedWorkDone();
debug('Pass')
globalThis.testRunner?.notifyDone();
}
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.waitUntilDone();
run();
</script>