Opublikowano: 23 kwietnia 2025 r.
Atrybut GPUAdapterInfo isFallbackAdapter
Atrybut logiczny GPUAdapterInfo isFallbackAdapter wskazuje, czy GPUAdapter ma znaczne ograniczenia wydajności w zamian za szerszą zgodność, bardziej przewidywalne działanie lub większą prywatność. To uzupełnienie było konieczne, ponieważ biblioteki, które przyjmują obiekty GPUDevice dostarczone przez użytkownika, nie mogły uzyskać dostępu do tych informacji za pomocą atrybutu adapterInfo w GPUDevice. Zapoznaj się z tym przykładem i problemem 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.
}
Ponieważ Chrome nie obsługuje jeszcze adapterów rezerwowych, atrybut isFallbackAdapter jest obecnie zawsze ustawiony na false na urządzeniach użytkowników. Sprawdzamy, czy atrybut GPUAdapter isFallbackAdapter można wycofać i usunąć. Zobacz zamiar wprowadzenia.
Usprawnienia czasu kompilacji shadera w D3D12
Zespół Chrome stale ulepsza Tint, kompilator języka shadera WebGPU, dodając reprezentację pośrednią (IR) dla urządzeń, które obsługują WebGPU z backendem D3D12. Ta reprezentacja pośrednia, umieszczona między abstrakcyjnym drzewem składni (AST) Tint a modułem zapisującym backend HLSL, zwiększy wydajność i łatwość utrzymania kompilatora, co ostatecznie przyniesie korzyści zarówno deweloperom, jak i użytkownikom. Wstępne testy pokazują, że nowa wersja Tint jest nawet 10 razy szybsza podczas tłumaczenia shaderów WGSL Unity na HLSL.
Te ulepszenia, które są już dostępne na Androidzie, ChromeOS i macOS, są stopniowo wprowadzane na urządzeniach z systemem Windows obsługujących WebGPU z backendem D3D12. Zobacz problem 42251045.
Zapisywanie i kopiowanie obrazów z elementu canvas
Użytkownicy Chrome mogą teraz kliknąć prawym przyciskiem myszy element canvas WebGPU i uzyskać dostęp do opcji menu kontekstowego Zapisz obraz jako… lub Kopiuj obraz. Zobacz problem 40902474.
Zniesienie ograniczeń trybu zgodności
Eksperymentalna funkcja "core-features-and-limits" (jeśli jest dostępna w 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, wynikowy adapter będzie „compatibility-defaulting”. W przeciwnym razie będzie to "core-defaulting", czyli to samo co użycie opcji featureLevel: "core". Ponadto wywołanie requestDevice() bez requiredFeatures i requiredLimits powoduje żądanie GPUDevice z domyślnymi możliwościami GPUAdapter.
Adaptery „core-defaulting” zawsze obsługują funkcję "core-features-and-limits", która jest automatycznie włączana w GPUDevices utworzonych na ich podstawie. W przypadku adapterów „compatibility-defaulting” funkcja "core-features-and-limits" może być obsługiwana i można jej zażądać w GPUDevices utworzonych na ich podstawie. Oba typy adapterów mogą też obsługiwać funkcje takie jak "float32-blendable", która jest opcjonalna zarówno w trybie podstawowym, jak i w trybie zgodności.
Poniższy przykład dotyczy aplikacji, która wymaga "float32-blendable" i obsługuje korzystanie z funkcji podstawowych, jeśli są dostępne, ale jeśli nie są dostępne, używa tylko 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 Dawn
Wyliczenie stanu wywołania zwrotnego InstanceDropped zostało zmienione na CallbackCancelled, aby wyjaśnić, że wywołanie zwrotne zostało anulowane, ale przetwarzanie w tle związane ze zdarzeniem, np. kompilacja potoku, może nadal trwać. Nowa nazwa jest bardziej ogólna, 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ąć stosu zakresu błędów, zostało zmienione na wgpu::PopErrorScopeStatus::Error (które jest też bardziej ogólne). Wywołanie zwrotne zawiera teraz też odpowiedni komunikat z wyjaśnieniem błędu, który ułatwia debugowanie. Zobacz problem 369.
To tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą zatwierdzeń.
Co nowego w WebGPU
Lista wszystkich informacji, które zostały omówione w serii Co nowego w WebGPU.
Chrome 147–148
Chrome 146
- Obsługa trybu zgodności WebGPU w OpenGL ES 3.1
- Przejściowe załączniki
- Rozszerzenie WGSL texture_and_sampler_let
- Aktualizacje Dawn
Chrome 145
- Rozszerzenie WGSL subgroup_uniformity
- Eksperymentalne synchroniczne mapowanie bufora w procesach roboczych
- Aktualizacje Dawn
Chrome 144
- Rozszerzenie WGSL subgroup_id
- Rozszerzenie WGSL uniform_buffer_standard_layout
- WebGPU w systemie Linux
- Szybsze writeBuffer i writeTexture
- Aktualizacje Dawn
Chrome 143
- Przełączanie komponentów tekstury
- Usuwanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Aktualizacje Dawn
Chrome 142
Chrome 141
- Ukończono reprezentację pośrednią Tint
- Analiza zakresu liczb całkowitych w kompilatorze WGSL
- Aktualizacja SPIR-V 1.4 dla backendu Vulkan
- Aktualizacje Dawn
Chrome 140
- Żądania urządzeń zużywają adapter
- Skrót do używania tekstury w miejscu, w którym używany jest widok tekstury
- WGSL textureSampleLevel obsługuje tekstury 1D
- Wycofanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Usuwanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje Dawn
Chrome 139
- Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC
- Nowa funkcja „core-features-and-limits”
- Wersja próbna origin dla trybu zgodności WebGPU
- Aktualizacje Dawn
Chrome 138
- Skrót do używania bufora jako zasobu powiązania
- Zmiany wymagań dotyczących rozmiaru w przypadku buforów mapowanych podczas tworzenia
- Raport o architekturze najnowszych GPU
- Wycofanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje Dawn
Chrome 137
- Używanie widoku tekstury do powiązania externalTexture
- Kopiowanie buforów bez określania przesunięć i rozmiaru
- WGSL workgroupUniformLoad używa wskaźnika do atomowego
- Atrybut GPUAdapterInfo powerPreference
- Usuwanie atrybutu GPURequestAdapterOptions compatibilityMode
- Aktualizacje Dawn
Chrome 136
- Atrybut GPUAdapterInfo isFallbackAdapter
- Usprawnienia czasu kompilacji shadera w D3D12
- Zapisywanie i kopiowanie obrazów z elementu canvas
- Zniesienie ograniczeń trybu zgodności
- Aktualizacje Dawn
Chrome 135
- Zezwalanie na tworzenie układu potoku z układem grupy powiązań null
- Zezwalanie na rozszerzanie okien widoku poza granice docelowych renderów
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje Dawn
Chrome 134
- Usprawnianie zadań systemów uczących się za pomocą podgrup
- Usuwanie obsługi typów tekstur z filtrem zmiennoprzecinkowym jako mieszanych
- Aktualizacje Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-komponentowe
- Zezwalanie na żądanie nieznanych limitów z niezdefiniowaną wartością
- Zmiany reguł wyrównywania WGSL
- Zwiększenie wydajności WGSL dzięki discard
- Używanie displaySize VideoFrame w przypadku tekstur zewnętrznych
- Obsługa obrazów o orientacji innej niż domyślna za pomocą copyExternalImageToTexture
- Usprawnianie środowiska deweloperskiego
- Włączanie trybu zgodności za pomocą featureLevel
- Czyszczenie eksperymentalnych funkcji podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje Dawn
Chrome 132
- Użycie widoku tekstury
- Mieszanie tekstur zmiennoprzecinkowych 32-bitowych
- Atrybut GPUDevice adapterInfo
- Konfigurowanie kontekstu elementu canvas z nieprawidłowym formatem powoduje błąd JavaScriptu
- Ograniczenia dotyczące próbnika filtrowania w przypadku tekstur
- Rozszerzone eksperymenty z podgrupami
- Usprawnianie środowiska deweloperskiego
- Eksperymentalna obsługa 16-bitowych znormalizowanych formatów tekstur
- Aktualizacje Dawn
Chrome 131
- Odległości przycinania w WGSL
- GPUCanvasContext getConfiguration()
- Prymitywy punktowe i liniowe nie mogą mieć odchylenia głębokości
- Wbudowane funkcje skanowania włącznie dla podgrup
- Eksperymentalna obsługa rysowania pośredniego
- Opcja kompilacji modułu shadera strict math
- Usuwanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 130
- Mieszanie z 2 źródeł
- Usprawnienia czasu kompilacji shadera w Metal
- Wycofanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie ustawiania odchylenia głębokości dla linii i punktów
- Ukrywanie ostrzeżenia Narzędzi deweloperskich o nieprzechwyconym błędzie, jeśli preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut GPUAdapter info
- Usprawnienia interoperacyjności WebAssembly
- Ulepszone błędy kodera poleceń
- Aktualizacje Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora w przypadku backendu Vulkan
- Usprawnienia czasu kompilacji shadera
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje Dawn
Chrome 125
Chrome 124
- Tekstury pamięci tylko do odczytu i do odczytu i zapisu
- Obsługa service workerów i shared workerów
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Cukier syntaktyczny do dereferencji kompozytów w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębokości
- Aktualizacje Dawn
Chrome 122
- Poszerzanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększenie limitu maxVertexAttributes
- Aktualizacje Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilacji shadera w systemie Windows
- Zapytania o sygnaturę czasową w obliczeniach i renderowaniu
- Domyślne punkty wejścia do modułów shadera
- Obsługa display-p3 jako przestrzeni kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Aktualizacje Dawn
Chrome 120
- Obsługa 16-bitowej reprezentacji zmiennoprzecinkowej w WGSL
- Przekraczanie limitów
- Zmiany stanu głębokości i szablonu
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań o sygnaturę czasową
- Funkcje czyszczenia
Chrome 119
- Tekstury zmiennoprzecinkowe 32-bitowe z filtrem
- Format wierzchołków unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture() - Eksperymentalna obsługa tekstury pamięci do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje Dawn
Chrome 117
- Usuwanie bufora wierzchołków
- Usuwanie grupy powiązań
- Wyciszanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie jest niedostępne
- Aktualizacje tworzenia modułu shadera SPIR-V
- Usprawnianie środowiska deweloperskiego
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje Dawn
Chrome 116
- Integracja WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice() - Utrzymywanie płynnego odtwarzania wideo, jeśli wywoływana jest funkcja
importExternalTexture() - Zgodność ze specyfikacją
- Usprawnianie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne pobieranie dyskretnego GPU przy zasilaniu prądem zmiennym
- Usprawnianie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() w niekonfigurowanym elemencie canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn