| <!-- 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({requiredFeatures: [ 'depth32float-stencil8' ]}); |
| let texture = device.createTexture({ size: [21], mipLevelCount: 3, format: 'depth32float-stencil8', usage: GPUTextureUsage.RENDER_ATTACHMENT }); |
| let textureView = texture.createView({ baseMipLevel: 2 }); |
| let shaderModule = device.createShaderModule({ code: ` |
| struct e { |
| @location(0) f: vec4<f32> |
| } |
| @fragment fn g() -> e { |
| return e(); |
| } |
| @vertex fn n() -> @builtin(position) vec4<f32> { |
| return vec4(); |
| } |
| `}); |
| let pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [] }); |
| let pipeline = await device.createRenderPipelineAsync({ |
| layout: pipelineLayout, |
| fragment: { module: shaderModule, targets: [{ format: 'rgba16float' }] }, |
| depthStencil: { format: 'depth32float-stencil8', depthWriteEnabled: true, depthCompare: 'never' }, |
| vertex: { module: shaderModule } |
| }); |
| let renderBundleEncoder = device.createRenderBundleEncoder({ colorFormats: [], depthStencilFormat: 'depth32float-stencil8' }); |
| renderBundleEncoder.setPipeline(pipeline); |
| let renderPass = device.createCommandEncoder().beginRenderPass({ |
| colorAttachments: [], |
| depthStencilAttachment: { |
| view: textureView, |
| depthClearValue: 0, |
| depthLoadOp: 'clear', |
| depthStoreOp: 'store', |
| stencilLoadOp: 'load', |
| stencilStoreOp: 'store' |
| } |
| }); |
| let renderBundle = renderBundleEncoder.finish(); |
| renderPass.executeBundles([renderBundle]); |
| await device.queue.onSubmittedWorkDone(); |
| debug('Pass') |
| globalThis.testRunner?.notifyDone(); |
| } |
| |
| globalThis.testRunner?.dumpAsText(); |
| globalThis.testRunner?.waitUntilDone(); |
| |
| run(); |
| </script> |
| |