GPUCommandEncoder: метод copyBufferToBuffer()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная версия: Это экспериментальная технология
Перед использованием в рабочей среде тщательно изучите таблицу совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Метод copyBufferToBuffer() интерфейса GPUCommandEncoder кодирует команду, которая копирует данные из одного GPUBuffer в другой.
Синтаксис
copyBufferToBuffer(source, sourceOffset, destination, destinationOffset, size)
Параметры
source-
GPUBuffer, из которого производится копирование. sourceOffset-
Смещение в байтах внутри
source, с которого начинается копирование. destination-
GPUBuffer, в который производится копирование. destinationOffset-
Смещение в байтах внутри
destination, с которого начинается копирование. size-
Количество байтов для копирования.
Возвращаемое значение
None (Undefined).
Проверка
При вызове copyBufferToBuffer() должны быть выполнены следующие критерии, в противном случае генерируется GPUValidationError, и GPUCommandEncoder становится недопустимым:
sourceвключает флагGPUBuffer.usageGPUBufferUsage.COPY_SRC.destinationвключает флагGPUBuffer.usageGPUBufferUsage.COPY_DST.-
size,sourceOffset, иdestinationOffsetявляются кратными 4. sourceGPUBuffer.sizeбольше или равноsourceOffset+size.destinationGPUBuffer.sizeбольше или равноdestinationOffset+size.-
sourceиdestinationявляются различнымиGPUBuffer(копирование не может происходить из одного буфера в тот же буфер).
Примеры
В нашем демо вычислений мы используем copyBufferToBuffer() для копирования содержимого буфера output в буфер stagingBuffer.
// ...
// 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,
);
// ...
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpucommandencoder-copybuffertobuffer |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
copyBufferToBuffer |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версияВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версия | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUCommandEncoder/copyBufferToBuffer