Spec-Zone.ru › Web APIs

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, меньше или равен пределу maxComputeWorkgroupStorageSize GPUDevice ( предел).
  • module использует число вызовов вычислений на workgroup, меньше или равное пределу maxComputeInvocationsPerWorkgroup GPUDevice ( предел).
  • Размер workgroup module меньше или равен соответствующему пределу maxComputeWorkgroupSizeX, maxComputeWorkgroupSizeY, или maxComputeWorkgroupSizeZ GPUDevice ( предел).
  • Если свойство 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

Spec-Zone.ru

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