Data publikacji: 23 kwietnia 2025 r.
Atrybut isFallbackAdapter atrybutu GPUAdapterInfo
Atrybut logiczny GPUAdapterInfo isFallbackAdapter
wskazuje, czy GPUAdapter ma znaczne ograniczenia wydajności w zamian za szerszą kompatybilność, bardziej przewidywalne działanie lub lepszą prywatność. Ta zmiana była konieczna, ponieważ biblioteki, które przyjmują obiekty GPUDevice przekazane przez użytkownika, nie mogły uzyskać dostępu do tych informacji za pomocą atrybutu adapterInfo
w GPUDevice. Zobacz poniższy przykład i problem 403172841.
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
Chrome nie obsługuje jeszcze adapterów zapasowych, więc na urządzeniach użytkowników wartość isFallbackAdapter
jest obecnie zawsze fałszywa. Sprawdzamy, czy atrybut GPUAdapter isFallbackAdapter
można wycofać i usunąć. Chęć wysyłki
Ulepszenia czasu kompilacji shaderów w D3D12
Zespół Chrome stale ulepsza Tint, czyli kompilator języka shaderów WebGPU. Dodaje on pośrednią reprezentację (IR) dla urządzeń obsługujących WebGPU z backendem D3D12. Ten moduł pośredniczący, umieszczony między abstrakcyjnym drzewem składni (AST) Tinta a backendowym narzędziem do zapisywania HLSL, zwiększy wydajność i łatwość konserwacji kompilatora, co ostatecznie przyniesie korzyści zarówno deweloperom, jak i użytkownikom. Wstępne testy wskazują, że nowa wersja Tint jest nawet 10 razy szybsza podczas przekształcania shaderów WGSL w Unity w shadery HLSL.

Te ulepszenia, które są już dostępne na Androidzie, ChromeOS i macOS, są stopniowo udostępniane na urządzeniach z Windowsem, które obsługują WebGPU z backendem D3D12. Zobacz problem 42251045.
Zapisywanie i kopiowanie obrazów na płótnie
Użytkownicy Chrome mogą teraz kliknąć prawym przyciskiem myszy płótno WebGPU i wybrać opcje menu kontekstowego Zapisz obraz jako… lub Kopiuj obraz. Zobacz problem 40902474.

Zniesienie ograniczeń trybu zgodności
Eksperymentalna funkcja "core-features-and-limits"
, gdy jest dostępna na GPUDevice, znosi wszystkie ograniczenia trybu zgodności (funkcje i limity), gdy włączona jest flaga chrome://flags/#enable-unsafe-webgpu
. Zobacz problem 395855517.
Żądanie GPUAdapter z opcją featureLevel: "compatibility"
sugeruje przeglądarce wybranie eksperymentalnego trybu zgodności WebGPU. Jeśli operacja się powiedzie, adapter będzie miał domyślne ustawienie zgodności. W przeciwnym razie jest to „core-defaulting”, co jest równoznaczne z użyciem opcji featureLevel: "core"
. Co więcej, wywołanie requestDevice()
bez requiredFeatures
i requiredLimits
powoduje wysłanie żądania GPUDevice z domyślnymi możliwościami interfejsu GPUAdapter.
Adaptery z domyślnymi ustawieniami jądra zawsze obsługują funkcję "core-features-and-limits"
, która jest automatycznie włączana w urządzeniach GPU utworzonych na ich podstawie. W przypadku adapterów domyślnych pod kątem zgodności funkcja "core-features-and-limits"
może być obsługiwana i można ją poprosić na utworzonych na ich podstawie urządzeniach GPU. Oba typy adapterów mogą też obsługiwać funkcje takie jak "float32-blendable"
, które są opcjonalne w trybie podstawowym i kompatybilności.
Ten przykład dotyczy aplikacji, która wymaga "float32-blendable"
i obsługuje podstawowe funkcje (jeśli są dostępne), ale jeśli ich nie ma, korzysta tylko z funkcji zgodności.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
Eksperymentalne atrybuty GPUAdapter featureLevel
i isCompatibilityMode
zostały usunięte na rzecz funkcji "core-features-and-limits"
. Zobacz problem 395855516.
Aktualizacje świtu
Enumeracja InstanceDropped
stan wywołania zwrotnego została zmieniona na CallbackCancelled
, aby zaznaczyć, że wywołanie zwrotne zostało anulowane, ale przetwarzanie w tle związane ze zdarzeniem, takie jak kompilacja potoku, może być nadal uruchomione. Nowa nazwa ma bardziej ogólne zastosowanie, na wypadek gdyby później dodano inny mechanizm anulowania. Zobacz problem 520.
Wyliczenie wgpu::PopErrorScopeStatus::EmptyStack
, które wskazuje, że nie można było usunąć elementu z poziomu stosu zakresu błędu, zostało przemianowane na wgpu::PopErrorScopeStatus::Error
(które ma też szersze zastosowanie). W nawiązaniu do tego połączenia zostanie też wyświetlony odpowiedni komunikat z wyjaśnieniem błędu, który ułatwi debugowanie. Zobacz problem 369.
Obejmuje to tylko niektóre najważniejsze informacje. Zapoznaj się z pełną listą commitów.
Co nowego w WebGPU
Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.
Chrome 136
- Atrybut isFallbackAdapter elementu GPUAdapterInfo
- Skrócenie czasu kompilacji shaderów w D3D 12
- Zapisywanie i kopiowanie obrazów na płótnie
- Ograniczenia trybu zgodności Lift
- Aktualizacje dotyczące Dawn
Chrome 135
- Zezwalanie na tworzenie układu potoku z układem grupy wiązania null
- Zezwalanie na wyświetlanie widoku w obszarze wykraczającym poza granice docelowych elementów do renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 134
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usuwanie obsługi typów tekstur do filtrowania typu float jako blendowalnych
- Aktualizacje dotyczące Dawn
Chrome 133
- Dodatkowe formaty wierzchołka unorm8x4-bgra i 1-component
- Zezwalaj na wysyłanie żądań o nieznane limity z nieokreśloną wartością
- Zmiany reguł zgodności z WGSL
- Zwiększenie skuteczności WGSL dzięki odrzuceniu
- Używanie rozmiaru wyświetlania VideoFrame do tekstur zewnętrznych
- Praca z obrazami o orientacji innej niż domyślna za pomocą metody copyExternalImageToTexture
- Ułatwienie pracy programistom
- Włączanie trybu zgodności za pomocą atrybutu featureLevel
- Oczyszczanie eksperymentalnych funkcji podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 132
- Używanie widoku tekstury
- Mieszanie tekstur o typie liczby zmiennoprzecinkowej 32-bitowej
- Atrybut adapterInfo obiektu GPUDevice
- Konfigurowanie kontekstu kanwy z nieprawidłowym formatem powoduje błąd JavaScriptu
- Ograniczenia filtra samplera dotyczące tekstur
- Eksperymenty z podgrupami
- Ułatwienie pracy programistom
- Doświadczalna obsługa 16-bitowych normalizowanych formatów tekstur
- Aktualizacje dotyczące Dawn
Chrome 131
- Odcinki odległości w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Dodanie eksperymentalnej obsługi pośredniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisła matematyka
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 130
- Mieszanie dwóch źródeł
- Skrócenie czasu kompilacji shaderów na Metalu
- Wycofanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR z wykorzystaniem trybu mapowania tonalnego
- Rozszerzona obsługa podgrup
- Aktualizacje dotyczące Dawn
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie obsługi ustawiania głębi dla linii i punktów
- Ukrywanie ostrzeżenia DevTools o nieuwzględnionym błędzie, jeśli wywołano preventDefault
- WGSL interpoluje próbkowanie najpierw i potem
- Aktualizacje dotyczące Dawn
Chrome 127
- Doświadczalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora dla backendu Vulkana
- Ulepszenia dotyczące czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie tworzenia)
- Renderowanie na potrzeby sekcji tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników usług i pracowników wspólnych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Parametry wskaźnika bez ograniczeń w WGSL
- Składnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla stempli i głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększenie zasięgu dzięki trybowi zgodności (funkcja w trakcie tworzenia)
- Zwiększenie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania shaderów w systemie Windows
- Zapytania o sygnatury czasowe w przelotach obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shaderów
- Obsługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o stosie pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowane tekstury o typie liczby zmiennoprzecinkowej 32-bitowej
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Dodatkowa obsługa tekstury pamięci tylko do odczytu i z możliwością zapisu
- Aktualizacje dotyczące Dawn
Chrome 117
- Nieustawienie bufora wierzchołka
- Cofnij grupę wiązania
- Błędy w przypadku tworzenia asynchronicznego potoku, gdy urządzenie jest utracone
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Buforowanie ścieżek z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Wstępna obsługa Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie przy zasilaniu z sieci
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn