Zwiększenie limitu maxTextureArrayLayers
Maksymalna dozwolona wartość głębokości lub liczby warstw tekstury 2D to domyślnie 256. Teraz, gdy jest to obsługiwane, możesz poprosić o maksymalnie 2048, używając limitu maxTextureArrayLayers. Zobacz ten przykład i problem 42241514.
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
Optymalizacja przesyłania bufora w przypadku backendu Vulkan
Podczas wywoływania metody writeBuffer() interfejsu GPUQueue w przypadku backendu Vulkan jest teraz dostępna szybka ścieżka. Dane można teraz zapisywać bezpośrednio w buforze docelowym, co eliminuje potrzebę dodatkowego kopiowania i synchronizacji. Ta optymalizacja zmniejsza ruch pamięci potrzebny do przesyłania danych do GPU.
Optymalizacja szybkiej ścieżki wymaga, aby pamięć bufora była widoczna dla hosta i nie zawierała żadnych oczekujących operacji GPU. Zobacz problem 42242084.
Ulepszenia czasu kompilacji shadera
Zespół Chrome zwiększa wydajność Tint, czyli kompilatora języka shadera WebGPU. Tint obecnie modyfikuje abstrakcyjne drzewo składni (AST) kodu shadera kilka razy przed wygenerowaniem kodu maszynowego. W przypadku niektórych platform jest to proces wymagający dużej ilości zasobów. Aby to zoptymalizować, wprowadzamy nową reprezentację pośrednią (IR) oraz przeprojektowane backendy, które z niej korzystają. Ta zmiana ma na celu przyspieszenie kompilacji shadera.
Te ulepszenia, które są już dostępne na Androidzie, są stopniowo wprowadzane na urządzeniach z ChromeOS obsługujących WebGPU z backendem Vulkan. Zobacz problem 42250751.
Przesłane bufory poleceń muszą być unikalne
Każdy interfejs GPUCommandBuffer przesłany do interfejsu GPUQueue za pomocą metody submit() musi być unikalny. W przeciwnym razie zostanie wygenerowany błąd weryfikacji. Był to błąd specyfikacji. Zobacz problem 42241492.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
Aktualizacje Dawn
Otoka C++ webgpu_cpp.h jest teraz tylko nagłówkiem, co upraszcza jej użycie i ułatwia integrację z alternatywnymi otokami C++. Zobacz problem 40195122.
Interfejs webgpu.h C API nie udostępnia już pojęcia obiektów Swapchain. Ta zmiana ma na celu ścisłe dopasowanie do interfejsu JavaScript API. Konfiguracja wewnętrzna jest teraz wykonywana za pomocą metody Configure() nowego obiektu wgpu::Surface, który może ulec zmianom w przyszłości. Przykład znajdziesz w dokumentacji Tworzenie aplikacji za pomocą WebGPU. Zobacz problem 42241264.
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
- Immediates
- Bardziej rygorystyczna weryfikacja w przypadku tymczasowych załączników
- Aktualizacje Dawn
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
- Ukończono Tint IR
- Analiza zakresu liczb całkowitych w kompilatorze WGSL
- Aktualizacja SPIR-V 1.4 w przypadku backendu Vulkan
- Aktualizacje Dawn
Chrome 140
- Żądania urządzeń zużywają adapter
- Skrót do używania tekstury w miejscu, w którym używana 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”
- 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 GPU
- Wycofanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje Dawn
Chrome 137
- Używanie widoku tekstury w przypadku 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
- Ulepszenia czasu kompilacji shadera 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 niezdefiniowaną wartością
- 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 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 JavaScriptu
- Ograniczenia dotyczące próbnika filtrowania w przypadku 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 w przypadku podgrup
- Eksperymentalna obsługa multi-draw indirect
- Opcja kompilacji modułu shadera strict math
- Usuwanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 130
- Mieszanie z 2 źródeł
- Ulepszenia czasu kompilacji shadera w Metal
- Wycofanie GPUAdapter requestAdapterInfo()
- Aktualizacje Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie ustawiania przesunięcia głębokości w przypadku 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 przypadku backendu Vulkan
- Ulepszenia czasu kompilacji shadera
- 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 w przypadku 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 shadera w systemie Windows
- Zapytania o sygnaturę czasową w przypadku przejść obliczeniowych i renderowania
- 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 wiosennego czyszczenia
Chrome 119
- Tekstury zmiennoprzecinkowe 32-bitowe z filtrowaniem
- Format wierzchołka 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 ustawienia bufora wierzchołków
- Usuwanie ustawienia grupy powiązań
- Wyciszanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie jest utracone
- Aktualizacje tworzenia modułu shadera 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 używanie dyskretnego GPU w przypadku zasilania prądem zmiennym
- Ulepszanie środowiska programisty
- Aktualizacje Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() w przypadku niekonfigurowanego elementu canvas zgłasza InvalidStateError
- Aktualizacje WGSL
- Aktualizacje Dawn