Ожидание забора вызывает предупреждение и замораживание приложения - PullRequest
0 голосов
/ 01 ноября 2018

Я отправляю очередь и указываю забор. Непосредственно перед подачей я печатаю забор:

qDebug() << "submitting fence: " << cmdFence;
vkQueueSubmit(gfxQueue, 1, &submitInfo, cmdFence);

Вот результаты последних 3 представлений:

submitting fence:  0x145
submitting fence:  0x142
submitting fence:  0x145

Где-то еще у меня есть код, который должен ждать забора:

qDebug() << "waiting for fences";
for(auto f : activeFences)
    qDebug() << "fence " << f;

if(vkWaitForFences(m_moduleData.deviceData.device,
                   static_cast<uint32_t>(activeFences.size()),
                   activeFences.data(),
                   VK_TRUE,
                   UINT64_MAX) != VK_SUCCESS)
{
    throw std::runtime_error{"failed to wait for fences"};
}

Как видно, я печатаю забор и перед ожиданием, и вот что я получаю прямо перед vkWaitForFences звонком:

waiting for fences
fence  0x142

Тот же забор 0x142, который был представлен ранее! Но слой проверки выдает предупреждение:

vkWaitForFences called for fence 0x142 which has not been submitted on a Queue or during acquire next image.

И приложение зависает, вероятно, в бесконечном ожидании. Но почему?

...