Я попробовал использовать вторичные буферы команд и столкнулся с проблемой. После изменения размера моего окна перезагружаются как первичные, так и вторичные буферы команд.
Если буфера вторичных команд обновляются и первичные буфера команд, что те содержат, не были еще представлены, слои проверки вызывает ошибкуПовторная запись вторичных буферов команд
Calling vkBeginCommandBuffer() on active CB 0x0x166dbc0 before it has completed. You must check CB fence before this call.
. Чтобы исправить это, я в настоящее время гарантирую, что все первичные командные буферы, по крайней мере, однажды отправлены, перед обновлением вторичных буферов команд.
Есть ли более простой способ избежать этой проблемы, поскольку я теряю рендеринг до 7 кадров (количество фреймов в моей swapchain) с помощью этого решения?
Это не точка. Проблема возникает после выполнения операций изменения размера. Это похоже на resize-> submit 1 первичные командные буферы (6 слева) -> vkDeviceIdle -> обновить вторичные командные буфферы: сообщение об ошибке.I вызвал vkDeviceWaitIdle() непосредственно перед vkBeginCommandBuffer(), но проблема в том, что другие первичные командные буферы командные буферы никогда не были представлены. – camelCase
Понимаю, я был в середине внесения некоторых изменений, которые, вероятно, также охватывают этот случай. (Я также получаю некоторые дежавю от этого - я должен немного исследовать, где я видел аналогичную проблему, написанную о ...) – krOoze
Хорошо, пропустил эту деталь. Поскольку vkDeviceWaitIdle не будет работать здесь, и отправка всех первичных буферов команд является очень дорогостоящей: существует ли способ снова добавить вторичный буфер команд из состояния ожидания до состояния записи? – camelCase