Zwiększ limit maxTextureSlateWarstwy
Maksymalna dozwolona wartość dla głębokości lub liczby warstw tekstury 2D wynosi domyślnie 256. Można teraz wysyłać żądania do 2048 r. przy użyciu limitu maxTextureArrayLayers, jeśli jest on obsługiwany. Zapoznaj się z przykładem poniżej i problemem 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 w buforze dla backendu Vulkan
Szybka ścieżka jest teraz dostępna przy wywoływaniu metody writeBuffer() GPUQueue na potrzeby backendu Vulkan. Dane można teraz zapisywać bezpośrednio w buforze docelowym, co eliminuje konieczność 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 i nie było na niej żadnych oczekujących operacji GPU. Zobacz problem 42242084.
Skrócony czas kompilacji Shadera
Zespół Chrome zwiększa wydajność Tint – kompilatora języka WebGPU cieniowania. Odcień obecnie wielokrotnie modyfikuje abstrakcyjne drzewo składni (AST) kodu cieniowania przed wygenerowaniem kodu maszynowego. Na niektórych platformach wymaga to dużo zasobów. Aby to zoptymalizować, wprowadzamy nową reprezentację pośrednią (IR) oraz przeprojektowane backendy, które z niej korzystają. Ta zmiana ma przyspieszyć kompilację danych do cieniowania.
Te ulepszenia, dostępne już na Androidzie, są stopniowo rozszerzane na urządzenia z ChromeOS, które obsługują WebGPU z backendem Vulkan. Zobacz problem 42250751.
Przesłane bufory poleceń muszą być unikalne
Każdy element GPUCommandBuffer przesłany do GPUQueue za pomocą metody submit()
musi być unikalny. W przeciwnym razie zostanie wygenerowany błąd weryfikacji. To był błąd w 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 o świcie
Otoka w języku C++ webgpu_cpp.h jest teraz dostępna tylko w nagłówku, co upraszcza jego używanie i umożliwia łatwiejszą integrację z alternatywnymi kodami kodu C++. Zobacz problem 40195122.
Interfejs API webgpu.h C nie ujawnia już zjawiska obiektów Zamieńchain. Ta zmiana ma na celu ściślejsze dopasowanie do interfejsu JavaScript API. Konfiguracja wewnętrzna jest teraz przeprowadzana przy użyciu metody Configure()
nowego obiektu wgpu::Surface
, który w przyszłości może ulec zmianie. Zapoznaj się z przykładem w dokumentacji Build an app with WebGPU (Tworzenie aplikacji przy użyciu WebGPU). Zobacz problem 42241264.
Zapoznaj się z pełną listą zatwierdzeń.
Co nowego w WebGPU
Lista wszystkiego, co zostało omówione w serii Co nowego w WebGPU.
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofywanie odchylenia ustawień głębi w przypadku linii i punktów
- Ukryj nieprzechwycony błąd w Narzędziach deweloperskich w przypadku funkcji preventDefault
- Testuj najpierw próbkowanie WGSL, a potem jedno i drugie.
- Informacje o świcie
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia współpracy WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Skrócony czas kompilacji shadera
- Przesłane bufory poleceń muszą być unikalne
- Informacje o świcie
Chrome 125
Chrome 124
- Tekstury pamięci masowej przeznaczone tylko do odczytu oraz do odczytu i zapisu
- Obsługa pracowników Service Worker i pracowników współużytkowanych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów.
- Informacje o świcie
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnikowy cukier do dereferencji elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu w przypadku elementów związanych z szablonem i głębią
- Informacje o świcie
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Informacje o świcie
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania danych do cieniowania w systemie Windows
- Zapytania dotyczące sygnatury czasowej w kartach obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przesuwaj granice
- Zmiany stanu szablonu z głębokością
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje sprzątania przed wiosną
Chrome 119
- Filtrowalne 32-bitowe tekstury zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o świcie
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci do odczytu i zapisu oraz tylko do odczytu
- Informacje o świcie
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Nieskonfigurowana grupa powiązań
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Zmiany związane z tworzeniem modułu cieniowania SPIR-V
- Polepszanie obsługi dla programistów
- Potoki pamięci podręcznej z układem generowanym automatycznie
- Informacje o świcie
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Odtwarzaj płynnie po wywołaniu
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Domyślnie używaj dyskretnego GPU przy zasilaniu sieciowym
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym powoduje zgłoszenie nieprawidłowego stanu błędu
- Aktualizacje WGSL
- Informacje o świcie