@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
3 lines (2 loc) • 1.51 kB
JavaScript
import{aE as e,aF as r,T as a,o as i,aG as t,aH as n,aI as s}from"./index-B8IgtevW.esm.min.js";async function o(o,u,f){const d=new Map;for(const e of f)d.set(e._kind,e);const g=null!==o._renderFn;e(o),r(o);const _=await c("requesting a replacement adapter",()=>navigator.gpu.requestAdapter({powerPreference:"high-performance"}));_||a(43);const m=u._requiredFeatures.filter(e=>!_.features.has(e));m.length&&a(44,m.join(", ")),o._device=await c("requesting a replacement device",()=>_.requestDevice({requiredFeatures:u._requiredFeatures,requiredLimits:{...o._options?.requiredLimits,...o._storageRequiredLimits}})),await c("rebuilding engine storage buffers",()=>o._rebuildStorageBuffers?.()),await c("reconfiguring rendering surfaces",()=>{for(const e of o.surfaces){const r=e._swapchainCopySrc?i.RENDER_ATTACHMENT|i.COPY_SRC:i.RENDER_ATTACHMENT;e._context.configure({device:o._device,format:e._configureFormat,alphaMode:e._alphaMode,usage:r,viewFormats:[e.format]}),t(e)}}),await c("resizing rendering surfaces",()=>n(o));const p=Array.from(d.values()).sort((e,r)=>(e._recoverOrder??0)-(r._recoverOrder??0));for(const e of p)await c(`running "${e._kind}" recovery`,()=>e._recover(o));g&&await c("restarting rendering",()=>s(o))}async function c(e,r){try{return await r()}catch(r){const a=r instanceof Error?r.message:String(r);throw new Error(`Device-lost recovery failed while ${e}: ${a}`,{cause:r})}}export{o as runDeviceLostRecovery};
//# sourceMappingURL=device-lost-recovery-run-yo28fUiH.esm.min.js.map