繁体   English   中英

Vulkan vkResetCommandPool 与 vkResetCommandBuffer

[英]Vulkan vkResetCommandPool vs vkResetCommandBuffer

vkResetCommandPool的描述只是说

重置命令池将从命令池分配的所有命令缓冲区中的所有资源回收回命令池。 从命令池中分配的所有命令缓冲区都处于初始状态。

是否与重置从命令池分配的所有现有命令缓冲区相同,这与假设命令池是使用VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT创建的,则与为每个单个缓冲区调用vkResetCommandBuffer相同。

我想知道VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT带来的额外控制是否会影响性能。 如果我有一些交换链图像并且想在绘制每一帧时重置我的命令缓冲区。 是为每个交换链图像创建单独的命令池并在绘制每一帧时重置相应的命令池,还是只使用VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT创建单个命令池并在绘制每一帧时重置相应的命令缓冲区?

答案主要是“视情况而定”。 每帧有多少个命令缓冲区?

如果每帧有很多命令缓冲区,那么每帧有一个池并重置池可能会更便宜。

如果每帧的命令缓冲区很少,那么重置单个命令缓冲区可能更便宜。

也就是说,它完全是由实现定义的行为,所以如果您担心它,请编写一个小型基准测试并测试您的假设。

暂无
暂无

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

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