Opublikowano: 25 lutego 2026 r.
Obsługa trybu zgodności WebGPU w OpenGL ES 3.1
WebGPU jest zaprojektowany tak, aby był zgodny z nowoczesnymi interfejsami API grafiki, takimi jak Vulkan, Metal i D3D12, ale wielu użytkowników ma starszy sprzęt, który nie obsługuje tych standardów. Aby wypełnić tę lukę i zapewnić szeroką dostępność, Chrome wprowadza nową funkcję, którą można włączyć, czyli tryb zgodności.
Ten tryb umożliwia uruchamianie WebGPU na starszych interfejsach API grafiki, takich jak OpenGL ES 3.1. Dzięki kierowaniu na nieco ograniczony podzbiór specyfikacji WebGPU masz pewność, że Twoja aplikacja internetowa będzie dostępna dla wszystkich – od najnowszych komputerów do gier po starsze laptopy i urządzenia mobilne. Zespół zaczyna od Androida, ale bada też obsługę innych urządzeń, takich jak ChromeOS z OpenGL ES 3.1 i Windows z Direct3D 11.
W przypadku wielu aplikacji internetowych możesz włączyć tryb zgodności, przekazując featureLevel: "compatibility" podczas wywoływania requestAdapter(). Jeśli Twoje urządzenie obsługuje Core WebGPU, Chrome zwróci adapter obsługujący Core, ale Twoja aplikacja internetowa będzie wiedzieć, że ma pozostać w granicach zgodności, chyba że włączy funkcję "core-features-and-limits" (lub włączy wszystkie dostępne funkcje). Bardziej złożone aplikacje mogą wymagać drobnych zmian, aby pasowały do ograniczeń trybu.
// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();
Szczegółowe informacje o konkretnych ograniczeniach architektury tego trybu znajdziesz w przewodniku Podstawy WebGPU. Dodatkowo wszystkie przykłady WebGPU obsługują teraz tryb zgodności. Możesz też przeczytać zamiar wysłania.
Przejściowe załączniki
Aby tworzyć wydajne pod względem pamięci załączniki, możesz użyć nowej flagi GPUTextureUsage TRANSIENT_ATTACHMENT. Dzięki temu operacje przekazywania renderowania pozostają w pamięci kafelkowej, co pozwala uniknąć ruchu VRAM i alokacji VRAM na tekstury.
Deklarując teksturę jako przejściową (lub „bez pamięci”), GPU wie, że potrzebuje zawartości tekstury tylko tymczasowo – konkretnie tylko w ramach bieżącego przekazywania renderowania. Ponadto, ponieważ zawartość tekstury jest odrzucana po przekazaniu renderowania, sterownik może w ogóle nie potrzebować alokować dla niej VRAM.
Poniższy przykład pokazuje, jak utworzyć przejściową teksturę.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {
const transientTexture = device.createTexture({
size: [42, 42],
// The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
// potentially keeping it in fast on-chip memory.
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
format: 'rgba8unorm',
});
}
Zobacz przykład Hello Triangle MSAA – WebGPU i zamiar wysłania.
Rozszerzenie WGSL texture_and_sampler_let
Rozszerzenie języka WGSL texture_and_sampler_let umożliwia przypisywanie zmiennych tekstury lub próbnika do let w cieniowaniu WGSL. Ta funkcja zapewnia obecnie alternatywny mechanizm nazewnictwa i przygotowuje się do obsługi bez powiązań, w której metody zwracające tekstury lub próbniki mogą być przechowywane bezpośrednio w zmiennych lokalnych.
Zobacz ten przykład i zamiar wysłania.
@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;
@fragment fn main() {
let a = tex;
var res: vec4f = textureLoad(a, vec2i(1i), 0);
textureStore(store, vec2i(0i), res);
}
Aktualizacje Dawn
Dostępne są te nowe poziomy limitów:
maxStorageBuffersPerShaderStageobsługuje do 16. Zobacz problem 366151398.maxSampledTexturesPerShaderStageobsługuje do 48. Zobacz problem 475255737.
Walidacja SPIR-V jest domyślnie włączona na Androidzie, aby zapewnić dodatkową warstwę zabezpieczeń i zapobiec niestabilności sterownika spowodowanej nieprawidłowym wejściem. Zobacz problem 473526182.
Obejmuje to tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą commitów.
Co nowego w WebGPU
Lista wszystkich tematów omówionych 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
- Zakończono Tint IR
- 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ązanego
- Zmiany wymagań dotyczących rozmiaru w przypadku buforów mapowanych podczas tworzenia
- Raport architektury dotyczący 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
- Krótszy czas kompilacji cieniowania 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 docelowe renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje Dawn
Chrome 134
- Ulepszanie 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 odrzucaniu
- Używanie displaySize VideoFrame w przypadku tekstur zewnętrznych
- Obsługa obrazów z orientacją inną niż domyślna za pomocą copyExternalImageToTexture
- Ulepszanie środowiska programisty
- 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 JavaScript
- Ograniczenia próbnika filtrowania dotyczące tekstur
- Rozszerzone eksperymentowanie z podgrupami
- Ulepszanie środowiska programisty
- 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ć przesunięcia głębokości
- Wbudowane funkcje skanowania włącznie dla podgrup
- Eksperymentalna obsługa rysowania pośredniego
- Opcja kompilacji modułu cieniowania strict math
- Usuwanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 130
- Mieszanie z 2 źródeł
- Krótszy czas kompilacji cieniowania w Metal
- Wycofanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie ustawiania przesunięcia głębokości dla linii i punktów
- Ukrywanie ostrzeżenia o nieprzechwyconym błędzie w Narzędziach deweloperskich, jeśli preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut GPUAdapter info
- Ulepszenia interoperacyjności WebAssembly
- Ulepszone błędy kodera poleceń
- Aktualizacje Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora w backendzie Vulkan
- Krótszy czas kompilacji cieniowania
- 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 cieniowania w systemie Windows
- Zapytania o sygnaturę czasową w przekazywaniu obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- 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 wiosennego czyszczenia
Chrome 119
- Tekstury zmiennoprzecinkowe 32-bitowe z filtrowaniem
- 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 cieniowania SPIR-V
- Ulepszanie środowiska programisty
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje Dawn
Chrome 116
- Integracja WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice() - Płynne odtwarzanie wideo, jeśli wywoływana jest funkcja
importExternalTexture() - Zgodność ze specyfikacją
- Ulepszanie środowiska programisty
- Aktualizacje Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne uzyskiwanie dyskretnego GPU po podłączeniu do zasilania
- Ulepszanie środowiska programisty
- Aktualizacje Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() w niekonfigurowanym elemencie canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn