<!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."
);
async function testBody() {
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.queue.submit([encoder.finish()]);
await bufferRead.mapAsync(GPUMapMode.READ);
try {
bufferRead.getMappedRange(0 , 5 );
ok(false, "mapped with size outside buffer should throw" );
} catch (e) {
ok(
true,
"mapped with size outside buffer should throw OperationError"
);
}
try {
bufferRead.getMappedRange(4 , 1 );
ok(false, "mapped with offset outside buffer should throw" );
} catch (e) {
ok(
true,
"mapped with offset outside buffer should throw OperationError"
);
}
const data = bufferRead.getMappedRange();
is(data.byteLength, 4 , "array should be 4 bytes long" );
const value = new Float32Array(data)[0 ];
ok(value == 1 .0 , "value == 1.0" );
bufferRead.unmap();
is(data.byteLength, 0 , "array should be detached after explicit unmap" );
}
SimpleTest.waitForExplicitFinish();
testBody()
.catch(e => ok(false, "Unhandled exception " + e))
.finally(() => SimpleTest.finish());
</script >
</body >
</html >
Messung V0.5 in Prozent C=91 H=96 G=93
¤ Dauer der Verarbeitung: 0.1 Sekunden
¤
*© Formatika GbR, Deutschland