## Name

glGetActiveAtomicCounterBufferiv — retrieve information about the set of active atomic counter buffers for a program

## C Specification

`void glGetActiveAtomicCounterBufferiv(` | Gluint program,
| GLuint bufferIndex,
| GLenum pname,
| GLint *params`)`;

## Parameters

`program`

  The name of a program object from which to retrieve information.

`bufferIndex`

  Specifies index of an active atomic counter buffer.

`pname`

  Specifies which parameter of the atomic counter buffer to retrieve.

`params`

  Specifies the address of a variable into which to write the retrieved information.

## Description

`glGetActiveAtomicCounterBufferiv` retrieves information about the set of active atomic counter buffers for a program object. `program` is the name of a program object for which the command glLinkProgram has been issued in the past. It is not necessary for `program` to have been linked successfully. The link may have failed because the number of active atomic counters exceeded the limits.

`bufferIndex` specifies the index of an active atomic counter buffer and must be in the range zero to the value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` minus one. The value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` for `program` indicates the number of active atomic counter buffer and can be queried with glGetProgram.

If no error occurs, the parameter(s) specified by `pname` are returned in `params`. If an error is generated, the contents of `params` are not modified.

If `pname` is `GL_ATOMIC_COUNTER_BUFFER_BINDING`, then the index of the counter buffer binding point associated with the active atomic counter buffer `bufferIndex` for `program` is returned.

If `pname` is `GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE`, then the implementation-dependent minimum total buffer object size, in baseic machine units, required to hold all active atomic counters in the atomic counter binding point identified by `bufferIndex` is returned.

If `pname` is `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS`, then the number of active atomic counters for the atomic counter buffer identified by `bufferIndex` is returned.

If `pname` is `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES`, then a list of the active atomic counter indices for the atomic counter buffer identified by `bufferIndex` is returned. The number of elements that will be written into `params` is the value of `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS` for `bufferIndex`.

If `pname` is `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER` then a boolean value indicating whether the atomic counter buffer identified by `bufferIndex` is referenced by the vertex, tessellation control, tessellation evaluation, geometry, fragment or compute processing stages of `program`, respectively, is returned.

## Notes

`glGetActiveAtomicCounterBufferiv` is available only if the GL version is 4.2 or higher.

`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER` is available only of the GL version is 4.3 or higher.

## Errors

`GL_INVALID_VALUE` is generated if `program` is not the name of a program object for which glLinkProgram has been called in the past.

`GL_INVALID_VALUE` is generated if `bufferIndex` is greater than or equal to the value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` for `program`.

`GL_INVALID_ENUM` is generated if `pname` is not one of the accepted tokens.

## See Also

glGetProgram, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetUniformLocation

## Copyright

Copyright © 2011 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/.