GPU: requestAdapter() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPU 介面的 requestAdapter() 方法會返回一個 Promise,該 Promise 會用一個 GPUAdapter 物件例項來 fulfilled。透過該物件,您可以請求一個 GPUDevice、介面卡資訊、特性和限制。

請注意,使用者代理(user agent)會決定是否返回介面卡,以及如何根據提供的選項來選擇。如果未提供任何選項,則裝置將提供對預設介面卡的訪問,這通常對於大多數用途來說已經足夠好了。

語法

js
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

異常

無。

示例

js
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

瀏覽器相容性

另見