forked from mirrors/gecko-dev
39 lines
1.2 KiB
HTML
39 lines
1.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
ok(SpecialPowers.getBoolPref('dom.webgpu.enabled'), 'Pref should be enabled.');
|
|
|
|
const func = async function() {
|
|
const adapter = await navigator.gpu.requestAdapter();
|
|
const device = await adapter.requestDevice();
|
|
|
|
const bufferRead = device.createBuffer({ size:4, usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST });
|
|
const bufferWrite = device.createBuffer({ size:4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true });
|
|
(new Float32Array(bufferWrite.getMappedRange())).set([1.0]);
|
|
bufferWrite.unmap();
|
|
|
|
const encoder = device.createCommandEncoder();
|
|
encoder.copyBufferToBuffer(bufferWrite, 0, bufferRead, 0, 4);
|
|
device.defaultQueue.submit([encoder.finish()]);
|
|
|
|
await bufferRead.mapAsync(GPUMapMode.READ);
|
|
const data = bufferRead.getMappedRange();
|
|
const value = (new Float32Array(data))[0];
|
|
bufferRead.unmap();
|
|
|
|
ok(value == 1.0, 'value == 1.0');
|
|
};
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
func().finally(() => SimpleTest.finish());
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|