首页 > 解决方案 > vulkan API 复制了什么?

问题描述

当应用程序调用 Vulkan API 命令时,在某些情况下,会传递指向应用程序拥有的内存的指针。Vulkan 是否曾经存储过传递给它的此类指针?你怎么知道的?

例如,让我们接受vkCmdWaitEvents命令。我将一个pEvents指向数组的指针传递给VkEvent. 返回后,我可以立即vkCmdWaitEvents删除该数组吗?还是我必须等到该等待已执行并且封闭的 CommandBuffer 已被销毁?即 vulkan 是否获取数组的副本,还是仅存储指向数组第一个元素的指针?你怎么知道哪个?

标签: vulkan

解决方案


它永远不会。

引用规范

应用程序拥有的内存的所有权会立即被传入的任何 Vulkan 命令获取。必须在命令持续时间结束时将此类内存的所有权释放回应用程序,以便应用程序可以在获取它的所有命令返回后立即更改或释放此内存。

指针必须在多个调用中保持有效的唯一情况是当它用于pUserData回调(如VkDebugReportCallbackCreateInfoEXT或分配回调)时。


推荐阅读