GPUDevice: потерянное свойство
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно изучите таблицу совместимости с браузерами.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Свойство lost только для чтения интерфейса GPUDevice содержит Promise, который остается в ожидании на протяжении всего срока службы устройства и разрешается с объектом GPUDeviceLostInfo, когда устройство потеряно.
GPUAdapter.requestDevice() никогда не вернет null, и он отклонит запрос только в случае его некорректности, то есть, если он превышает возможности GPUAdapter. Однако, если запрос на устройство действителен, но по какой-то причине не может быть выполнен, он может разрешиться на устройстве, которое уже было потеряно. Кроме того, устройства могут быть потеряны в любое время после создания по различным причинам (например, управление ресурсами браузера или обновления драйверов), поэтому всегда рекомендуется обрабатывать потерянные устройства должным образом.
Многие причины потери устройств являются временными, поэтому вы должны попробовать получить новое устройство после потери предыдущего, если потеря не была вызвана преднамеренным уничтожением устройства приложением (например, с помощью GPUDevice.destroy()). Обратите внимание, что все ресурсы WebGPU, созданные с предыдущим устройством (буферы, текстуры и т. д.), необходимо будет пересоздать с новым.
Примечание: Также имейте в виду, что GPUAdapter может стать недоступным, например, если физический графический процессор отключён от системы или выключен для экономии энергии. С этого момента адаптер больше не может возвращать действительные устройства и всегда будет возвращать уже потерянные устройства.
Значение
Обещание, которое разрешается объектом GPUDeviceLostInfo, когда устройство теряется.
Примеры
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.");
}
// Create a GPUDevice
let device = await adapter.requestDevice(descriptor);
// Use lost to handle lost devices
device.lost.then((info) => {
console.error(`WebGPU device was lost: ${info.message}`);
device = null;
if (info.reason !== "destroyed") {
init();
}
});
// ...
}
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpudevice-lost |
Совместимость с браузерами
| Рабочий стол | Мобильное устройство | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
lost |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превьюВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
превью | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
- The WebGPU API
© 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/GPUDevice/lost