vulkan - 为什么转换命令需要旧的布局信息

问题描述

为什么需要旧的布局信息来为图像设置新布局。

据我所知,在设置图像布局时,它在特定的内存安排中趋于最佳需求。所以新的布局不依赖于以前的布局。用于传输读取的内存布局 (VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) 始终相同,并且之前的布局并不重要,不是吗?

但即使转换操作需要旧的布局信息(由于某种原因) - 尽管如此,GPU 硬件/驱动程序知道电子电路条件(在这种情况下为内存布局),那么为什么我们需要给它一个它知道什么信息?

解决方法

用于传输读取的内存布局 (VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) 始终相同,并且之前的布局并不重要,不是吗?

确实如此,如果您想从以前的布局转换它而不会丢失数据。否则你确实可以使用 oldLayout=VK_IMAGE_LAYOUT_UNDEFINED

仍然,GPU 硬件/驱动程序知道电子电路状况(在这种情况下是内存布局)

这不是“电子电路”。可能它只是 RAM 中的一堆比特。

无论如何。 Vulkan 的一种范式是它尽量不强制执行记忆。具体来说,它通常不会记住不是 vkCreate* 一部分的状态。我认为有一些函数式编程的影响...