Co dalej z WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

Data publikacji: 21 listopada 2024 r.

Specyfikacja WebGPU jest stale rozwijana. Co tydzień spotykają się przedstawiciele takich firm jak Google, Mozilla, Apple, Intel i Microsoft, aby omawiać jej rozwój. Najnowsze spotkanie grupy roboczej dotyczącej GPU dla sieci omawiało główne cele i funkcje zaplanowane na następną iterację WebGPU. W tym poście na blogu omawiamy najważniejsze wnioski z tego spotkania.

Osiągnięcie stanu rekomendacji kandydata

Głównym celem spotkania było omówienie postępów w realizacji etapu 0 oraz ostateczne rozwiązanie problemów, które muszą zostać rozwiązane, zanim etap ten uzyska status rekomendacji kandydata w W3C. Jest to kolejny krok w procesie standaryzacji, który zapewnia większą stabilność i ochronę własności intelektualnej.

Uczestnicy spotkania byli zgodni, że nie ma żadnych blokujących problemów i że te kwestie można rozwiązać w stosunku do zalecenia W3C dotyczącego WebGPU.

Priorytetyzacja nowych funkcji

Uczestnicy spotkania również wskazali priorytetowe funkcje. Zaczęli od listy funkcji, które chcieliby wprowadzić, sporządzonej na podstawie opinii programistów, implementatorów i interesariuszy.

Tablica z ręcznie napisaną listą terminów związanych z interfejsami API grafiki komputerowej, w tym „Bindless”, „Subgroups”, „MDI”, „Push Constants”, „UMA”, „Subgroup Matrix” i inne.

Po dyskusji zidentyfikowaliśmy te najważniejsze funkcje WebGPU dotyczące AI:

  • Macierze podgrup i podgrup podrzędnych: aplikacja może używać szybkiej komunikacji lokalnej między wątkami GPU i korzystać z hardware'owego mnożenia macierzy o stałym rozmiarze obok rdzeni shadera. Zobacz propozycję dotyczącą podgrup.

  • Bufory teł: zapewniają wydajniejszy sposób przechowywania małych typów danych, takich jak wartości 16- lub 8-bitowe, oraz dostęp do nich w przenośliwy sposób. Jest to ważne w przypadku niektórych algorytmów przetwarzania obrazu opartych na systemach uczących się. Zobacz slajdy dotyczące bufora pikselowego.

  • Mapowanie bufora UMA: zwiększa wydajność przesyłania danych przez ograniczenie lub wyeliminowanie kopiowania i nadmiarowego obciążenia synchronizacją. Zobacz problem ze specyfikacją 2388.

Pod uwagę brane są też inne funkcje WebGPU, które mogą być priorytetowe, ponieważ umożliwiają tworzenie nowych rodzajów algorytmów renderowania:

  • Bindless: ta długo wyczekiwana propozycja funkcji jest warunkiem wstępnym dla większości najnowocześniejszych algorytmów renderowania, ponieważ potrzebują one informacji o całej scenie. Dzięki bindless shadery mogą używać nieograniczonej liczby zasobów, w tym tekstur, w porównaniu z obecnie stosowanymi stosunkowo ścisłymi limitami.

  • Wielokrotne rysowanie pośrednie: pozwala na tworzenie przez GPU wielu rysowań zamiast tylko jednego z poprzednich obliczeń (drawIndirect). Jest to ważna funkcja w przypadku renderowania z wykorzystaniem GPU, np. w przypadku odrzucania obiektów przez GPU. Zobacz prośbę pull 2315.

  • 64-bitowe operacje atomowe: w buforach lub teksturach są niezbędne do wykonania „rasteryzacji programowej” na procesorze graficznym, poprzez połączenie testu głębi i zapisu 32-bitowego ładunku w ramach pojedynczej operacji atomicMax. Zobacz problem 4329.

Aby zwiększyć możliwości WebGPU i jego integrację z szerszą platformą internetową, omówiliśmy te funkcje WebGPU:

  • Tryb zgodności: ten tryb ma na celu umożliwienie działania WebGPU na większej liczbie urządzeń, w tym na tych, które obsługują tylko OpenGL ES 3.1. Zapoznaj się z propozycją trybu zgodności.

  • WebXR umożliwia dotychczasowemu modułowi WebXR Layers nawiązywanie interfejsu z WebGPU poprzez udostępnianie łańcuchów wymiany WebGPU dla każdego typu warstwy. Zobacz prezentację na temat integracji WebGPU/WebXR.

  • Canvas2D: zapewnia lepszą współpracę między Canvas2D a WebGPU, rozwiązując problemy związane z wydajnością i ergonomiką. Ta propozycja przeniesienia WebGPU umożliwiłaby dostęp do rysowania tekstu i ścieżek w WebGPU oraz stosowanie renderowania WebGPU do Canvas 2D.

W ramach spotkania odbyły się też prezentacje i dyskusje dotyczące usprawniania narzędzi i bibliotek WGSL. Jedną z ciekawych inicjatyw jest opracowanie WESL (rozszerzony język cieniowania WGSL), który ma na celu udostępnienie zestawu rozszerzeń WGSL opracowanych przez społeczność.

Więcej informacji znajdziesz w notatkach z nieprzetworzonych spotkań.

Pomysły

Podczas tego spotkania podkreślono, jak ważna jest współpraca grupy roboczej WebGPU, deweloperów i szerszej społeczności zajmującej się grafiką w kształtowaniu przyszłości WebGPU. Grupa robocza aktywnie zbiera opinie na temat proponowanych funkcji i współpracuje z deweloperami, aby zapewnić im dostęp do WebGPU.

Kolejne wersje WebGPU zapowiadają się jako znaczący krok naprzód, który otworzy nowe możliwości dla grafiki internetowej i umożliwi deweloperom tworzenie jeszcze bardziej wciągających i angażujących treści internetowych dla AI.