blob: 669f3810f1d28704f1135cf6186cebfaa398a1da [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({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>