Nowości w WebGPU (Chrome 146)

François Beaufort
François Beaufort

Data publikacji: 25 lutego 2026 r.

Obsługa trybu zgodności WebGPU w OpenGL ES 3.1

WebGPU jest zgodny z nowoczesnymi interfejsami API grafiki, takimi jak Vulkan, Metal i D3D12, ale wielu użytkowników ma starsze urządzenia, które nie obsługują tych standardów. Aby zniwelować tę różnicę i zapewnić szeroką dostępność, Chrome wprowadza nową funkcję, którą można włączyć – tryb zgodności.

Ten tryb umożliwia uruchamianie WebGPU w starszych interfejsach API grafiki, takich jak OpenGL ES 3.1. Kierując reklamy na nieco ograniczony podzbiór specyfikacji WebGPU, możesz mieć 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ż możliwość obsługi 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 wartość featureLevel: "compatibility" podczas wywoływania funkcji requestAdapter(). Jeśli urządzenie obsługuje Core WebGPU, Chrome zwróci adapter obsługujący Core, ale aplikacja internetowa będzie wiedzieć, że musi zachować zgodność, chyba że włączy funkcję "core-features-and-limits" (lub wszystkie dostępne funkcje). Bardziej złożone aplikacje mogą wymagać niewielkich korekt, aby spełniać ograniczenia tego trybu.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

Szczegółowe informacje o ograniczeniach architektonicznych tego trybu znajdziesz w przewodniku po podstawach WebGPU. Dodatkowo wszystkie przykłady WebGPU obsługują teraz tryb zgodności. Możesz też przeczytać deklarację wysyłki.

Przyłącza przejściowe

Możesz użyć nowej flagi TRANSIENT_ATTACHMENT GPUTextureUsage, aby tworzyć załączniki oszczędzające pamięć. Dzięki temu operacje przekazywania renderowania pozostają w pamięci kafelków, co pozwala uniknąć ruchu VRAM i alokacji VRAM na potrzeby tekstur.

Deklarując teksturę jako przejściową (lub „bez pamięci”), procesor graficzny wie, że potrzebuje jej zawartości tylko tymczasowo, a konkretnie tylko w bieżącej fazie renderowania. Poza tym, ponieważ zawartość tekstury jest odrzucana po przejściu renderowania, sterownik może w ogóle nie musieć przydzielać dla niej pamięci VRAM.

Z przykładu poniżej dowiesz się, jak utworzyć teksturę tymczasową.

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 Hello Triangle MSAA – przykład WebGPUinformację o planowanym wdrożeniu.

Rozszerzenie WGSL texture_and_sampler_let

Rozszerzenie języka WGSL texture_and_sampler_let umożliwia przypisywanie zmiennych tekstury lub samplera do let w shaderze 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.

Zapoznaj się z tym przykładem i intencją wysyłki.

@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 o świcie

Dostępne są te nowe poziomy limitów:

  • maxStorageBuffersPerShaderStage obsługuje maksymalnie 16 znaków. Zobacz problem 366151398.

  • maxSampledTexturesPerShaderStage obsługuje maksymalnie 48 znaków. Zobacz problem 475255737.

Weryfikacja SPIR-V jest domyślnie włączona na Androidzie, aby zapewnić dodatkową warstwę zabezpieczeń i zapobiegać 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ą zatwierdzeń.

Nowości w WebGPU

Lista wszystkich tematów omówionych w serii Nowości w WebGPU.

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