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 w 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 użytkowników – 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ć załączniki oszczędzające pamięć, 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ć teksturę przejściową.
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 149–150
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 buforów 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
- Tint IR ukończony
- 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, gdy używany jest widok tekstury
- WGSL textureSampleLevel obsługuje tekstury 1D
- Wycofywanie 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 architektury dotyczący najnowszych GPU
- Wycofywanie 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
- Poprawa czasu kompilacji cieniowania w D3D12
- Zapisywanie i kopiowanie obrazów z elementu canvas
- Usuwanie ograniczeń trybu zgodności
- Aktualizacje Dawn
Chrome 135
- Zezwalaj na tworzenie układu potoku z układem grupy powiązań null
- Zezwalaj 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
- Zezwalaj 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
- Wycofywanie 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 próbnika filtrowania dotyczące tekstur
- Rozszerzone eksperymenty 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ć odchylenia 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ł
- Poprawa czasu kompilacji cieniowania w Metal
- Wycofywanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofywanie ustawiania odchylenia 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ększanie limitu maxTextureArrayLayers
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Poprawa czasu 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
- Składnia cukru 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ększanie 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 obliczeniach i przekazywaniu 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 czyszczenia wiosennego
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 utracone
- 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() - Utrzymywanie płynnego odtwarzania 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 przy zasilaniu prądem zmiennym
- Ulepszanie środowiska programisty
- Aktualizacje Dawn
Chrome 114
- Optymalizowanie JavaScriptu
- getCurrentTexture() w niekonfigurowanym elemencie canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn