Signature
Parameters
Variables | Description |
---|---|
indirect |
The offset into the buffer object currently bound to the
GL_DISPATCH_INDIRECT_BUFFER
buffer target at
which the dispatch parameters are stored.
|
Description
glDispatchComputeIndirect
launches one or more compute
work groups using parameters stored in the buffer object currently bound
to the
GL_DISPATCH_INDIRECT_BUFFER
target.
Each work group is processed by the active program object for the compute
shader stage. While the individual shader invocations within a work group are
executed as a unit, work groups are executed completely independently and in
unspecified order.
indirect
contains the offset
into the data store of the buffer object bound to the
GL_DISPATCH_INDIRECT_BUFFER
target at which the parameters are stored.
The parameters addressed by
indirect
are packed a structure,
which takes the form (in C):
typedef struct {
uint num_groups_x;
uint num_groups_y;
uint num_groups_z;
} DispatchIndirectCommand;
A call to
glDispatchComputeIndirect
is equivalent, assuming no
errors are generated, to:
cmd = (const DispatchIndirectCommand *)indirect;
glDispatchCompute(cmd->num_groups_x, cmd->num_groups_y, cmd->num_groups_z);
Unlike
glDispatchCompute
,
no error is generated if any of the
num_groups_x
,
num_groups_y
or
num_groups_z
members
of the
DispatchIndirectCommand
is larger than the
value of
GL_MAX_COMPUTE_WORK_GROUP_COUNT
for the
corresponding dimension. In such circumstances, behavior is undefined and
may lead to application termination.
Errors
GL_INVALID_OPERATION
is generated if there is no active program
for the compute shader stage.
GL_INVALID_VALUE
is generated if
indirect
is
less than zero or not a multiple of four.
GL_INVALID_OPERATION
is generated if no buffer is bound to the
GL_DISPATCH_INDIRECT_BUFFER
target or if the command would
source data beyond the end of the buffer object's data store.
Associated Gets
glGet
with argument
GL_MAX_COMPUTE_WORK_GROUP_COUNT
Version Support
glDispatchComputeIndirect |
See Also
Copyright
Copyright
2013-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/
.