| <!-- 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(); |
| let bindGroupLayout = device.createBindGroupLayout({ |
| entries: [{ |
| binding: 1, |
| visibility: GPUShaderStage.COMPUTE | GPUShaderStage.FRAGMENT, |
| externalTexture: {} |
| }], |
| }); |
| let pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout] }); |
| let videoFrame = new VideoFrame(new ArrayBuffer(16), { codedWidth: 2, codedHeight: 2, format: 'RGBX', timestamp: 0 }); |
| let shaderModule4 = device.createShaderModule({ code: ` |
| @group(0) @binding(1) var et3: texture_external; |
| @compute @workgroup_size(1, 1, 1) fn compute4() { |
| let a = textureLoad(et3, vec2u()); |
| let b = pack4x8unorm(a); |
| let c = atanh(mat2x2f()[b][0]); |
| } |
| `}); |
| let commandEncoder = device.createCommandEncoder(); |
| let computePassEncoder14 = commandEncoder.beginComputePass(); |
| let pipeline1 = device.createComputePipeline({ layout: pipelineLayout, compute: { module: shaderModule4 } }); |
| computePassEncoder14.setPipeline(pipeline1); |
| let externalTexture = device.importExternalTexture({ source: videoFrame }); |
| let bindGroup1 = device.createBindGroup({ layout: bindGroupLayout, entries: [{ binding: 1, resource: externalTexture }] }); |
| computePassEncoder14.setBindGroup(0, bindGroup1); |
| let bindGroup2 = device.createBindGroup({ layout: bindGroupLayout, entries: [{ binding: 1, resource: externalTexture }] }); |
| computePassEncoder14.dispatchWorkgroups(1); |
| computePassEncoder14.end(); |
| let commandBuffer = commandEncoder.finish(); |
| device.queue.submit([commandBuffer]); |
| await device.queue.onSubmittedWorkDone(); |
| debug('Pass') |
| globalThis.testRunner?.notifyDone(); |
| } |
| |
| globalThis.testRunner?.dumpAsText(); |
| globalThis.testRunner?.waitUntilDone(); |
| |
| run(); |
| </script> |
| |