能否将VkCmdDispatchIndirect工作组大小设为0以禁用计算着色器?
能否通过将所有工作组维度设为0来禁用计算着色器执行?
当然可以,把VkDispatchIndirectCommand里的x、y、z三个工作组维度全部设为0,是安全且合规的操作,能可靠地让计算着色器不执行。
- 按照Vulkan规范,
vkCmdDispatch和vkCmdDispatchIndirect都允许三个维度的工作组数同时为0,这种情况下GPU不会启动任何工作组,相当于直接跳过了该计算任务。 - 这种方式不需要在CPU端加条件判断来跳过调度命令,直接修改参数缓冲区的内容就行,实现起来简单高效。
- 小提醒:只要你的驱动支持Vulkan 1.0及以上(现在主流GPU驱动都满足),就不会有兼容性问题。如果是特别老旧的驱动,可简单测试下,但从规范层面来说完全没问题。
内容的提问来源于stack exchange,提问作者calc196
相关产品推荐
相关产品推荐

