Spec-Zone.ru › Web APIs

GPUQueue: метод onSubmittedWorkDone()

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

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

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

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

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

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

Метод onSubmittedWorkDone() интерфейса GPUQueue возвращает Promise, который разрешается, когда вся работа, отправленная в графический процессор через этот GPUQueue в момент вызова метода, была обработана.

Это включает завершение любых вызовов mapAsync(), выполненных на GPUBuffers, используемых в командах, отправленных в очередь, до вызова onSubmittedWorkDone().

Примечание: В большинстве случаев вы не должны вызывать onSubmittedWorkDone(). Вам не нужно вызывать его для отображения буфера. mapAsync гарантирует, что работа, отправленная в очередь до вызова mapAsync, выполняется до того, как mapAsync возвращается (см. Спецификация WebGPU: раздел 5.2)

Два случая использования onSubmittedWorkDone

  1. Ожидание отображения нескольких буферов (медленно)

    // good
    await Promise.all([
      buffer1.mapAsync(),
      buffer2.mapAsync(),
      buffer3.mapAsync(),
    ]);
    data1 = buffer1.getMappedRange();
    data2 = buffer2.getMappedRange();
    data3 = buffer3.getMappedRange();
    
    // works but slow
    buffer1.mapAsync();
    buffer2.mapAsync();
    buffer3.mapAsync();
    await device.queue.onSubmittedWorkDone();
    data1 = buffer1.getMappedRange();
    data2 = buffer2.getMappedRange();
    data3 = buffer3.getMappedRange();
    

    Причина, по которой второй метод медленный, заключается в том, что реализация может отобразить буферы до завершения всей отправленной работы. Например, если все буферы закончили использоваться, но уже отправлена другая работа (не связанная с буферами), то при использовании второго метода вы будете ждать дольше, чем при использовании первого.

  2. Управление нагрузкой работы

    Если вы выполняете сложные вычисления и отправляете слишком много работы одновременно, браузер может остановить вашу работу. Вы можете управлять нагрузкой, отправляя новую работу только тогда, когда завершена отправленная ранее.

Синтаксис

device.queue.onSubmittedWorkDone()

Параметры

Нет.

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

Promise, который разрешается со значением Undefined.

Примеры

device.queue.submit([commandEncoder.finish()]);
device.queue.onSubmittedWorkDone().then(() => {
  console.log("All submitted commands processed.");
});

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

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

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
onSubmittedWorkDone
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
Нет
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
превью 121 Нет 81 Нет 25.0 121

См. также

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

Spec-Zone.ru

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