What's WebGPU 的新功能 (Chrometain127)

François Beaufort
François Beaufort

Android 上的 OpenGL ES 實驗性支援

現在當您在 Chrome for Android 中要求實驗性的 WebGPU 相容性模式時,現在可以從 OpenGL ES 後端存取 GPUAdapter。如果 Android 裝置不支援 Vulkan 1.1 以上版本,這項功能就特別實用。請參考以下範例和問題 dawn:1545

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
WebGPU 報告頁面會顯示來自 Android 裝置 OpenGL ES 後端的 GPU Adapter 資訊。
webgpureport.org 中的 OpenGL ES 轉接程式資訊

這項功能仍在實驗階段,因此請按照下列步驟操作:

  1. 啟用下列 Chrome 旗標:「不安全的 WebGPU 支援」、「WebGPU 開發人員功能」和「在未 Root 權限的裝置上啟用指令列」。
  2. 在 Android 裝置上啟用 USB 偵錯功能。
  3. 將 Android 裝置連線至工作站,執行 adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' (優先使用 OpenGL ES 後端而非 Vulkan),然後重新啟動 Chrome。

GPU 轉接程式資訊屬性

您現在可以使用 GPUAdapter info 屬性,以同步方式取得轉接器的識別資訊。先前,如要取得轉接器資訊,呼叫非同步 GPU Adapter requestAdapterInfo() 方法。不過,requestAdapterInfo() 已從 WebGPU 規格中移除,將於今年稍晚在 Chrome 中移除,以便讓網頁開發人員有足夠時間進行必要轉換。請參閱「Chrome 狀態」和「問題 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"

WebAssembly 互通性改善

為了因應直接傳遞至 WebGPU 的 WebAssembly 堆積,下列 BufferSource 引數的大小不再限制在 2 GB:setBindGroup() 中的 dynamicOffsetsDatawriteBuffer() 中的來源 data,以及來源 data 固定 writeTexture()。請參閱問題 339049388

改善指令編碼器錯誤

指令編碼器引發的部分驗證錯誤現在已經改善。舉例來說,如果在算繪通道仍開啟時嘗試啟動運算通道,就會導致以下錯誤。

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)

此項說明錯誤原因,但未指出是哪項呼叫實際上導致驗證錯誤。下列錯誤顯示改良版訊息,其中包含觸發錯誤的指令。請參閱變更 192245

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

日出最新消息

webgpu.h C API 不再公開 wgpuSurfaceGetPreferredFormat(),也就是 Dawn 的 wgpu::Surface::GetPreferredFormat() 的 C。請改用 wgpu::Surface::GetCapabilities() 取得支援格式的清單,然後使用 formats[0] 取得此途徑偏好的紋理格式。與此同時,呼叫 wgpu::Surface::GetPreferredFormat() 會發出淘汰警告。請參閱問題 290

現在呼叫 wgpu::Surface::GetCapabilities() 時,可透過 wgpu::SurfaceCapabilities::usages 使用介面支援的紋理使用方式。其中應一律包含 wgpu::TextureUsage::RenderAttachment。請參閱問題 301

這只涵蓋部分重點功能。請參閱完整的修訂版本清單

WebGPU 新功能

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