GPUDevice: метод createComputePipeline()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.
Экспериментальная: Это экспериментальная технология.
Тщательно проверьте таблицу совместимости с браузерами перед использованием в продакшене.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод createComputePipeline() интерфейса GPUDevice создаёт GPUComputePipeline, который может управлять стадией шейдера вычислений и использоваться в GPUComputePassEncoder.
Синтаксис
createComputePipeline(descriptor)
Параметры
descriptor-
Объект, содержащий следующие свойства:
compute-
Объект, описывающий точку входа шейдера вычислений в конвейере. Этот объект может содержать следующие свойства:
constantsНеобязательно-
Последовательность типов записей со структурой
(id, value), представляющая значения переопределения для постоянных WGSL, которые можно переопределить в конвейере. Они ведут себя как упорядоченные карты. В каждом случаеidявляется ключом, используемым для идентификации или выбора записи, аconstant— перечисленным значением, представляющим WGSL.В зависимости от того, какое постоянное значение вы хотите переопределить,
idможет представлять собой числовой идентификатор постоянного значения, если он указан, или в противном случае — идентификатор имени постоянного значения.Пример кода, предоставляющий значения переопределения для нескольких переопределяемых постоянных значений, может выглядеть следующим образом:
{ // ... constants: { 0: false, 1200: 3.0, 1300: 2.0, width: 20, depth: -1, height: 15, } } entryPointНеобязательно-
Имя функции в
module, которую эта стадия будет использовать для выполнения своей работы. Соответствующая функция шейдера должна иметь атрибут@compute, чтобы быть идентифицированной как эта точка входа. Дополнительную информацию см. в Объявлении точки входа.Вы можете опустить свойство
entryPoint, если ваш код шейдера содержит единственную функцию с установленным атрибутом@compute— браузер будет использовать её в качестве точки входа по умолчанию. ЕслиentryPointопущено и браузер не может определить точку входа по умолчанию, генерируетсяGPUValidationError, а полученныйGPUComputePipelineбудет недействительным. module-
Объект
GPUShaderModule, содержащий код WGSL, который будет выполняться этой программируемой стадией.
labelНеобязательно-
Строка, предоставляющая метку, которая может использоваться для идентификации объекта, например, в сообщениях
GPUErrorили предупреждениях консоли. layout-
Определяет макет (структуру, назначение и тип) всех ресурсов GPU (буферы, текстуры и т. д.), используемых во время выполнения конвейера. Возможные значения:
- Объект
GPUPipelineLayout, созданный с помощьюGPUDevice.createPipelineLayout(), который позволяет GPU определить наиболее эффективный способ запуска конвейера заранее. - Строка
"auto", которая заставляет конвейер генерировать неявный макет группы связей на основе любых связей, определённых в коде шейдера. Если используется"auto", сгенерированные макеты групп связей могут быть использованы только с текущим конвейером.
- Объект
Возвращаемое значение
Экземпляр объекта GPUComputePipeline.
Валидация
При вызове createComputePipeline() должны быть выполнены следующие условия, в противном случае генерируется GPUValidationError, и возвращается недействительный объект GPUComputePipeline:
- Размер хранилища рабочей группы, используемый
module, который указан в свойствеcompute, меньше или равен пределуmaxComputeWorkgroupStorageSizeпредела устройстваGPUDevice. moduleиспользует меньше или равное количеству вызовов вычислений на рабочую группу, чем пределmaxComputeInvocationsPerWorkgroupпредела устройстваGPUDevice.- Размер рабочей группы
moduleменьше или равен соответствующему пределуmaxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY, илиmaxComputeWorkgroupSizeZпредела устройстваGPUDevice. - Если свойство
entryPointопущено, код шейдера содержит единственную функцию точки входа шейдера вычислений, которую браузер может использовать в качестве точки входа по умолчанию.
Примеры
Примечание: В примерах WebGPU представлено множество дополнительных примеров.
Базовый пример
Наш базовый пример вычислений демонстрирует процесс:
- Создание макета группы связей с помощью
GPUDevice.createBindGroupLayout(). - Использование
bindGroupLayoutвGPUDevice.createPipelineLayout()для созданияGPUPipelineLayout. - Непосредственное использование этого значения в вызове
createComputePipeline()для созданияGPUComputePipeline.
// ...
const bindGroupLayout = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
buffer: {
type: "storage",
},
},
],
});
const computePipeline = device.createComputePipeline({
layout: device.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout],
}),
compute: {
module: shaderModule,
entryPoint: "main",
},
});
// ...
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpudevice-createcomputepipeline |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createComputePipeline |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 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. |
См. также
© 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/createComputePipeline