【发布时间】:2020-06-10 16:26:46
【问题描述】:
在 Vulkan 中,当我想将 GPU 的一些内存传输回 CPU 时,我认为最有效的方法是将数据写入具有标志 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT 的内存中。
问题 #1:这个假设正确吗?
(可用内存属性标志的完整列表可以在 Vulkan 的 VkMemoryPropertyFlagBits 文档中找到)
为了获取最新数据,我必须使用vkInvalidateMappedMemoryRanges 使内存无效,对吗?
问题 #2:vkInvalidateMappedMemoryRanges 期间发生了什么?这只是来自某个内部缓存的memcpy,还是可以是一个更长的过程?
问题#3:如果这可能需要更长的时间(即它不是一个简单的memcpy),那么我可能应该有一些可能与它的完成同步,对吧?但是,vkInvalidateMappedMemoryRanges 不提供任何同步参数。实际上,我的问题是:如果我必须同步它,我该如何同步它?
【问题讨论】:
标签: vulkan