我现在的做法是,据我所知,每个新图像都必须使用 LAYOUT_UNDEFINED 创建。然后我放置一个障碍将其转换为 TRANSFER_DST_OPTIMAL。现在我可以传输图像了。除非您想使用 LINEAR TILING,否则这至少是您要做的。
现在我需要将数据传输到缓冲区。在我的例子中,主机可见内存不是设备本地的,因此我将图像数据写入暂存缓冲区,然后发出缓冲区以进行图像复制并从 DST_SRC 转换为 READ_OPTIMAL。如果主机可见内存不是设备本地的,这是最有效的方法。
现在考虑主机可见内存也是设备本地的。我觉得我应该能够立即写入 GPU 设备本地缓冲区,但我不知道如何或甚至不知道是否可行,因为我认为您总是需要一个缓冲区来复制图像。对吗?