Exposes split barriers in compute shaders via two new SPIR-V instructions: OpControlBarrierArriveEXT (signals that an invocation has finished accessing a shared resource, potentially unblocking other invocations waiting at the corresponding wait) and OpControlBarrierWaitEXT (blocks until all invocations in the workgroup have arrived). By separating the arrive and wait phases, fast subgroups can signal completion of their shared memory reads and immediately begin issuing long-latency global memory fetches for the next iteration while slow subgroups are still performing ALU work, eliminating the synchronization bubble that a standard barrier() would impose. Particularly beneficial for tiled cooperative matrix loops.
The task list for the VK_EXT_shader_split_barrier release is:
As each component is made public, the task will be checked off. When all tasks have been completed this issue will be closed and the extension will be fully released.
Exposes split barriers in compute shaders via two new SPIR-V instructions:
OpControlBarrierArriveEXT(signals that an invocation has finished accessing a shared resource, potentially unblocking other invocations waiting at the corresponding wait) andOpControlBarrierWaitEXT(blocks until all invocations in the workgroup have arrived). By separating the arrive and wait phases, fast subgroups can signal completion of their shared memory reads and immediately begin issuing long-latency global memory fetches for the next iteration while slow subgroups are still performing ALU work, eliminating the synchronization bubble that a standardbarrier()would impose. Particularly beneficial for tiled cooperative matrix loops.The task list for the VK_EXT_shader_split_barrier release is:
As each component is made public, the task will be checked off. When all tasks have been completed this issue will be closed and the extension will be fully released.