Spec-Zone.ru › Web APIs

GPUQueue: метод submit()

Ограниченная доступность

Эта функция не является базовой, так как она не работает во всех широко используемых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментальная: Это экспериментальная технология
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод submit() интерфейса GPUQueue планирует выполнение буферов команд, представленных одним или несколькими объектами GPUCommandBuffer, графическим процессором.

Синтаксис

submit(commandBuffers)

Параметры

commandBuffers

Массив объектов GPUCommandBuffer, содержащих команды, которые должны быть добавлены в очередь для обработки графическим процессором. Массив не должен содержать дублирующих объектов GPUCommandBuffer — каждый из них может быть передан только один раз в вызове submit().

Возвращаемое значение

None (Undefined).

Валидация

При вызове submit() должны быть соблюдены следующие критерии; в противном случае генерируется GPUValidationError, и GPUQueue становится недопустимым:

  • Массив объектов GPUCommandBuffer, используемых в вызове submit(), не должен содержать дубликатов.
  • Любые объекты GPUBuffer, GPUTexture и GPUQuerySet, используемые в закодированных командах, должны быть доступны для использования, т.е. не недоступны (GPUBuffer недоступны, если они в данный момент отображены) или уничтожены (с помощью метода destroy()).
  • Любые объекты GPUExternalTexture, используемые в закодированных командах, не должны быть истекшими (они истекают автоматически вскоре после импорта через importExternalTexture()).
  • Если объект GPUQuerySet, используемый в закодированной команде, является объектом запроса типа "occlusion", он не должен быть уже использован, за исключением использования в GPURenderPassEncoder.beginOcclusionQuery().

Примеры

В нашем примере базового рендеринга несколько команд записываются с помощью GPUCommandEncoder:

// ...

// Create GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();

// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass

const renderPassDescriptor = {
  colorAttachments: [
    {
      clearValue: clearColor,
      loadOp: "clear",
      storeOp: "store",
      view: context.getCurrentTexture().createView(),
    },
  ],
};

const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Draw a triangle

passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

// End the render pass

passEncoder.end();

// ...

Команды, закодированные с помощью GPUCommandEncoder, преобразуются в GPUCommandBuffer с помощью метода GPUCommandEncoder.finish(). Затем буфер команд передаётся в очередь через вызов submit(), готовый к обработке графическим процессором.

device.queue.submit([commandEncoder.finish()]);

Примечание: Изучите примеры WebGPU для получения дополнительных примеров использования очереди.

Спецификации

Спецификация
WebGPU
# dom-gpuqueue-submit

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
submit
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
validates_command_buffer_uniqueness
126В настоящее время поддерживается только на ChromeOS, macOS и Windows.
126В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет
112В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет
126В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет
83В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет Нет
126В настоящее время поддерживается только на 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/GPUQueue/submit

Spec-Zone.ru

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