Per le transizioni di risorse, è necessario conoscere "prima" e "dopo" VkImageLayout
della risorsa (ad esempio nello VkImageMemoryBarrier
passato a vkCmdPipelineBarrier
). Vulkan non garantisce alcun ordine di esecuzione dei buffer di comando, a meno che non sia esplicitamente indicato nella documentazione API (dalla risposta this). Tuttavia, vkCmdPipelineBarrier
afferma esplicitamente che crea una dipendenza tra i comandi nel buffer dei comandi, prima e dopo la chiamata. In questo modo è possibile "conoscere" il layout di un'immagine in qualsiasi punto quando viene eseguita la transizione all'interno di un singolo buffer di comandi.Vulkan: ordinare le barriere di memoria dell'immagine in buffer di comando multipli
Tuttavia, vkQueueSumbit
non applica l'ordine di esecuzione dei buffer di comando. Se ci sono due buffer di comando, ognuno con le chiamate vkCmdPipelineBarrier
che eseguono la transizione della stessa immagine a layout diversi, esiste una dipendenza tra queste due operazioni oppure è richiesta la sincronizzazione esplicita in questa situazione?
Non ho proprio chiesto cosa stavo guidando, ma questo risponde a quello che ho chiesto. – MuertoExcobito