Opublikowano: 24 września 2025 r.
Zakończenie prac nad Tint IR
Zakończyliśmy długotrwały projekt (ponad 2, 5 roku) mający na celu zwiększenie wydajności wewnętrznych elementów kompilatora WGSL Tint. Do backendu między bieżącym abstrakcyjnym drzewem składni (AST) a generatorami kodu backendu wstawiliśmy reprezentację pośrednią (IR). Wprowadzenie IR pozwoliło zespołowi Chrome usunąć wszystkie transformacje AST i utworzyć je ponownie jako transformacje IR, które ze względu na różnice w architekturze są znacznie szybsze. Wewnętrzne elementy Tint na niektórych platformach po wprowadzeniu tych zmian działają nawet 7 razy szybciej.
Nowa reprezentacja pośrednia otwiera znaczny potencjał w zakresie zaawansowanej analizy i transformacji shaderów na dużą skalę, co zapewnia nie tylko znaczny wzrost wydajności, ale też ułatwia Chrome wprowadzanie nowych funkcji WebGPU.
Od tego momentu wszystkie generatory kodu backendu działają na podstawie reprezentacji pośredniej, wszystkie transformacje AST zostały usunięte, a cały kod obsługi AST potrzebny do przeprowadzania transformacji został usunięty.
W ramach prac nad ulepszeniem reprezentacji pośredniej frontend SPIR-V (używany przez aplikacje do konwertowania SPIR-V na WGSL) został przekształcony z generowania reprezentacji AST na generowanie bezpośrednio do IR. To ulepszenie wprowadza też długo oczekiwane funkcje, takie jak obsługa float 16 w frontendzie SPIR-V.
Analiza zakresu liczb całkowitych w kompilatorze WGSL
Zespół Chrome stopniowo wprowadza nową analizę zakresu liczb całkowitych w Tint, kompilatorze języka shaderów WebGPU. Analiza zakresu liczb całkowitych szacuje minimalne i maksymalne wartości, jakie może przyjąć zmienna całkowita podczas wykonywania programu, bez jego uruchamiania.
Ta funkcja ma na celu zwiększenie wydajności przez zmniejszenie potrzeby kosztownego sprawdzania granic. Wkrótce będzie domyślnie włączona na wszystkich platformach. Zobacz problem 348701956.
Aktualizacja SPIR-V 1.4 dla backendu Vulkan
Obsługa SPIR-V 1.4 jest wdrażana tam, gdzie jest dostępna na urządzeniach z Androidem i ChromeOS. Ta aktualizacja umożliwia kompilatorowi WGSL Tint korzystanie z nowych funkcji, ułatwień i instrukcji SPIR-V, co pozwala na bardziej wydajne generowanie kodu w określonych scenariuszach podczas kompilowania shaderów Vulkan. Zobacz problem 427717267.
Aktualizacje Dawn
Ustandaryzowany webgpu.h nagłówek, który definiuje podstawowy interfejs API WebGPU C, jest teraz wreszcie uznawany za stabilny. Ta stabilność dotyczy konkretnie podstawowego interfejsu API zdefiniowanego w upstreamie, bez rozszerzeń implementacji (np. z Dawn lub Emdawnwebgpu), dlatego najlepiej jest używać pliku webgpu.h dostarczonego przez dokładną implementację, z którą się łączysz. Chociaż nagłówek jest stabilny, nadal możesz napotkać niezamierzone różnice między implementacjami, ponieważ wciąż naprawiamy błędy i rozwiązujemy problemy ze zgodnością w całym ekosystemie. Jeśli tak się stanie, zgłoś błąd.
Dzięki zewnętrznemu współtwórcy Williamowi Candillon możesz teraz znaleźć wstępnie skompilowane pliki binarne Dawn jako artefakty w GitHub Actions. Obejmują one statyczne pliki .lib na Androida, pakiet .XCFramework na Apple i wszystkie niezbędne pliki nagłówkowe. Zobacz Dawn PR #39 i przykład artefaktów.
To tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą commitów.
Nowości w WebGPU
Lista wszystkich funkcji omówionych w serii Nowości w WebGPU.
Chrome 149–150
Chrome 147–148
Chrome 146
- Obsługa trybu zgodności WebGPU w OpenGL ES 3.1
- Tymczasowe 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ńczenie prac nad 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, 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”
- Testowanie origin 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 procesorów graficznych
- 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
- Skrócenie czasu kompilacji shaderów 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
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usuwanie obsługi typów tekstur z filtrowaniem zmiennoprzecinkowym jako mieszanych
- Aktualizacje Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-komponentowe
- Zezwalanie na żądanie nieznanych limitów z wartością undefined
- 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
- Ulepszanie środowiska deweloperskiego
- 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 dotyczące próbek filtrowania w teksturach
- Rozszerzone eksperymenty z podgrupami
- Ulepszanie ś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ł
- Skrócenie czasu kompilacji shaderów 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 użyto 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
- Skrócenie czasu kompilacji shaderów
- 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źników w WGSL
- Lukier składniowy 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 shaderów 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
- Filtrowane tekstury zmiennoprzecinkowe 32-bitowe
- 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 tekstur 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
- Ulepszanie środowiska deweloperskiego
- 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łano
importExternalTexture() - Zgodność ze specyfikacją
- Ulepszanie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne używanie dyskretnego procesora graficznego w przypadku zasilania prądem zmiennym
- Ulepszanie środowiska deweloperskiego
- Aktualizacje Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() w niekonfigurowanym elemencie canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn