WebGPU 新功能' (Chrome<版本>126)

François Beaufort
François Beaufort

提高 maxTextureArrayLayers 限制

根據預設,2D 紋理的深度或圖層數量上限為 256。只要支援,現在就能使用 maxTextureArrayLayers 限制,要求最多 2048 個。請參閱以下範例和 問題 42241514

const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxTextureArrayLayers: 2048 }
});

針對 Vulkan 後端最佳化緩衝區上傳作業

呼叫 Vulkan 後端 GPUQueue 的 writeBuffer() 方法時,現在可使用快速路徑。資料現在可以直接寫入目的地緩衝區,因此不需要額外的複製和同步處理。這項最佳化功能可減少上傳資料至 GPU 所需的記憶體流量。

快速路徑最佳化功能要求緩衝區的記憶體必須是主機可見,且沒有任何待處理的 GPU 作業。請參閱問題 42242084

改善著色器編譯時間

Chrome 團隊正在提升 Tint 的效率,這是 WebGPU 著色器語言的編譯器。目前,Tint 會在產生機器碼前多次修改著色器程式碼的抽象語法樹狀結構 (AST),而這項程序在某些平台上會耗用大量資源。為最佳化這項功能,我們推出了新的中介層表示法 (IR),並重新設計使用這項功能的後端。這項變更旨在加快著色器編譯作業。

算繪管道建立作業包括使用 Tint 編譯器將 WGSL 轉換為 SPIR-V,然後使用 Driver 編譯器轉換為 ISA。
在 ChromeOS 中建立算繪管道。

這些改善功能目前已可在 Android 上使用,並會逐步擴展至支援 WebGPU 和 Vulkan 後端的 ChromeOS 裝置。請參閱問題 42250751

提交的指令緩衝區不得重複

使用 submit() 方法提交至 GPUQueue 的每個 GPUCommandBuffer 都必須是唯一的,否則會產生驗證錯誤。這是規格錯誤。請參閱問題 42241492

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();

device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.

黎明更新

C++ 包裝函式 webgpu_cpp.h 現已改為只包含標頭,可簡化使用方式,並更容易與其他 C++ 包裝函式整合。請參閱問題 40195122

webgpu.h C API 不再公開 Swapchain 物件的概念。這項變更是為了與 JavaScript API 保持一致。內部設定現在是透過新 wgpu::Surface 物件的 Configure() 方法完成,這個方法日後可能會有所變更。請參閱「使用 WebGPU 建構應用程式」說明文件中的範例。請參閱問題 42241264

請查看完整的修訂版本清單

WebGPU 新功能

以下是「WebGPU 最新消息」系列文章中涵蓋的所有內容。

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