当 GPU 使用同一缓冲区作为传输操作的源时,让 CPU 从缓冲区读取数据是否安全vkCmdCopyBuffer
?
我之所以问这个问题,是因为我读到过,即使缓冲区用作传输源,其vkCmdCopyBuffer
本身也可能比简单的 GPU 读取更复杂,因此需要显式主机同步(即:复制必须先完成,CPU 才能从缓冲区读取)。但我找不到任何可以证实这一点的证据。
当 GPU 使用同一缓冲区作为传输操作的源时,让 CPU 从缓冲区读取数据是否安全vkCmdCopyBuffer
?
我之所以问这个问题,是因为我读到过,即使缓冲区用作传输源,其vkCmdCopyBuffer
本身也可能比简单的 GPU 读取更复杂,因此需要显式主机同步(即:复制必须先完成,CPU 才能从缓冲区读取)。但我找不到任何可以证实这一点的证据。
Vulkan 内存模型仅需要同步来确保写入操作的可用性、可见性和内存域。如果将数据放入该内存的写入操作已经确保这些写入对于主机和 GPU 复制操作都可用且可见,则任何读取操作都不会影响另一个。