Eksperymentalna obsługa OpenGL ES na Androidzie
Możesz teraz uzyskać dostęp do interfejsu GPUAdapter
z backendu OpenGL ES, żądając 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. Zobacz ten przykład i problem świt:1545.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
![Strona raportu WebGPU zawiera informacje o karcie GPUAdapter z backendu OpenGL ES na urządzeniu z Androidem.](https://developer.chrome.com/static/blog/new-in-webgpu-127/image/opengl-es-android.jpg?authuser=9&hl=pl)
Ta funkcja jest nadal w fazie eksperymentalnej, dlatego musisz wykonać następujące czynności:
- Włącz te flagi Chrome: „Niebezpieczna obsługa WebGPU”, „Funkcje dla programistów WebGPU” i „Włącz wiersz poleceń na urządzeniach bez dostępu do roota”.
- Włącz debugowanie USB na urządzeniu z Androidem.
- Połącz urządzenie z Androidem ze stacją roboczą, uruchom program
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
, aby preferować backend OpenGL ES, a nie Vulkan, i uruchom ponownie Chrome.
Atrybut informacji o procesorze GPU
Informacje identyfikujące adapter można teraz przeprowadzać synchronicznie za pomocą atrybutu GPUAdapter info
. Wcześniej wywołanie asynchronicznej metody GPUAdapter requestAdapterInfo()
było jedynym sposobem uzyskania informacji o adapterze. Rozszerzenie requestAdapterInfo()
zostało jednak usunięte ze specyfikacji WebGPU i zostanie usunięte z Chrome jeszcze w tym roku, aby dać twórcom stron internetowych wystarczająco dużo czasu na wprowadzenie niezbędnych zmian. Zobacz przykład Stanu Chrome i numer problemu 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ć sterty 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
Pinezka writeTexture()
. Zapoznaj się z problemem 339049388.
Ulepszone błędy kodera poleceń
Niektóre błędy weryfikacji zgłoszone przez kodery poleceń zawierają teraz poprawione 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)
Podaje ono przyczynę błędu, ale nie wskazuje, które wywołanie faktycznie go spowodowało. 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 webgpu.h C nie udostępnia już wgpuSurfaceGetPreferredFormat()
– odpowiednika wgpu::Surface::GetPreferredFormat()
biblioteki Dawn. Użyj formatu wgpu::Surface::GetCapabilities()
, aby uzyskać listę obsługiwanych formatów, a następnie skorzystaj z pola formats[0]
, aby wybrać format tekstury preferowany w przypadku tej powierzchni. W międzyczasie wywołanie funkcji wgpu::Surface::GetPreferredFormat()
powoduje wyświetlanie ostrzeżenia o wycofaniu. Zobacz problem 290.
Obsługiwane zastosowania tekstur na powierzchni są teraz dostępne w usłudze wgpu::SurfaceCapabilities::usages
podczas wywoływania funkcji wgpu::Surface::GetCapabilities()
. Powinny one zawsze zawierać wgpu::TextureUsage::RenderAttachment
. Zobacz problem 301.
To tylko niektóre z najważniejszych informacji. 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