Nowości w interfejsie WebGPU (Chrome 122)

François Beaufort
François Beaufort

Tym razem liczba funkcji korzystających z WebGPU może wydawać się nieco lekka, ale to już wszystko, co mamy na wyciągnięcie ręki. Następne wersje będą zawierać takie funkcje jak DP4a, tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu, osobne funkcje szablonów i kontroli głębi, renderowanie na wycinkach tekstur 3D oraz ulepszenia kompilacji narzędzia do cieniowania.

W międzyczasie dowiedz się, jak ulepszyć testowanie modeli internetowych AI za pomocą obsługi WebGPU i WebGPU w Chrome bez interfejsu graficznego oraz dowiedzieć się, dlaczego WebGPU może być wyłączony lub nie działa w Chrome.

Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w fazie opracowywania)

Interfejs WebGPU dobrze współpracuje z nowoczesnymi interfejsami API grafiki (Vulkan, Metal i D3D12), ale niektóre urządzenia ich nie obsługują. Ogranicza to dostępność interfejsu WebGPU, zwłaszcza na platformach takich jak Windows (31% użytkowników Chrome nie ma wersji D3D11.1 lub nowszej), Android (w 23% nie ma interfejsu Vulkan 1.1 lub nowszego) oraz ChromeOS (rosnąco korzysta z Vulkan).

Zespół Chrome pracuje nad trybem zgodności w WebGPU, aby rozwiązać ten problem i udostępnić nieco ograniczoną wersję WebGPU, która działa w starszych interfejsach API, takich jak D3D11 czy OpenGL ES. Zwiększy to liczbę potencjalnych użytkowników WebGPU.

Co ważne, aplikacje korzystające z trybu zgodności pozostają w pełni prawidłowymi aplikacjami WebGPU. Urządzenia bez obsługi trybu zgodności domyślnie będą korzystać z podstawowego adaptera WebGPU, co zapewnia szeroki zakres obsługi.

Schemat trybu zgodności z WebGPU.
Rozszerzony zasięg w trybie zgodności z WebGPU.

Jeśli masz pytania, zapoznaj się z propozycją i komentarzem.

Zwiększ limit maxVertexAttributes

Maksymalna łączna liczba atrybutów w buforach podczas tworzenia GPURenderPipeline to domyślnie 16. Teraz możesz zażądać maksymalnie 30 żądań, używając limitu maxVertexAttributes (jeśli są obsługiwane). Zobacz ten przykład i ten problem:2223.

const adapter = await navigator.gpu.requestAdapter();

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertext attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Powiadomienia o świcie

Dodaliśmy nowy przełącznik instancji o nazwie „expose_wgsl_experimental_features”, dzięki czemu instancja udostępnia tylko eksperymentalne funkcje WGSL, ale nie te niebezpieczne. Dzięki temu można używać bezpiecznych, eksperymentalnych funkcji WGSL bez konieczności włączania przełącznika „allow_unsafe_apis”. Zobacz świt problemu:2260.

Najnowsze ulepszenia powiązań Dawn dla Node.js to między innymi:

  • Do Twojego konta dodano GPUSupportedFeatures::getSize().
  • Nieaktualność GPUAdapter została zaimplementowana.
  • GPUInternalError jest teraz prawidłowo raportowany w przypadku urządzeń.
  • Atrybuty można teraz wyliczyć.

To tylko niektóre z najważniejszych kwestii. Zobacz pełną listę zatwierdzeń.

Co nowego w WebGPU

Lista wszystkich zagadnień omówionych w serii Co nowego w WebGPU.

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113