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

浏览器兼容性

另见