Spec-Zone.ru › Web APIs

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.usage GPUBufferUsage.COPY_SRC.
  • destination включает флаг GPUBuffer.usage GPUBufferUsage.COPY_DST.
  • size, sourceOffset, и destinationOffset являются кратными 4.
  • source GPUBuffer.size больше или равно sourceOffset + size.
  • destination GPUBuffer.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

См. также

  • API WebGPU

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API