| <!-- webkit-test-runner [ enableMetalDebugDevice=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: { maxInterStageShaderVariables: 40, maxInterStageShaderComponents: 88 }}); |
| let shaderModule = device.createShaderModule({ code: ` |
| struct d { |
| @location(21) e: vec3<f16>, |
| @location(23) f: vec3<f32>, |
| @location(10) g: vec3<f32>, |
| @location(11) aa: vec2<u32>, |
| @location(29) h: vec4<f32>, |
| @location(25) i: u32, |
| @builtin(position) j: vec4<f32>, |
| @location(18) k: vec4<u32>, |
| @location(5) l: vec3<u32>, |
| @location(32) ab: vec2<f32>, |
| @location(19) m: vec4<f16>, |
| @location(2) n: vec3<i32>, |
| @location(4) o: vec2<u32>, |
| @location(30) p: vec3<u32>, |
| @location(16) ac: vec2<f16>, |
| @location(33) q: vec2<f16>, |
| @location(28) r: vec2<f16>, |
| @location(20) s: vec3<i32>, |
| @location(36) t: vec2<f16>, |
| @location(8) u: vec4<f16>, |
| @location(26) v: f16, |
| @location(22) w: vec2<i32>, |
| @location(24) x: vec2<f16>, |
| @location(39) y: i32, |
| @location(1) z: vec3<f32>, |
| @location(31) ad: vec2<u32>, |
| @location(38) ae: u32, |
| @location(27) af: vec4<u32>, |
| @location(13) ag: vec3<f32>, |
| @location(9) ah: vec3<i32>, |
| @location(15) ai: vec3<f16>, |
| @location(17) aj: f16, |
| @location(14) ak: f32, |
| @location(0) al: vec2<f16>, |
| @location(37) am: u32, |
| @location(34) an: vec2<u32>, |
| @location(12) ao: vec2<u32> |
| } |
| @vertex fn ap() -> d { |
| return d(); |
| } |
| ` |
| }) |
| let texture = device.createTexture({ size: [], format: 'depth24plus-stencil8', usage: GPUTextureUsage.RENDER_ATTACHMENT }); |
| let textureView = texture.createView({ aspect: 'stencil-only' }); |
| let renderPipeline; |
| try { |
| renderPipeline = device.createRenderPipeline({ |
| layout: 'auto', |
| vertex: { module: shaderModule }, |
| depthStencil: { format: 'stencil8' } |
| }); |
| } catch { |
| } |
| if (renderPipeline) { |
| let commandEncoder = device.createCommandEncoder() |
| let renderPass = commandEncoder.beginRenderPass({ |
| colorAttachments: [], |
| depthStencilAttachment: { view: textureView, stencilLoadOp: 'clear', stencilStoreOp: 'discard' } |
| }); |
| renderPass.setPipeline(renderPipeline); |
| renderPass.drawIndexed(0); |
| } |
| await device.queue.onSubmittedWorkDone(); |
| debug('Pass') |
| globalThis.testRunner?.notifyDone(); |
| } |
| globalThis.testRunner?.dumpAsText(); |
| globalThis.testRunner?.waitUntilDone(); |
| |
| run(); |
| </script> |
| |