Предполагается однопоточное приложение.Если вы звоните ExecuteCommandLists
дважды ( A и B ).Гарантируется ли A выполнение всех его команд на графическом процессоре перед запуском любой из команд с B ?Самая близкая вещь, которую я могу найти в документации, это то, что, на самом деле, она не гарантирует, что A завершится до B запуска:
Приложения могутотправить списки команд в любую очередь команд из нескольких потоков.Среда выполнения будет выполнять сериализацию этих запросов в порядке их отправки.
Для сравнения я знаю, что это явно не гарантировано в Vulkan:
vkQueueSubmit - это команда отправки в очередь, причем каждый пакет определяется элементом pSubmits в качестве экземпляра структуры VkSubmitInfo.Пакеты начинают выполнение в том порядке, в каком они отображаются в pSubmits, , но могут завершаться не по порядку.
Однако я не уверен, что DX12 работает так же.
Книга Фрэнка Луны говорит:
Списки команд выполняются в порядке, начиная с первого элемента массива
Однако в этом контексте онговорить о вызове ExecuteCommandLists
один раз с двумя списками команд ( C и D ).Они работают так же, как два отдельных вызова?Мой коллега утверждает, что это все еще только гарантирует, что они запускаются по порядку, а не что C заканчивается до D .
Есть ли где-нибудь более ясная документация, где яотсутствует