glDispatchComputeIndirect

From OpenGL Reference
Jump to navigation Jump to search

Launch one or more compute work groups using parameters stored in a buffer.

C Specification[edit]

void glDispatchComputeIndirect( GLintptr indirect );


Parameters[edit]

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[edit]

 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 thenum_groups_x,num_groups_yornum_groups_zmembers of theDispatchIndirectCommandis 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[edit]

 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[edit]

 glGet with argument GL_MAX_COMPUTE_WORK_GROUP_COUNT 


Version Support[edit]

 glDispatchComputeIndirect  4.3+

See Also[edit]

 glDispatchCompute .


Copyright[edit]

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/.