vkCmd* 函数的参数何时被消耗?

2024-01-12

一些vkCmd*函数指定何时使用或不使用某些参数。例如,在文档中vkCmdBindDescriptorSets:

pDynamicOffsets 的内容在期间立即被消耗 vkCmdBindDescriptorSets 的执行。

但大多数人并没有澄清。期间是否消耗了所有参数vkCmd*称呼?例如,在以下代码中:

void copyHelper() {
  VkBufferCopy copy_region = {...};
  vkCmdCopyBuffer(cmd_buffer, from_buffer, to_buffer, 1, &copy_region);
}

打电话后copyHelper(), copy_region虽然不再在范围内cmd_buffer尚未提交。我需要存储吗copy_region某处以使其保持有效?还是调用时立即消耗vkCmdCopyBuffer?其余的呢vkCmd*功能?

Thanks.


没有针对每个命令的说明,因为所有命令都在以下总括语句下运行:

应用程序拥有的内存的所有权会立即由传入的任何 Vulkan 命令获取。此类内存的所有权must在命令持续时间结束时释放回应用程序,以便应用程序can一旦获取该内存的所有命令返回,就更改或释放该内存。

规范中强调。必须使用函数返回时传递的任何内存的内容来完成实现。是否像未格式化的内存void*或数据结构。

请注意,“持续时间”定义为:

The durationVulkan 命令的时间间隔是指调用命令和返回给调用者之间的时间间隔。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vkCmd* 函数的参数何时被消耗? 的相关文章

随机推荐