Nowości w WebGPU (Chrome 146)

François Beaufort
François Beaufort

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:

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

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

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