Compute shaders are invoked via vkCmdDispatch
and
vkCmdDispatchIndirect
commands. In general, they have access to
similar resources as shader stages executing as part of a graphics pipeline.
Compute workloads are formed from groups of work items called workgroups
and processed by the compute shader in the current compute pipeline. A
workgroup is a collection of shader invocations that execute the same
shader, potentially in parallel. Compute shaders execute in global
workgroups which are divided into a number of local workgroups with a size
that can be set by assigning a value to the LocalSize
execution mode or
via an object decorated by the WorkgroupSize
decoration. An invocation
within a local workgroup can share data with other members of the local
workgroup through shared variables and issue memory and control flow barriers
to synchronize with other members of the local workgroup.