Zwiększ limit maxureTrack Warstwy
Maksymalna dozwolona wartość głębokości lub liczby warstw tekstury 2D to domyślnie 256. Teraz można wysłać żądanie do 2048 pikseli, korzystając z limitu maxTextureArrayLayers, gdy jest obsługiwany. Zobacz poniższy przykład i numer problemu 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 do backendu Vulkan
Przy wywoływaniu metody writeBuffer() w GPUQueue dla backendu Vulkan dostępna jest teraz szybka ścieżka. Dane mogą być teraz zapisywane bezpośrednio w buforze docelowym, co eliminuje konieczność dodatkowej kopii i synchronizacji. Ta optymalizacja zmniejsza ilość ruchu w pamięci potrzebnego do przesyłania danych do GPU.
Optymalizacja szybkiej ścieżki wymaga, aby pamięć bufora była widoczna dla hosta i nie były na nim oczekujące operacje GPU. Zobacz numer problemu 42242084.
Skrócenie czasu kompilacji cienia
Zespół Chrome zwiększa wydajność Tint, który jest kompilatorem języka cieniowania WebGPU. Obecnie Tint wielokrotnie modyfikuje abstrakcyjne drzewo składni kodu cieniowania (AST), zanim wygeneruje kod maszyny. Na niektórych platformach wymaga to znacznych zasobów. W celu optymalizacji wprowadziliśmy nową reprezentację pośrednią (IR) oraz przeprojektowane backendy, które z niej korzystają. Ta zmiana ma na celu przyspieszenie kompilacji programu do cieniowania.
Te ulepszenia, które są już dostępne na urządzeniach z Androidem, są stopniowo rozszerzane na urządzenia z ChromeOS, które obsługują WebGPU z backendem Vulkan. Zobacz numer problemu 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 numer problemu 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.
Powiadomienia o świcie
Kod w języku C++ webgpu_cpp.h jest teraz dostępny tylko w nagłówku, co upraszcza jego użycie i umożliwia łatwiejszą integrację z alternatywnymi kodami C++. Zobacz numer problemu 40195122.
Interfejs API webgpu.h C nie ujawnia już pojęcia obiektów Replacechain. Ta zmiana ma na celu ścisłe dostosowanie interfejsu JavaScript API. Konfiguracja wewnętrzna jest teraz przeprowadzana za pomocą metody Configure()
nowego obiektu wgpu::Surface
, która może ulec zmianie w przyszłości. Przykład znajdziesz w dokumentacji tworzenia aplikacji przy użyciu WebGPU. Zobacz numer problemu 42241264.
Zobacz pełną listę zatwierdzeń.
Co nowego w WebGPU
Lista wszystkich zagadnień omówionych w serii Co nowego w WebGPU.
Chrome 126
- Zwiększ limit warstw maxTextureArraylayer
- Optymalizacja przesyłania bufora na potrzeby backendu Vulkan
- Skrócenie czasu kompilacji Shadera
- Przesłane bufory poleceń muszą być unikalne
- Informacje o Dawn
Chrome 125
Chrome 124
- Tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Skrypty service worker i współdzielone zasoby robocze – pomoc
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Informacje o Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Cukier składniowy do usuwania linków do kompozytów w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębi
- Informacje o Dawn
Chrome 122
- Rozszerzanie zasięgu dzięki trybowi zgodności (funkcja w fazie opracowywania)
- Zwiększ limit maxVertexAttributes
- Informacje o Dawn
Chrome 121
- Obsługa WebGPU na urządzeniach z Androidem
- Do kompilacji programu do cieniowania w systemie Windows użyj DXC zamiast FXC
- Zapytania o sygnaturę czasową podczas obliczeń obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj parametr display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o sterach pamięci
- Informacje o Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w języku WGSL
- Przekrocz granice
- Zmiany stanu szablonu głębi
- Aktualizacje informacji o adapterze
- Kwantyzowanie zapytań dotyczących sygnatury czasowej
- Funkcje Wiosenne porządki
Chrome 119
- Filtrowanie 32-bitowych tekstur pływających
- formacie wierzchołków unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o Dawn
Chrome 118
- Obsługa formatów HTMLImageElement i ImageData w interfejsie
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstur pamięci masowej tylko do odczytu i zapisu oraz tylko do odczytu
- Informacje o Dawn
Chrome 117
- Nieustawiony bufor wierzchołków
- Cofnij ustawienie grupy powiązań
- Wyciszanie błędów podczas tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Aktualizacje dotyczące tworzenia modułu cieniowania SPIR-V
- Poprawianie wrażeń deweloperów
- Potoki w pamięci podręcznej z układem generowanym automatycznie
- Informacje o Dawn
Chrome 116
- Integracja z WebCodecs
- Zgubione urządzenie zwrócone przez GPUAdapter
requestDevice()
- Zapewniaj płynne odtwarzanie filmu, jeśli zostanie wywołany element
importExternalTexture()
- Zgodność ze specyfikacją
- Poprawianie wrażeń deweloperów
- Informacje o Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślnie korzystaj z dyskretnego GPU na zasilaniu sieciowym
- Poprawianie wrażeń deweloperów
- Informacje o Dawn
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym zgłasza nieprawidłową wartość błędu
- Aktualizacje WGSL
- Informacje o Dawn