blob: caf0b08e91f79bd870d447ab7e58f8220b05eba6 [file]
<img id="img0" src="data:image/png;base64,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" />
<script id="shared">
const log = globalThis.$vm?.print ?? console.log;
</script>
<script>
globalThis.testRunner?.waitUntilDone();
async function window0(adapter, device) {
let bindGroupLayout0 = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
buffer: { type: 'storage', hasDynamicOffset: false },
},
{
binding: 1,
visibility: GPUShaderStage.COMPUTE | GPUShaderStage.VERTEX,
texture: { viewDimension: '2d', sampleType: 'unfilterable-float', multisampled: false },
},
{
binding: 40,
visibility: GPUShaderStage.COMPUTE,
externalTexture: {}
},
{
binding: 50,
visibility: GPUShaderStage.COMPUTE,
buffer: { type: 'storage', hasDynamicOffset: false },
},
],
});
let pipelineLayout0 = device.createPipelineLayout({bindGroupLayouts: [bindGroupLayout0]});
let buffer1 = device.createBuffer({
size: 29023,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC | GPUBufferUsage.INDEX | GPUBufferUsage.INDIRECT | GPUBufferUsage.STORAGE,
});
let shaderModule2 = device.createShaderModule({
code: `
diagnostic(info, xyz);
enable f16;
requires unrestricted_pointer_parameters;
struct S {
@size(16) h: f16,
}
@group(0) @binding(0) var<storage, read_write> buffer14: array<array<array<S, 2>, 2>, 2>;
@group(0) @binding(50) var<storage, read_write> buffer16: vec4f;
@compute @workgroup_size(3, 2, 1)
fn compute2() {
buffer14[0][1][0].h -= vec4h(buffer16).w;
}`,
});
let img0 = document.getElementById('img0');
let videoFrame0 = new VideoFrame(img0, {timestamp: 0});
let pipeline0 = device.createComputePipeline({layout: pipelineLayout0, compute: {module: shaderModule2, }});
let externalTexture1 = device.importExternalTexture({source: videoFrame0});
let texture8 = device.createTexture({
size: {width: 16, height: 16, depthOrArrayLayers: 1},
dimension: '2d',
format: 'depth24plus',
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
viewFormats: [],
});
let textureView17 = texture8.createView({label: '\u44f3\u0d9b\ubfd3\u{1f792}\u{1f85b}\u{1fa5c}', aspect: 'depth-only'});
let bindGroup20 = device.createBindGroup({
layout: bindGroupLayout0,
entries: [
{binding: 0, resource: {buffer: buffer1, offset: 1792, size: 776}},
{binding: 1, resource: textureView17},
{binding: 40, resource: externalTexture1},
{binding: 50, resource: {buffer: buffer1, offset: 1024, size: 8896}},
],
});
let commandEncoder124 = device.createCommandEncoder({});
let computePassEncoder127 = commandEncoder124.beginComputePass();
computePassEncoder127.setPipeline(pipeline0);
computePassEncoder127.setBindGroup(0, bindGroup20, new Uint32Array(826), 32, 0);
computePassEncoder127.dispatchWorkgroups(1, 1);
computePassEncoder127.end();
let commandBuffer15 = commandEncoder124.finish();
device.queue.submit([commandBuffer15]);
videoFrame0.close();
}
onload = async () => {
let adapter = await navigator.gpu.requestAdapter({});
let device = globalThis.device = await adapter.requestDevice();
device.pushErrorScope('internal');
let result = await window0(adapter, device);
let error = await device.popErrorScope();
if (error) {
log('*'.repeat(25));
log(error[Symbol.toStringTag]);
log(error.message);
log(label);
if (error.stack != `_`) {
log(error.stack);
}
log(location);
log('*'.repeat(25));
return undefined;
}
globalThis.testRunner?.notifyDone();
};
</script>