Spec-Zone.ru › Web APIs

GPUBuffer: метод mapAsync()

Ограниченное использование

Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментальная функция: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно ознакомьтесь со таблицей совместимости с браузерами.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод mapAsync() интерфейса GPUBuffer отображает указанный диапазон GPUBuffer. Он возвращает Promise, который разрешается, когда содержимое GPUBuffer готово для доступа. Пока GPUBuffer отображено, его нельзя использовать в каких-либо командах GPU.

После успешного отображения буфера (что можно проверить с помощью GPUBuffer.mapState), вызовы GPUBuffer.getMappedRange() вернут ArrayBuffer, содержащий текущие значения GPUBuffer, которые можно читать и обновлять с помощью JavaScript по мере необходимости.

После завершения работы со значениями GPUBuffer, вызовите GPUBuffer.unmap(), чтобы снять отображение, сделав его снова доступным для GPU.

Синтаксис

mapAsync(mode)
mapAsync(mode, offset, size)

Параметры

mode

Флаг, определяющий, отображен ли GPUBuffer для чтения или записи. Возможные значения:

GPUMapMode.READ

GPUBuffer отображено для чтения. Значения могут быть прочитаны, но любые изменения, внесенные в ArrayBuffer, возвращаемый GPUBuffer.getMappedRange(), будут отброшены после вызова GPUBuffer.unmap().

Отображение в режиме чтения может использоваться только для GPUBuffer с установленным значением использования GPUBufferUsage.MAP_READ (например, при создании с помощью GPUDevice.createBuffer()).

GPUMapMode.WRITE

GPUBuffer отображено для записи. Значения могут быть прочитаны и обновлены — любые изменения, внесенные в ArrayBuffer, возвращаемый GPUBuffer.getMappedRange(), будут сохранены в GPUBuffer после вызова GPUBuffer.unmap().

Отображение в режиме записи может использоваться только для GPUBuffer с установленным значением использования GPUBufferUsage.MAP_WRITE (например, при создании с помощью GPUDevice.createBuffer()).

offset Необязательно

Число, представляющее смещение в байтах от начала буфера до начала отображаемого диапазона. Если offset опущено, оно по умолчанию равно 0.

size Необязательно

Число, представляющее размер в байтах отображаемого диапазона. Если size опущено, отображаемый диапазон простирается до конца GPUBuffer.

Возвращаемое значение

A Promise, который разрешается в Undefined, когда содержимое GPUBuffer готово для доступа.

Проверка

При вызове mapSync() должны быть соблюдены следующие условия, в противном случае будет выброшено исключение OperationError DOMException, обещание отклонится, и будет сгенерировано значение GPUValidationError:

  • offset должно быть кратно 8.
  • Общий отображаемый диапазон (size если указано, или GPUBuffer.size - offset если нет) должен быть кратен 4.
  • Общий отображаемый диапазон должен быть внутри границ GPUBuffer.
  • Если режим равен GPUMapMode.READ, у GPUBuffer должно быть значение использования GPUBufferUsage.MAP_READ.
  • Если режим равен GPUMapMode.WRITE, у GPUBuffer должно быть значение использования GPUBufferUsage.MAP_WRITE.

Примеры

См. главную страницу GPUBuffer для примера.

Спецификации

Спецификация
WebGPU
# dom-gpubuffer-mapasync

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari в IOS Samsung Internet WebView Android
mapAsync
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
превьюВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
превью 121 Нет 81 Нет 25.0 121

См. также

  • The WebGPU API

© 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/GPUBuffer/mapAsync

Spec-Zone.ru

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