Lorsque je veux télécharger une image dans la mémoire locale de l'appareil, je crée d'abord une image, puis j'émets une transition de mise en page pour passer de UNDEFINED à TRANSFER DESTINATION, puis je fais une copie du tampon vers l'image. Ensuite, je passe de TRANSFER DESTINATION à la disposition de mon choix. Existe-t-il un moyen plus direct de le faire? Dans vkCmdCopyBufferToImage il y a un argument 'dstImageLayout'. J'ai fait l'erreur de penser que l'argument dit à Vulkan de faire automatiquement la transition de l'image vers cette mise en page au fur et à mesure qu'il la copie. Cela me semblerait plus efficace et plus logique, mais ce n'est pas ce que je pensais.
Existe-t-il un moyen de le faire sans deux transitions de mise en page ? Ce n'est pas grave s'il n'y en a pas, je pense que c'est la bonne façon de le faire, je voulais juste m'en assurer.
Solution du problème
Vous n'êtes pas à proprement parler obligé d'effectuer deux transitions de mise en page. La GENERAL
mise en page peut être utilisée avec pratiquement n'importe quoi. Ainsi, vous pouvez simplement le transférer une fois, le copier et l'utiliser à partir de là.
Cependant, cela serait inutile pour plusieurs raisons. Tout d'abord, il est raisonnable de supposer que toute transition de mise en page à partir de UNDEFINED
sera un non-op en ce qui concerne le traitement GPU réel. De telles transitions suppriment conceptuellement tout le contenu de l'image, il est donc inutile que le GPU fasse quoi que ce soit sur les octets de l'image.
Deuxièmement, pour utiliser une image dans laquelle vous avez copié, vous aurez besoin d' une sorte de synchronisation explicite entre l'opération de copie et son utilisation. Quelle que soit cette synchronisation, elle peut également inclure une transition de mise en page. Le GPU devra s'assurer que les deux ne se chevauchent pas, vous pouvez donc aussi bien lancer une transition de mise en page.
Enfin, utiliser GENERAL
comme ceci est une optimisation prématurée et doit donc être évitée à moins que vous n'ayez des données de profilage vous indiquant que les transitions de mise en page sont un problème de performances réel (ou que vous n'avez pas d'autre choix).
Aucun commentaire:
Enregistrer un commentaire