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.
Возвращаемое значение
Проверка
При вызове 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