- VK_ERROR_DEVICE_LOST običajno pomeni ponastavitev gonilnika ali napako swapchaina.
- Prilagoditve za vsako igro (kot je na primer večplastna zamenjava DXGI) lahko stabilizirajo naslove.
- Nove razširitve (npr. objekti senčil) povečajo tveganje za zajem.
- Natančne različice operacijskega sistema/gonilnik in dnevniki so ključni za reprodukcijo in odpravljanje napak.

Če ste naleteli na sporočilo VK_ERROR_DEVICE_LOST Pri igranju iger ali oblikovanju aplikacij z Vulkanom niste sami: to je pogosta težava, ki se lahko kaže kot sesutje, nepričakovana zaustavitev ali celo zanke, kjer se program ne zapre v celoti. Čeprav je zastrašujoča, običajno obstaja razlaga in, kar je najpomembneje, načini za njeno ublažitev ali rešitev.
V tem priročniku boste našli Primeri iz resničnega življenja v sistemih Windows in Linux, z igrami in orodji, namigi za diagnosticiranje vira, nastavitve, ki so pomagale drugim uporabnikom (na primer posebna nastavitev v nadzorni plošči NVIDIA za Detroit: Become Human z RTX 3080) in Zanesljivi viri za boljše razumevanje VulkanaIdeja je, da ne izgubljate časa s skakanjem z enega foruma na drugi in da imate na prvi pogled rešitve, ki imajo resnične možnosti. Naučimo se vse o napaka VK_ERROR_DEVICE_LOST.
Kaj pomeni VK_ERROR_DEVICE_LOST in zakaj se prikaže?
V Vulkanu napaka VK_ERROR_DEVICE_LOST pomeni, da logična naprava je prenehala delovati: gonilnik grafičnega procesorja ga je znova zagnal, prišlo je do zatikanja gonilnika, prišlo je do TDR-ja zaradi blokade ali časovne omejitve čakalne vrste ali pa je aplikacija poslala nekaj, česar strojna oprema/gonilnik ni mogel obdelati. Ne konča se vedno s sesutjem; včasih, kot bomo videli, aplikacija se zatakne v zanki in jo je treba na silo zapreti.
Čeprav se vzorec razlikuje glede na opremo in programsko opremo, so običajni sprožilci Nestabilni gonilniki, zelo nove razširitve, sloji/prekrivne plasti, časovne omejitve sistema in včasih le nesrečne kombinacije grafičnih nastavitev. Poznavanje nekaterih primerov iz resničnega življenja pomaga pri reprodukciji in reševanju težave.
Resnični primeri: kaj se je zgodilo in kaj je bilo storjeno

Detroit: Become Human na Windowsih, RTX 3080 in odločilna prilagoditev pri NVIDIA
Uporabnik z GeForce RTX 3080 Nenehno sem imel težave z zrušitvami igre zaradi VK_ERROR_DEVICE_LOST, kljub temu da sem počel tipično: Posodobi gonilnike, preizkusi način združljivosti in možnosti pregledaRešitev, ki je delovala zame, je bila, da sem šel na nadzorno ploščo NVIDIA in na ravni programa spremenil določeno nastavitev, povezano z Vulkan/OpenGL.
Pot, oblikovana na drug način, je bila: Nadzorna plošča NVIDIA > Upravljanje nastavitev 3D > Nastavitve programa > izberite Detroit: Become HumanPri možnosti prednastavljene metode Vulkan/OpenGL je bila nastavitev, ki je naredila razliko, nastavitev na "Prednostno po plasteh v DXGI Swapchainu«. S to spremembo, ponavljajoča se zaprtja so izginila povezano z VK_ERROR_DEVICE_LOST.
Ta primer ponazarja, da včasih, prilagoditev združljivosti ali kako se upravlja swapchain Pri plasteh je to lahko ključno, še posebej, če ima naslov določen cevovod upodabljanja ali če obstaja interakcija z drugimi plastmi v sistemu.
Dota 2 na Linuxu: Zankanje in na videz naključna nestabilnost
Drug pomemben primer je tisti, Dota 2 deluje izvorno na LinuxuPrijavljeni vzorec je bil zagoneten: napaka VK_ERROR_DEVICE_LOST se je pojavljala tako med tekmami v realnem času kot med gledanjem posnetkov, včasih preprosto zaradi gledanje pretepa ali celo tipkanje v klepetuNamesto da bi se popolnoma zaprla, je igra ostala v Neskončna zanka in jih je bilo treba ročno "ubiti".
V tej specifični izkušnji ni bilo nobenih prispevkov Brez ID-ja tekme ali posnetkov zaslona (V obeh poljih je bilo navedeno »Brez odgovora«), zaradi česar je težko povezati natančne trenutke. Kljub temu simptom (zamrznitev brez popolnega sesutja) kaže na nepopravljivo stanje naprave z vidika aplikacije. V Linuxu je ta vzorec lahko povezan z gonilnikom, čakalno vrsto za predstavitve in upravljanjem časa ali nekaj interakcije med skladateljem in grafičnim okoljem.
V takih primerih je priporočljivo pregledati sistemski dnevniki (dmesg, journalctl), preverite različice Mesa/NVIDIA glede na grafični procesor in onemogočite sloje tretjih oseb. To so nasveti, ki so sicer splošni, a postanejo pomembni v Vulkan naslov, ki zahteva veliko upodabljanja kot Dota 2.
Nestabilni posnetki zaslona z RenderDoc in VK_EXT_shader_object
Uporaba orodij za risanje doda svoj nabor spremenljivk. Opaženo je bilo Nestabilnosti z RenderDoc pri zajemanju aplikacij, ki uporabljajo razširitev VK_EXT_shader_objectvključno Zrušitve obnovljenega gonilnika, zamrznitve aplikacij in napake zaradi izgube napraveNi presenetljivo: govorimo o nedavni razširitvi in sam po sebi občutljivi situaciji (cepljenje zajemalne plasti v napreden cevovod).
Za dosledno reprodukcijo problema je primer "objekti senčenja» iz skladišča Sascha Willems/VulkanPostopek je bil: Zaženite binarno datoteko shaderobjects.exe v RenderDoc, zajemite okvir in izberite drugi dogodek vkQueueSubmit().. V tistem trenutku, prikazalo se je pogovorno okno s poročilom o napaki orodja.
Poleg tega so bili za zmanjšanje motečih dejavnikov pred zajemom odstranjeni naslednji elementi: Datoteke .bin ki jih generira primer (predpomnilniki senčil), in napaka se je še vedno pojavljala. Specifično okolje je bilo: RenderDoc_2024_07_02_0406d376_64, Windows 10 (10.0.19045.4529), Vulkan 1.3.275, GeForce GTX 1080 y krmilnik 566.12Ti podatki so zelo uporabni, če poročate o podobnih težavah ali jih primerjate.
Zrušitve iger in Steama ter celo modri zasloni
Poročali so tudi o še posebej motečem scenariju: Igra se je pogosto sesuvala, včasih tudi Steam, pojavil pa se je celo BSOD. (modri zaslon). Osnovna dejanja, kot so Posodobi gonilnike, prilagodi kakovost grafike, vsili celozaslonski način, onemogoči prekrivne elemente y omejitev FPS na 60, vendar so se zapore nadaljevale vsakih nekaj minut igre.
Ko so v enačbo vpleteni modri zasloni, je sum nestabilnost na ravni jedra/gonilnika ali v sami strojni opremiČeprav je VK_ERROR_DEVICE_LOST Vulkanova napaka, je v primeru negotovosti glede delovanja celotnega sistema priporočljivo dopolniti z testi pomnilnika, preverjanje diska in termični nadzor da izključimo možnost, da je grafična kartica ali njen napajalnik na meji zmogljivosti.
Možni vzroki: tehnični in vsakdanji

Čeprav je vsak primer edinstven, obstaja več pogostih vzrokov, ki jih je vredno upoštevati. Tukaj je zemljevid, ki vam bo pomagal pri navigaciji. Najpogostejša napaka v VK_ERROR_DEVICE_LOST:
- Nestabilni ali nazadnje delujoči grafični gonilnikiNovejše različice lahko nekatere naslove popravijo, druge pa pokvarijo; zgodi se tudi obratno.
- Nove ali spreminjajoče se razširitve: kot
VK_EXT_shader_object, ki je še v fazi razvoja in lahko z orodji za zajemanje razkrije robne primere. - Časovne omejitve in TDR (Windows): Če opravilo na grafičnem procesorju traja večno, lahko sistem znova zažene gonilnik in logično napravo »izgubi«.
- Prekrivne plasti in slojiInjektorji FPS, klepet, pretakanje ali sledilniki lahko motijo swapchain ali cevovod.
- Posebne konfiguracije swapchainaDoločeni načini predstavitve, časovnega usklajevanja ali sestavljanja lahko povzročijo zrušitve sistema pri določeni strojni opremi/gonilnikih.
- Predpomnilnik senčil je poškodovan ali ni sinhronizirano: brisanje predpomnilnikov (kot so datoteke .bin v primeru) lahko odpravi subtilne nedoslednosti.
- Strojna oprema na robu: Temperature, napetostni sunki ali rahlo previsoko/prenizko napetost lahko povzročijo občasno pojavljanje napake.
Kako diagnosticirati, ne da bi izgubili mir
Preden spremeniš dvajset stvari naenkrat, je bolje slediti vrstnemu redu. Cilj je izolirati dejavnik, ki sproži napako VK_ERROR_DEVICE_LOST. V vašem konkretnem primeru se zanašate na signale, ki jih lahko objektivno izmerite ali reproducirate.
- Reproducirajte hrošča v kratkem zaporedju: določen boj v Dota 2, meni v Detroitu ali isti korak zajemanja v RenderDoc (npr. izbira druge vkQueueSubmit()).
- Upoštevajte različice operacijskega sistema, gonilnikov in grafične kartice.Podatki, kot so Windows 10 Build 19045.4529, GeForce GTX 1080 in gonilnik 566.12, pomagajo pri primerjavi poročil.
- Onemogoči prekrivne sloje in plastiSteam, GeForce Experience, Discord itd. Preverite, ali se vedenje spremeni brez njih.
- Donosnost na "delniške" vrednostiBrez overklokiranja GPU/CPE/RAM-a, s privzetimi omejitvami porabe energije in brez agresivnega podnapetja.
- Ponovno ustvari s sledenjem Samo če je potrebno: Če RenderDoc ali podobna orodja poslabšajo težavo, poskusite brez predhodnega zajemanja.
- Počisti predpomnilnik senčil: tako igra kot gonilnik, če je primerno. Datoteke .bin v primeru to podpirajo.
- Preverite sistemske dnevnikeV Linuxu, dmesg in journalctl; v sistemu Windows, pregledovalnik dogodkov in mini izpisi, če pride do BSOD.
Če med postopkom naletite na korak, ki vedno povzroči napako (kot se je zgodilo z drugim vkQueueSubmit v primeru objektov shaderjev), že imate polovično diagnozo: poskusite spremeni samo eno spremenljivko (gonilnik, nastavitev swapchaina, način predstavitve), da vidite, ali sprožilec izgine.
Praktične rešitve in prilagoditve, ki so se obnesle

Univerzalne čarobne palice ni, obstajajo pa akcije z dobro stopnjo uspešnostiSpodaj je vrsta ukrepov, razvrščenih od najmanj vsiljivih do najbolj vsiljivih.
Igre za Windows (NVIDIA/AMD) in Vulkan
- NVIDIA-jina uglasitev za Detroit: Become HumanV Nadzorni plošči > Upravljanje nastavitev 3D > Nastavitve programa > izberite izvedljivo datoteko igre, poiščite prednastavitev Vulkan/OpenGL in jo nastavite na »Prednostno označevanje plasti v DXGI Swapchain«. To je odpravilo ponavljajoče se sesutje z RTX 3080.
- Omeji FPS in sinhronizacijoVzdrževanje 60 FPS in izključnega celozaslonskega načina lahko stabilizira nekatere gonilnike, čeprav samo po sebi ni vedno dovolj.
- Onemogoči prekrivne elemente: Steam, NVIDIA, Discord itd. Če opazite izboljšanje, jih enega za drugim ponovno uvedite, da ugotovite krivca.
- "Dober voznik"Če se napaka pojavi po posodobitvi, poskusite s prejšnjo stabilno različico; če že nekaj časa niste posodabljali, namestite najnovejšo različico WHQL.
Linux in izvorne igre z Vulkanom (npr. Dota 2)
- Preverite grafični sklad: : Različica Mesa/NVIDIA, primerna za vaše jedro in okolje. Nadgradnja različice lahko odpravi neskončno zanko.
- Preverite skladatelja in oknaPreizkusite z in brez kompozitorja, celozaslonski način v primerjavi z oknom brez roba in prilagodite način predstavitve, če igra to omogoča.
- Podrobnosti dnevnikovDoločite čas sesutja in si oglejte datoteko dmesg/journalctl ob tem času. Zabeležena bo napaka ali ponastavitev grafične kartice.
Orodja za zajemanje in odpravljanje napak (RenderDoc)
- Izogibajte se problematičnim korakomČe izbira določenega dogodka (kot je drugi vkQueueSubmit()) sproži sesutje, omejite analizo na korake pred njim ali po njem.
- Zmanjšajte zmedoPred zajemanjem počistite predpomnilnike senčil (kot so .bin v primeru) in uporabite »čiste« gradnje projekta.
- Posodobi ali spremeni različico: tako RenderDoc kot gonilnik/GPU; z novimi razširitvami lahko novejša različica vsebuje ključne popravke.
Ko se Steam sesuje ali se pojavi BSOD
- celovitost sistema: Izvaja teste pomnilnika, spremlja temperature in preverja napajalnike. VK_ERROR_DEVICE_LOST je lahko viden simptom globlje težave.
- Gonilniki na ravni jedraČisto znova namestite gonilnik grafične kartice. Če se BSOD ne izogne, zberite mini izpise, da natančno določite modul.
Majhne podrobnosti, ki naredijo razliko
Obstajajo na videz manjše prilagoditve, ki v praksi popolnoma spremeni stabilnost določenega naslova. Nastavitev »Prednostno označevanje plasti v DXGI Swapchainu« za Detroit: Become Human je jasen primer. Te vrste možnosti modulirajte interakcijo plasti, swapchaina in gonilnikain lahko zaobide določeno napako.
Druga koristna podrobnost je brisanje predpomnilnika senčil preden izvedete večje spremembe ali analizirate posnetke zaslona, kot je bilo to storjeno z datotekami .bin v primeru objekta shader. To zmanjša nedoslednosti in stara stanja ki se vlečejo med sejami in diagnozami v oblaku.
Končno, ko igra Ne zapre se, ampak ostane v zanki. Po napaki je to znak, da je logična naprava postala neuporabna, ne da bi jo aplikacija v celoti upravljala. V takih primerih jo je vredno preizkusiti. druge izvedbene poti (drugačen zaledni sistem, če obstaja, spremenite način zaslona ali onemogočite napredne funkcije, kot so določene sence ali učinki), da se izognete stanju, ki sproži sesutje.
Viri za razumevanje Vulkana (in boljše odpravljanje napak)
Če se boste naučili več o Vulkanu, boste lažje interpretirali napake, kot je VK_ERROR_DEVICE_LOST, ne da bi se pri tem spuščali v zadrego. En član skupnosti je priporočil uradne vire Khronosa s pristopi, prijaznimi za začetnike, in skrbno izbranimi seznami. So dobra osnova ne glede na to, ali programirate ali želite le razumeti, kaj se dogaja.
- Vodnik za začetnike po Vulkanu (Khronos): Zbirka uvodnih virov, ki vam bodo pomagali začeti in razumeti filozofijo API-ja.
- Viri Khronos Vulkan na GitHubu: seznam označuje, da so bili viri premaknjeni na vulkan.org, kjer boste našli posodobljeno dokumentacijo.
Če ne veste, kje začeti, Ti vodniki vam bodo prihranili poskuse in napake neurejeno in vam bo dalo merila za reševanje težav, kot so izguba naprave, časovne omejitve, težave s sinhronizacijo in drugo.
Signali skupnosti: interakcija in komentarji
Poleg podrobnih poročil so bila še lahke interakcije, kot je »všeč mi je« v komentarju in pogovorih, kjer so jih vprašali učni viriČeprav se zdijo kot manjše podrobnosti, odražajo, da je tema živ in deljenin da se številne rešitve rodijo iz vsote izkušenj.
Hiter kontrolni seznam za vaš primer
Če se vam to dogaja prav zdaj, poskusite s tem. kratek seznam pregledov, navdihnjen s prejšnjimi primeri:
- Posodobi ali povrni prejšnjo različico gonilnikaČe ste pravkar posodobili in je začelo delovati, poskusite s prejšnjo stabilno različico; če niste posodobili že več mesecev, namestite najnovejšo WHQL.
- Onemogoči prekrivne elementeSteam, Discord, GeForce Experience itd. in preverite, ali se pogostost napake spreminja.
- NVIDIA prilagajanje glede na igroV igri Detroit: Become Human je nastavitev prednastavitve Vulkan/OpenGL na »Prednost plasti v DXGI Swapchainu« odpravila zrušitve.
- Način zaslona in FPS: Vsili izključno celozaslonski način in zmerno omeji FPS za stabilizacijo čakalnih vrst upodabljanja.
- Počisti predpomnilnike senčil: Izbriše datoteke predpomnilnika igre in, če je primerno, gonilnik.
- Sistemski dnevniki: dmesg/journalctl v Linuxu ali pregledovalnik dogodkov v sistemu Windows za zaznavanje ponastavitev ali napak gonilnikov.
Kdaj poročati in kaj vključiti
Če težava kljub vsemu vztraja, jo prijavite natančne informacije Pospešite pomoč. Izogibajte se odgovorom »Ni odgovorov« v ključnih poljih: vključite ID igre in časovni žig Če gre za igro s ponovitvami, priložite posnetki zaslona ali dnevniki kadar je to mogoče.
Ne pozabite dodati popolno tehnično okoljeRazličica operacijskega sistema (npr. Windows 10, gradnja 19045.4529), Natančen grafični procesor (GeForce GTX 1080, RTX 3080), različica gonilnika (kot je 566.12) in ali uporabljate orodja, kot so RenderDoc, njegova konkretna različica (npr. RenderDoc_2024_07_02_0406d376_64). Reprodukcija teh podatkov je izjemno dragocena.
Pogosto zastavljena vprašanja
Zakaj se igra ne sesuje in se po napaki samo ponavlja? Ker aplikacija preide v stanje, ko je logična naprava izgubljena, vendar izhodna logika ni v celoti izvedena. V praksi, Zaprtje moraš prisiliti k in preverite, kateri dogodek ali nastavitev sproži to stanje.
Ali pomaga brisanje predpomnilnika senčil? V več scenarijih da, še posebej, če obstajajo neskladja med gradnjami in predpomnilniki (kot datoteke .bin v primeru objektov senčil). To je hiter način za zavrženje poškodovanih stanj.
Ali naj zajamem z RenderDoc, če sumim na gonilnik? Zajem lahko pomagajte razumeti cevovod, lahko pa povzroči tudi nestabilnost, če je razširitev ali gonilnik zelen. Najprej preizkusite brez zajemanja, če pa že zajemate, to storite z različicami orodja. da veš, da je stabilno za vaš primer.
Ali lahko prekrivni elementi povzročijo VK_ERROR_DEVICE_LOST? Da, včasih vbrizgane plasti motijo swapchain ali s sinhronizacijo. Onemogočanje le-teh je eden prvih testov, ki jih je treba izvesti.
Kaj pa, če se BSOD pojavi tudi v sistemu Windows? To nakazuje težave na ravni jedra/gonilnika ali strojne opremePoleg Vulkanovih korakov izvaja tudi teste pomnilnika, preverja temperature, pregleduje napajalnik in analizira mini izpise podatkov, da bi našel okvarjen modul.
Imate jasen načrt: Prepoznajte vzorec, izolirajte sprožilec in uporabite prilagoditve z dokazano učinkovitostjoOd prednastavljene spremembe v nadzorni plošči NVIDIA, ki je shranjevala igre v igri Detroit: Become Human na grafični kartici RTX 3080, do smernic za zajemanje RenderDoc in dnevnikov spremljanja v Linuxu za Dota 2, obstajajo konkretne rešitve, ki močno zmanjšajo zrušitve tipa VK_ERROR_DEVICE_LOST. Če se za razumevanje osnov Vulkana zanašate tudi na vire Khronos, vsak poskus bo natančnejši in manj časa boste porabili za slepe teste.
Navdušen nad tehnologijo že od malih nog. Všeč mi je, da sem na tekočem v sektorju in predvsem to komuniciram. Zato se že vrsto let posvečam komunikaciji na spletnih mestih o tehnologiji in video igrah. Najdete me, da pišem o sistemih Android, Windows, MacOS, iOS, Nintendo ali kateri koli drugi sorodni temi, ki vam pride na misel.