Как я могу узнать, что презентация завершена, поскольку в VkPresentInfoKHR и vkQueuePresentKHR нет семафоров и ограждений? - PullRequest
1 голос
/ 04 мая 2019

Я могу выполнять синхронизацию между получением изображения из swapchain и рендерингом, между рендерингом и презентацией, но нужно ли ждать полноты презентации до следующей итерации цикла?

Если да, какой подход к синхронизации используется для этого?

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

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

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

Но обычно люди спрашивают, как это получить информацию о VSync.Это в настоящее время нетривиально.И далее исследуется, как сделать это лучше: Vulkan-Docs # 370

0 голосов
/ 04 мая 2019

Представление изображения - это асинхронная операция, которая, хотя и связана с очередью, не завершает , поскольку выполнения очереди. И он также не / не должен удерживать эту очередь, поскольку он может включать операции с процессором.

Вы не должны ждать окончания презентации, никогда. Вы хотите, чтобы приобретение закончилось. Вот почему vkAcquireNextImageKHR требует использования семафора / забора. Вы не можете выполнять команды, которые управляют возвращенным изображением, если эти команды не синхронизируются с семафором / забором, используемым для получения изображения.

...