| <script> | |
| if (window.testRunner) { | |
| testRunner.waitUntilDone(); | |
| testRunner.dumpAsText(); | |
| } | |
| onload = async () => { | |
| let adapter0 = await navigator.gpu.requestAdapter( | |
| { | |
| } | |
| ); | |
| let adapter1 = await navigator.gpu.requestAdapter( | |
| { | |
| powerPreference: 'low-power', | |
| } | |
| ); | |
| let device0 = await adapter0.requestDevice( | |
| { | |
| label: 'a', | |
| requiredFeatures: [ | |
| 'depth-clip-control', | |
| 'indirect-first-instance', | |
| 'shader-f16', | |
| 'rg11b10ufloat-renderable', | |
| 'bgra8unorm-storage' | |
| ], | |
| requiredLimits: { | |
| maxTextureDimension3D: 2048, | |
| minStorageBufferOffsetAlignment: Math.max(adapter0.limits.minStorageBufferOffsetAlignment, 64), | |
| minUniformBufferOffsetAlignment: Math.max(adapter0.limits.minUniformBufferOffsetAlignment, 128), | |
| maxComputeWorkgroupStorageSize: 16384 + Math.floor((adapter0.limits.maxComputeWorkgroupStorageSize - 16384) * 0.35), | |
| maxTextureArrayLayers: 256 + Math.floor((adapter0.limits.maxTextureArrayLayers - 256) * 0.30), | |
| maxStorageBuffersPerShaderStage: 8 + Math.floor((adapter0.limits.maxStorageBuffersPerShaderStage - 8) * 0.53), | |
| maxSamplersPerShaderStage: 16 + Math.floor((adapter0.limits.maxSamplersPerShaderStage - 16) * 0.91), | |
| maxBufferSize: 268435456 + Math.floor((adapter0.limits.maxBufferSize - 268435456) * 0.48), | |
| maxBindGroups: 4 + Math.floor((adapter0.limits.maxBindGroups - 4) * 0.58), | |
| maxUniformBufferBindingSize: 65536 + Math.floor((adapter0.limits.maxUniformBufferBindingSize - 65536) * 0.90), | |
| maxInterStageShaderVariables: 16 + Math.floor((adapter0.limits.maxInterStageShaderVariables - 16) * 0.47) | |
| }, | |
| } | |
| ); | |
| let promise0 = (await navigator.gpu.requestAdapter( | |
| { | |
| } | |
| )).requestDevice( | |
| { | |
| label: 'a', | |
| requiredLimits: { | |
| minUniformBufferOffsetAlignment: Math.max(adapter0.limits.minUniformBufferOffsetAlignment, 32), | |
| maxStorageTexturesPerShaderStage: 4 + Math.floor((adapter0.limits.maxStorageTexturesPerShaderStage - 4) * 0.76), | |
| maxComputeWorkgroupStorageSize: 16384 + Math.floor((adapter0.limits.maxComputeWorkgroupStorageSize - 16384) * 0.88), | |
| maxTextureDimension1D: 8192 + Math.floor((adapter0.limits.maxTextureDimension1D - 8192) * 0.74), | |
| maxStorageBuffersPerShaderStage: 8 + Math.floor((adapter0.limits.maxStorageBuffersPerShaderStage - 8) * 0.13), | |
| maxComputeInvocationsPerWorkgroup: 256 + Math.floor((adapter0.limits.maxComputeInvocationsPerWorkgroup - 256) * 0.72), | |
| maxVertexAttributes: 16 + Math.floor((adapter0.limits.maxVertexAttributes - 16) * 0.97), | |
| maxInterStageShaderVariables: 16 + Math.floor((adapter0.limits.maxInterStageShaderVariables - 16) * 0.91) | |
| }, | |
| } | |
| ); | |
| let canvas0 = document.createElement('canvas'); | |
| let buffer0 = device0.createBuffer( | |
| { | |
| label: 'a', | |
| size: 6547104, | |
| usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM, | |
| mappedAtCreation: true, | |
| } | |
| ); | |
| let pipelineLayout0 = device0.createPipelineLayout( | |
| { | |
| label: 'a', | |
| bindGroupLayouts: [ | |
| ], | |
| } | |
| ); | |
| try { | |
| await device0.popErrorScope(); | |
| } catch {} | |
| try { | |
| buffer0.destroy(); | |
| } catch {} | |
| let shaderModule0 = device0.createShaderModule( | |
| { | |
| label: 'a', | |
| code: `@group(1) @binding(3501) | |
| var<storage, read_write> function0: array<u32>; | |
| @group(0) @binding(3692) | |
| var<storage, read_write> global0: array<u32>; | |
| @group(1) @binding(3724) | |
| var<storage, read_write> global1: array<u32>; | |
| @group(1) @binding(3501) | |
| var<storage, read_write> local0: array<u32>; | |
| @group(0) @binding(4640) | |
| var<storage, read_write> local1: array<u32>; | |
| @group(0) @binding(3501) | |
| var<storage, read_write> __ArgumentBufferT_0: array<u32>; | |
| @group(1) @binding(3501) | |
| var<storage, read_write> function1: array<u32>; | |
| @group(0) @binding(3724) | |
| var<storage, read_write> local2: array<u32>; | |
| @group(0) @binding(1229) | |
| var<storage, read_write> global2: array<u32>; | |
| @group(1) @binding(4640) | |
| var<storage, read_write> function2: array<u32>; | |
| @compute @workgroup_size(7, 2, 2) | |
| fn main(@builtin(global_invocation_id) global_id : vec3<u32>, @builtin(local_invocation_id) local_id : vec3<u32>) { | |
| var x: u32 = 0; | |
| loop { | |
| local1[x] = global_id.x; | |
| x += 1; | |
| global0[global_id.y-global_id.x] = function2[x]; | |
| if (x > 2 * arrayLength(&local1)) { | |
| break; | |
| } | |
| } | |
| } | |
| @compute @workgroup_size(7, 1, 2) | |
| fn main2(@builtin(global_invocation_id) global_id : vec3<u32>, @builtin(local_invocation_id) local_id : vec3<u32>) { | |
| global1[global_id.x*local_id.x] = u32(function1[global_id.x*local_id.x]); | |
| }`, | |
| sourceMap: {}, | |
| hints: {}, | |
| } | |
| ); | |
| let querySet0 = device0.createQuerySet( | |
| { | |
| label: 'a', | |
| type: 'occlusion', | |
| count: 2042616, | |
| } | |
| ); | |
| let texture0 = device0.createTexture( | |
| { | |
| label: 'a', | |
| size: [ | |
| 1154, | |
| 1414, | |
| 8732 | |
| ], | |
| sampleCount: 4, | |
| dimension: '1d', | |
| format: 'rg16sint', | |
| usage: 0, | |
| viewFormats: [ | |
| 'rgb9e5ufloat', | |
| 'rgb9e5ufloat', | |
| 'r32uint', | |
| 'astc-10x8-unorm-srgb' | |
| ], | |
| } | |
| ); | |
| try { | |
| buffer0.destroy(); | |
| } catch {} | |
| let promise2 = device0.queue.onSubmittedWorkDone(); | |
| try { | |
| await promise2; | |
| } catch {} | |
| let bindGroupLayout1 = device0.createBindGroupLayout( | |
| { | |
| label: 'a', | |
| entries: [ | |
| ], | |
| } | |
| ); | |
| let commandBuffer0 = device0.createCommandEncoder().finish( | |
| { | |
| label: 'a', | |
| } | |
| ); | |
| try { | |
| await device0.queue.onSubmittedWorkDone(); | |
| } catch {} | |
| try { | |
| buffer0.unmap(); | |
| } catch {} | |
| try { | |
| await buffer0.mapAsync( | |
| GPUMapMode.READ, | |
| 4983728, | |
| 7344136 | |
| ); | |
| } catch {} | |
| try { | |
| await device0.queue.onSubmittedWorkDone(); | |
| } catch {} | |
| let canvas1 = document.createElement('canvas'); | |
| try { | |
| buffer0.unmap(); | |
| } catch {} | |
| let sampler0 = device0.createSampler( | |
| { | |
| addressModeU: 'clamp-to-edge', | |
| addressModeV: 'clamp-to-edge', | |
| addressModeW: 'mirror-repeat', | |
| magFilter: 'linear', | |
| minFilter: 'linear', | |
| mipmapFilter: 'linear', | |
| } | |
| ); | |
| let videoFrame2 = new VideoFrame(await createImageBitmap(canvas0), {timestamp: 0}); | |
| let externalTexture1 = device0.importExternalTexture( | |
| { | |
| label: 'a', | |
| source: videoFrame2, | |
| colorSpace: 'srgb', | |
| } | |
| ); | |
| try { | |
| await promise3; | |
| } catch {} | |
| let buffer1 = device0.createBuffer( | |
| { | |
| label: 'a', | |
| size: 1513848, | |
| usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM | GPUBufferUsage.INDIRECT | GPUBufferUsage.VERTEX | GPUBufferUsage.STORAGE | GPUBufferUsage.QUERY_RESOLVE, | |
| mappedAtCreation: true, | |
| } | |
| ); | |
| let texture1 = device0.createTexture( | |
| { | |
| label: 'a', | |
| size: [ | |
| 6196, | |
| 674 | |
| ], | |
| mipLevelCount: 1, | |
| format: 'r8uint', | |
| usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING, | |
| viewFormats: [ | |
| 'rgba32uint', | |
| 'r8snorm' | |
| ], | |
| } | |
| ); | |
| let textureView0 = texture1.createView( | |
| { | |
| label: 'a', | |
| format: 'r16sint', | |
| dimension: '3d', | |
| aspect: 'all', | |
| mipLevelCount: 14, | |
| baseArrayLayer: 2713, | |
| arrayLayerCount: 7028, | |
| } | |
| ); | |
| try { | |
| device0.queue.writeBuffer( | |
| buffer1, | |
| 2370504, | |
| new ArrayBuffer(3444368), | |
| 4797680, | |
| 1966912 | |
| ); | |
| } catch {} | |
| let device2 = await (await navigator.gpu.requestAdapter( | |
| { | |
| } | |
| )).requestDevice( | |
| { | |
| label: 'a', | |
| requiredFeatures: [ | |
| 'depth32float-stencil8', | |
| 'shader-f16', | |
| 'rg11b10ufloat-renderable', | |
| 'bgra8unorm-storage' | |
| ], | |
| requiredLimits: { | |
| minStorageBufferOffsetAlignment: Math.max(adapter0.limits.minStorageBufferOffsetAlignment, 128), | |
| maxDynamicStorageBuffersPerPipelineLayout: 4 + Math.floor((adapter0.limits.maxDynamicStorageBuffersPerPipelineLayout - 4) * 0.32), | |
| maxStorageTexturesPerShaderStage: 4 + Math.floor((adapter0.limits.maxStorageTexturesPerShaderStage - 4) * 0.60), | |
| maxBindingsPerBindGroup: 1000 + Math.floor((adapter0.limits.maxBindingsPerBindGroup - 1000) * 0.59), | |
| maxTextureDimension1D: 8192 + Math.floor((adapter0.limits.maxTextureDimension1D - 8192) * 0.64), | |
| maxSamplersPerShaderStage: 16 + Math.floor((adapter0.limits.maxSamplersPerShaderStage - 16) * 0.78), | |
| maxComputeInvocationsPerWorkgroup: 256 + Math.floor((adapter0.limits.maxComputeInvocationsPerWorkgroup - 256) * 0.59), | |
| maxSampledTexturesPerShaderStage: 16 + Math.floor((adapter0.limits.maxSampledTexturesPerShaderStage - 16) * 0.20), | |
| maxUniformBufferBindingSize: 65536 + Math.floor((adapter0.limits.maxUniformBufferBindingSize - 65536) * 0.75), | |
| maxVertexBufferArrayStride: 2048 + Math.floor((adapter0.limits.maxVertexBufferArrayStride - 2048) * 0.59), | |
| maxColorAttachmentBytesPerSample: 32 + Math.floor((adapter0.limits.maxColorAttachmentBytesPerSample - 32) * 0.61) | |
| }, | |
| } | |
| ); | |
| let imageData0 = new ImageData(56, 248); | |
| let gpuCanvasContext0 = canvas1.getContext('webgpu'); | |
| let adapter2 = await navigator.gpu.requestAdapter(); | |
| let querySet1 = device2.createQuerySet( | |
| { | |
| label: 'a', | |
| type: 'occlusion', | |
| count: 7241832, | |
| } | |
| ); | |
| let promise4 = navigator.gpu.requestAdapter( | |
| { | |
| powerPreference: 'high-performance', | |
| } | |
| ); | |
| try { | |
| await device2.popErrorScope(); | |
| } catch {} | |
| try { | |
| device2.queue.writeBuffer( | |
| device2.createBuffer( | |
| { | |
| label: 'a', | |
| size: 2962296, | |
| usage: GPUBufferUsage.INDEX | GPUBufferUsage.INDIRECT | GPUBufferUsage.UNIFORM | GPUBufferUsage.STORAGE, | |
| mappedAtCreation: true, | |
| } | |
| ), | |
| 5406120, | |
| new ArrayBuffer(1887464), | |
| 2768104, | |
| 5570864 | |
| ); | |
| } catch {} | |
| let buffer2 = device2.createBuffer( | |
| { | |
| size: 807896, | |
| usage: 0, | |
| mappedAtCreation: true, | |
| } | |
| ); | |
| let commandEncoder0 = device0.createCommandEncoder(); | |
| let commandBuffer1 = commandEncoder0.finish( | |
| { | |
| label: 'a', | |
| } | |
| ); | |
| try { | |
| commandEncoder0.copyTextureToBuffer( | |
| { | |
| texture: device0.createTexture( | |
| { | |
| label: 'a', | |
| size: { | |
| width: 9165, | |
| height: 1008, | |
| depthOrArrayLayers: 1, | |
| }, | |
| sampleCount: 4, | |
| dimension: '1d', | |
| format: 'depth32float', | |
| usage: 0, | |
| viewFormats: [ | |
| 'rg11b10ufloat', | |
| 'depth16unorm', | |
| 'rg16float', | |
| 'etc2-rgb8unorm' | |
| ], | |
| } | |
| ), | |
| mipLevel: 4610, | |
| origin: { | |
| z: 1114, | |
| }, | |
| aspect: 'stencil-only', | |
| }, | |
| { | |
| offset: 6716024, | |
| bytesPerRow: 372112, | |
| rowsPerImage: 7915688, | |
| buffer: buffer0, | |
| }, | |
| { | |
| width: 4383, | |
| height: 6088, | |
| depthOrArrayLayers: 1, | |
| } | |
| ); | |
| } catch {} | |
| try { | |
| device2.queue.submit( | |
| [ | |
| device2.createCommandEncoder().finish( | |
| { | |
| label: 'a', | |
| } | |
| ), | |
| device2.createCommandEncoder().finish( | |
| { | |
| label: 'a', | |
| } | |
| ) | |
| ] | |
| ); | |
| } catch {} | |
| try { | |
| device2.queue.copyExternalImageToTexture( | |
| { | |
| source: await createImageBitmap(canvas1), | |
| origin: [ | |
| 3564, | |
| 2967 | |
| ], | |
| }, | |
| { | |
| texture: device2.createTexture( | |
| { | |
| label: 'a', | |
| size: [ | |
| 918, | |
| 1596, | |
| 8526 | |
| ], | |
| sampleCount: 1, | |
| dimension: '3d', | |
| format: 'rgba32uint', | |
| usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING, | |
| viewFormats: [ | |
| 'bgra8unorm-srgb' | |
| ], | |
| } | |
| ), | |
| mipLevel: 7892, | |
| aspect: 'all', | |
| colorSpace: 'srgb', | |
| premultipliedAlpha: true, | |
| }, | |
| { | |
| width: 2097, | |
| height: 4854, | |
| depthOrArrayLayers: 7849, | |
| } | |
| ); | |
| } catch {} | |
| let videoFrame0 = new VideoFrame(await createImageBitmap(canvas1), {timestamp: 0}); | |
| let commandEncoder1 = device2.createCommandEncoder( | |
| { | |
| } | |
| ); | |
| try { | |
| buffer2.unmap(); | |
| } catch {} | |
| try { | |
| await buffer2.mapAsync( | |
| GPUMapMode.WRITE, | |
| 2028160, | |
| 728304 | |
| ); | |
| } catch {} | |
| try { | |
| commandEncoder1.copyTextureToTexture( | |
| { | |
| texture: device2.createTexture( | |
| { | |
| label: 'a', | |
| size: { | |
| width: 2966, | |
| height: 280, | |
| depthOrArrayLayers: 5918, | |
| }, | |
| mipLevelCount: 3, | |
| dimension: '3d', | |
| format: 'depth16unorm', | |
| usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING, | |
| viewFormats: [ | |
| 'depth24plus', | |
| 'rgba8unorm-srgb', | |
| 'rgba8uint', | |
| 'rgba8uint', | |
| 'astc-6x5-unorm-srgb' | |
| ], | |
| } | |
| ), | |
| mipLevel: 7590, | |
| origin: [ | |
| 3119, | |
| 4919, | |
| 427, | |
| 7767 | |
| ], | |
| aspect: 'all', | |
| }, | |
| { | |
| texture: device2.createTexture( | |
| { | |
| label: 'a', | |
| size: [ | |
| 9996, | |
| 1526 | |
| ], | |
| mipLevelCount: 3, | |
| sampleCount: 4, | |
| dimension: '3d', | |
| format: 'rgba8unorm', | |
| usage: 0, | |
| viewFormats: [ | |
| 'r8sint', | |
| 'astc-10x5-unorm', | |
| 'astc-4x4-unorm-srgb' | |
| ], | |
| } | |
| ), | |
| mipLevel: 1489, | |
| origin: [ | |
| 9631, | |
| 8238, | |
| 4082 | |
| ], | |
| aspect: 'all', | |
| }, | |
| [ | |
| 1988, | |
| 9838, | |
| 1297 | |
| ] | |
| ); | |
| } catch {} | |
| try { | |
| commandEncoder1.insertDebugMarker( | |
| 'a' | |
| ); | |
| } catch {} | |
| try { | |
| await device2.popErrorScope(); | |
| } catch {} | |
| let adapter5 = await promise4; | |
| try { | |
| commandEncoder0.copyBufferToBuffer( | |
| buffer1, | |
| 7618736, | |
| buffer0, | |
| 5542400, | |
| 4142936 | |
| ); | |
| } catch {} | |
| try { | |
| device0.queue.writeBuffer( | |
| buffer0, | |
| 1903640, | |
| new ArrayBuffer(3659080) | |
| ); | |
| } catch {} | |
| try { videoFrame0.close(); } catch {} | |
| try { videoFrame2.close(); } catch {} | |
| if (window.testRunner) { testRunner.notifyDone() } | |
| }; | |
| </script> | |
| This test passes if it does not crash. |