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 codiert einen Befehl, der Daten von einem GPUBuffer
zu einem anderen kopiert.
Syntax
copyBufferToBuffer(source, sourceOffset, destination, destinationOffset, size)
Parameter
source
-
Der
GPUBuffer
, von dem kopiert wird. sourceOffset
-
Der Versatz in Bytes im
source
, ab dem begonnen wird zu kopieren. destination
-
Der
GPUBuffer
, zu dem kopiert wird. destinationOffset
-
Der Versatz in Bytes im
destination
, ab dem begonnen wird zu kopieren. size
-
Die Anzahl der zu kopierenden Bytes.
Rückgabewert
Keiner (Undefined
).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn copyBufferToBuffer()
aufgerufen wird, andernfalls wird ein GPUValidationError
erzeugt und der GPUCommandEncoder
wird ungültig:
- Die
GPUBuffer.usage
dessource
enthält dasGPUBufferUsage.COPY_SRC
Flag. - Die
GPUBuffer.usage
desdestination
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 unterschiedlicheGPUBuffer
(es ist nicht möglich, aus demselben Puffer zu kopieren und gleichzeitig in ihn zu kopieren).
Beispiele
In unserem Basic Compute Demo verwenden wir copyBufferToBuffer()
, um den Inhalt unseres output
Puffers 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
BCD tables only load in the browser
Siehe auch
- Die WebGPU API