取消映射后是否可以刷新内存范围?
起初似乎是错误的,因为该函数被称为sqlite
,但是the documentation似乎暗示着即使在未映射后也可以刷新内存了:
取消映射非一致性内存不会隐式刷新已映射 内存,尚未刷新的主机写入可能永远不会 对设备可见。但是,实施必须确保 未刷新的写入不会对其他任何对象可见 记忆。
答案 0 :(得分:3)
vkFlushMappedMemoryRanges()
的有效使用规则之一是所有VkMappedMemoryRange
结构都必须有效。该结构的有效性规则说:
memory
当前必须已映射
因此,如果您未映射内存,则无法刷新它。
但是,冲洗提示:
如果主机从第一次映射或最后一次刷新以来已写入该集合中的任何字节,则会刷新该范围中的bytes。
因此,显然,如果先取消映射再重新映射,则可以刷新它并仍然查看数据。就个人而言,我不会指望它。