blob: e33b1744862a12072f9407772ba578c6227b17fb [file]
<style>
:root { background: #102030e0; color: #99ddbbcc; font-size: 15px; }
</style>
<script src="../../../resources/js-test-pre.js"></script>
<script id="shared">
const log = console.log;
</script>
<script>
globalThis.testRunner?.waitUntilDone();
async function window0() {
let adapter0 = await navigator.gpu.requestAdapter({});
let device0 = await adapter0.requestDevice({
defaultQueue: {},
requiredFeatures: [
'depth-clip-control',
'depth32float-stencil8',
'texture-compression-etc2',
'texture-compression-astc',
'indirect-first-instance',
'shader-f16',
'rg11b10ufloat-renderable',
'float32-blendable',
'float16-renderable',
'float32-renderable',
'core-features-and-limits',
'timestamp-query',
],
requiredLimits: {
maxBindGroups: 4,
maxBindingsPerBindGroup: 1000,
maxInterStageShaderComponents: 64,
maxStorageBufferBindingSize: 139264339,
maxUniformBufferBindingSize: 66046090,
},
});
// START
let shaderModule0 = device0.createShaderModule({ code: `
@group(0) @binding(221) var<storage, read_write> buffer1: vec2h;
@group(2) @binding(3) var<uniform> buffer5: vec4f;
@group(1) @binding(52) var<storage, read_write> buffer4: array<FragmentOutput1>;
@group(1) @binding(14) var<storage, read_write> buffer3: array<array<array<array<array<f16, 37>, 1>, 8>, 2>>;
struct FragmentOutput1 {
@location(2) @interpolate(flat) location_2: u32,
}
@compute @workgroup_size(1, 1, 1) fn compute0() {
switch u32(buffer3[0][0][0][0][0]) {
default {
buffer3[1][0][0][0][0] = buffer3[0][0][0][0][0];
switch bitcast<u32>(buffer5.g) {
default: {
buffer4[0].location_2 = 0;
}
case 590589182: {
buffer4[0].location_2 = 1u;
return;
}
case 1385788756, 350663882 {
}
}
buffer1.x = buffer1.y;
}
}
}
`, });
let pipeline0 = device0.createComputePipeline({
layout: 'auto',
compute: {
module: shaderModule0,
constants: {}
}
});
// END
await device0.queue.onSubmittedWorkDone();
}
onload = async () => {
try {
let sharedScript = document.querySelector('#shared').textContent;
let promises = [ window0() ];
debug('promises created');
let results = await Promise.allSettled(promises);
for (let result of results) {
if (result.status === 'rejected') { throw result.reason; }
}
debug('Pass');
} catch (e) {
log('error');
log(e);
log(e[Symbol.toStringTag]);
log(e.stack);
if (e instanceof GPUPipelineError) {
log(`${e} - ${e.reason}`);
} else if (e instanceof DOMException) {
if (e.name === 'OperationError') {
log(e.message);
} else if (e.name === 'InvalidStateError') {
} else {
log(e);
}
} else if (e instanceof GPUValidationError) {
} else if (e instanceof GPUOutOfMemoryError) {
} else if (e instanceof TypeError) {
log(e);
} else {
log('unexpected error type');
log(e);
}
}
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.notifyDone();
};
</script>