GPUDevice: lost-Eigenschaft
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die schreibgeschützte lost
-Eigenschaft der GPUDevice
-Schnittstelle enthält ein Promise
, das während der gesamten Lebensdauer des Geräts schwebend bleibt und sich auf ein GPUDeviceLostInfo
-Objekt auflöst, wenn das Gerät verloren geht.
GPUAdapter.requestDevice()
wird niemals null
zurückgeben, und es wird nur abgelehnt, wenn die Anforderung ungültig ist, d.h. sie überschreitet die Fähigkeiten des GPUAdapter
. Wenn jedoch eine gültige Geräteeinrichtung aus irgendeinem Grund nicht erfüllt werden kann, kann es sich auf ein bereits verlorenes Gerät auflösen. Zusätzlich können Geräte jederzeit nach der Erstellung aus verschiedenen Gründen verloren gehen (wie etwa durch Ressourcenverwaltung des Browsers oder Treiber-Updates), daher ist es eine gute Idee, verlorene Geräte immer ordentlich zu handhaben.
Viele Ursachen für verlorene Geräte sind vorübergehend, daher sollten Sie versuchen, ein neues Gerät zu erhalten, sobald ein vorheriges verloren gegangen ist, es sei denn, der Verlust wurde durch die Anwendung absichtlich verursacht (z.B. mit GPUDevice.destroy()
). Beachten Sie, dass alle WebGPU-Ressourcen, die mit einem vorherigen Gerät erstellt wurden (Puffer, Texturen usw.), mit dem neuen Gerät neu erstellt werden müssen.
Hinweis:
Beachten Sie auch, dass ein GPUAdapter
möglicherweise nicht mehr verfügbar ist, z.B. wenn die physische GPU vom System abgesteckt oder zur Energieeinsparung deaktiviert wird. Von diesem Zeitpunkt an kann der Adapter keine gültigen Geräte mehr zurückgeben und wird immer bereits verlorene Geräte zurückgeben.
Wert
Ein Promise, das sich auf ein GPUDeviceLostInfo
-Objekt auflöst, wenn das Gerät verloren geht.
Beispiele
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();
}
});
// …
}
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-lost |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API