WebKit Bugzilla
Attachment 372587 Details for
Bug 199082
: Web Inspector: Error "null is not an object (evaluating 'syntaxTree.containersOfPosition')" when setting a breakpoint
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
test case
whlsl-use-undefined-variable.html (text/html), 3.03 KB, created by
Saam Barati
on 2019-06-20 14:53:10 PDT
(
hide
)
Description:
test case
Filename:
MIME Type:
Creator:
Saam Barati
Created:
2019-06-20 14:53:10 PDT
Size:
3.03 KB
patch
obsolete
><!DOCTYPE html> ><html> ><head> ><script src="../resources/js-test-pre.js"></script> ></head> ><body> ><script> >const shaderSource = ` >[numthreads(1, 1, 1)] >compute void computeShader(device float[] buffer : register(u0), float3 threadID : SV_DispatchThreadID) { > float foo; > if (foo) { > x = x + 1; > } >} >`; >let resultsFloat32Array; >async function start() { > const adapter = await navigator.gpu.requestAdapter(); > const device = await adapter.requestDevice(); > > const shaderModule = device.createShaderModule({code: shaderSource, isWHLSL: true}); > const computeStage = {module: shaderModule, entryPoint: "computeShader"}; > > const bindGroupLayoutDescriptor = {bindings: [{binding: 0, visibility: 7, type: "storage-buffer"}]}; > const bindGroupLayout = device.createBindGroupLayout(bindGroupLayoutDescriptor); > const pipelineLayoutDescriptor = {bindGroupLayouts: [bindGroupLayout]}; > const pipelineLayout = device.createPipelineLayout(pipelineLayoutDescriptor); > > const computePipelineDescriptor = {computeStage, layout: pipelineLayout}; > const computePipeline = device.createComputePipeline(computePipelineDescriptor); > > const size = Float32Array.BYTES_PER_ELEMENT * 1; > > const bufferDescriptor = {size, usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.TRANSFER_SRC}; > const buffer = device.createBuffer(bufferDescriptor); > const bufferArrayBuffer = await buffer.mapWriteAsync(); > const bufferFloat32Array = new Float32Array(bufferArrayBuffer); > bufferFloat32Array[0] = 0; > buffer.unmap(); > > const resultsBufferDescriptor = {size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.TRANSFER_DST | GPUBufferUsage.MAP_READ}; > const resultsBuffer = device.createBuffer(resultsBufferDescriptor); > > const bufferBinding = {buffer: resultsBuffer, size}; > const bindGroupBinding = {binding: 0, resource: bufferBinding}; > const bindGroupDescriptor = {layout: bindGroupLayout, bindings: [bindGroupBinding]}; > const bindGroup = device.createBindGroup(bindGroupDescriptor); > > const commandEncoder = device.createCommandEncoder(); // {} > commandEncoder.copyBufferToBuffer(buffer, 0, resultsBuffer, 0, size); > const computePassEncoder = commandEncoder.beginComputePass(); > computePassEncoder.setPipeline(computePipeline); > computePassEncoder.setBindGroup(0, bindGroup); > computePassEncoder.dispatch(1, 1, 1); > computePassEncoder.endPass(); > const commandBuffer = commandEncoder.finish(); > device.getQueue().submit([commandBuffer]); > > const resultsArrayBuffer = await resultsBuffer.mapReadAsync(); > resultsFloat32Array = new Float32Array(resultsArrayBuffer); > shouldBe("resultsFloat32Array[0]", "66"); > resultsBuffer.unmap(); >} >if (window.testRunner) > testRunner.waitUntilDone(); >window.addEventListener("load", function() { > start().then(function() { > if (window.testRunner) > testRunner.notifyDone(); > }, function() { > if (window.testRunner) > testRunner.notifyDone(); > }); >}); ></script> ><script src="../resources/js-test-post.js"></script> ></body> ></html>
<!DOCTYPE html> <html> <head> <script src="../resources/js-test-pre.js"></script> </head> <body> <script> const shaderSource = ` [numthreads(1, 1, 1)] compute void computeShader(device float[] buffer : register(u0), float3 threadID : SV_DispatchThreadID) { float foo; if (foo) { x = x + 1; } } `; let resultsFloat32Array; async function start() { const adapter = await navigator.gpu.requestAdapter(); const device = await adapter.requestDevice(); const shaderModule = device.createShaderModule({code: shaderSource, isWHLSL: true}); const computeStage = {module: shaderModule, entryPoint: "computeShader"}; const bindGroupLayoutDescriptor = {bindings: [{binding: 0, visibility: 7, type: "storage-buffer"}]}; const bindGroupLayout = device.createBindGroupLayout(bindGroupLayoutDescriptor); const pipelineLayoutDescriptor = {bindGroupLayouts: [bindGroupLayout]}; const pipelineLayout = device.createPipelineLayout(pipelineLayoutDescriptor); const computePipelineDescriptor = {computeStage, layout: pipelineLayout}; const computePipeline = device.createComputePipeline(computePipelineDescriptor); const size = Float32Array.BYTES_PER_ELEMENT * 1; const bufferDescriptor = {size, usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.TRANSFER_SRC}; const buffer = device.createBuffer(bufferDescriptor); const bufferArrayBuffer = await buffer.mapWriteAsync(); const bufferFloat32Array = new Float32Array(bufferArrayBuffer); bufferFloat32Array[0] = 0; buffer.unmap(); const resultsBufferDescriptor = {size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.TRANSFER_DST | GPUBufferUsage.MAP_READ}; const resultsBuffer = device.createBuffer(resultsBufferDescriptor); const bufferBinding = {buffer: resultsBuffer, size}; const bindGroupBinding = {binding: 0, resource: bufferBinding}; const bindGroupDescriptor = {layout: bindGroupLayout, bindings: [bindGroupBinding]}; const bindGroup = device.createBindGroup(bindGroupDescriptor); const commandEncoder = device.createCommandEncoder(); // {} commandEncoder.copyBufferToBuffer(buffer, 0, resultsBuffer, 0, size); const computePassEncoder = commandEncoder.beginComputePass(); computePassEncoder.setPipeline(computePipeline); computePassEncoder.setBindGroup(0, bindGroup); computePassEncoder.dispatch(1, 1, 1); computePassEncoder.endPass(); const commandBuffer = commandEncoder.finish(); device.getQueue().submit([commandBuffer]); const resultsArrayBuffer = await resultsBuffer.mapReadAsync(); resultsFloat32Array = new Float32Array(resultsArrayBuffer); shouldBe("resultsFloat32Array[0]", "66"); resultsBuffer.unmap(); } if (window.testRunner) testRunner.waitUntilDone(); window.addEventListener("load", function() { start().then(function() { if (window.testRunner) testRunner.notifyDone(); }, function() { if (window.testRunner) testRunner.notifyDone(); }); }); </script> <script src="../resources/js-test-post.js"></script> </body> </html>
View Attachment As Raw
Actions:
View
Attachments on
bug 199082
: 372587 |
372589
|
372603