Произошла ошибка потери устройства vulkan

Сабж.

modest11111
  

5157



modest11111

Instr
  

6



Instr

modest11111
  

5157



modest11111

atkinson
  

87



atkinson

atkinson
  

87



atkinson

RangeMachine
  

106



RangeMachine

atkinson
  

87



atkinson

modest11111
  

5157



modest11111

Curl64
  

347



Curl64

Каратель
  

122



Каратель

Mishkannvip
  

1237



Mishkann

atkinson
  

87



atkinson

Mishkannvip
  

1237



Mishkann

atkinson
  

87



atkinson

Mishkannvip
  

1237



Mishkann

modest11111
  

5157



modest11111

DirtySanta
  

0



DirtySanta

dzies
  

674



dzies

modest11111
  

5157



modest11111

StormOnline
  

0



StormOnline

Oceanair
  

394



Oceanair

vov4ik59
  

0



vov4ik59

maestro74
  

0



maestro74

ArteKS
  

3



ArteKS

Join the conversation

You can post now and register later.

If you have an account, sign in now to post with your account.

Note: Your post will require moderator approval before it will be visible.

I try to figure it out, how to use the ray tracing. What I have is a rasterizer drawed Triangle (most the same as shown by Vulkan tutorials, but refactored into my own code and utility functions). The recreation of the swapchain due window resizing/minimizing etc. works correctly.

Then I have added the creation of a bottom acceleration structure. And since then I get some Device Lost errors, but not always… Here a skeleton of my code:

mainLoop:
- acquireNextImage
- renderWorld
- render gui
- present

acquireNextImage:
- signaling a semaphore "Image Available"

render gui:
- wait for fence "Gui"
- begin command buffer (use graphics queue)
- begin render pass
- bind pipeline (graphics)
- set viewport
- set scissor
- draw (2 triangles in my GUI yet)
- end render pass
- end command buffer
- reset fence "Gui"
- submit command buffer (waiting for semaphore "Image Available", signaling semaphore "Rendering Done", checking fence "Gui")

present:
- queue present (waiting for semaphore "Rendering Done")

renderWorld:
(actually this does not render anything yet, it just creates a vertex buffer, an index buffer, and creates the bottom acceleration strucutre for it - and caches it for further frames, so this code runs only once at start!)
- == vertexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == indexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == bottom acceleration structure ==
- get acceleration structure build sizes info
- create buffer (acceleration structure storage, shader device address)
- create acceleration structure (bottom level)
- create buffer (acceleration structure storage, shader device address) (this is my scratch buffer)
- wait for fence "BuildAcc"
- begin command buffer (use dedicated compute queue)
- pipeline barrier (transfer write -> acceleration structure write), don't know if I need it here
- build acceleration structures
- pipeline barrier (acceleration structure write -> shader read), don't know if I need it here
- end command buffer
- reset fence "BuildAcc"
- submit command buffer (checking fence "BuildAcc")
- wait queue idle                                      <------- here device lost
- destroy scratch buffer

So, if I comment out «renderWorld», all works fine. If I let renderWorld be in, then I get a device lost (see the last «wait queue idle» line). But not every time I run the program.

If I put a breakpoint on the «wait queue idle» line, and after the program stops at this line, I can continue the program and all is fine. Also if I comment out the «build acceleration structures» command, all is working (except ofcourse there is no acc structure, but there is no device lost).

So I don’t know, where the problem is. In my opinion, I need to synchronize something somehow, because with the break point I can run it and it works. So the code must be OK as I understand it.

There is also no validation error except missing shader bindings, but because I do not use them yet (I dont ray trace render yet), I should not be a problem.

After the device lost, the other semaphores are not reset and also my gui render path is not working anymore.

Can somebody tell me, if I missed a synchronisation somewhere? I how I can add it? I dont have copied by whole code here, because it would be tons of code :D Vulkan is very codddddddddy. But if you need some peace of code, then ask for it, and I can paste it here.

I try to figure it out, how to use the ray tracing. What I have is a rasterizer drawed Triangle (most the same as shown by Vulkan tutorials, but refactored into my own code and utility functions). The recreation of the swapchain due window resizing/minimizing etc. works correctly.

Then I have added the creation of a bottom acceleration structure. And since then I get some Device Lost errors, but not always… Here a skeleton of my code:

mainLoop:
- acquireNextImage
- renderWorld
- render gui
- present

acquireNextImage:
- signaling a semaphore "Image Available"

render gui:
- wait for fence "Gui"
- begin command buffer (use graphics queue)
- begin render pass
- bind pipeline (graphics)
- set viewport
- set scissor
- draw (2 triangles in my GUI yet)
- end render pass
- end command buffer
- reset fence "Gui"
- submit command buffer (waiting for semaphore "Image Available", signaling semaphore "Rendering Done", checking fence "Gui")

present:
- queue present (waiting for semaphore "Rendering Done")

renderWorld:
(actually this does not render anything yet, it just creates a vertex buffer, an index buffer, and creates the bottom acceleration strucutre for it - and caches it for further frames, so this code runs only once at start!)
- == vertexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == indexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == bottom acceleration structure ==
- get acceleration structure build sizes info
- create buffer (acceleration structure storage, shader device address)
- create acceleration structure (bottom level)
- create buffer (acceleration structure storage, shader device address) (this is my scratch buffer)
- wait for fence "BuildAcc"
- begin command buffer (use dedicated compute queue)
- pipeline barrier (transfer write -> acceleration structure write), don't know if I need it here
- build acceleration structures
- pipeline barrier (acceleration structure write -> shader read), don't know if I need it here
- end command buffer
- reset fence "BuildAcc"
- submit command buffer (checking fence "BuildAcc")
- wait queue idle                                      <------- here device lost
- destroy scratch buffer

So, if I comment out «renderWorld», all works fine. If I let renderWorld be in, then I get a device lost (see the last «wait queue idle» line). But not every time I run the program.

If I put a breakpoint on the «wait queue idle» line, and after the program stops at this line, I can continue the program and all is fine. Also if I comment out the «build acceleration structures» command, all is working (except ofcourse there is no acc structure, but there is no device lost).

So I don’t know, where the problem is. In my opinion, I need to synchronize something somehow, because with the break point I can run it and it works. So the code must be OK as I understand it.

There is also no validation error except missing shader bindings, but because I do not use them yet (I dont ray trace render yet), I should not be a problem.

After the device lost, the other semaphores are not reset and also my gui render path is not working anymore.

Can somebody tell me, if I missed a synchronisation somewhere? I how I can add it? I dont have copied by whole code here, because it would be tons of code :D Vulkan is very codddddddddy. But if you need some peace of code, then ask for it, and I can paste it here.

Многие популярные игры используют технологию Vulkan API для обработки графики и вывод ее на экран монитора в процессе игры. К таким играм, например, относится DOOM4, Wolfenstein II: The New Colossus и другие. Нередко пользователи могут столкнуться с проблемой запуска самой игры, в результате чего на экране отображается сообщение об ошибке. В сообщении сказано, что файл vulkan-1.dll не найден и игра, естественно, не запускается.

Для правильной работы игр, которые используют Vulkan API, требуется сначала установить или обновить драйвер видеокарты. Современные видеоадаптеры от NVidia и AMD полностью поддерживают технологию Vulkan, что нельзя сказать о видеокартах, выпущенных до 2016 года. Именно на компьютерах, где установлены такие видеокарты и возникают проблемы с компонентом графического драйвера vulkan-1.dll.

Самый простой и правильный способ избавиться от ошибки запуска игры – это обновить драйвер на видеокарту.

Для загрузки видеодрайвера потребуется пройти на сайт разработчика программного обеспечения — Khronos. На сайте требуется выбрать производителя видеокарты. Далее следует выбрать операционную систему вашего компьютера и выбрать из списка модель видеокарты. К сожалению не все видеокарты могут работать с новой технологией, поэтому если вы не находите в списке свою видеокарту, то возможно, вы не сможете запустить такую игру. По крайней мере, загрузите и установите с сайта производителя графического адаптера актуальную версию драйверов.

После установки драйвера обязательно перезагрузите компьютер.

Следующим этапом будет, если ошибка осталась, попытаться найти сам файл vulkan-1.dll в интернете и зарегистрировать его в системе.

Зайдите на сайт dll-files.com, который специализируется на поиске файлов динамических библиотек (DLL). Вводим в поисковый запрос имя файла: «vulkan-1.dll» и выполняем поиск. Переходим на страницу с результатом поиска и нажимаем кнопку Download, чтобы скачать файл dll к себе на компьютер.

Скачанный файл следует поместить в системную папку System32 (или SysWOW64, если у вас Windows имеет разрядность 64 бит). Можете скопировать файл в обе папки, ничего страшного не произойдет. Указанные системные папки находятся на системном диске (как правило – это диск С) в папке Windows. После чего попробуйте снова запустить игру.

Может появиться в этот раз другая ошибка, что компонент vulkan-1.dll не зарегистрирован в системе.

В таком случае проводим регистрацию файла:

1. Вызываем окно Выполнить, нажав на клавиатуре Win+R;
2. Вводим такую команду для 64-битных систем:
%windir%SysWoW64
egsvr32.exe %windir%SysWoW64vulkan-1.dll

Для Windows x86 (32-бит) вводим такую команду:

%systemroot%System32
egsvr32.exe %windir%System32vulkan-1.dll

Возможно, потребуется перезагрузить компьютер.

Также не помешает повторно установить компонент DirectX, установщик которого можно скачать ан официальном сайте Microsoft.

Если проблема осталась, а у вас на компьютере или ноутбуке имеется две видеокарты (встроенная и дискретная), попробуйте в BIOS отключить интегрированную видеокарту или, наоборот, отключить дискретную, а запустить игру через интегрированную. Для этого может понадобиться подключить монитор к другому разъему системного блока. При этом будьте готовы к тому, что игра через интегрированную видеокарту будет работать заметно медленней, так как у интегрированного видео обычно более низкая производительность, по сравнению с дискретными видеокартами. Но из-за того, что она может быть встроена в процессор или быть другой фирмы, вероятность запуска игр с поддержкой Vulkan API повышается.

Напоследок, когда ни один из способов не привел к положительному эффекту, нужно посетить сайт разработчика самой игры. Дело в том, что возможные проблемы с игрой могут быть описаны в отдельном разделе Вопросы и ответы (FAQ), Поддержка и т.п. Здесь могут быть указаны рекомендации по устранению возможных ошибок запуска игры.

Кстати, очень распространенная причина появления ошибок – это скачивание игр из непроверенных источников, пиратских сайтов и т.п. Приобретение или загрузка лицензионной игры во многих случаях позволит избавить геймера от «головной боли» и сразу наслаждаться игрой.

Загрузка…

Hey! I keep getting this bug where the game crash after i afk and have the game minimized.

Steps to reproduce:
Minimize game
afk 5 or 10+ minutes
tab back to game and get black poe window and crash

This is what it sais in client.txt
2021/01/30 06:12:58 18285359 31cb [CRIT Client 1944] [VULKAN] vk::DeviceLostError::DeviceLostError: vk::Queue::submit

It only happens it seems if i minimize the game to the taskbar if i keep it in the background it’s fine.

Last edited by JoJoAnd on Jan 30, 2021, 8:25:44 AM

Last bumped on Feb 8, 2021, 5:01:17 PM

Avatar

Posted by
JoJoAnd
on Jan 30, 2021, 8:25:06 AM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

Hey, I am also having the same issue, hoping there is a fix for it!

Avatar

Posted by
shayrevitt
on Feb 4, 2021, 9:17:50 AM

Doomguard Supporter

Blood Guardian Supporter

Quote this Post

I get the same message in my client log files when game crashes to desktop, has nothing to do with me being afk or minimizing the window though. Game for me just shutsdown in the middle of maps etc. I’m playing windowed fullscreen

Avatar

Posted by
eunn123
on Feb 4, 2021, 5:14:58 PM

Quote this Post

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

Avatar

Posted by
Nichelle_GGG
on Feb 5, 2021, 4:19:30 PM

Grinding Gear Games

Quote this Post

«

Nichelle_GGG wrote:

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

It doesn’t seem to happen when i switch to directx11, though i don’t really want to go back to dx11 when vulcan gives me better performance whilst playing.

Last edited by JoJoAnd on Feb 6, 2021, 9:47:29 PM

Avatar

Posted by
JoJoAnd
on Feb 6, 2021, 9:46:36 PM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

«

JoJoAnd wrote:

«

Nichelle_GGG wrote:

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

It doesn’t seem to happen when i switch to directx11, though i don’t really want to go back to dx11 when vulcan gives me better performance whilst playing.

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

Avatar

Posted by
Nichelle_GGG
on Feb 7, 2021, 3:58:32 PM

Grinding Gear Games

Quote this Post

«

Nichelle_GGG wrote:

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

I’ve sent a dxdiag now

Avatar

Posted by
JoJoAnd
on Feb 8, 2021, 2:38:59 PM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

«

JoJoAnd wrote:

«

Nichelle_GGG wrote:

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

I’ve sent a dxdiag now

Thanks! We’ll be sure to get back to you as soon as possible!

Avatar

Posted by
Nichelle_GGG
on Feb 8, 2021, 5:01:17 PM

Grinding Gear Games

Quote this Post

Report Forum Post

Hey! I keep getting this bug where the game crash after i afk and have the game minimized.

Steps to reproduce:
Minimize game
afk 5 or 10+ minutes
tab back to game and get black poe window and crash

This is what it sais in client.txt
2021/01/30 06:12:58 18285359 31cb [CRIT Client 1944] [VULKAN] vk::DeviceLostError::DeviceLostError: vk::Queue::submit

It only happens it seems if i minimize the game to the taskbar if i keep it in the background it’s fine.

Last edited by JoJoAnd on Jan 30, 2021, 8:25:44 AM

Last bumped on Feb 8, 2021, 5:01:17 PM

Avatar

Posted by
JoJoAnd
on Jan 30, 2021, 8:25:06 AM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

Hey, I am also having the same issue, hoping there is a fix for it!

Avatar

Posted by
shayrevitt
on Feb 4, 2021, 9:17:50 AM

Doomguard Supporter

Blood Guardian Supporter

Quote this Post

I get the same message in my client log files when game crashes to desktop, has nothing to do with me being afk or minimizing the window though. Game for me just shutsdown in the middle of maps etc. I’m playing windowed fullscreen

Avatar

Posted by
eunn123
on Feb 4, 2021, 5:14:58 PM

Quote this Post

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

Avatar

Posted by
Nichelle_GGG
on Feb 5, 2021, 4:19:30 PM

Grinding Gear Games

Quote this Post

«

Nichelle_GGG wrote:

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

It doesn’t seem to happen when i switch to directx11, though i don’t really want to go back to dx11 when vulcan gives me better performance whilst playing.

Last edited by JoJoAnd on Feb 6, 2021, 9:47:29 PM

Avatar

Posted by
JoJoAnd
on Feb 6, 2021, 9:46:36 PM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

«

JoJoAnd wrote:

«

Nichelle_GGG wrote:

HI Exiles,

Are you able to let us know if this error/issue occurs when switching to the DirectX11 renderer? You should be able to do this via the Graphics tab in the Options menu.

It doesn’t seem to happen when i switch to directx11, though i don’t really want to go back to dx11 when vulcan gives me better performance whilst playing.

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

Avatar

Posted by
Nichelle_GGG
on Feb 7, 2021, 3:58:32 PM

Grinding Gear Games

Quote this Post

«

Nichelle_GGG wrote:

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

I’ve sent a dxdiag now

Avatar

Posted by
JoJoAnd
on Feb 8, 2021, 2:38:59 PM

Redeemer Supporter

Abyssal Imp Supporter

High Council Supporter

Doomguard Supporter

Master Undertaker Supporter

Bane Lich Supporter

Esteemed Arcanist Supporter

Quote this Post

«

JoJoAnd wrote:

«

Nichelle_GGG wrote:

Hiya,

Unfortunately Vulkan is still in Beta so this may simply be something which needs to be reviewed and adjusted, if you’re able to play on DirectX11 in the meantime that’s at least a start.

Are you able to provide us with a Dxdiag report at all? To generate a Dxdiag report, please follow these steps:

Press the windows key + r on your keyboard to bring up the Run interface
Type dxdiag into the run dialogue box and press enter
When the dxdiag application starts up, press the Save All Information button in the bottom right and save the report to your desktop to either email through to us at techsupport@grindinggear.com or post via a pastebin link in your forum thread.

I’ve sent a dxdiag now

Thanks! We’ll be sure to get back to you as soon as possible!

Avatar

Posted by
Nichelle_GGG
on Feb 8, 2021, 5:01:17 PM

Grinding Gear Games

Quote this Post

Report Forum Post

Добрый день! Недавно отписывался в соседней ветке по обсуждению 12 плейна о проблемах в ВР Пост. Думаю в этой ветке будет уместнее писать о проблемах.

Возможно мой пост будет полезен в дальнейшем ковырянии сима и поисках лучших решений. 

Пытаюсь разобраться и добиться стабильной работы VR в 12 плейне, но в релизной версии столкнулся со сбоями, начиная от запуска в ангаре и затемненным главным меню и заканчивая мелкими фризами на разных стадиях полета.

Что удалось выяснить на сегодня:

1) Последняя версия Зибо 2.2 все-таки запустилась в ВР, не без танцев с бубнами, но до кабины добрался, уже хорошо :dance4: (Спасибо коллеге по цеху vinnitsa2a за напоминалку о необходимости обновиться).

2) При полете в VR 12 плейн очень любит кушать память видеокарты, на моей 3070ti все 8ГБ памяти кушает на все 100% примерно через пару минут нахождения в виртуальной реальности, после чего на максимальных настройках начинаются фризы, а потом текстуры плывут, как в кислотном фиолетовом мире. О похожих проблемах писали выше на картах 900 серии. 

3) При прочих равных в 11 плейне такого в помине не было на тех же максималках на любых джетах и всех примочках (Энвиру не юзал). Можно сказать что видеокарту особо вообще не грузило, как то равномерно ложилась нагрузка на все компоненты железа. Вообще странно, на фоне сообщений коллег по цеху о том, что 12 в плане фпс более оптимизирован. Возможно, на 4к мониторе  действительно просто фантастика, не спорю.

4) Логично пришлось понижать рендеринг для достижения каких то результатов, в итоге на средних настройках только рендеринга некая стабильность была получена, полет UUEE — ULLI прошел практически отлично, зафризило только планшет самого зибо, который покрылся малиновыми текстурами :frusty:, но понижать рендеринг еще это уже убийство для ВР и для глаз….

5) К слову о глазах, в 12 какая то прям очень яркая что ли засветка неба, но прям некомфортно было лезть на эшелон, а может это как раз снижение резкости за счет рендеринга.

В общем промежуточный итог: Похоже для комфортного полета в VR на сегодня необходимо более мощное железо, и как показал первичный диагноз, сим уперся в видеокарту, однако.

ЗЫ: Продолжаю наблюдение.


Edited December 26, 2022 by Kirill_Khokhlov

Я пытаюсь разобраться, как использовать трассировку лучей. У меня есть нарисованный растеризатором треугольник (почти такой же, как показано в руководствах по Vulkan, но переработанный в мой собственный код и служебные функции). Воссоздание свопчейна из-за изменения размера / минимизации окна и т. Д. Работает правильно.

Затем я добавил создание структуры ускорения дна. И с тех пор я получаю некоторые ошибки Device Lost, но не всегда … Вот скелет моего кода:

mainLoop:
- acquireNextImage
- renderWorld
- render gui
- present

acquireNextImage:
- signaling a semaphore "Image Available"

render gui:
- wait for fence "Gui"
- begin command buffer (use graphics queue)
- begin render pass
- bind pipeline (graphics)
- set viewport
- set scissor
- draw (2 triangles in my GUI yet)
- end render pass
- end command buffer
- reset fence "Gui"
- submit command buffer (waiting for semaphore "Image Available", signaling semaphore "Rendering Done", checking fence "Gui")

present:
- queue present (waiting for semaphore "Rendering Done")

renderWorld:
(actually this does not render anything yet, it just creates a vertex buffer, an index buffer, and creates the bottom acceleration strucutre for it - and caches it for further frames, so this code runs only once at start!)
- == vertexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == indexbuffer ==
- create buffer (usage transfer dst)
- get buffer memory requirements
- allocate memory (device local)
- bind buffer memory
- create buffer (usage transfer src) (this is my staging buffer)
- get buffer memory requirements
- allocate memory (host visible, host coherent) (this is my staging memory)
- bind buffer memory
- wait for fence "Transfer"
- begin command buffer (use dedicated transfer queue)
- copy buffer
- end command buffer
- reset fence "Transfer"
- submit command buffer (checking fence "Transfer")
- wait queue idle
- free stating memory
- destroy staging buffer
- == bottom acceleration structure ==
- get acceleration structure build sizes info
- create buffer (acceleration structure storage, shader device address)
- create acceleration structure (bottom level)
- create buffer (acceleration structure storage, shader device address) (this is my scratch buffer)
- wait for fence "BuildAcc"
- begin command buffer (use dedicated compute queue)
- pipeline barrier (transfer write -> acceleration structure write), don't know if I need it here
- build acceleration structures
- pipeline barrier (acceleration structure write -> shader read), don't know if I need it here
- end command buffer
- reset fence "BuildAcc"
- submit command buffer (checking fence "BuildAcc")
- wait queue idle                                      <------- here device lost
- destroy scratch buffer

Итак, если я закомментирую «renderWorld», все будет нормально. Если я оставлю renderWorld, я потеряю устройство (см. Последнюю строку «очередь ожидания простаивает»). Но не каждый раз запускаю программу.

Если я поставлю точку останова в строке «очередь ожидания простаивает» и после того, как программа остановится на этой строке, я могу продолжить программу, и все будет хорошо. Также, если я закомментирую команду «построить структуры ускорения», все работает (за исключением, конечно, структуры acc, но нет потерянного устройства).

Так что я не знаю, в чем проблема. На мой взгляд, мне нужно как-то синхронизировать что-то, потому что с точкой останова я могу это запустить, и это работает. Так что код должен быть в порядке, насколько я понимаю.

Также нет ошибок проверки, за исключением отсутствия привязок шейдеров, но поскольку я их еще не использую (пока не выполняю рендеринг трассировки лучей), проблем быть не должно.

После потери устройства другие семафоры не сбрасываются, а также мой путь рендеринга графического интерфейса больше не работает.

Может кто подскажет, если где-то пропустил синхронизацию? Как я могу это добавить? Я не копировал здесь весь код, потому что это были бы тонны кода: D Vulkan очень codddddddddy. Но если вам нужно немного кода, попросите его, и я могу вставить его сюда.

2 ответа

Лучший ответ

Я нашел проблему! Это был правильный намек и швы, чтобы быть той же проблемой, что и моя:

Submitting command buffer to compute queue for BLAS creation fails, but only sometimes. from vulkan

Поэтому я не выделял память для своего буфера ускорения, вот это:

- == bottom acceleration structure ==
- get acceleration structure build sizes info
- create buffer (acceleration structure storage, shader device address) <---- no memory

Прежде чем я заметил сообщение на Reddit, я уже выделил память для моего рабочего буфера, потому что я думал, что он нужен, потому что я получаю от него адрес устройства. Но где-то в Интернете я прочитал о буфере структуры ускорения, который не требует выделения памяти и что это делается за кулисами. Но это не так :)

Итак, теперь мой код работает, и я могу продолжить изучение и построение структуры ускорения верхнего уровня :)


0

buildhome.eu
28 Июн 2021 в 19:12

Что я сделал за это время:

  • перестроить весь код инициализации vulkan (теперь я использую .hpp вместо .h, что приводит к некоторым приятным проверкам типов во время компиляции)
  • все, каждая строка набирается заново вручную (без копипаста), проблема остается
  • Я закомментировал рендеринг растеризатора -> нет проблем (но проблема возникает в acquNextImage и присутствует, поэтому мне нужен растеризатор, чтобы решить проблему)
  • если я закомментирую построение структуры ускорения -> без проблем
  • если я поставлю точку останова после (!) построения структуры acc, но в синхронизированной области (растеризатор не может работать в этой точке и должен ждать на стороне процессора) -> нет проблем

Мой вывод: мне не хватает некоторой синхронизации между построением Acc Structure и растеризацией. Не знаю, где мне это не хватает, потому что использую разные:

  • семейства очередей (растеризатор использует семейство очередей графики 0, семейство очередей вычислений структуры acc 1)
  • разные семафоры (у acc builder и rasterizer свои семафоры и заборы)
  • Буфер акк пока не использую, только создаю.

Я не знаю, что там происходит. Почему все в порядке, если я ставлю паузу с точкой останова? Потому что, если параметр будет неправильным, у меня возникнут те же проблемы с точкой останова, не так ли? Насколько я понимаю, с синхронизацией что-то не так. Но проблема также в том, что AcquireNextImage завершается с ошибкой DeviceLost. А это может быть неправильный параметр, указатель вне диапазона и т. Д.

Я собираюсь исследовать глубже … ^^


0

buildhome.eu
28 Июн 2021 в 01:29

Итак, последние версии драйверов Nvidia, а именно версии 522.25, 522.30, 526.47, а также 526.61 Hotfix приводят к вылетам (безо всяких объяснений причин) в первые минуты игрового процесса в вышеупомянутой игре на API Vulkan. На DX11 играть тоже невозможно в связи с плохой производительностью игры на этом API (именно с вышеуказанными версиями драйверов), сопровождаемой постоянными фризами и низким FPS. Я проверил более 20 тайлов, в том числе и относительно недавно вышедшие, однако в них такого рода проблем не обнаружил. Откат на версию драйвера под номером 517.48 решает этот вопрос в Ghost recon: Vulkan больше не вылетает, а в DX11 нормализуется производительность.

Если кого-либо не затруднит, то не могли бы вы подтвердить наличие данной проблемы на ваших системах в данной игре. В свою очередь моя система выглядит следующим образом:

Процессор: Ryzen 5 5600X

Видеокарта: GeForce RTX 3060 Ti GAMING Z TRIO 8G

Оперативная память: G.SKILL TRIDENT Z NEO 16GB (2x8GB kit) 3600MHz на 14-ых таймингах.

Материнская плата: Asus ROG CROSSHAIR VIII DARK HERO

Блок питания: Seasonic FOCUS Plus SSR-750PX (80 PLUS PLATINUM)

Буду благодарен, если кто откликнется.

Понравилась статья? Поделить с друзьями:
  • Произошла ошибка при попытке подписать данные на выбранном сертификате
  • Произошла ошибка при освобождении интерфейса loopback pseudo interface 1 не удалось найти указанный
  • Произошла ошибка попробуйте через 24 часа ggnetwork
  • Произошла ошибка при попытке подключения к серверу hyper v убедитесь что служба управления
  • Произошла ошибка при освобождении интерфейса ethernet сервер rpc недоступен