繁体   English   中英

Vulkan:`vkFlushMappedMemoryRanges`线程层错误吗?

[英]Vulkan: `vkFlushMappedMemoryRanges` threading layer error?

如果整个vkDeviceMemory被映射(通过vkMapMemory ),并且未分配给VK_MEMORY_PROPERTY_HOST_COHERENT_BITvkFlushMappedMemoryRanges在对缓冲区进行任何修改之后必须对vkFlushMappedMemoryRanges进行设置,以便设备查看写入(根据文档)。

我只修改大缓冲区的一小部分,因此,只想刷新受影响的区域。 因此,我创建了多个VkMappedMemoryRange结构, VkMappedMemoryRange结构具有不同的offsetsize字段,但指向相同的vkDeviceMemory 这一切似乎都按我的预期工作。 但是,如果启用VK_LAYER_LUNARG_threading ,则会出现错误:

THREADING ERROR : object of type VkDeviceMemory is recursively used in thread 24812

如果我改为只用一个刷新范围而不是数组多次调用vkFlushMappedMemoryRanges ,我不会收到错误。 刷新同一缓冲区的多个子范围不是有效的用例吗?

那是来自该层的错误错误报告。 单个函数调用可以安全地多次引用同一vulkan对象。 较新版本的线程检查层不会报告该错误冲突。 (该层在最新版本中已重命名为VK_LAYER_GOOGLE_threading。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM