提高 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),並重新設計了可使用該中介層表示法的後端。這項變更旨在加快著色器編譯作業。
這些改善功能目前已可在 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
- WGSL 中的裁剪距離
- GPUCanvasContext getConfiguration()
- 點和線圖元不得有深度偏差
- 針對子群組的內建函式
- 實驗性支援多重繪製間接功能
- 著色器模組編譯選項嚴格數學
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 支援 Android 上的 WebGPU
- 在 Windows 上使用 DXC 而非 FXC 進行著色器編譯
- 在運算和算繪階段中執行時間戳記查詢
- 著色器模組的預設進入點
- 支援使用顯示器-p3 做為 GPUExternalTexture 色彩空間
- 記憶體堆積資訊
- Dawn 更新
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 整合
- GPUAdapter
requestDevice()
傳回的遺失裝置 - 如果呼叫
importExternalTexture()
,請保持影片播放流暢 - 規格相容性
- 改善開發人員體驗
- Dawn 更新