GPU: requestAdapter() 方法
注意:此功能在 Web Workers 中可用。
GPU 介面的 requestAdapter() 方法會返回一個 Promise,該 Promise 會用一個 GPUAdapter 物件例項來 fulfilled。透過該物件,您可以請求一個 GPUDevice、介面卡資訊、特性和限制。
請注意,使用者代理(user agent)會決定是否返回介面卡,以及如何根據提供的選項來選擇。如果未提供任何選項,則裝置將提供對預設介面卡的訪問,這通常對於大多數用途來說已經足夠好了。
語法
requestAdapter()
requestAdapter(options)
引數
options可選-
包含以下屬性的物件:
powerPreference可選-
這是一個列舉值,可用於向用戶代理提供一個提示,指示應從系統中可用的介面卡中選擇哪一類介面卡。可用值為:
undefined(或未指定),表示不提供提示。"low-power",提示使用者優先考慮節能而非效能。如果您的應用程式使用此設定執行正常,建議使用它,因為它能顯著延長行動式裝置的電池續航時間。通常,如果沒有提供選項,這就是預設值。"high-performance",提示使用者優先考慮效能而非功耗。建議僅在絕對必要時才指定此值,因為它可能會顯著縮短行動式裝置的電池續航時間。它也可能導致GPUDevice丟失——系統有時會為了省電而切換到低功耗介面卡。
此提示的主要目的是影響多 GPU 系統中使用的 GPU。例如,某些筆記型電腦可能有一個低功耗整合 GPU 和一個高效能獨立 GPU。不同的因素可能會影響返回的介面卡,包括電池狀態、連線的顯示器或可移動 GPU。
注意: 在 macOS 雙 GPU 裝置上執行的 Chrome 中,如果呼叫
requestAdapter()時未提供powerPreference選項,當用戶裝置連線到交流電源時,將返回高效能獨立 GPU。否則,將返回低功耗整合 GPU。
回退介面卡
使用者代理提供的介面卡可能是 **回退介面卡**,如果使用者代理認為它是最合適的可用選項。回退介面卡通常在效能上有顯著的權衡,以換取更廣泛的相容性、更可預測的行為或更好的隱私性。例如,某些瀏覽器可能透過基於軟體的實現來提供 API 的回退介面卡。並非所有系統都可用回退介面卡。
如果您希望您的應用程式不要在回退介面卡上執行,您應該在請求 GPUDevice 之前檢查 GPUAdapter.isFallbackAdapter 屬性。
注意: 規範中包含 requestAdapter() 的 forceFallbackAdapter 選項。這是一個布林值,如果設定為 true,則強制使用者代理返回一個回退介面卡(如果可用)。此功能尚未得到任何瀏覽器的支援。
返回值
一個 Promise,如果請求成功,則會用一個 GPUAdapter 物件例項來 fulfilled。
如果找不到合適的介面卡,requestAdapter() 將解析為 null。
異常
無。
示例
async function init() {
if (!navigator.gpu) {
throw Error("WebGPU not supported.");
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
throw Error("Couldn't request WebGPU adapter.");
}
const device = await adapter.requestDevice();
// …
}
規範
| 規範 |
|---|
| WebGPU # dom-gpu-requestadapter |
瀏覽器相容性
載入中…