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 |
浏览器兼容性
加载中…