Войти
ПрограммированиеФорумГрафика

Vulkan API (вышел!) (493 стр)

Страницы: 1489 490 491 492 493 494 Следующая »
#7380
(Правка: 18:21) 18:16, 17 окт. 2020
vkDeviceWaitIdle(device);
Вешает программу!
Покажите пример корректного использования этой функции!

Понимаю что оно ждет Все созданные очереди как и пишут про него в спецификации.
https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/… WaitIdle.html

vkDeviceWaitIdle is equivalent to calling vkQueueWaitIdle for all queues owned by device.

vkDeviceWaitIdle стоит ли вообще использовать и если да то в каких случаях?
Если используете "когда-нибудь" тогда опять же покажите как Правильно чтобы Не зависать...


#7381
18:21, 17 окт. 2020

Redee
> и если да то в каких случаях?

для жёсткой отладки было

#7382
6:00, 18 окт. 2020

Redee
> Вешает программу!
Это значит у тебя ошибка в самой программе. Не должна она ничего вешать.
Внутри игрового цикла используется (заметно просаживая фпс)  только в случае если не хватает знаний сделать нормальную синхронизацию.
Использовать стоит перед выходом из программы, перед очисткой ресурсов. Но никак не внутри игрового цикла.

#7383
8:42, 18 окт. 2020

MikeNew
> Не должна она ничего вешать.

у мну такое было на каком-то кривом драйвере

#7384
12:04, 18 окт. 2020

Redee
> vkDeviceWaitIdle стоит ли вообще использовать и если да то в каких случаях?
vkDeviceWaitIdle - его можно использовать для грубой синхронизации CPU-GPU во время разработки, если есть подозрения, что синхронизация сделана неправильно. В продакшене его оставлять нет смысла, может при каком-нибудь удалении устройства, подождать, что точно все доработало.

#7385
12:25, 18 окт. 2020

HolyDel
> его можно использовать для грубой синхронизации CPU-GPU во время разработки,
> если есть подозрения, что синхронизация сделана неправильно
так и было - никак не мог поймать рендердоком баг, поставил deviceidle сразу починилось :)

#7386
(Правка: 16:53) 16:53, 18 окт. 2020

MikeNew
> Использовать стоит перед выходом из программы, перед очисткой ресурсов. Но
> никак не внутри игрового цикла.
Именно так и делаю.
Вон у innuendo тоже такое было!
Драйвер более менее "свежий"... Попробую обновиться...

Screenshot_1 | Vulkan API (вышел!)

#7387
16:56, 18 окт. 2020

Redee
про интел не знаю, у меня было на amd+Win8

#7388
16:59, 18 окт. 2020

Сейчас вот так >>

Screenshot_2 | Vulkan API (вышел!)

Пробуем.......

#7389
17:03, 18 окт. 2020

Не - не починилось нифига...

#7390
(Правка: 17:07) 17:05, 18 окт. 2020

Пофиксил таким путем >>
В основном цикле добавил "ждуна" очереди презентации, а ниже на выходе "ждуна" девайса - тогда все Нормально исполняется.

  vkQueuePresentKHR(presentQueue, &presentInfo);
  vkQueueWaitIdle(presentQueue);
}

vkDeviceWaitIdle(device);
std::cout << 11 << std::endl;
#7391
(Правка: 17:13) 17:11, 18 окт. 2020

HolyDel
> vkDeviceWaitIdle - его можно использовать для грубой синхронизации CPU-GPU во
> время разработки, если есть подозрения, что синхронизация сделана неправильно.
> В продакшене его оставлять нет смысла, может при каком-нибудь удалении
> устройства, подождать, что точно все доработало.
Ну вон "грубо" если выше vkQueueWaitIdle(presentQueue) не ставлю, то на выходе vkDeviceWaitIdle(device) "деадЛок".

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

#7392
17:15, 18 окт. 2020

Redee
думаю интел такой интел

#7393
17:19, 18 окт. 2020

innuendo
> думаю интел такой интел
Что-то и у меня такие подозрения!

#7394
18:24, 18 окт. 2020

Redee
а зачем тебе айдлы?

Страницы: 1489 490 491 492 493 494 Следующая »
ПрограммированиеФорумГрафика