Nowości w WebGPU (Chrome 127)

François Beaufort
François Beaufort

Eksperymentalna obsługa OpenGL ES na Androidzie

Teraz możesz uzyskać dostęp do GPUAdapter z backendu OpenGL ES, gdy w Chrome na Androida poprosisz o eksperymentalny tryb zgodności WebGPU. Jest to szczególnie przydatne w przypadku urządzeń z Androidem, które nie obsługują 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 });
Strona raportu WebGPU pokazuje informacje o obiekcie 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, więc musisz wykonać te czynności:

  1. Włącz te flagi Chrome: „Unsafe WebGPU Support”, „WebGPU Developer Features” i „Enable command line on non-rooted devices”.
  2. Włącz debugowanie USB na urządzeniu z Androidem.
  3. Podłącz urządzenie z Androidem do stacji roboczej, uruchom adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line', aby preferować backend OpenGL ES zamiast Vulkan, i ponownie uruchom Chrome.

Atrybut info interfejsu GPUAdapter

Pobieranie informacji umożliwiających identyfikację o adapterze może teraz odbywać się synchronicznie za pomocą atrybutu GPUAdapter info. Wcześniej wywołanie asynchronicznej metody GPUAdapter requestAdapterInfo() było jedynym sposobem uzyskania informacji o adapterze. Jednak requestAdapterInfo() została usunięta ze specyfikacji WebGPU i zostanie usunięta z Chrome jeszcze w tym roku, aby dać programistom internetowym wystarczająco dużo czasu na dokonanie niezbędnych zmian. Zobacz na przykład stan Chrome i problem 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 w zakresie współdziałania WebAssembly

Aby umożliwić bezpośrednie przekazywanie stert WebAssembly 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 weryfikacji zgłaszane przez kodery poleceń będą teraz zawierać więcej informacji kontekstowych. Na przykład próba uruchomienia przepustki obliczeniowej, gdy przepustka renderowania była nadal otwarta, 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)

Opisuje on przyczynę błędu, ale nie wskazuje, które wywołanie go spowodowało. Poniższy błąd pokazuje ulepszone komunikaty, które zawierają polecenie, które wywołało błąd. 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 Dawn

Interfejs C API webgpu.h nie udostępnia już funkcji wgpuSurfaceGetPreferredFormat(), czyli odpowiednika funkcji wgpu::Surface::GetPreferredFormat() w bibliotece Dawn. Zamiast tego użyj wgpu::Surface::GetCapabilities(), aby uzyskać listę obsługiwanych formatów, a potem użyj formats[0], aby uzyskać format tekstury preferowany w przypadku tej powierzchni. W międzyczasie wywołanie funkcji wgpu::Surface::GetPreferredFormat() powoduje wyświetlenie ostrzeżenia o wycofaniu. Zobacz problem 290.

Obsługiwane zastosowania tekstury powierzchni są teraz dostępne w wgpu::SurfaceCapabilities::usages podczas wywoływania wgpu::Surface::GetCapabilities(). Zawsze powinny 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 wszystkich tematów omówionych w serii Nowości w WebGPU.

Chrome 155–156

Chrome 153–154

Chrome 151–152

Chrome 149-150

Chrome 147–148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

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