Spec-Zone.ru › Web APIs

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.

См. также

  • 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/createComputePipeline

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API