GPUCommandEncoder: метод beginComputePass()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология.
Тщательно проверьте таблицу совместимости браузеров перед использованием в производстве.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод beginComputePass() интерфейса GPUCommandEncoder начинает кодирование вычислительного пасса, возвращая GPUComputePassEncoder, который может использоваться для управления вычислениями.
Синтаксис
beginComputePass() beginComputePass(descriptor)
Параметры
descriptorНеобязательно-
Объект, содержащий следующие свойства:
labelНеобязательно-
Строка, предоставляющая метку, которую можно использовать для идентификации объекта, например, в сообщениях об
GPUErrorили предупреждениях консоли. timestampWritesНеобязательно-
Массив объектов, определяющих, где и когда будут записаны значения запросов отметки времени для этого пасса. Эти объекты имеют следующие свойства:
-
location: Перечисление, указывающее, когда будет выполнена отметка времени. Доступные значения:-
"beginning": Отметка времени выполняется вместе с другими закодированными командами в вычислительном пассе после отправки соответствующегоGPUCommandBuffer. -
"end": Отметка времени выполняется как часть отдельного списка прикреплений отметки времени по завершении пасса.
-
-
queryIndex: Число, указывающее индексную позицию вquerySet, в которую будет записана отметка времени. -
querySet:GPUQuerySet, в который будет записана отметка времени.
Примечание: Для использования запросов отметки времени необходимо включить функцию
timestamp-query. -
Возвращаемое значение
Экземпляр объекта GPUComputePassEncoder.
Валидация
При вызове beginComputePass() должны быть выполнены следующие условия; в противном случае генерируется GPUValidationError, и возвращается недействительный GPUComputePassEncoder:
- Функция
timestamp-queryизGPUDeviceдолжна быть включена. - Ни у двух объектов
timestampWritesне должно быть одинакового значенияlocation.. Это означает, что вы можете запускать только две запросы отметки времени за один проход рендеринга. - Для каждого запроса отметки времени тип
GPUQuerySet.typequerySetдолжен быть"timestamp", а значениеqueryIndexдолжно быть меньше значенияGPUQuerySet.count.
Примеры
В нашем демонстрационном примере вычислений несколько команд регистрируются через GPUCommandEncoder. Большинство из этих команд происходят от GPUComputePassEncoder, созданного с помощью beginComputePass().
// ... // Create GPUCommandEncoder to encode commands to issue to the GPU const commandEncoder = device.createCommandEncoder(); // Initiate render pass const passEncoder = commandEncoder.beginComputePass(); // Issue commands passEncoder.setPipeline(computePipeline); passEncoder.setBindGroup(0, bindGroup); passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64)); // End the render 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 # dom-gpucommandencoder-begincomputepass |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
beginComputePass |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версия | 121 | Нет | 81 | Нет | 25.0 | 121 |
timestampWrites |
121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 107В настоящее время поддерживается только на 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/beginComputePass