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 團隊正在提升 WebGPU 著色器語言編譯器 Tint 的效率。Tint 目前會先多次修改著色器程式碼的抽象語法樹狀結構 (AST),再產生機器碼,這個程序在某些平台上會耗用大量資源。為此,我們將推出新的中介表示法 (IR),以及使用該表示法的重新設計後端。這項變更的目的是加快著色器編譯速度。

建立算繪管線時,需要使用 Tint 編譯器將 WGSL 轉換為 SPIR-V,然後使用驅動程式編譯器轉換為 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 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