首页 > 解决方案 > 子组调用索引是否映射到 gl_LocalInvocationIndex?

问题描述

我需要计算gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID,还是可以使用gl_LocalInvocationIndex?单个子组中的调用是否连续gl_SubgroupInvocationID

标签: vulkan

解决方案


我需要计算gl_SubgroupID*gl_SubgroupSize+gl_SubgroupInvocationID,还是可以使用gl_LocalInvocationIndex

这些是不同的东西。本地调用索引是工作组内调用的索引。子组是不大于工作组但可能更小的调用分组。因此,子组调用索引与本地调用索引不同。

正如标准所说:

SubgroupLocalInvocationIdLocalInvocationId或之间没有直接关系LocalInvocationIndex


单个子组中的调用是否连续gl_SubgroupInvocationID

是的,它们是连续的,但仅在它们处于半开范围 [0, SubgroupSize) 的意义上。因此,可能具有相邻本地调用索引的两个调用可能没有相邻的子组索引。


推荐阅读