Eksperymentalna obsługa OpenGL ES na Androidzie
Teraz możesz uzyskać dostęp do GPUAdapter
z back-endu OpenGL ES, gdy żądasz eksperymentalnego trybu zgodności WebGPU w Chrome na Androida. Jest to szczególnie przydatne na urządzeniach z Androidem, które nie obsługują interfejsu Vulkan 1.1 lub nowszego. Zapoznaj się z tym przykładem i problemem dawn:1545.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
Ta funkcja jest nadal w fazie eksperymentalnej, dlatego musisz wykonać te czynności:
- Włącz te flagi Chrome: „Niebezpieczne wsparcie WebGPU”, „Funkcje dla deweloperów WebGPU” i „Włącz wiersz poleceń na urządzeniach bez uprawnień roota”.
- Włącz debugowanie USB na urządzeniu z Androidem.
- Połącz urządzenie z Androidem z stanowiskiem roboczym, uruchom
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
, aby preferować backend OpenGL ES nad Vulkan, i ponownym uruchomieniu Chrome.
Atrybut informacji o GPUAdapter
Informacje identyfikujące adapter można teraz pobierać w sposób synchroniczny za pomocą atrybutu GPUAdapter info
. Wcześniej wywołanie asynchronicznej metody GPUAdapter requestAdapterInfo()
było jedynym sposobem na uzyskanie informacji o adapterze. Jednak metoda requestAdapterInfo()
została usunięta ze specyfikacji WebGPU i zostanie usunięta z Chrome jeszcze w tym roku, aby dać deweloperom wystarczająco dużo czasu na przeprowadzenie niezbędnego przejścia. Zapoznaj się z tym przykładem, stanem Chrome i problemem 335383516.
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
Ulepszenia współpracy WebAssembly
Aby uwzględnić stosy WebAssembly przekazywane bezpośrednio do WebGPU, rozmiary tych argumentów BufferSource nie są już ograniczone do 2 GB: dynamicOffsetsData
w setBindGroup()
, źródło data
w writeBuffer()
i źródło data
Pin writeTexture()
. Zobacz problem 339049388.
Ulepszone błędy kodera poleceń
Niektóre błędy walidacji generowane przez kodery poleceń będą teraz zawierać ulepszone informacje kontekstowe. Na przykład próba uruchomienia przebiegu obliczeniowego, gdy test renderowania był nadal otwarty, spowodowała wystąpienie tego błędu.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
Zawiera ono opis przyczyny błędu, ale nie wskazuje, które wywołanie spowodowało błąd weryfikacji. Poniższy błąd pokazuje poprawiony komunikat o błędzie, w tym polecenie, które go wywołało. Zobacz zmianę 192245.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Aktualizacje o świcie
Interfejs API C webgpu.h nie udostępnia już funkcji wgpuSurfaceGetPreferredFormat()
, która jest odpowiednikiem funkcji wgpu::Surface::GetPreferredFormat()
z języka Dawn. Zamiast tego użyj polecenia wgpu::Surface::GetCapabilities()
, aby uzyskać listę obsługiwanych formatów, a następnie użyj polecenia formats[0]
, aby uzyskać format tekstury preferowany dla tej powierzchni. W międzyczasie wywołanie wgpu::Surface::GetPreferredFormat()
powoduje wyświetlenie ostrzeżenia o wycofaniu. Zobacz problem 290.
Obsługiwane sposoby użycia tekstury powierzchni są teraz dostępne w funkcji wgpu::SurfaceCapabilities::usages
podczas wywoływania funkcji wgpu::Surface::GetCapabilities()
. Powinny one zawsze zawierać wgpu::TextureUsage::RenderAttachment
. Zobacz problem 301.
Obejmuje to tylko niektóre najważniejsze informacje. Zapoznaj się z pełną listą commitów.
Co nowego w WebGPU
Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.
Chrome 131
- Odcinki odległości w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Dodanie eksperymentalnej obsługi pośredniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisłe obliczenia matematyczne
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Informacje o świcie
Chrome 130
- Mieszanie dwóch źródeł
- Skrócenie czasu kompilacji shaderów na Metalu
- Wycofanie metody requestAdapterInfo() klasy GPUAdapter
- Informacje o świcie
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie obsługi ustawiania głębi dla linii i punktów
- Ukryj nieprzechwycony błąd w Narzędziach deweloperskich w przypadku funkcji preventDefault
- WGSL interpoluje próbkowanie najpierw i potem
- Informacje o świcie
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o GPUAdapter
- Ulepszenia współpracy WebAssembly
- Poprawione błędy kodowania poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora dla backendu Vulkana
- Ulepszenia dotyczące czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie tworzenia)
- Renderowanie na potrzeby wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i 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.
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla stempli i aspektów głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w fazie opracowywania)
- Zwiększenie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania shaderów w systemie Windows
- Zapytania o sygnatury czasowe w przelotach obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shaderów
- Obsługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o stertach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowane tekstury 32-bitowe zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Informacje o świcie
Chrome 117
- Bufor wierzchołka nieustawiony
- Cofnij grupę wiązania
- Błędy w przypadku tworzenia asynchronicznego potoku, gdy urządzenie jest utracone
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Przetwarzanie za pomocą przepływów z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Urządzenie zgubione zwrócone przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie wrażeń programistów
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Domyślnie używaj dyskretnego GPU przy zasilaniu sieciowym
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Informacje o świcie