test_shared_array_buffer.html (1694B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> 7 </head> 8 <body> 9 <script> 10 ok( 11 SpecialPowers.getBoolPref("dom.webgpu.enabled"), 12 "Pref should be enabled." 13 ); 14 15 const set_bind_group_null = async function () { 16 const adapter = await navigator.gpu.requestAdapter(); 17 ok(adapter !== undefined, "adapter !== undefined"); 18 const device = await adapter.requestDevice(); 19 ok(device !== undefined, "device !== undefined"); 20 21 const sharedData = new WebAssembly.Memory({ 22 initial: 1, 23 maximum: 1, 24 shared: true, 25 }); 26 27 const buffer = device.createBuffer({ 28 mappedAtCreation: true, 29 size: 128, 30 usage: GPUBufferUsage.COPY_DST, 31 }); 32 device.queue.writeBuffer(buffer, 0, sharedData.buffer, 0, 128); 33 await device.queue.submit([]); 34 ok(true, "Could use a `SharedArrayBuffer` to write to a buffer."); 35 36 const texture = device.createTexture({ 37 mappedAtCreation: true, 38 size: [128, 1], 39 format: "r8uint", 40 usage: GPUTextureUsage.COPY_DST, 41 }); 42 device.queue.writeTexture({ texture }, sharedData.buffer, {}, [128, 1]); 43 await device.queue.submit([]); 44 ok(true, "Could use a `SharedArrayBuffer` to write to a texture."); 45 }; 46 47 SimpleTest.waitForExplicitFinish(); 48 49 set_bind_group_null() 50 .catch(e => ok(false, `Unhandled exception ${e}`)) 51 .finally(() => SimpleTest.finish()); 52 </script> 53 </body> 54 </html>