| <!-- 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> |
| |