Подскажите, как правильно синхронизировать vkQueuePresentKHR? Есть очередь с двумя изображениями. Последовательность

отрисовки такая:
1) Жду фенс текущего кадра
2) Получаю изображение через vkAcquireNextImageKHR
3) Жду фенса полученного изображения
4) Сбрасываю фенс кадра через vkResetFences
5) Делаю vkQueueSubmit с только что сброшенным фенсом
6) Делаю vkQueuePresentKHR
В определённый момент, судя по nsight'у, получаю длительность выполнения vkQueuePresentKHR в 11 секунд. Это не первый и не последний кадр, на самом кадре 1 треугольник. Далее, если по прошествии этих 11 секунд попытаться закрыть приложение, ловлю лок намертво в vkDeviceWaitIdle. Мне кажется, что причина в том, что пока vkQueuePresentKHR висит 11 секунд, CPU успевает насовать ему вагон новых сабмитов, потому как фенс сбрасывается до сабмита, а не после презента.
Если добавить после vkQueuePresentKHR vkQueueWaitIdle, то проблема лока уходит, но проблема 11 секунд на презент — нет.
В общем вопроса два: как лечить спайк презента и правильно это синхронизировать, чтобы даже в случае спайка не получить лок? По поводу синхронизации мысль ждать семафора от vkQueuePresentKHR самым первым пунктом, но не уверен, что это правильно.

5 ответов

7 просмотров

проверь тот ли фенс ждёшь, включи валидацию

Alexander "Ternvein"-Isaev Автор вопроса
Timur Gagiev
проверь тот ли фенс ждёшь, включи валидацию

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

Ты используешь validation layers? Если нет, то первым делом их включи. Иначе смысла 0 задавать вопросы здесь.

Anatoliy Tomilov [Russia]
Ты используешь validation layers? Если нет, то пер...

если почитать подальше, то можно обнаружить, что чел действительно написал, что использует

Constantine Shablia
если почитать подальше, то можно обнаружить, что ч...

да. Читаю. Непонятно, действительно ли они работают. Если они совсем молчат, то это вероятно.

Похожие вопросы

Обсуждают сегодня

Кто создает тут ботов для телеграмм групп ?
Antskup
8
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
Мне нужен бот который в группе будет за неправильное оформление ордера удалять и высылать как правильно составить его Кто такой напишет?
Antskup
1
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Я вот тут задался риторическим вопросом. Уже как пару дней я пытаюсь присовокупить к Vapor jemalloc, мало того что топиков, как это вставлять в Vapor нет, так еще и хер поймеш...
Евгений Данилов
39
Карта сайта