GPU: метод requestAdapter()
Ограниченное использование
Эта функция не относится к Baseline, так как она не работает во всех наиболее широко используемых браузерах.
Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод requestAdapter() интерфейса GPU возвращает Promise, который выполняется с объектом экземпляра GPUAdapter. Из этого вы можете запросить GPUDevice, информацию об адаптере, возможности и ограничения.
Обратите внимание, что пользовательский агент выбирает, возвращать ли адаптер. В таком случае он выбирает его в соответствии с предоставленными параметрами. Если параметры не указаны, устройство предоставит доступ к адаптеру по умолчанию, который обычно достаточно эффективен для большинства целей.
Синтаксис
requestAdapter() requestAdapter(options)
Параметры
optionsНеобязательно-
Объект, содержащий следующие свойства:
powerPreferenceНеобязательно-
Перечисление, которое может быть использовано для предоставления подсказки пользовательскому агенту о том, какой класс адаптера следует выбрать из доступных адаптеров системы. Доступные значения:
-
undefined(или не указано), что не дает подсказки. -
"low-power", который дает подсказку, чтобы уделить приоритет экономии энергии над производительностью. Если ваше приложение работает нормально с этим значением, рекомендуется его использовать, так как это может значительно увеличить время автономной работы портативных устройств. Это обычно значение по умолчанию, если не указаны параметры. -
"high-performance", который дает подсказку, чтобы уделить приоритет производительности над энергопотреблением. Рекомендуется указывать это значение только в крайнем случае, так как это может значительно уменьшить время автономной работы портативных устройств. Также это может привести к увеличению потерьGPUDevice— система иногда выбирает переключение на адаптер с меньшим энергопотреблением, чтобы сэкономить энергию.
Основная цель этой подсказки — повлиять на то, какой графический процессор используется в системе с несколькими графическими процессорами. Например, некоторые ноутбуки имеют интегрированный графический процессор с низким энергопотреблением и дискретный графический процессор с высокой производительностью. На выбор адаптера могут влиять различные факторы, включая состояние заряда батареи, подключенные дисплеи или съемные графические процессоры.
Примечание: В Chrome на устройствах macOS с двумя графическими процессорами, если
requestAdapter()вызывается безpowerPreferenceопции, возвращается дискретный графический процессор с высокой производительностью, когда устройство пользователя подключено к электросети. В противном случае возвращается интегрированный графический процессор с низким энергопотреблением. -
Адаптеры по умолчанию
Адаптер, предоставленный пользовательским агентом, может быть адаптером по умолчанию, если он определит, что это наиболее подходящий вариант, доступный на данный момент. Адаптер по умолчанию обычно имеет существенные недостатки с точки зрения производительности в обмен на сочетание более широкой совместимости, более предсказуемого поведения или улучшенной конфиденциальности. Например, некоторые браузеры могут предложить программную реализацию API через адаптер по умолчанию. Адаптер по умолчанию не будет доступен на всех системах.
Если вы хотите предотвратить работу ваших приложений на адаптерах по умолчанию, вы должны проверить атрибут GPUAdapter.isFallbackAdapter перед запросом GPUDevice.
Примечание: Спецификация включает forceFallbackAdapter опцию для requestAdapter(). Это булево значение, которое, если установлено в true, заставляет пользовательский агент вернуть адаптер по умолчанию, если он доступен. Пока этот вариант не поддерживается ни одним браузером.
Возвращаемое значение
A 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 |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
requestAdapter |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версияВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версия | 121 | Нет | 81 | Нет | 25.0 | 121 |
discrete_adapter_default_ac |
115В настоящее время поддерживается только на устройствах macOS с двумя графическими процессорами. |
115В настоящее время поддерживается только на устройствах macOS с двумя графическими процессорами. |
Нет | 101В настоящее время поддерживается только на устройствах macOS с двумя графическими процессорами. |
Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPU/requestAdapter