發布日期:2025 年 4 月 23 日
GPUAdapterInfo isFallbackAdapter 屬性
GPUAdapterInfo isFallbackAdapter
布林值屬性可指出 GPUAdapter 是否有重大效能限制,以換取更廣泛的相容性、更可預測的行為或更佳的隱私權。這項新增功能是必要的,因為使用者提供的 GPUDevice 物件程式庫無法透過 GPUDevice 上的 adapterInfo
屬性存取這項資訊。請參閱以下範例和 問題 403172841。
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
由於 Chrome 尚未提供備用轉接器支援,因此 isFallbackAdapter
目前在使用者裝置上一律為 false。我們正在調查是否可以淘汰並移除 GPUAdapter isFallbackAdapter
屬性。請參閱「意圖運送」。
改善 D3D12 上的著色器編譯時間
Chrome 團隊持續改善 Tint (WebGPU 著色器語言編譯器),為支援 WebGPU 的 D3D12 後端裝置新增中介呈現 (IR)。這個 IR 位於 Tint 的抽象語法樹狀結構 (AST) 和 HLSL 後端寫入器之間,可讓編譯器更有效率且更易於維護,最終造福開發人員和使用者。初步測試顯示,在將 Unity 的 WGSL 著色器轉譯為 HLSL 時,新版 Tint 的速度最高可快上 10 倍。

這些改善功能已在 Android、ChromeOS 和 macOS 上推出,並逐步擴展至支援 WebGPU 和 D3D12 後端的 Windows 裝置。請參閱問題 42251045。
儲存及複製無框畫圖片
Chrome 使用者現在可以按一下 WebGPU 畫布右鍵,然後存取「另存圖片」或「複製圖片」的內容選單選項。請參閱 問題 40902474。

提升相容性模式限制
實驗性的 "core-features-and-limits"
功能在 GPUDevice 上可用時,啟用 chrome://flags/#enable-unsafe-webgpu
標記後,即可解除所有相容性模式限制 (功能和限制)。請參閱問題 395855517。
使用 featureLevel: "compatibility"
選項要求 GPUAdapter 會提示瀏覽器選取實驗性的 WebGPU 相容性模式。如果成功,產生的轉接器會是「相容性預設值」。否則,系統會使用「核心預設值」,這與使用 featureLevel: "core"
選項相同。此外,如果未指定 requiredFeatures
和 requiredLimits
就呼叫 requestDevice()
,系統會要求 GPUDevice 使用 GPUAdapter 的預設功能。
核心預設轉接器一律支援 "core-features-and-limits"
功能,且會在透過這些轉接器建立的 GPUDevices 上自動啟用。對於相容性預設的轉接器,可能會支援 "core-features-and-limits"
功能,並可在由這些轉接器建立的 GPUDevices 上提出要求。這兩種轉接器也可能支援 "float32-blendable"
等功能,這在核心模式和相容性模式中都是選用的。
以下範例適用於需要 "float32-blendable"
的應用程式,且在可用情況下支援使用核心功能,但在核心功能無法使用時,只使用相容性功能。
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
實驗性 GPUAdapter featureLevel
和 isCompatibilityMode
屬性已移除,改用 "core-features-and-limits"
功能。請參閱問題 395855516。
黎明更新
回呼狀態列舉 InstanceDropped
已重新命名為 CallbackCancelled
,以便清楚說明回呼已取消,但與事件相關聯的背景處理作業 (例如管道編譯) 可能仍在執行。新名稱更具普遍性,以防日後新增其他取消機制。請參閱問題 520。
表示無法彈出錯誤範圍堆疊的 wgpu::PopErrorScopeStatus::EmptyStack
列舉已重新命名為 wgpu::PopErrorScopeStatus::Error
(也更適用於一般情況)。回呼現在也包含對應的錯誤說明訊息,方便您進行偵錯。請參閱問題 369。
這份文件僅涵蓋部分重點。請查看完整的修訂版本清單。
WebGPU 新功能
以下是「WebGPU 最新消息」系列文章中涵蓋的所有內容。
Chrome 136
Chrome 135
- 允許使用空值繫結群組版面配置建立管道版面配置
- 允許檢視區超出算繪目標邊界
- 在 Android 上更輕鬆存取實驗相容性模式
- 移除 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 134
Chrome 133
- 其他 unorm8x4-bgra 和 1 個元件的頂點格式
- 允許使用未定義的值要求不明的限制
- WGSL 對齊規則異動
- WGSL 透過捨棄功能提升效能
- 使用 VideoFrame displaySize 做為外部紋理的值
- 使用 copyExternalImageToTexture 處理非預設方向的圖片
- 改善開發人員體驗
- 使用 featureLevel 啟用相容模式
- 實驗性子群組功能清理
- 淘汰 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 132
- 紋理檢視畫面用法
- 32 位元浮點紋理混合
- GPUDevice adapterInfo 屬性
- 使用無效格式設定畫布內容時會擲回 JavaScript 錯誤
- 篩選紋理上的取樣器限制
- 擴大子群組實驗
- 改善開發人員體驗
- 支援 16 位元規格化紋理格式的實驗功能
- Dawn 更新
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 更新