一些vkCmd*
函数指定何时使用或不使用某些参数。例如,在文档中vkCmdBindDescriptorSets
:
pDynamicOffsets 的内容在期间立即被消耗
vkCmdBindDescriptorSets 的执行。
但大多数人并没有澄清。期间是否消耗了所有参数vkCmd*
称呼?例如,在以下代码中:
void copyHelper() {
VkBufferCopy copy_region = {...};
vkCmdCopyBuffer(cmd_buffer, from_buffer, to_buffer, 1, ©_region);
}
打电话后copyHelper()
, copy_region
虽然不再在范围内cmd_buffer
尚未提交。我需要存储吗copy_region
某处以使其保持有效?还是调用时立即消耗vkCmdCopyBuffer
?其余的呢vkCmd*
功能?
Thanks.
没有针对每个命令的说明,因为所有命令都在以下总括语句下运行:
应用程序拥有的内存的所有权会立即由传入的任何 Vulkan 命令获取。此类内存的所有权must在命令持续时间结束时释放回应用程序,以便应用程序can一旦获取该内存的所有命令返回,就更改或释放该内存。
规范中强调。必须使用函数返回时传递的任何内存的内容来完成实现。是否像未格式化的内存void*
或数据结构。
请注意,“持续时间”定义为:
The durationVulkan 命令的时间间隔是指调用命令和返回给调用者之间的时间间隔。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)