GPUCommandEncoder: copyBufferToBuffer()-Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die copyBufferToBuffer()
-Methode der GPUCommandEncoder
-Schnittstelle kodiert einen Befehl, der Daten von einem GPUBuffer
in einen anderen kopiert.
Syntax
copyBufferToBuffer(source, sourceOffset, destination, destinationOffset, size)
Parameter
source
-
Der
GPUBuffer
, von dem kopiert werden soll. sourceOffset
-
Der Offset in Bytes in den
source
, ab dem das Kopieren beginnen soll. destination
-
Der
GPUBuffer
, in den kopiert werden soll. destinationOffset
-
Der Offset in Bytes in den
destination
, ab dem das Kopieren beginnen soll. size
-
Die Anzahl der Bytes, die kopiert werden sollen.
Rückgabewert
Keiner (Undefined
).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn copyBufferToBuffer()
aufgerufen wird. Andernfalls wird ein GPUValidationError
generiert und der GPUCommandEncoder
wird ungültig:
- Das
GPUBuffer.usage
vonsource
enthält dasGPUBufferUsage.COPY_SRC
-Flag. - Das
GPUBuffer.usage
vondestination
enthält dasGPUBufferUsage.COPY_DST
-Flag. size
,sourceOffset
unddestinationOffset
sind alle Vielfache von 4.- Die
GPUBuffer.size
dessource
ist größer oder gleichsourceOffset
+size
. - Die
GPUBuffer.size
desdestination
ist größer oder gleichdestinationOffset
+size
. source
unddestination
sind verschiedeneGPUBuffer
(Sie können nicht von und zu demselben Puffer kopieren).
Beispiele
In unserem Basis-Compute-Demo verwenden wir copyBufferToBuffer()
, um den Inhalt unseres output
-Buffers in den stagingBuffer
zu kopieren.
// …
// Create an output buffer to read GPU calculations to, and a staging buffer to be mapped for JavaScript access
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
// …
// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();
// …
// Copy output buffer to staging buffer
commandEncoder.copyBufferToBuffer(
output,
0, // Source offset
stagingBuffer,
0, // Destination offset
BUFFER_SIZE,
);
// …
Spezifikationen
Specification |
---|
WebGPU # dom-gpucommandencoder-copybuffertobuffer |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API