GPUComputePassEncoder
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальная: Это экспериментальная технология.
Перед использованием в производстве тщательно изучите таблицу совместимости браузеров таблица совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс GPUComputePassEncoder API WebGPU кодирует команды, связанные с управлением этапом вычислений (compute shader), выпущенные GPUComputePipeline. Он является частью общей кодировочной активности GPUCommandEncoder.
Вычислительная схема содержит один вычислительный этап, на котором вычислительный шейдер принимает общие данные, обрабатывает их параллельно по указанному количеству рабочих групп, а затем возвращает результат в один или несколько буферов.
Экземпляр объекта GPUComputePassEncoder создаётся с помощью свойства GPUCommandEncoder.beginComputePass().
Свойства экземпляра
Методы экземпляра
-
dispatchWorkgroups()Экспериментально -
Отправляет конкретную сетку рабочих групп для выполнения работы, выполняемой текущим
GPUComputePipeline. -
dispatchWorkgroupsIndirect()Экспериментально -
Отправляет сетку рабочих групп, определённую параметрами
GPUBuffer, для выполнения работы, выполняемой текущимGPUComputePipeline. -
end()Экспериментально -
Завершает запись текущей последовательности команд вычислительного прохода.
-
insertDebugMarker()Экспериментально -
Помечает определённую точку в ряду закодированных команд меткой.
-
popDebugGroup()Экспериментально -
Завершает группу отладки, которая начинается вызовом
pushDebugGroup(). -
pushDebugGroup()Экспериментально -
Начинает группу отладки, которая помечена указанной меткой и будет содержать все последующие закодированные команды до вызова метода
popDebugGroup(). -
setBindGroup()Экспериментально -
Устанавливает
GPUBindGroupдля использования в последующих вычислительных командах для данного индекса. -
setPipeline()Экспериментально -
Устанавливает
GPUComputePipelineдля использования в этом вычислительном проходе.
Примеры
В нашем базовом примере вычислений несколько команд записываются через GPUCommandEncoder. Большинство из этих команд исходят от GPUComputePassEncoder, созданного с помощью GPUCommandEncoder.beginComputePass().
// ... // Create GPUCommandEncoder to encode commands to issue to the GPU const commandEncoder = device.createCommandEncoder(); // Create GPUComputePassEncoder to initiate compute pass const passEncoder = commandEncoder.beginComputePass(); // Issue commands passEncoder.setPipeline(computePipeline); passEncoder.setBindGroup(0, bindGroup); passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64)); // End the compute pass passEncoder.end(); // Copy output buffer to staging buffer commandEncoder.copyBufferToBuffer( output, 0, // Source offset stagingBuffer, 0, // Destination offset BUFFER_SIZE, ); // End frame by passing array of command buffers to command queue for execution device.queue.submit([commandEncoder.finish()]); // ...
Спецификации
| Спецификация |
|---|
| WebGPU # gpucomputepassencoder |
Совместимость браузеров
| Настольные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
GPUComputePassEncoder |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
dispatchWorkgroups |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
dispatchWorkgroupsIndirect |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
end |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
insertDebugMarker |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
label |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
popDebugGroup |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
pushDebugGroup |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
setBindGroup |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
setPipeline |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | No | 81 | No | 25.0 | 121 |
writeTimestamp |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
No | 121 | No | 81 | No | 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/GPUComputePassEncoder