我阅读了很多有关Vulkan内存管理的文章,它们都建议使用分期缓冲区来向GPU传输数据。
但是我们已经可以创建设备本地和主机可见、主机一致的内存。它既可以从GPU读取,也可以从CPU写入。
我认为比较合理的做法是 - 创建一个绑定到设备本地、主机可见和一致的内存的大缓冲区。现在对于所有动态缓冲区,我们只需从此缓冲区中继续使用内存,并在该偏移处绑定缓冲区。
但在大多数示例中,它们创建一个主机可见的缓冲区和一个GPU可见的缓冲区,并使用copyBuffer操作进行传输。相较于只使用一个可由CPU和GPU访问的缓冲区,这种方式有何优势?我只谈论缓冲区,不包括纹理。
我认为比较合理的做法是 - 创建一个绑定到设备本地、主机可见和一致的内存的大缓冲区。现在对于所有动态缓冲区,我们只需从此缓冲区中继续使用内存,并在该偏移处绑定缓冲区。
但在大多数示例中,它们创建一个主机可见的缓冲区和一个GPU可见的缓冲区,并使用copyBuffer操作进行传输。相较于只使用一个可由CPU和GPU访问的缓冲区,这种方式有何优势?我只谈论缓冲区,不包括纹理。