Nowości w WebGPU (Chrome 127)

François Beaufort
François Beaufort

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.
Informacje o adapterze OpenGL ES na stronie webgpureport.org

Ta funkcja jest nadal w fazie eksperymentalnej, dlatego musisz wykonać następujące czynności:

  1. 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”.
  2. Włącz debugowanie USB na urządzeniu z Androidem.
  3. 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 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113