GPU: requestAdapter() 方法
requestAdapter()
方法是 GPU
接口的方法,它返回一个 Promise
,该方法会使用 GPUAdapter
对象实例来实现。
请注意,用户代理会选择是否返回适配器。如果返回适配器,则它会根据提供的选项进行选择。如果没有提供选项,则设备将提供对默认适配器的访问权限,这通常足以满足大多数目的。
语法
requestAdapter()
requestAdapter(options)
参数
options
可选-
包含以下属性的对象
powerPreference
可选-
一个枚举值,可以用来向用户代理提供一个提示,表明应该从系统可用的适配器中选择哪一类适配器。可用的值是
undefined
(或未指定),不提供任何提示。"low-power"
,它提供了一个提示,优先考虑省电而不是性能。如果您的应用程序使用此设置可以正常运行,建议使用它,因为它可以显着提高便携式设备的电池寿命。如果未提供选项,这通常是默认值。"high-performance"
,它提供了一个提示,优先考虑性能而不是功耗。鼓励您仅在绝对必要时指定此值,因为它可能会显着减少便携式设备的电池寿命。它也可能导致GPUDevice
丢失率增加 - 系统有时会选择切换到低功耗适配器以节省电量。
此提示的主要目的是影响在多 GPU 系统中使用哪个 GPU。例如,一些笔记本电脑配备了一个低功耗集成 GPU 和一个高性能独立 GPU。不同的因素可能会影响返回哪个适配器,包括电池状态、已连接的显示器或可移动 GPU。
注意:在运行在双 GPU macOS 设备上的 Chrome 中,如果在没有
powerPreference
选项的情况下调用requestAdapter()
,则当用户设备处于交流电源状态时,将返回高性能独立 GPU。否则,将返回低功耗集成 GPU。
备用适配器
如果用户代理确定它是可用的最合适选项,则它提供的适配器可能是 备用适配器。备用适配器通常在性能方面存在重大缺陷,以换取更广泛的兼容性、更可预测的行为或改进的隐私。例如,一些浏览器可能通过备用适配器提供 API 的软件实现。并非所有系统上都提供备用适配器。
如果您希望阻止您的应用程序在备用适配器上运行,您应该在请求 GPUDevice
之前检查 GPUAdapter.isFallbackAdapter
属性。
注意:规范中包含用于 requestAdapter()
的 forceFallbackAdapter
选项。这是一个布尔值,如果设置为 true
,则强制用户代理返回备用适配器(如果可用)。目前还没有浏览器支持此功能。
返回值
如果请求成功,则为一个 Promise
,它将用一个 GPUAdapter
对象实例来完成。
如果无法使用合适的适配器,则 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 |
浏览器兼容性
BCD 表只在启用 JavaScript 的浏览器中加载。