| <style> |
| :root { background: #102030e0; color: #99ddbbcc; font-size: 15px; } |
| </style> |
| <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-astc', |
| 'indirect-first-instance', |
| 'shader-f16', |
| 'rg11b10ufloat-renderable', |
| 'bgra8unorm-storage', |
| 'timestamp-query', |
| ], |
| requiredLimits: { |
| maxStorageTexturesPerShaderStage: 4, |
| maxTextureDimension1D: 8192, |
| maxUniformBufferBindingSize: 2710603, |
| maxStorageBufferBindingSize: 156398292, |
| }, |
| }); |
| // START |
| b = device0.createShaderModule({ |
| code : ` |
| @group(0) @binding(231) var<storage, read_write> c: array<array<S0, 2> >; |
| struct S0 { |
| d: vec3u, e: u32} |
| @group(0) @binding(239) var<storage> f: array<array<array<vec2i, 1>, 12> >; |
| fn g(v: u32) -> u32 { |
| return v; |
| } |
| @compute @workgroup_size(1) fn h() |
| { |
| for (var i=c[6076][g(806475)].d[1]; |
| i<u32(f[0][g(100753173)][0].r) ; |
| ) {} |
| } |
| ` |
| }) |
| j = device0.createTexture({ |
| size : [ 4, 4, 13 ], |
| format : 'bgra8unorm', |
| usage : GPUTextureUsage.TEXTURE_BINDING |
| }) |
| k = j.createView({dimension : 'cube'}) |
| l = device0.createBindGroupLayout({ |
| entries : [ |
| { |
| binding : 0, |
| visibility : GPUShaderStage.VERTEX, |
| texture : {viewDimension : 'cube'} |
| }, |
| { |
| binding : 1, |
| visibility : GPUShaderStage.FRAGMENT, |
| buffer : {type : 'storage', hasDynamicOffset : true} |
| }, |
| { |
| binding : 3, |
| visibility : GPUShaderStage.FRAGMENT, |
| buffer : {type : 'storage'} |
| }, |
| { |
| binding : 220, |
| visibility : GPUShaderStage.FRAGMENT, |
| buffer : {type : 'storage', hasDynamicOffset : true} |
| }, |
| { |
| binding : 231, |
| visibility : GPUShaderStage.COMPUTE, |
| buffer : {type : 'storage'} |
| }, |
| { |
| binding : 239, |
| visibility : GPUShaderStage.COMPUTE, |
| buffer : {type : 'read-only-storage'} |
| } |
| ] |
| }) |
| m = device0.createPipelineLayout({bindGroupLayouts : [ l ]}) |
| n = device0.createCommandEncoder() |
| o = device0.createComputePipeline({layout : m, compute : {module : b}}) |
| p = n.beginComputePass() |
| try { |
| p.setPipeline(o) |
| } catch { |
| } |
| q = device0.createBuffer({size : 72, usage : GPUBufferUsage.STORAGE}) |
| s = device0.createBuffer({size : 40, usage : GPUBufferUsage.STORAGE}) |
| buffer44 = device0.createBuffer({size : 284, usage : GPUBufferUsage.STORAGE}) |
| buffer48 = device0.createBuffer({size : 60, usage : GPUBufferUsage.STORAGE}) |
| t = device0.createBuffer({size : 088, usage : GPUBufferUsage.STORAGE}) |
| bindGroup9 = device0.createBindGroup({ |
| layout : l, |
| entries : [ |
| {binding : 3, resource : {buffer : buffer48}}, |
| {binding : 239, resource : {buffer : buffer44}}, |
| {binding : 1, resource : {buffer : s}}, |
| {binding : 231, resource : {buffer : t}}, {binding : 0, resource : k}, |
| {binding : 220, resource : {buffer : q}} |
| ] |
| }) |
| try { |
| p.setBindGroup(0, bindGroup9, [ 0, 0 ]) |
| } catch { |
| } |
| try { |
| p.dispatchWorkgroups(1) |
| } catch { |
| } |
| try { |
| p.end() |
| } catch { |
| } |
| u = n.finish() |
| try { |
| device0.queue.submit([ u ]) |
| } catch { |
| } |
| // END |
| await device0.queue.onSubmittedWorkDone(); |
| } |
| |
| onload = async () => { |
| try { |
| let sharedScript = document.querySelector('#shared').textContent; |
| |
| let workers = [ |
| |
| ]; |
| let promises = [ window0() ]; |
| log('promises created'); |
| let results = await Promise.allSettled(promises); |
| for (let result of results) { |
| if (result.status === 'rejected') { throw result.reason; } |
| } |
| log('the end') |
| log(location); |
| } 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> |