GPUDevice: метод createComputePipelineAsync()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех наиболее распространённых браузерах.
Экспериментально: Это экспериментальная технология
Перед использованием в продакшене внимательно проверьте таблицу совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод createComputePipelineAsync() интерфейса GPUDevice возвращает Promise, который выполняется с GPUComputePipeline, управляющим стадией шейдера вычислений и используемым в GPUComputePassEncoder, как только этот pipeline готов к использованию без задержек.
Примечание: В идеале использовать этот метод вместо GPUDevice.createComputePipeline() всегда, когда это возможно, так как он предотвращает блокирование выполнения операций GPU во время компиляции pipeline.
Синтаксис
createComputePipeline(descriptor)
Параметры
descriptor-
См. определение дескриптора для метода
GPUDevice.createComputePipeline().
Возвращаемое значение
Promise, который выполняется с объектом GPUComputePipeline, когда созданный pipeline готов к использованию без задержек.
Проверка
Если создание pipeline терпит неудачу, а полученный pipeline становится недействительным, возвращаемое promise отклоняется с GPUPipelineError:
- Если это внутренняя ошибка, у
GPUPipelineErrorбудет свойствоreasonсо значением"internal". - Если это ошибка проверки, у
GPUPipelineErrorбудет свойствоreasonсо значением"validation".
Ошибка проверки может произойти, если хотя бы одно из следующих условий ложно:
- Размер хранилища workgroup, используемый
moduleвнутри свойстваcompute, меньше или равен пределуmaxComputeWorkgroupStorageSizeGPUDevice( предел). moduleиспользует число вызовов вычислений на workgroup, меньше или равное пределуmaxComputeInvocationsPerWorkgroupGPUDevice( предел).- Размер workgroup
moduleменьше или равен соответствующему пределуmaxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY, илиmaxComputeWorkgroupSizeZGPUDevice( предел). - Если свойство
entryPointопущено, код шейдера содержит единственную функцию входа compute шейдера, которую браузер использует в качестве точки входа по умолчанию.
Примеры
Примечание: В примерах WebGPU есть множество других примеров.
Базовый пример
В следующем примере показан процесс:
- Создание layout bind group с помощью
GPUDevice.createBindGroupLayout(). - Передача
bindGroupLayoutвGPUDevice.createPipelineLayout()для созданияGPUPipelineLayout. - Немедленное использование этого значения в вызове
createComputePipelineAsync()для созданияGPUComputePipeline.
async function init() {
// ...
const bindGroupLayout = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
buffer: {
type: "storage",
},
},
],
});
const computePipeline = await device.createComputePipelineAsync({
layout: device.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout],
}),
compute: {
module: shaderModule,
entryPoint: "main",
},
});
// ...
}
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpudevice-createcomputepipelineasync |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createComputePipelineAsync |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
optional_entryPoint |
121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 107В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 81В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Нет | 25.0В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
121В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
См. также
- 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/GPUDevice/createComputePipelineAsync