barrier - synchronize execution of multiple shader invocations
Available only in the Tessellation Control and Compute Shaders,
barrier provides a partially defined order of execution between shader
invocations. For any given static instance of barrier, in a
tessellation control shader, all invocations for a single input patch must
enter it before any will be allowed to continue beyond it. For any given
static instance of barrier in a compute shader, all invocations within
a single work group must enter it before any are allowed to continue beyond
it. This ensures that values written by one invocation prior to a given static
instance of barrier can be safely read by other invocations after their
call to the same static instance of barrier. Because invocations may
execute in undefined order between these barrier calls, the values of a
per-vertex or per-patch output variable, or any shared variable will be
undefined in a number of cases.
barrier may only be placed inside the function main() of
the tessellation control shader, but may be placed anywhere in a compute
shader. Calls to barrier may not be placed within any control flow.
Barriers are also disallowed after a return statement in the function
Copyright © 2011-2014 Khronos Group. This material may be distributed
subject to the terms and conditions set forth in the Open Publication License,
v 1.0, 8 June 1999. http://opencontent.org/openpub/.
Copyright © 2011-2014 Khronos Group
|OpenGL Shading Language