OpenGL and OpenGL ES state tables What's this?


Profile filters (OpenGL only)

OpenGL ES 1.1 state tables

Get value Type Get command Initial value Description Attribute

§ GL Internal primitive assembly state variables (inaccessible)

— V — — Previous vertex in a line segment —
— B — — Indicates if {\em line-vertex} is the first —
— V — — First vertex of a line loop —
— 2 × V — — Previous two vertices in a triangle strip —
— Z3 — — Number of vertices so far in triangle strip: 0, 1, or more —
— Z2 — — Triangle strip A/B vertex pointer —

§ Current Values and Associated Data

CURRENT_COLOR C GetFloatv 1,1,1,1 Current color current
CURRENT_TEXTURE_COORDS MAX_TEXTURE_UNITS × T GetFloatv 0,0,0,1 Current texture coordinates current
CURRENT_NORMAL N GetFloatv 0,0,1 Current normal current
— C — — Color associated with last vertex —
— T — — Texture coordinates associated with last vertex —

§ Vertex Array Data

CLIENT_ACTIVE_TEXTURE ZMAX_TEXTURE_UNITS GetIntegerv \glc{TEXTURE0} Client active texture unit selector vertex-array
VERTEX_ARRAY B IsEnabled \em False Vertex array enable vertex-array
VERTEX_ARRAY_SIZE Z+ GetIntegerv 4 Coordinates per vertex vertex-array
VERTEX_ARRAY_TYPE Z4 GetIntegerv \glc{FLOAT} Type of vertex coordinates vertex-array
VERTEX_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between vertices vertex-array
VERTEX_ARRAY_POINTER Y GetPointerv 0 Pointer to the vertex array vertex-array
NORMAL_ARRAY B IsEnabled \em False Normal array enable vertex-array
NORMAL_ARRAY_TYPE Z5 GetIntegerv \glc{FLOAT} Type of normal coordinates vertex-array
NORMAL_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between normals vertex-array
NORMAL_ARRAY_POINTER Y GetPointerv 0 Pointer to the normal array vertex-array
COLOR_ARRAY B IsEnabled \em False Color array enable vertex-array
COLOR_ARRAY_SIZE Z+ GetIntegerv 4 Color components per vertex vertex-array
COLOR_ARRAY_TYPE Z8 GetIntegerv \glc{FLOAT} Type of color components vertex-array
COLOR_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between colors vertex-array
COLOR_ARRAY_POINTER Y GetPointerv 0 Pointer to the color array vertex-array

§ Vertex Array Data (cont.)

TEXTURE_COORD_ARRAY MAX_TEXTURE_UNITS × B IsEnabled \em False Texture coordinate array enable vertex-array
TEXTURE_COORD_ARRAY_SIZE MAX_TEXTURE_UNITS × Z+ GetIntegerv 4 Coordinates per element vertex-array
TEXTURE_COORD_ARRAY_TYPE MAX_TEXTURE_UNITS × Z4 GetIntegerv \glc{FLOAT} Type of texture coordinates vertex-array
TEXTURE_COORD_ARRAY_STRIDE MAX_TEXTURE_UNITS × Z+ GetIntegerv 0 Stride between texture coordinates vertex-array
TEXTURE_COORD_ARRAY_POINTER MAX_TEXTURE_UNITS × Y GetPointerv 0 Pointer to the texture coordinate array vertex-array
POINT_SIZE_ARRAY_OES B IsEnabled \em False Point size array enable vertex-array
POINT_SIZE_ARRAY_TYPE_OES Z2 GetIntegerv \glc{FLOAT} Type of point sizes vertex-array
POINT_SIZE_ARRAY_STRIDE_OES Z+ GetIntegerv 0 Stride between point sizes vertex-array
POINT_SIZE_ARRAY_POINTER_OES Y GetPointerv 0 Pointer to the point size array vertex-array
ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 current buffer binding vertex-array
VERTEX_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 vertex array buffer binding vertex-array
NORMAL_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 normal array buffer binding vertex-array
COLOR_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 color array buffer binding vertex-array
TEXTURE_COORD_ARRAY_BUFFER_BINDING MAX_TEXTURE_UNITS × Z+ GetIntegerv 0 texcoord array buffer binding vertex-array
POINT_SIZE_ARRAY_BUFFER_BINDING_OES Z+ GetIntegerv 0 point size array buffer binding vertex-array
ELEMENT_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 element array buffer binding vertex-array

§ Buffer Object State

n × BMU — — buffer data —
BUFFER_SIZE n × Z+ GetBufferParameteriv 0 buffer data size —
BUFFER_USAGE $n \times Z^9$ GetBufferParameteriv STATIC_DRAW buffer usage pattern —

§ Transformation state

MODELVIEW_MATRIX 16* × M4 GetFloatv Identity Model-view matrix stack —
PROJECTION_MATRIX 2* × M4 GetFloatv Identity Projection matrix stack —
TEXTURE_MATRIX MAX_TEXTURE_UNITS × 2* × M4 GetFloatv Identity Texture matrix stack —
MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 4 × 4 × Z GetIntegerv Identity Alias of \glc{MODELVIEW_MATRIX} in integer encoding —
PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 4 × 4 × Z GetIntegerv Identity Alias of \glc{PROJECTION_MATRIX} in integer encoding —
TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 4 × 4 × Z GetIntegerv Identity Alias of \glc{TEXTURE_MATRIX} in integer encoding —
VIEWPORT 4 × Z GetIntegerv see~\ref{view:port} Viewport origin \& extent viewport
DEPTH_RANGE 2 × R+ GetFloatv 0,1 Depth range near \& far viewport
MODELVIEW_STACK_DEPTH Z+ GetIntegerv 1 Model-view matrix stack pointer —
PROJECTION_STACK_DEPTH Z+ GetIntegerv 1 Projection matrix stack pointer —
TEXTURE_STACK_DEPTH MAX_TEXTURE_UNITS × Z+ GetIntegerv 1 Texture matrix stack pointer —
MATRIX_MODE Z4 GetIntegerv \tt MODELVIEW Current matrix mode transform
NORMALIZE B IsEnabled \em False Current normal normalization on/off transform/enable
RESCALE_NORMAL B IsEnabled \em False Current normal rescaling on/off transform/enable
CLIP_PLANE0 …
CLIP_PLANE0 + (n-1)
where n ≥ 1
n × R4 GetClipPlane 0,0,0,0 User clipping plane coefficients transform
CLIP_PLANE0 …
CLIP_PLANE0 + (n-1)
where n ≥ 1
n × B IsEnabled \em False $i$th user clipping plane enabled transform/enable

§ Coloring

FOG_COLOR C GetFloatv 0,0,0,0 Fog color fog
FOG_DENSITY R GetFloatv 1.0 Exponential fog density fog
FOG_START R GetFloatv 0.0 Linear fog start fog
FOG_END R GetFloatv 1.0 Linear fog end fog
FOG_MODE Z3 GetIntegerv \glc{EXP} Fog mode fog
FOG B IsEnabled \em False True if fog enabled fog/enable
SHADE_MODEL Z+ GetIntegerv \glc{SMOOTH} {\bf ShadeModel} setting lighting

§ Lighting

(see also Table~\ref{light:tab1} for defaults)

LIGHTING B IsEnabled \em False True if lighting is enabled lighting/enable
COLOR_MATERIAL B IsEnabled \em False True if color tracking is enabled lighting/enable
AMBIENT 2 × C GetMaterialfv (0.2,0.2,0.2,1.0) Ambient material color lighting
DIFFUSE 2 × C GetMaterialfv (0.8,0.8,0.8,1.0) Diffuse material color lighting
SPECULAR 2 × C GetMaterialfv (0.0,0.0,0.0,1.0) Specular material color lighting
EMISSION 2 × C GetMaterialfv (0.0,0.0,0.0,1.0) Emissive mat. color lighting
SHININESS 2 × R GetMaterialfv 0.0 Specular exponent of material lighting
LIGHT_MODEL_AMBIENT C GetFloatv (0.2,0.2,0.2,1.0) Ambient scene color lighting
LIGHT_MODEL_TWO_SIDE B GetBooleanv \em False Use two-sided lighting lighting

§ Lighting (cont.)

AMBIENT 8* × C GetLightfv (0.0,0.0,0.0,1.0) Ambient intensity of light $i$ lighting
DIFFUSE 8* × C GetLightfv see 2.5 Diffuse intensity of light $i$ lighting
SPECULAR 8* × C GetLightfv see 2.5 Specular intensity of light $i$ lighting
POSITION 8* × P GetLightfv (0.0,0.0,1.0,0.0) Position of light $i$ lighting
CONSTANT_ATTENUATION 8* × R+ GetLightfv 1.0 Constant atten. factor lighting
LINEAR_ATTENUATION 8* × R+ GetLightfv 0.0 Linear atten. factor lighting
QUADRATIC_ATTENUATION 8* × R+ GetLightfv 0.0 Quadratic atten. factor lighting
SPOT_DIRECTION 8* × D GetLightfv (0.0,0.0,-1.0) Spotlight direction of light $i$ lighting
SPOT_EXPONENT 8* × R+ GetLightfv 0.0 Spotlight exponent of light $i$ lighting
SPOT_CUTOFF 8* × R+ GetLightfv 180.0 Spot. angle of light $i$ lighting
LIGHT0 …
LIGHT0 + (n-1)
where n ≥ 8
n × B IsEnabled \em False True if light $i$ enabled lighting/enable

§ Rasterization

  1. † Max. of the impl. dependent max. aliased and smooth point sizes.
POINT_SIZE R+ GetFloatv 1.0 Point size point
POINT_SMOOTH B IsEnabled \em False Point antialiasing on point/enable
POINT_SIZE_MIN R+ GetFloatv 0.0 Attenuated minimum point size point
POINT_SIZE_MAX R+ GetFloatv † Attenuated maximum point size. point
POINT_FADE_THRESHOLD_SIZE R+ GetFloatv 1.0 Threshold for alpha attenuation point
POINT_DISTANCE_ATTENUATION 3 × R+ GetFloatv 1,0,0 Attenuation coefficients point
POINT_SPRITE_OES B IsEnabled \em False Point sprites enabled point
LINE_WIDTH R+ GetFloatv 1.0 Line width line
LINE_SMOOTH B IsEnabled \em False Line antialiasing on line/enable
CULL_FACE B IsEnabled \em False Polygon culling enabled polygon/enable
CULL_FACE_MODE Z3 GetIntegerv \glc{BACK} Cull front/back facing polygons polygon
FRONT_FACE Z2 GetIntegerv \glc{CCW} Polygon frontface CW/CCW indicator polygon
POLYGON_OFFSET_FACTOR R GetFloatv 0 Polygon offset factor polygon
POLYGON_OFFSET_UNITS R GetFloatv 0 Polygon offset units polygon
POLYGON_OFFSET_FILL B IsEnabled \em False Polygon offset enable polygon/enable

§ Multisampling

MULTISAMPLE B IsEnabled \em True Multisample rasterization multisample/enable
SAMPLE_ALPHA_TO_COVERAGE B IsEnabled \em False Modify coverage from alpha multisample/enable
SAMPLE_ALPHA_TO_ONE B IsEnabled \em False Set alpha to maximum multisample/enable
SAMPLE_COVERAGE B IsEnabled \em False Mask to modify coverage multisample/enable
SAMPLE_COVERAGE_VALUE R+ GetFloatv 1 Coverage mask value multisample
SAMPLE_COVERAGE_INVERT B GetBooleanv \em False Invert coverage mask value multisample

§ Textures (state per texture unit and binding point)

TEXTURE_2D MAX_TEXTURE_UNITS × B IsEnabled \em False True if 2D texturing is enabled texture/enable
TEXTURE_BINDING_2D MAX_TEXTURE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D} texture
TEXTURE_2D n × I — see \ref{texturing} 2D texture image at l.o.d. $i$ —

§ Textures (state per texture object)

TEXTURE_MIN_FILTER n × Z6 GetTexParameter see \ref{texturing} Texture minification function texture
TEXTURE_MAG_FILTER n × Z2 GetTexParameter see \ref{texturing} Texture magnification function texture
TEXTURE_WRAP_S n × Z2 GetTexParameter \glc{REPEAT} Texcoord $s$ wrap mode texture
TEXTURE_WRAP_T n × Z2 GetTexParameter \glc{REPEAT} Texcoord $t$ wrap mode texture
GENERATE_MIPMAP n × B GetTexParameter \glc{FALSE} Automatic mipmap generation texture

§ Texture Environment and Generation

ACTIVE_TEXTURE ZMAX_TEXTURE_UNITS GetIntegerv \glc{TEXTURE0} Active texture unit selector texture
TEXTURE_ENV_MODE MAX_TEXTURE_UNITS × Z6 GetTexEnviv \glc{MODULATE} Texture application function texture
TEXTURE_ENV_COLOR MAX_TEXTURE_UNITS × C GetTexEnvfv 0,0,0,0 Texture environment color texture
COORD_REPLACE_OES MAX_TEXTURE_UNITS × B GetTexEnviv \em False Point coordinate replacement enabled texture
COMBINE_RGB MAX_TEXTURE_UNITS × Z8 GetTexEnviv \glc{MODULATE} RGB combiner function texture
COMBINE_ALPHA MAX_TEXTURE_UNITS × Z6 GetTexEnviv \glc{MODULATE} Alpha combiner function texture
SRC0_RGB MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{TEXTURE} RGB source 0 texture
SRC1_RGB MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{PREVIOUS} RGB source 1 texture
SRC2_RGB MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{CONSTANT} RGB source 2 texture
SRC0_ALPHA MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{TEXTURE} Alpha source 0 texture
SRC1_ALPHA MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{PREVIOUS} Alpha source 1 texture
SRC2_ALPHA MAX_TEXTURE_UNITS × Z3 GetTexEnviv \glc{CONSTANT} Alpha source 2 texture
OPERAND0_RGB MAX_TEXTURE_UNITS × Z4 GetTexEnviv \glc{SRC_COLOR} RGB operand 0 texture
OPERAND1_RGB MAX_TEXTURE_UNITS × Z4 GetTexEnviv \glc{SRC_COLOR} RGB operand 1 texture
OPERAND2_RGB MAX_TEXTURE_UNITS × Z4 GetTexEnviv \glc{SRC_ALPHA} RGB operand 2 texture
OPERAND0_ALPHA MAX_TEXTURE_UNITS × Z2 GetTexEnviv \glc{SRC_ALPHA} Alpha operand 0 texture
OPERAND1_ALPHA MAX_TEXTURE_UNITS × Z2 GetTexEnviv \glc{SRC_ALPHA} Alpha operand 1 texture
OPERAND2_ALPHA MAX_TEXTURE_UNITS × Z2 GetTexEnviv \glc{SRC_ALPHA} Alpha operand 2 texture
RGB_SCALE MAX_TEXTURE_UNITS × R3 GetTexEnvfv 1.0 RGB post-combiner scaling texture
ALPHA_SCALE MAX_TEXTURE_UNITS × R3 GetTexEnvfv 1.0 Alpha post-combiner scaling texture

§ Pixel Operations

SCISSOR_TEST B IsEnabled \em False Scissoring enabled scissor/enable
SCISSOR_BOX 4 × Z GetIntegerv see~\ref{scissor} Scissor box scissor
ALPHA_TEST B IsEnabled \em False Alpha test enabled color-buffer/enable
ALPHA_TEST_FUNC Z8 GetIntegerv \glc{ALWAYS} Alpha test function color-buffer
ALPHA_TEST_REF R+ GetIntegerv 0 Alpha test reference value color-buffer
STENCIL_TEST B IsEnabled \em False Stenciling enabled stencil-buffer/enable
STENCIL_FUNC Z8 GetIntegerv \glc{ALWAYS} Stencil function stencil-buffer
STENCIL_VALUE_MASK Z+ GetIntegerv 1's Stencil mask stencil-buffer
STENCIL_REF Z+ GetIntegerv 0 Stencil reference value stencil-buffer
STENCIL_FAIL Z6 GetIntegerv \glc{KEEP} Stencil fail action stencil-buffer
STENCIL_PASS_DEPTH_FAIL Z6 GetIntegerv \glc{KEEP} Stencil depth buffer fail action stencil-buffer
STENCIL_PASS_DEPTH_PASS Z6 GetIntegerv \glc{KEEP} Stencil depth buffer pass action stencil-buffer
DEPTH_TEST B IsEnabled \em False Depth buffer enabled depth-buffer/enable
DEPTH_FUNC Z8 GetIntegerv \glc{LESS} Depth buffer test function depth-buffer
BLEND B IsEnabled \em False Blending enabled color-buffer/enable
BLEND_SRC Z9 GetIntegerv \glc{ONE} Blending source function color-buffer
BLEND_DST Z8 GetIntegerv \glc{ZERO} Blending dest. function color-buffer
DITHER B IsEnabled \em True Dithering enabled color-buffer/enable
COLOR_LOGIC_OP B IsEnabled \em False Color logic op enabled color-buffer/enable
LOGIC_OP_MODE Z16 GetIntegerv \glc{COPY} Logic op function color-buffer

§ Framebuffer Control

COLOR_WRITEMASK 4 × B GetBooleanv {\em True} Color write enables; R, G, B, or A color-buffer
DEPTH_WRITEMASK B GetBooleanv {\em True} Depth buffer enabled for writing depth-buffer
STENCIL_WRITEMASK Z+ GetIntegerv 1's Stencil buffer writemask stencil-buffer
COLOR_CLEAR_VALUE C GetFloatv 0,0,0,0 Color buffer clear value (RGBA mode) color-buffer
DEPTH_CLEAR_VALUE R+ GetIntegerv 1 Depth buffer clear value depth-buffer
STENCIL_CLEAR_VALUE Z+ GetIntegerv 0 Stencil clear value stencil-buffer

§ Pixels

UNPACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{UNPACK_ALIGNMENT} pixel-store
PACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{PACK_ALIGNMENT} pixel-store

§ Hints

PERSPECTIVE_CORRECTION_HINT Z3 GetIntegerv \glc{DONT_CARE} Perspective correction hint hint
POINT_SMOOTH_HINT Z3 GetIntegerv \glc{DONT_CARE} Point smooth hint hint
LINE_SMOOTH_HINT Z3 GetIntegerv \glc{DONT_CARE} Line smooth hint hint
FOG_HINT Z3 GetIntegerv \glc{DONT_CARE} Fog hint hint
GENERATE_MIPMAP_HINT Z3 GetIntegerv \glc{DONT_CARE} Mipmap generation hint hint

§ Implementation Dependent Values

MAX_LIGHTS Z+ GetIntegerv 8 Maximum number of lights —
MAX_CLIP_PLANES Z+ GetIntegerv 1 Maximum number of user clipping planes —
MAX_MODELVIEW_STACK_DEPTH Z+ GetIntegerv 16 Maximum model-view stack depth —
MAX_PROJECTION_STACK_DEPTH Z+ GetIntegerv 2 Maximum projection matrix stack depth —
MAX_TEXTURE_STACK_DEPTH Z+ GetIntegerv 2 Maximum number depth of texture matrix stack —
SUBPIXEL_BITS Z+ GetIntegerv 4 Number of bits of subpixel precision in screen $x_w$ and $y_w$ —
MAX_TEXTURE_SIZE Z+ GetIntegerv 64 Maximum texture image dimension —
MAX_VIEWPORT_DIMS 2 × Z+ GetIntegerv see \ref{view:port} Maximum viewport dimensions —

§ Implementation Dependent Values (cont.)

ALIASED_POINT_SIZE_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of aliased point sizes —
SMOOTH_POINT_SIZE_RANGE (POINT_SIZE_RANGE) 2 × R+ GetFloatv 1,1 Range (lo to hi) of antialiased point sizes —
ALIASED_LINE_WIDTH_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of aliased line widths —
SMOOTH_LINE_WIDTH_RANGE (v1.1:~LINE_WIDTH_RANGE) 2 × R+ GetFloatv 1,1 Range (lo to hi) of antialiased line widths —

§ Implementation Dependent Values (cont.)

MAX_TEXTURE_UNITS Z+ GetIntegerv 2 Number of texture units (not to exceed 32) —
SAMPLE_BUFFERS Z+ GetIntegerv 0 Number of multisample buffers —
SAMPLES Z+ GetIntegerv 0 Coverage mask size —
COMPRESSED_TEXTURE_FORMATS 10 × Z GetIntegerv — Enumerated compressed texture formats —
NUM_COMPRESSED_TEXTURE_FORMATS Z GetIntegerv 10 Number of enumerated compressed texture formats —

§ Implementation Dependent Pixel Depths

RED_BITS Z+ GetIntegerv — Number of bits in RED color buffer component —
GREEN_BITS Z+ GetIntegerv — Number of bits in GREEN color buffer component —
BLUE_BITS Z+ GetIntegerv — Number of bits in BLUE color buffer component —
ALPHA_BITS Z+ GetIntegerv — Number of bits in ALPHA color buffer component —
DEPTH_BITS Z+ GetIntegerv — Number of depth buffer planes —
STENCIL_BITS Z+ GetIntegerv — Number of stencil planes —

§ Miscellaneous

— n × Z8 GetError 0 Current error code(s) —
— n × B — \em False True if there is a corresponding error —

OpenGL ES 3.2 state tables

Get value Type Get command Initial value Description Attribute

§ Current Values and Associated Data

PATCH_VERTICES Z+ GetIntegerv 3 No. of vertices in input patch current

§ Vertex Array Object State

  1. † The $i$th attribute defaults to a value of $i$.
VERTEX_ATTRIB_ARRAY_ENABLED MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array enable vertex-array
VERTEX_ATTRIB_ARRAY_SIZE MAX_VERTEX_ATTRIBS × Z5 GetVertexAttribiv 4 Vertex attrib array size vertex-array
VERTEX_ATTRIB_ARRAY_STRIDE MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Vertex attrib array stride vertex-array
VERTEX_ATTRIB_ARRAY_TYPE MAX_VERTEX_ATTRIBS × E GetVertexAttribiv \glc{FLOAT} Vertex attrib array type vertex-array
VERTEX_ATTRIB_ARRAY_NORMALIZED MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array normalized vertex-array
VERTEX_ATTRIB_ARRAY_INTEGER MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array has unconverted integers vertex-array
VERTEX_ATTRIB_ARRAY_DIVISOR MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Vertex attrib array instance divisor vertex-array
VERTEX_ATTRIB_ARRAY_POINTER MAX_VERTEX_ATTRIBS × Y GetVertexAttribPointerv \glc{NULL} Vertex attrib array pointer vertex-array
ELEMENT_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Element array buffer binding vertex-array
VERTEX_ATTRIB_ARRAY_BUFFER_BINDING MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Attribute array buffer binding vertex-array
VERTEX_ATTRIB_BINDING 16 × Z16* GetVertexAttribiv $i$† Vertex buffer binding used by vertex attrib $i$ —
VERTEX_ATTRIB_RELATIVE_OFFSET 16 × Z+ GetVertexAttribiv 0 Byte offset added to vertex binding offset for this attribute —
VERTEX_BINDING_OFFSET 16 × Z GetInteger64i_v 0 Byte offset of the first element in data store of the buffer bound to vertex binding $i$ —
VERTEX_BINDING_STRIDE 16 × Z GetIntegeri_v 16 Stride between elements in vertex binding $i$ —
VERTEX_BINDING_DIVISOR 16 × Z+ GetIntegeri_v 0 Instance divisor used for vertex binding $i$ —
VERTEX_BINDING_BUFFER 16 × Z+ GetIntegeri_v 0 Name of buffer bound to vertex binding $i$ —
— S GetObjectLabel empty Debug label —

§ Vertex Array Data (not in vertex array objects)

ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Current buffer binding vertex-array
DRAW_INDIRECT_BUFFER_BINDING Z+ GetIntegerv 0 Indirect command buffer binding —
VERTEX_ARRAY_BINDING Z+ GetIntegerv 0 Current vertex array object binding vertex-array
PRIMITIVE_RESTART_FIXED_INDEX B IsEnabled \glc{FALSE} Primitive restart with fixed index enable vertex-array

§ Buffer Object State

  1. † This state may be queried with \glr{GetBufferParameteriv}, in which case values greater than or equal to $2^{31}$ will be clamped to $2^{31}-1$.
BUFFER_SIZE n × Z+ GetBufferParameteri64v 0 Buffer data size† —
BUFFER_USAGE n × E GetBufferParameteriv \glc{STATIC_DRAW} Buffer usage pattern —
BUFFER_ACCESS_FLAGS n × Z+ GetBufferParameteriv 0 Extended buffer access flag —
BUFFER_MAPPED n × B GetBufferParameteriv \glc{FALSE} Buffer map flag —
BUFFER_MAP_POINTER n × Y GetBufferPointerv \glc{NULL} Mapped buffer pointer —
BUFFER_MAP_OFFSET n × Z+ GetBufferParameteri64v 0 Start of mapped buffer range —
BUFFER_MAP_LENGTH n × Z+ GetBufferParameteri64v 0 Size of mapped buffer range —
— S GetObjectLabel empty Debug label —

§ Transformation State

VIEWPORT 4 × Z GetIntegerv see~\ref{view:port} Viewport origin \& extent viewport
DEPTH_RANGE 2 × R+ GetFloatv 0,1 Depth range near \& far viewport
TRANSFORM_FEEDBACK_BINDING Z+ GetIntegerv 0 Object bound for transform feedback operations —
TRANSFORM_FEEDBACK_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to generic bind point for transform feedback —
PRIMITIVE_BOUNDING_BOX 8 × R GetFloatv $(-1,-1,-1, 1, 1, 1, 1, 1)$ Default primitive bounding box —

§ Rasterization

RASTERIZER_DISCARD B IsEnabled \glc{FALSE} Discard primitives before rasterization —
LINE_WIDTH R+ GetFloatv 1.0 Line width line
CULL_FACE B IsEnabled \glc{FALSE} Polygon culling enabled polygon/enable
CULL_FACE_MODE E GetIntegerv \glc{BACK} Cull front-/back-facing polygons polygon
FRONT_FACE E GetIntegerv \glc{CCW} Polygon frontface CW/CCW indicator polygon
POLYGON_OFFSET_FACTOR R GetFloatv 0 Polygon offset factor polygon
POLYGON_OFFSET_UNITS R GetFloatv 0 Polygon offset units polygon
POLYGON_OFFSET_FILL B IsEnabled \glc{FALSE} Polygon offset enable polygon/enable

§ Multisampling

  1. † $n$ is the value of \glc{MAX_SAMPLE_MASK_WORDS}.
SAMPLE_ALPHA_TO_COVERAGE B IsEnabled \glc{FALSE} Modify coverage from alpha multisample/enable
SAMPLE_COVERAGE B IsEnabled \glc{FALSE} Mask to modify coverage multisample/enable
SAMPLE_COVERAGE_VALUE R+ GetFloatv 1 Coverage mask value multisample
SAMPLE_COVERAGE_INVERT B GetBooleanv \glc{FALSE} Invert coverage mask value multisample
SAMPLE_SHADING B IsEnabled \glc{FALSE} Sample shading enable multisample/enable
MIN_SAMPLE_SHADING_VALUE R+ GetFloatv 0 Fraction of multisamples to use for sample shading multisample
SAMPLE_MASK B IsEnabled \glc{FALSE} Additional sample mask —
SAMPLE_MASK_VALUE n × Z+† GetIntegeri_v All bits of all words set Additional sample mask value —

§ Textures (selector, state per texture unit)

ACTIVE_TEXTURE E GetIntegerv \glc{TEXTURE0} Active texture unit selector texture
TEXTURE_BINDING_2D MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D} texture
TEXTURE_BINDING_3D MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_3D} texture
TEXTURE_BINDING_2D_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_ARRAY} texture
TEXTURE_BINDING_BUFFER MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_BUFFER} texture
TEXTURE_BINDING_CUBE_MAP MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_CUBE_MAP} texture
TEXTURE_BINDING_CUBE_MAP_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_CUBE_MAP_ARRAY} texture
TEXTURE_BINDING_2D_MULTISAMPLE MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_MULTISAMPLE} —
TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_MULTISAMPLE_ARRAY} —
SAMPLER_BINDING MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Sampler object bound to active texture unit —

§ Textures (state per texture object)

TEXTURE_SWIZZLE_R E GetTexParameter \glc{RED} Red component swizzle texture
TEXTURE_SWIZZLE_G E GetTexParameter \glc{GREEN} Green component swizzle texture
TEXTURE_SWIZZLE_B E GetTexParameter \glc{BLUE} Blue component swizzle texture
TEXTURE_SWIZZLE_A E GetTexParameter \glc{ALPHA} Alpha component swizzle texture
TEXTURE_BORDER_COLOR C GetTexParameterfv 0.0,0.0,0.0,0.0 Border color texture
TEXTURE_MIN_FILTER E GetTexParameter see sec.~\ref{tex:state} Minification function texture
TEXTURE_MAG_FILTER E GetTexParameter \glc{LINEAR} Magnification function texture
TEXTURE_WRAP_S E GetTexParameter see sec.~\ref{tex:state} Texcoord $s$ wrap mode texture
TEXTURE_WRAP_T E GetTexParameter see sec.~\ref{tex:state} Texcoord $t$ wrap mode (2D, 3D, cube map textures only) texture
TEXTURE_WRAP_R E GetTexParameter see sec.~\ref{tex:state} Texcoord $r$ wrap mode (3D textures only) texture
TEXTURE_MIN_LOD R GetTexParameterfv -1000 Min. level of detail texture
TEXTURE_MAX_LOD R GetTexParameterfv 1000 Max. level of detail texture
TEXTURE_BASE_LEVEL Z+ GetTexParameterfv 0 Base texture array texture
TEXTURE_MAX_LEVEL Z+ GetTexParameterfv 1000 Max. texture array level texture
DEPTH_STENCIL_TEXTURE_MODE E GetTexParameteriv \glc{DEPTH_COMPONENT} Depth stencil texturemode —
TEXTURE_COMPARE_MODE E GetTexParameteriv \glc{NONE} Comparison mode texture
TEXTURE_COMPARE_FUNC E GetTexParameteriv \glc{LEQUAL} Comparison function texture
TEXTURE_IMMUTABLE_FORMAT B GetTexParameter \glc{FALSE} Size and format immutable texture
TEXTURE_IMMUTABLE_LEVELS Z+ GetTexParameter 0 No. of levels in immutable textures texture
— S GetObjectLabel empty Debug label —

§ Textures (state per texture image)

TEXTURE_WIDTH Z+ GetTexLevelParameter 0 Specified width —
TEXTURE_HEIGHT Z+ GetTexLevelParameter 0 Specified height (2D/3D) —
TEXTURE_DEPTH Z+ GetTexLevelParameter 0 Specified depth (3D) —
TEXTURE_SAMPLES Z+ GetTexLevelParameter 0 No. of samples per texel —
TEXTURE_FIXED_SAMPLE_LOCATIONS B GetTexLevelParameter \glc{TRUE} Whether the image uses a fixed sample pattern —
TEXTURE_INTERNAL_FORMAT E GetTexLevelParameteriv \glc{RGBA} or \glc{R8} Internal format (see section~\ref{tex:state}) —
TEXTURE_RED_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_GREEN_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_BLUE_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_ALPHA_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_DEPTH_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_STENCIL_SIZE Z+ GetTexLevelParameter 0 Component resolution —
TEXTURE_SHARED_SIZE Z+ GetTexLevelParameter 0 Shared exponent field resolution —
TEXTURE_RED_TYPE E GetTexLevelParameter \glc{NONE} Component type —
TEXTURE_GREEN_TYPE E GetTexLevelParameter \glc{NONE} Component type —
TEXTURE_BLUE_TYPE E GetTexLevelParameter \glc{NONE} Component type —
TEXTURE_ALPHA_TYPE E GetTexLevelParameter \glc{NONE} Component type —
TEXTURE_DEPTH_TYPE E GetTexLevelParameter \glc{NONE} Component type —
TEXTURE_COMPRESSED B GetTexLevelParameter \glc{FALSE} True if image has a compressed internal format —
TEXTURE_BUFFER_DATA_STORE_BINDING Z+ GetTexLevelParameteriv 0 Buffer object bound as the data store for the active image unit's buffer texture texture
TEXTURE_BUFFER_OFFSET n × Z GetTexLevelParameteriv 0 Offset into buffer's data store used for the active image unit's buffer texture —
TEXTURE_BUFFER_SIZE n × Z GetTexLevelParameteriv 0 Size of the buffer's data store used for the active image unit's buffer texture —

§ Textures (state per sampler object)

TEXTURE_BORDER_COLOR C GetSamplerParameterfv 0.0,0.0,0.0,0.0 Border color —
TEXTURE_MIN_FILTER E GetSamplerParameter \glc{NEAREST_MIPMAP_LINEAR} Minification function texture
TEXTURE_MAG_FILTER E GetSamplerParameter \glc{LINEAR} Magnification function texture
TEXTURE_WRAP_S E GetSamplerParameter \glc{REPEAT} Texcoord $s$ wrap mode texture
TEXTURE_WRAP_T E GetSamplerParameter \glc{REPEAT} Texcoord $t$ wrap mode (2D, 3D, cube map textures only) texture
TEXTURE_WRAP_R E GetSamplerParameter \glc{REPEAT} Texcoord $r$ wrap mode (3D textures only) texture
TEXTURE_MIN_LOD R GetSamplerParameterfv -1000 Min. level of detail texture
TEXTURE_MAX_LOD R GetSamplerParameterfv 1000 Max. level of detail texture
TEXTURE_COMPARE_MODE E GetSamplerParameteriv \glc{NONE} Comparison mode texture
TEXTURE_COMPARE_FUNC E GetSamplerParameteriv \glc{LEQUAL} Comparison function texture
— S GetObjectLabel empty Debug label —

§ Pixel Operations

SCISSOR_TEST B IsEnabled \glc{FALSE} Scissoring enabled scissor/enable
SCISSOR_BOX 4 × Z GetIntegerv see~\ref{scissor} Scissor box scissor
STENCIL_TEST B IsEnabled \glc{FALSE} Stenciling enabled stencil-buffer/enable
STENCIL_FUNC E GetIntegerv \glc{ALWAYS} Front stencil function stencil-buffer
STENCIL_VALUE_MASK Z+ GetIntegerv see~\ref{stencil} Front stencil mask stencil-buffer
STENCIL_REF Z+ GetIntegerv 0 Front stencil reference value stencil-buffer
STENCIL_FAIL E GetIntegerv \glc{KEEP} Front stencil fail action stencil-buffer
STENCIL_PASS_DEPTH_FAIL E GetIntegerv \glc{KEEP} Front stencil depth buffer fail action stencil-buffer
STENCIL_PASS_DEPTH_PASS E GetIntegerv \glc{KEEP} Front stencil depth buffer pass action stencil-buffer
STENCIL_BACK_FUNC E GetIntegerv \glc{ALWAYS} Back stencil function stencil-buffer
STENCIL_BACK_VALUE_MASK Z+ GetIntegerv see~\ref{stencil} Back stencil mask stencil-buffer
STENCIL_BACK_REF Z+ GetIntegerv 0 Back stencil reference value stencil-buffer
STENCIL_BACK_FAIL E GetIntegerv \glc{KEEP} Back stencil fail action stencil-buffer
STENCIL_BACK_PASS_DEPTH_FAIL E GetIntegerv \glc{KEEP} Back stencil depth buffer fail action stencil-buffer
STENCIL_BACK_PASS_DEPTH_PASS E GetIntegerv \glc{KEEP} Back stencil depth buffer pass action stencil-buffer
DEPTH_TEST B IsEnabled \glc{FALSE} Depth test enabled depth-buffer/enable
DEPTH_FUNC E GetIntegerv \glc{LESS} Depth test function depth-buffer
BLEND MAX_DRAW_BUFFERS × B IsEnabledi \glc{FALSE} Blending enabled {for draw buffer $i$} color-buffer/enable
BLEND_SRC_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ONE} Blending source RGB function for draw buffer $i$ color-buffer
BLEND_SRC_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ONE} Blending source A function for draw buffer $i$ color-buffer
BLEND_DST_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ZERO} Blending dest. RGB function for draw buffer $i$ color-buffer
BLEND_DST_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ZERO} Blending dest. A function for draw buffer $i$ color-buffer
BLEND_EQUATION_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{FUNC_ADD} RGB blending equation for draw buffer $i$ color-buffer
BLEND_EQUATION_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{FUNC_ADD} Alpha blending equation for draw buffer $i$ color-buffer
BLEND_COLOR C GetFloatv 0.0,0.0,0.0,0.0 Constant blend color color-buffer
DITHER B IsEnabled \glc{TRUE} Dithering enabled color-buffer/enable

§ Framebuffer Control

COLOR_WRITEMASK MAX_DRAW_BUFFERS × 4 × B GetBooleani_v (\glc{TRUE},\glc{TRUE},\glc{TRUE},\glc{TRUE}) Color write enables (R,G,B,A) for draw buffer $i$ color-buffer
DEPTH_WRITEMASK B GetBooleanv \glc{TRUE} Depth buffer enabled for writing depth-buffer
STENCIL_WRITEMASK Z+ GetIntegerv 1's Front stencil buffer writemask stencil-buffer
STENCIL_BACK_WRITEMASK Z+ GetIntegerv 1's Back stencil buffer writemask stencil-buffer
COLOR_CLEAR_VALUE C GetFloatv 0.0,0.0,0.0,0.0 Color buffer clear value color-buffer
DEPTH_CLEAR_VALUE R+ GetFloatv 1 Depth buffer clear value depth-buffer
STENCIL_CLEAR_VALUE Z+ GetIntegerv 0 Stencil clear value stencil-buffer
DRAW_FRAMEBUFFER_BINDING Z+ GetIntegerv 0 Framebuffer object bound to \glc{DRAW_FRAMEBUFFER} —
READ_FRAMEBUFFER_BINDING Z+ GetIntegerv 0 Framebuffer object bound to \glc{READ_FRAMEBUFFER} —
RENDERBUFFER_BINDING Z GetIntegerv 0 Renderbuffer object bound to \glc{RENDERBUFFER} —

§ Framebuffer (state per framebuffer object)

  1. † This state is queried from the currently bound read framebuffer.
DRAW_BUFFER0 …
DRAW_BUFFER0 + (n-1)
where n ≥ MAX_DRAW_BUFFERS
n × E GetIntegerv see~\ref{setbuffers} Draw buffer selected for color output $i$ color-buffer
READ_BUFFER E GetIntegerv see~\ref{pix:read:buffer} Read source buffer† pixel
FRAMEBUFFER_DEFAULT_WIDTH Z+ GetFramebufferParameteriv 0 Default width of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_HEIGHT Z+ GetFramebufferParameteriv 0 Default height of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_LAYERS Z+ GetFramebufferParameteriv 0 Default layer count of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_SAMPLES Z+ GetFramebufferParameteriv 0 Default sample count of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS B GetFramebufferParameteriv \glc{FALSE} Default sample location pattern of framebuffer w/o attachments —

§ Framebuffer (state per attachment point)

FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE E GetFramebufferAttachmentParameteriv \glc{NONE} Type of image attached to framebuffer attachment point —
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME Z+ GetFramebufferAttachmentParameteriv 0 Name of object attached to framebuffer attachment point —
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL Z+ GetFramebufferAttachmentParameteriv 0 Mipmap level of texture image attached, if object attached is texture —
FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE Z+ GetFramebufferAttachmentParameteriv \glc{NONE} Cubemap face of texture image attached, if object attached is cubemap texture —
FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER Z GetFramebufferAttachmentParameteriv 0 Layer of texture image attached, if object attached is 3D texture —
FRAMEBUFFER_ATTACHMENT_LAYERED B GetFramebufferAttachmentParameteriv \glc{FALSE} Framebuffer attachment is layered —
FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING E GetFramebufferAttachmentParameteriv — Encoding of components in the attached image —
FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE E GetFramebufferAttachmentParameteriv — Data type of components in the attached image —
FRAMEBUFFER_ATTACHMENT_RED_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's RED component —
FRAMEBUFFER_ATTACHMENT_GREEN_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's GREEN component —
FRAMEBUFFER_ATTACHMENT_BLUE_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's BLUE component —
FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's ALPHA component —
FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's DEPTH component —
FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's STENCIL component —
— S GetObjectLabel empty Debug label —

§ Renderbuffer (state per renderbuffer object)

RENDERBUFFER_WIDTH Z+ GetRenderbufferParameteriv 0 Width of renderbuffer —
RENDERBUFFER_HEIGHT Z+ GetRenderbufferParameteriv 0 Height of renderbuffer —
RENDERBUFFER_INTERNAL_FORMAT E GetRenderbufferParameteriv \glc{RGBA4} Internal format of renderbuffer —
RENDERBUFFER_RED_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's red component —
RENDERBUFFER_GREEN_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's green component —
RENDERBUFFER_BLUE_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's blue component —
RENDERBUFFER_ALPHA_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's alpha component —
RENDERBUFFER_DEPTH_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's depth component —
RENDERBUFFER_STENCIL_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's stencil component —
RENDERBUFFER_SAMPLES Z+ GetRenderbufferParameteriv 0 No. of samples —
— S GetObjectLabel empty Debug label —

§ Pixels

UNPACK_IMAGE_HEIGHT Z+ GetIntegerv 0 Value of \glc{UNPACK_IMAGE_HEIGHT} pixel-store
UNPACK_SKIP_IMAGES Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_IMAGES} pixel-store
UNPACK_ROW_LENGTH Z+ GetIntegerv 0 Value of \glc{UNPACK_ROW_LENGTH} pixel-store
UNPACK_SKIP_ROWS Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_ROWS} pixel-store
UNPACK_SKIP_PIXELS Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_PIXELS} pixel-store
UNPACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{UNPACK_ALIGNMENT} pixel-store
PACK_ROW_LENGTH Z+ GetIntegerv 0 Value of \glc{PACK_ROW_LENGTH} pixel-store
PACK_SKIP_ROWS Z+ GetIntegerv 0 Value of \glc{PACK_SKIP_ROWS} pixel-store
PACK_SKIP_PIXELS Z+ GetIntegerv 0 Value of \glc{PACK_SKIP_PIXELS} pixel-store
PACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{PACK_ALIGNMENT} pixel-store
PIXEL_PACK_BUFFER_BINDING Z+ GetIntegerv 0 Pixel pack buffer binding pixel-store
PIXEL_UNPACK_BUFFER_BINDING Z+ GetIntegerv 0 Pixel unpack buffer binding pixel-store

§ Shader Object State

SHADER_TYPE E GetShaderiv — Type of shader (see table~\ref{tab:programs:shadertypes}) —
DELETE_STATUS B GetShaderiv \glc{FALSE} Shader flagged for deletion —
COMPILE_STATUS B GetShaderiv \glc{FALSE} Last compile succeeded —
— S GetShaderInfoLog empty string Info log for shader objects —
INFO_LOG_LENGTH Z+ GetShaderiv 0 Length of info log —
— S GetShaderSource empty string Source code for a shader —
SHADER_SOURCE_LENGTH Z+ GetShaderiv 0 Length of source code —
— S GetObjectLabel empty Debug label —

§ Program Pipeline Object State

ACTIVE_PROGRAM Z+ GetProgramPipelineiv 0 The program object that \func{Uniform*} commands update when PPO bound —
VERTEX_SHADER Z+ GetProgramPipelineiv 0 Name of current vertex shader program object —
GEOMETRY_SHADER Z+ GetProgramPipelineiv 0 Name of current geometry shader program object —
TESS_CONTROL_SHADER Z+ GetProgramPipelineiv 0 Name of current TCS program object —
TESS_EVALUATION_SHADER Z+ GetProgramPipelineiv 0 Name of current TES program object —
FRAGMENT_SHADER Z+ GetProgramPipelineiv 0 Name of current fragment shader program object —
COMPUTE_SHADER Z+ GetProgramPipelineiv 0 Name of current compute shader program object —
VALIDATE_STATUS B GetProgramPipelineiv \glc{FALSE} Validate status of program pipeline object —
— S GetProgramPipelineInfoLog empty Info log for program pipeline object —
INFO_LOG_LENGTH Z+ GetProgramPipelineiv 0 Length of info log —
— S GetObjectLabel empty Debug label —

§ Program Object State

CURRENT_PROGRAM Z+ GetIntegerv 0 Name of current program object —
PROGRAM_PIPELINE_BINDING Z+ GetIntegerv 0 Current program pipeline object binding —
PROGRAM_SEPARABLE B GetProgramiv \glc{FALSE} Program object can be bound for separate pipeline stages —
DELETE_STATUS B GetProgramiv \glc{FALSE} Program object deleted —
LINK_STATUS B GetProgramiv \glc{FALSE} Last link attempt succeeded —
VALIDATE_STATUS B GetProgramiv \glc{FALSE} Last validate attempt succeeded —
ATTACHED_SHADERS Z+ GetProgramiv 0 No. of attached shader objects —
— 0* × Z+ GetAttachedShaders empty Shader objects attached —
— S GetProgramInfoLog empty Info log for program object —
INFO_LOG_LENGTH Z+ GetProgramiv 0 Length of info log —
PROGRAM_BINARY_LENGTH Z+ GetProgramiv 0 Length of program binary —
PROGRAM_BINARY_RETRIEVABLE_HINT B GetProgramiv \glc{FALSE} Retrievable binary hint enabled —
— 0* × BMU GetProgramBinary — Binary representation of program —
COMPUTE_WORK_GROUP_SIZE 3 × Z+ GetProgramiv \{0, \dots \} Local work size of a linked compute program —
— S GetObjectLabel empty Debug label —

§ Program Object State (cont.)

ACTIVE_UNIFORMS Z+ GetProgramiv 0 No. of active uniforms —
— 0* × Z GetUniformLocation — Location of active uniforms —
— 0* × Z+ GetActiveUniform — Size of active uniform —
— 0* × Z+ GetActiveUniform — Type of active uniform —
— 0* × char GetActiveUniform empty Name of active uniform —
ACTIVE_UNIFORM_MAX_LENGTH Z+ GetProgramiv 0 Max. active uniform name length —
— — GetUniform 0 Uniform value —
ACTIVE_ATTRIBUTES Z+ GetProgramiv 0 No. of active attributes —

§ Program Object State (cont.)

— 0* × Z GetAttribLocation — Location of active generic attribute —
— 0* × Z+ GetActiveAttrib — Size of active attribute —
— 0* × Z+ GetActiveAttrib — Type of active attribute —
— 0* × char GetActiveAttrib empty Name of active attribute —
ACTIVE_ATTRIBUTE_MAX_LENGTH Z+ GetProgramiv 0 Max. active attribute name length —
GEOMETRY_VERTICES_OUT Z+ GetProgramiv 0 Max. no. of output vertices —
GEOMETRY_INPUT_TYPE E GetProgramiv \glc{TRIANGLES} Primitive input type —
GEOMETRY_OUTPUT_TYPE E GetProgramiv \glc{TRIANGLE_STRIP} Primitive output type —
GEOMETRY_SHADER_INVOCATIONS Z+ GetProgramiv 1 No. of times a geom. shader should be executed for each input primitive —
TRANSFORM_FEEDBACK_BUFFER_MODE E GetProgramiv \glc{INTERLEAVED_ATTRIBS} Transform feedback mode for the program —
TRANSFORM_FEEDBACK_VARYINGS Z+ GetProgramiv 0 No. of outputs to stream to buffer object(s) —
TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH Z+ GetProgramiv 0 Max. transform feedback output variable name length —
— Z+ GetTransformFeedbackVarying — Size of each transform feedback output variable —
— Z+ GetTransformFeedbackVarying — Type of each transform feedback output variable —
— 0^{+} × char GetTransformFeedbackVarying — Name of each transform feedback output variable —

§ Program Object State (cont.)

ACTIVE_UNIFORM_BLOCKS Z+ GetProgramiv 0 No. of active uniform blocks in a program —
ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH Z+ GetProgramiv 0 Length of longest active uniform block name —
UNIFORM_TYPE 0* × E GetActiveUniformsiv — Type of active uniform —
UNIFORM_SIZE 0* × Z+ GetActiveUniformsiv — Size of active uniform —
UNIFORM_NAME_LENGTH 0* × Z+ GetActiveUniformsiv — Uniform name length —
UNIFORM_BLOCK_INDEX 0* × Z GetActiveUniformsiv — Uniform block index —
UNIFORM_OFFSET 0* × Z GetActiveUniformsiv — Uniform buffer offset —

§ Program Object State (cont.)

UNIFORM_ARRAY_STRIDE 0* × Z GetActiveUniformsiv — Uniform buffer array stride —
UNIFORM_MATRIX_STRIDE 0* × Z GetActiveUniformsiv — Uniform buffer intra-matrix stride —
UNIFORM_IS_ROW_MAJOR 0* × B GetActiveUniformsiv — Whether uniform is a row-major matrix —
UNIFORM_BLOCK_BINDING Z+ GetActiveUniformBlockiv 0 Uniform buffer binding points associated with the specified uniform block —
UNIFORM_BLOCK_DATA_SIZE Z+ GetActiveUniformBlockiv — Size of the storage needed to hold this uniform block's data —
UNIFORM_BLOCK_NAME_LENGTH Z+ GetActiveUniformBlockiv — Uniform block name length —
UNIFORM_BLOCK_ACTIVE_UNIFORMS Z+ GetActiveUniformBlockiv — Count of active uniforms in the specified uniform block —
UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES n × Z+ GetActiveUniformBlockiv — Array of active uniform indices of the specified uniform block —
UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by the vertex stage —
UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by the fragment stage —

§ Program Object State (cont.)

TESS_CONTROL_OUTPUT_VERTICES Z+ GetProgramiv 0 Output patch size for tess. control shader —
TESS_GEN_MODE E GetProgramiv \glc{QUADS} Base primitive type for tess. prim. generator —
TESS_GEN_SPACING E GetProgramiv \glc{EQUAL} Spacing of tess. prim. generator edge subdivision —
TESS_GEN_VERTEX_ORDER E GetProgramiv \glc{CCW} Order of vertices in primitives generated by tess. primitive generator —
TESS_GEN_POINT_MODE B GetProgramiv \glc{FALSE} Tess. prim. generator emits points? —
ACTIVE_ATOMIC_COUNTER_BUFFERS Z+ GetProgramiv 0 No. of active atomic counter buffers (AACBs) used by a program —

§ Program Interface State

ACTIVE_RESOURCES n × Z+ GetProgramInterfaceiv 0 No. of active resources on an interface —
MAX_NAME_LENGTH n × Z+ GetProgramInterfaceiv 0 Max. name length for active resources —
MAX_NUM_ACTIVE_VARIABLES n × Z+ GetProgramInterfaceiv 0 Max. no. of active variables for active resources —

§ Program Object Resource State

ACTIVE_VARIABLES Z+ GetProgramResourceiv — List of active variables owned by active resource —
ARRAY_SIZE Z+ GetProgramResourceiv — Active resource array size —
ARRAY_STRIDE Z+ GetProgramResourceiv — Active resource array stride in memory —
ATOMIC_COUNTER_BUFFER_INDEX Z+ GetProgramResourceiv — Index of atomic counter buffer owning resource —
BLOCK_INDEX Z+ GetProgramResourceiv — Index of interface block owning resource —
BUFFER_BINDING Z+ GetProgramResourceiv — Buffer binding assigned to active resource —
BUFFER_DATA_SIZE Z+ GetProgramResourceiv — Min. buffer data size required for resource —
IS_ROW_MAJOR Z+ GetProgramResourceiv — Active resource stored as a row major matrix? —
LOCATION Z+ GetProgramResourceiv — Location assigned to active resource —
MATRIX_STRIDE Z+ GetProgramResourceiv — Active resource matrix stride in memory —

§ Program Object Resource State (cont.)

NAME_LENGTH Z+ GetProgramResourceiv — Length of active resource name —
NUM_ACTIVE_VARIABLES Z+ GetProgramResourceiv — No. of active variables owned by active resource —
OFFSET Z+ GetProgramResourceiv — Active resource offset in memory —
REFERENCED_BY_VERTEX_SHADER Z+ GetProgramResourceiv — Active resource used by vertex shader? —
REFERENCED_BY_TESS_CONTROL_SHADER Z+ GetProgramResourceiv — Active resource used by tess. control shader? —
REFERENCED_BY_TESS_EVALUATION_SHADER Z+ GetProgramResourceiv — Active resource used by tess. evaluation shader? —
REFERENCED_BY_GEOMETRY_SHADER Z+ GetProgramResourceiv — Active resource used by geometry shader? —
REFERENCED_BY_FRAGMENT_SHADER Z+ GetProgramResourceiv — Active resource used by fragment shader? —
REFERENCED_BY_COMPUTE_SHADER Z+ GetProgramResourceiv — Active resource used by compute shader? —
TOP_LEVEL_ARRAY_SIZE Z+ GetProgramResourceiv — Array size of top level shd. storage block member —
TOP_LEVEL_ARRAY_STRIDE Z+ GetProgramResourceiv — Array stride of top level shd. storage block member —
TYPE Z+ GetProgramResourceiv — Active resource data type —

§ Vertex Shader State (not part of program objects)

CURRENT_VERTEX_ATTRIB MAX_VERTEX_ATTRIBS × R4 GetVertexAttribfv 0.0,0.0,0.0,1.0 Current generic vertex attribute values current

§ Query Object State

QUERY_RESULT Z+ GetQueryObjectuiv 0 or \glc{FALSE} Query object result —
QUERY_RESULT_AVAILABLE B GetQueryObjectuiv \glc{TRUE} Is the query object result available? —
— S GetObjectLabel empty Debug label —

§ Atomic Counter Buffer Binding State

ATOMIC_COUNTER_BUFFER_BINDING Z+ GetIntegerv 0 Current value of generic atomic counter buffer buffer —
ATOMIC_COUNTER_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each atomic counter buffer binding point —
ATOMIC_COUNTER_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each atomic counter buffer —
ATOMIC_COUNTER_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each atomic counter buffer —

§ Image State (state per image unit)

IMAGE_BINDING_NAME 8* × Z+ GetIntegeri_v 0 Name of bound texture object —
IMAGE_BINDING_LEVEL 8* × Z+ GetIntegeri_v 0 Level of bound texture object —
IMAGE_BINDING_LAYERED 8* × B GetBooleani_v \glc{FALSE} Texture object bound with multiple layers —
IMAGE_BINDING_LAYER 8* × Z+ GetIntegeri_v 0 Layer of bound texture, if not layered —
IMAGE_BINDING_ACCESS 8* × E GetIntegeri_v \glc{READ_ONLY} Read and/or write access for bound texture —
IMAGE_BINDING_FORMAT 8* × Z+ GetIntegeri_v \glc{R32UI} Format used for accesses to bound texture —

§ Shader Storage Buffer Binding State

SHADER_STORAGE_BUFFER_BINDING Z+ GetIntegerv 0 Current value of generic shader storage buffer binding —
SHADER_STORAGE_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each shader storage buffer binding point —
SHADER_STORAGE_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each shader storage buffer —
SHADER_STORAGE_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each shader storage buffer —

§ Transform Feedback State

TRANSFORM_FEEDBACK_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each transform feedback attribute stream —
TRANSFORM_FEEDBACK_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each transform feedback attrib. stream —
TRANSFORM_FEEDBACK_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each transform feedback attrib. stream —
TRANSFORM_FEEDBACK_PAUSED B GetBooleanv \glc{FALSE} Is transform feedback paused on this object? —
TRANSFORM_FEEDBACK_ACTIVE B GetBooleanv \glc{FALSE} Is transform feedback active on this object? —
— S GetObjectLabel empty Debug label —

§ Uniform Buffer Binding State

UNIFORM_BUFFER_BINDING Z+ GetIntegerv 0 Uniform buffer object bound to the context for buffer object manipulation —
UNIFORM_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Uniform buffer object bound to the specified context binding point —
UNIFORM_BUFFER_START n × Z+ GetInteger64i_v 0 Start of bound uniform buffer region —
UNIFORM_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of bound uniform buffer region —

§ Sync (state per sync object)

OBJECT_TYPE E GetSynciv \glc{SYNC_FENCE} Type of sync object —
SYNC_STATUS E GetSynciv \glc{UNSIGNALED} Sync object status —
SYNC_CONDITION E GetSynciv \glc{SYNC_GPU_COMMANDS_COMPLETE} Sync object condition —
SYNC_FLAGS Z GetSynciv 0 Sync object flags —
— S GetObjectPtrLabel empty Debug label —

§ Hints

GENERATE_MIPMAP_HINT E GetIntegerv \glc{DONT_CARE} Mipmap generation hint hint
FRAGMENT_SHADER_DERIVATIVE_HINT E GetIntegerv \glc{DONT_CARE} Fragment shader derivative accuracy hint hint

§ Compute Dispatch State

DISPATCH_INDIRECT_BUFFER_BINDING Z+ GetIntegerv 0 Indirect dispatch buffer binding —

§ Implementation Dependent Values

  1. † These limits are tied to the values of \glc{MAX_TEXTURE_SIZE} (for width/height) and \glc{MAX_SAMPLES} (for samples) respectively.
SUBPIXEL_BITS Z+ GetIntegerv 4 No. of bits of subpixel precision in screen $x_w$ and $y_w$ —
MAX_ELEMENT_INDEX Z+ GetInteger64v $2^{24}-1$ Max. element index —
MAX_3D_TEXTURE_SIZE Z+ GetIntegerv 256 Max. 3D texture image dimension —
MAX_TEXTURE_SIZE Z+ GetIntegerv 2048 Max. 2D texture image dimension —
MAX_ARRAY_TEXTURE_LAYERS Z+ GetIntegerv 256 Max. no. of layers for texture arrays —
MAX_TEXTURE_LOD_BIAS R+ GetFloatv 2.0 Max. absolute texture level of detail bias —
MAX_CUBE_MAP_TEXTURE_SIZE Z+ GetIntegerv 2048 Max. cube map texture image dimension —
MAX_RENDERBUFFER_SIZE Z+ GetIntegerv 2048 Max. width and height of renderbuffers —
ALIASED_POINT_SIZE_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of point sizes —
ALIASED_LINE_WIDTH_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of line widths —
MULTISAMPLE_LINE_WIDTH_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of multisampled line widths —
MULTISAMPLE_LINE_WIDTH_GRANULARITY R+ GetFloatv — Multisampled line width granularity —
MAX_DRAW_BUFFERS Z+ GetIntegerv $4$ Max. no. of active draw buffers —
MAX_FRAMEBUFFER_WIDTH Z+ GetIntegerv 2048† Max. width for framebuffer object —
MAX_FRAMEBUFFER_HEIGHT Z+ GetIntegerv 2048† Max. height for framebuffer object —
MAX_FRAMEBUFFER_LAYERS Z+ GetIntegerv 256 Max. layer count for layered framebuffer object —
MAX_FRAMEBUFFER_SAMPLES Z+ GetIntegerv 4† Max. sample count for framebuffer object —
MAX_COLOR_ATTACHMENTS Z+ GetIntegerv 4 Max. no. of FBO attachment points for color buffers —

§ Implementation Dependent Values (cont.)

  1. † These queries return the maximum no. of samples for all internal formats required to support multisampled rendering.
  2. ‡ “ULP” means “Units in the Last Place” or “Unit of Least Precision”.
MIN_FRAGMENT_INTERPOLATION_OFFSET R GetFloatv -0.5 Furthest negative offset for \glv{interpolateAtOffset} —
MAX_FRAGMENT_INTERPOLATION_OFFSET R GetFloatv +0.5 - 1 ULP‡ Furthest positive offset for \glv{interpolateAtOffset} —
FRAGMENT_INTERPOLATION_OFFSET_BITS Z+ GetIntegerv 4 Subpixel bits for \glv{interpolateAtOffset} —
MAX_VIEWPORT_DIMS 2 × Z+ GetIntegerv see \ref{view:port} Max. viewport dimensions —
MAX_SAMPLES Z+ GetIntegerv 4 Max. no. of samples supported for multisampling for all internal formats required to support multisampled rendering. —
MAX_SAMPLE_MASK_WORDS Z+ GetIntegerv 1 Max. no. of sample mask words —
MAX_COLOR_TEXTURE_SAMPLES Z+ GetIntegerv 1 Max. no. of samples in a color multisample texture† —
MAX_DEPTH_TEXTURE_SAMPLES Z+ GetIntegerv 1 Max. no. of samples in a depth/stencil multisample texture† —
MAX_INTEGER_SAMPLES Z+ GetIntegerv 1 Max. no. of samples in integer format multisample buffers† —
MAX_SERVER_WAIT_TIMEOUT Z+ GetInteger64v 0 Max. \glr{WaitSync} timeout interval —
LAYER_PROVOKING_VERTEX E GetIntegerv See sec.~\ref{geomshad:exec} Vertex convention followed by \glv{gl_Layer} —
PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED B GetBooleanv — Primitive restart support for \glc{PATCHES} —

§ Implementation Dependent Values (cont.)

  1. † The value of {\small\tt TEXTURE_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
MAX_VERTEX_ATTRIB_RELATIVE_OFFSET Z GetIntegerv 2047 Max. offset added to vertex buffer binding offset —
MAX_VERTEX_ATTRIB_BINDINGS Z GetIntegerv 16 Max. no. of vertex buffers —
MAX_VERTEX_ATTRIB_STRIDE Z GetIntegerv 2048 Max. vertex attribute stride —
MAX_ELEMENTS_INDICES Z+ GetIntegerv — Recommended max. no. of \glr{DrawRangeElements} indices —
MAX_ELEMENTS_VERTICES Z+ GetIntegerv — Recommended max. no. of \glr{DrawRangeElements} vertices —
MAX_TEXTURE_BUFFER_SIZE Z+ GetIntegerv 65536 No. of addressable texels for buffer textures —
NUM_COMPRESSED_TEXTURE_FORMATS Z+ GetIntegerv 10 No. of compressed texture formats —
COMPRESSED_TEXTURE_FORMATS 10* × Z+ GetIntegerv — Enumerated compressed texture formats —
NUM_PROGRAM_BINARY_FORMATS Z+ GetIntegerv 0 No. of program binary formats —
PROGRAM_BINARY_FORMATS 0* × Z+ GetIntegerv — Enumerated program binary formats —
NUM_SHADER_BINARY_FORMATS Z+ GetIntegerv 0 No. of shader binary formats —
SHADER_BINARY_FORMATS 0* × Z+ GetIntegerv — Enumerated shader binary formats —
SHADER_COMPILER B GetBooleanv — Shader compiler supported, always \glc{TRUE} —
TEXTURE_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† Min. required alignment for texture buffer offsets —
— 2 × 6 × 2 × Z+ GetShaderPrecisionFormat — Shader data type ranges —
— 2 × 6 × Z+ GetShaderPrecisionFormat — Shader data type precisions —

§ Implementation Dependent Version and Extension Support

EXTENSIONS 0* × S GetStringi — Supported individual extension names —
NUM_EXTENSIONS Z+ GetIntegerv — No. of individual extension names —
MAJOR_VERSION Z+ GetIntegerv 3 Major version no. supported —
MINOR_VERSION Z+ GetIntegerv — Minor version no. supported —
CONTEXT_FLAGS Z+ GetIntegerv — Context flags —
RENDERER S GetString — Renderer string —
SHADING_LANGUAGE_VERSION S GetString — Shading Language version supported —
VENDOR S GetString — Vendor string —
VERSION S GetString — OpenGL ES version supported —

§ Implementation Dependent Vertex Shader Limits

MAX_VERTEX_ATTRIBS Z+ GetIntegerv $16$ No. of active vertex attributes —
MAX_VERTEX_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for vertex shader uniform variables —
MAX_VERTEX_UNIFORM_VECTORS Z+ GetIntegerv 256 No. of vectors for vertex shader uniform variables —
MAX_VERTEX_UNIFORM_BLOCKS Z+ GetIntegerv 12 Max. no. of vertex uniform buffers per program —
MAX_VERTEX_OUTPUT_COMPONENTS Z+ GetIntegerv 64 Max. no. of components of outputs written by a vertex shader —
MAX_VERTEX_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a vertex shader —
MAX_VERTEX_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter buffers accessed by a vertex shader —
MAX_VERTEX_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of atomic counters accessed by a vertex shader —
MAX_VERTEX_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a vertex shader —

§ Implementation Dependent Tessellation Shader Limits

MAX_TESS_GEN_LEVEL Z+ GetIntegerv 64 Max. level supported by tess. primitive generator —
MAX_PATCH_VERTICES Z+ GetIntegerv 32 Max. patch size —
MAX_TESS_CONTROL_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of words for tess. control shader (TCS) uniforms —
MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of tex. image units for TCS —
MAX_TESS_CONTROL_OUTPUT_COMPONENTS Z+ GetIntegerv 64 No. components for TCS per-vertex outputs —
MAX_TESS_PATCH_COMPONENTS Z+ GetIntegerv 120 No. components for TCS per-patch outputs —
MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS Z+ GetIntegerv 2048 Total no. components for TCS per-patch outputs —
MAX_TESS_CONTROL_INPUT_COMPONENTS Z+ GetIntegerv 64 No. components for TCS per-vertex inputs —
MAX_TESS_CONTROL_UNIFORM_BLOCKS Z+ GetIntegerv $12*$ No. of supported uniform blocks for TCS —
MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter (AC) buffers accessed by a TCS —
MAX_TESS_CONTROL_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of ACs accessed by a TCS —
MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a tess. control shader —

§ Implementation Dependent Tessellation Shader Limits (cont.)

MAX_TESS_EVALUATION_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of words for tess. evaluation shader (TES) uniforms —
MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of tex. image units for TES —
MAX_TESS_EVALUATION_OUTPUT_COMPONENTS Z+ GetIntegerv 64 No. components for TES per-vertex outputs —
MAX_TESS_EVALUATION_INPUT_COMPONENTS Z+ GetIntegerv 64 No. components for TES per-vertex inputs —
MAX_TESS_EVALUATION_UNIFORM_BLOCKS Z+ GetIntegerv $12*$ No. of supported uniform blocks for TES —
MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of AC buffers accessed by a TES —
MAX_TESS_EVALUATION_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of ACs accessed by a TES —
MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a tess. evaluation shader —

§ Implementation Dependent Geometry Shader Limits

MAX_GEOMETRY_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for geometry shader (GS) uniform variables —
MAX_GEOMETRY_UNIFORM_BLOCKS Z+ GetIntegerv $12*$ Max. no. of GS uniform buffers per program —
MAX_GEOMETRY_INPUT_COMPONENTS Z+ GetIntegerv 64 Max. no. of components of inputs read by a GS —
MAX_GEOMETRY_OUTPUT_COMPONENTS Z+ GetIntegerv 64 Max. no. of components of outputs written by a GS —
MAX_GEOMETRY_OUTPUT_VERTICES Z+ GetIntegerv 256 Max. no. of vertices that any GS {can} emit —
MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS Z+ GetIntegerv 1024 Max. no. of total components (all vertices) of active outputs that a GS can emit —
MAX_GEOMETRY_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a GS —
MAX_GEOMETRY_SHADER_INVOCATIONS Z+ GetIntegerv 32 Max. supported GS invocation count —
MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter buffers accessed by a GS —
MAX_GEOMETRY_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of atomic counters accessed by a GS —
MAX_GEOMETRY_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a GS —

§ Implementation Dependent Fragment Shader Limits

MAX_FRAGMENT_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for fragment shader uniform variables —
MAX_FRAGMENT_UNIFORM_VECTORS Z+ GetIntegerv 256 No. of vectors for fragment shader uniform variables —
MAX_FRAGMENT_UNIFORM_BLOCKS Z+ GetIntegerv 12 Max. no. of fragment uniform buffers per program —
MAX_FRAGMENT_INPUT_COMPONENTS Z+ GetIntegerv 60 Max. no. of components of inputs read by a fragment shader —
MAX_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a fragment shader —
MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 No. of atomic counter buffers accessed by a fragment shader —
MAX_FRAGMENT_ATOMIC_COUNTERS Z+ GetIntegerv 8 No. of atomic counters accessed by a fragment shader —
MAX_FRAGMENT_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 4 No. of shader storage blocks accessed by a fragment shader —
MIN_PROGRAM_TEXTURE_GATHER_OFFSET Z GetIntegerv — Min. texel offset for \glv{textureGather} —
MAX_PROGRAM_TEXTURE_GATHER_OFFSET Z+ GetIntegerv — Max. texel offset for \glv{textureGather} —
MIN_PROGRAM_TEXEL_OFFSET Z GetIntegerv -8 Min. texel offset allowed in lookup —
MAX_PROGRAM_TEXEL_OFFSET Z GetIntegerv 7 Max. texel offset allowed in lookup —

§ Implementation Dependent Compute Shader Limits

  1. † The minimum value is \glc{MAX_COMPUTE_UNIFORM_BLOCKS} $\times$ \glc{MAX_UNIFORM_BLOCK_SIZE} / 4 + \glc{MAX_COMPUTE_UNIFORM_COMPONENTS}
MAX_COMPUTE_WORK_GROUP_COUNT 3 × Z+ GetIntegeri_v 65535 Max. no. of workgroups that may be dispatched by a single dispatch command (per dimension) —
MAX_COMPUTE_WORK_GROUP_SIZE 3 × Z+ GetIntegeri_v 128 (x, y), 64 (z) Max. local size of a compute workgroup (per dimension) —
MAX_COMPUTE_WORK_GROUP_INVOCATIONS Z+ GetIntegerv 128 Max. total compute shader (CS) invocations in a single local workgroup —
MAX_COMPUTE_UNIFORM_BLOCKS Z+ GetIntegerv 12 Max. no. of uniform blocks per compute program —
MAX_COMPUTE_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 Max. no. of texture image units accessible by a CS —
MAX_COMPUTE_SHARED_MEMORY_SIZE Z+ GetIntegerv 16384 Max. total storage size of all variables declared as {\em shared} in all CSs linked into a single program object —
MAX_COMPUTE_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for CS uniform variables —
MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 No. of atomic counter buffers accessed by a CS —
MAX_COMPUTE_ATOMIC_COUNTERS Z+ GetIntegerv 8 No. of atomic counters accessed by a CS —
MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for CS uniform variables in all uniform blocks, including the default —
MAX_COMPUTE_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 4 No. of shader storage blocks accessed by a compute shader —

§ Implementation Dependent Aggregate Shader Limits

  1. † The value of {\small\tt UNIFORM_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
  2. ‡ The minimum value for each stage is {\small\tt MAX_{\em{stage}}_UNIFORM_BLOCKS} $\times$ {\small\tt MAX_UNIFORM_BLOCK_SIZE / 4} + {\small\tt MAX_{\em{stage}}_UNIFORM_COMPONENTS}. The limit is totalled for all uniform variables in all uniform blocks, including the default.
MAX_UNIFORM_BUFFER_BINDINGS Z+ GetIntegerv 72 Max. no. of uniform buffer binding points on the context —
MAX_UNIFORM_BLOCK_SIZE Z+ GetInteger64v 16384 Max. size in basic machine units of a uniform block —
UNIFORM_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† {Min.} required alignment for uniform buffer sizes and offsets —
MAX_COMBINED_UNIFORM_BLOCKS Z+ GetIntegerv $60*$ Max. no. of uniform buffers per program —
MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS Z+ GetInteger64v ‡ No. of words for vertex shader uniform var. in all uniform blocks (incl. default) —
MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for TCS uniform var. in all uniform blocks (incl. default) —
MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for TES uniform var. in all uniform blocks (incl. default) —
MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for geometry shader uniform var. in all uniform blocks (incl. default) —
MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS Z+ GetInteger64v ‡ No. of words for fragment shader uniform var. in all uniform blocks (incl. default) —

§ Implementation Dependent Aggregate Shader Limits (cont.)

MAX_VARYING_COMPONENTS Z+ GetIntegerv 60 No. of components for output variables —
MAX_VARYING_VECTORS Z+ GetIntegerv 15 No. of vectors for output variables —
MAX_COMBINED_TEXTURE_IMAGE_UNITS Z+ GetIntegerv $96$ Total no. of texture units accessible by the GL —
MAX_COMBINED_SHADER_OUTPUT_RESOURCES Z+ GetIntegerv 4 Limit on active image units, shader storage blocks, and frag. outputs —
MAX_UNIFORM_LOCATIONS Z+ GetIntegerv 1024 Max. no. of user-assignable uniform locations —
MAX_ATOMIC_COUNTER_BUFFER_BINDINGS Z+ GetIntegerv 1 Max. no. of atomic counter buffer bindings —
MAX_ATOMIC_COUNTER_BUFFER_SIZE Z+ GetIntegerv 32 Max. size in basic machine units of an atomic counter buffer —
MAX_COMBINED_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 Max. no. of atomic counter buffers per program —
MAX_COMBINED_ATOMIC_COUNTERS Z+ GetIntegerv 8 Max. no. of atomic counter uniforms per program —

§ Implementation Dependent Aggregate Shader Limits (cont.)

  1. † The value of {\small\tt SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
MAX_IMAGE_UNITS Z+ GetIntegerv $4$ No. of units for image load/store/atomics —
MAX_VERTEX_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in vertex shaders —
MAX_TESS_CONTROL_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in tess. control shaders —
MAX_TESS_EVALUATION_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in tess. eval. shaders —
MAX_GEOMETRY_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in geometry shaders —
MAX_FRAGMENT_IMAGE_UNIFORMS Z+ GetIntegerv 4 No. of image variables in fragment shaders —
MAX_COMPUTE_IMAGE_UNIFORMS Z+ GetIntegerv 4 No. of image variables in CSs —
MAX_COMBINED_IMAGE_UNIFORMS Z+ GetIntegerv 4 No. of image variables in all shaders —
MAX_SHADER_STORAGE_BUFFER_BINDINGS Z+ GetIntegerv 4 Max. no. of shader storage buffer bindings in the context —
MAX_SHADER_STORAGE_BLOCK_SIZE Z+ GetInteger64v $2^{27}$ Max. size in basic machine units of a shader storage block —
MAX_COMBINED_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 4 No. of shader storage blocks accessed by a program —
SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† {Min.} required alignment for shader storage buffer binding offsets —

§ Debug Output State

  1. † The initial value of \glc{DEBUG_OUTPUT} is \glc{TRUE} in a debug context and \glc{FALSE} in a non-debug context.
DEBUG_CALLBACK_FUNCTION Y GetPointerv \glc{NULL} The current debug output callback function pointer —
DEBUG_CALLBACK_USER_PARAM Y GetPointerv \glc{NULL} The current debug output callback user parameter —
DEBUG_LOGGED_MESSAGES Z+ GetIntegerv 0 The no. of messages currently in the debug message log —
DEBUG_NEXT_LOGGED_MESSAGE_LENGTH Z+ GetIntegerv 0 The string length of the oldest debug message in the debug message log —
DEBUG_OUTPUT_SYNCHRONOUS B IsEnabled \glc{FALSE} The enabled state for synchronous debug message callbacks —
DEBUG_GROUP_STACK_DEPTH Z+ GetIntegerv 1 Debug group stack pointer —
DEBUG_OUTPUT B IsEnabled Depends on the context† The enabled state for debug output functionality —

§ Implementation Dependent Debug Output State

MAX_DEBUG_MESSAGE_LENGTH Z+ GetIntegerv 1 The max length of a debug message string, including its null terminator —
MAX_DEBUG_LOGGED_MESSAGES Z+ GetIntegerv 1 The max no. of messages stored in the debug message log —
MAX_DEBUG_GROUP_STACK_DEPTH Z+ GetIntegerv 64 Max. group stack depth —
MAX_LABEL_LENGTH Z+ GetIntegerv 256 Max. length of a label string —

§ Implementation Dependent Transform Feedback Limits

MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS Z+ GetIntegerv 64 Max. no. of components to write to a single buffer in interleaved mode —
MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS Z+ GetIntegerv 4 Max. no. of separate attributes or outputs that can be captured in transform feedback —
MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS Z+ GetIntegerv 4 Max. no. of components per attribute or output in separate mode —

§ Framebuffer Dependent Values

  1. † This state is queried from the currently bound read framebuffer, rather than the draw framebuffer. $n$ is the value of \glc{SAMPLES}.
SAMPLE_BUFFERS Z2 GetIntegerv 0 No. of multisample buffers —
SAMPLES Z+ GetIntegerv 0 Coverage mask size —
RED_BITS Z+ GetIntegerv — No. of bits in RED color buffer component —
GREEN_BITS Z+ GetIntegerv — No. of bits in GREEN color buffer component —
BLUE_BITS Z+ GetIntegerv — No. of bits in BLUE color buffer component —
ALPHA_BITS Z+ GetIntegerv — No. of bits in ALPHA color buffer component —
DEPTH_BITS Z+ GetIntegerv — No. of depth buffer planes —
STENCIL_BITS Z+ GetIntegerv — No. of stencil planes —
IMPLEMENTATION_COLOR_READ_TYPE E GetIntegerv — Implementation preferred pixel {\em type}† —
IMPLEMENTATION_COLOR_READ_FORMAT E GetIntegerv — Implementation preferred pixel {\em format}† —
SAMPLE_POSITION n × 2 × R[0,1] GetMultisamplefv impl-dependent Explicit sample positions —

§ Miscellaneous

— n × E GetError 0 Current error code(s) —
— n × B — \glc{FALSE} True if there is a corresponding error —
CURRENT_QUERY 3 × Z+ GetQueryiv 0 Active query object names —
COPY_READ_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to copy buffer “read” bind point —
COPY_WRITE_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to copy buffer “write” bind point —
RESET_NOTIFICATION_STRATEGY Z2 GetIntegerv See sec.~\ref{fund:reset} Reset notification behavior —
TEXTURE_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to generic texture buffer bind point texture

OpenGL 4.6 state tables

Get value Type Get command Initial value Description Attribute

§ GL Internal State (inaccessible)

(for \func{Begin}/\func{End} state variables)

— E — 0 When $\neq 0$, indicates primitive \arg{mode} —
— V — — Previous vertex in \bgl{line} —
— B — — Indicates if {\em line-vertex} is the first —
— V — — First vertex of a \bgl{line loop} —
— Z+ — — Line stipple counter —
— n × V — — Vertices inside of \bgl{polygon} —
— Z+ — — No. of {\em polygon-vertices} —
— 2 × V — — Previous two vertices in a \bgl{triangle strip} —
— Z3 — — No. of vertices so far in triangle strip: 0, 1, or more —
— Z2 — — Triangle strip A/B vertex pointer —
— 3 × V — — Vertices of the quad under construction —
— Z4 — — No. of vertices so far in quad strip: 0, 1, 2, or more —

§ Current Values and Associated Data

CURRENT_COLOR C GetFloatv 1.0,1.0,1.0,1.0 Current color current
CURRENT_SECONDARY_COLOR C GetFloatv 0.0,0.0,0.0,1.0 Current secondary color current
CURRENT_INDEX CI GetIntegerv 1 Current color index current
CURRENT_TEXTURE_COORDS MAX_TEXTURE_COORDS × T GetFloatv 0,0,0,1 Current texture coordinates current
CURRENT_NORMAL N GetFloatv 0,0,1 Current normal current
CURRENT_FOG_COORD R GetFloatv 0 Current fog coordinate current
— C — — Color associated with last vertex —
— CI — — Color index associated with last vertex —
— T — — Texture coordinates associated with last vertex —
CURRENT_RASTER_POSITION R4 GetFloatv 0,0,0,1 Current raster position current
CURRENT_RASTER_DISTANCE R+ GetFloatv 0 Current raster distance current
CURRENT_RASTER_COLOR C GetFloatv 1.0,1.0,1.0,1.0 Color associated with raster position current
CURRENT_RASTER_SECONDARY_COLOR C GetFloatv 0.0,0.0,0.0,1.0 Secondary color associated with raster position current
CURRENT_RASTER_INDEX CI GetIntegerv 1 Color index associated with raster position current
CURRENT_RASTER_TEXTURE_COORDS MAX_TEXTURE_COORDS × T GetFloatv 0,0,0,1 Texture coordinates associated with raster position current
CURRENT_RASTER_POSITION_VALID B GetBooleanv \glc{TRUE} Raster position valid bit current
EDGE_FLAG B GetBooleanv \glc{TRUE} Edge flag current
PATCH_VERTICES Z+ GetIntegerv 3 No. of vertices in input patch current
PATCH_DEFAULT_OUTER_LEVEL 4 × R GetFloatv $(1.0,1.0,1.0,1.0)$ Default outer tess. level w/o control shader —
PATCH_DEFAULT_INNER_LEVEL 2 × R GetFloatv $(1.0,1.0)$ Default inner tess. level w/o control shader —

§ Vertex Array Object State

VERTEX_ARRAY B IsEnabled \glc{FALSE} Vertex array enable vertex-array
VERTEX_ARRAY_SIZE Z+ GetIntegerv 4 Coordinates per vertex vertex-array
VERTEX_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of vertex coordinates vertex-array
VERTEX_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between vertices vertex-array
VERTEX_ARRAY_POINTER Y GetPointerv 0 Pointer to the vertex array vertex-array
NORMAL_ARRAY B IsEnabled \glc{FALSE} Normal array enable vertex-array
NORMAL_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of normal coordinates vertex-array
NORMAL_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between normals vertex-array
NORMAL_ARRAY_POINTER Y GetPointerv 0 Pointer to the normal array vertex-array
FOG_COORD_ARRAY B IsEnabled \glc{FALSE} Fog coord array enable vertex-array
FOG_COORD_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of fog coord components vertex-array
FOG_COORD_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between fog coords vertex-array
FOG_COORD_ARRAY_POINTER Y GetPointerv 0 Pointer to the fog coord array vertex-array
COLOR_ARRAY B IsEnabled \glc{FALSE} Color array enable vertex-array
COLOR_ARRAY_SIZE Z3 GetIntegerv 4 Color components per vertex vertex-array
COLOR_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of color components vertex-array
COLOR_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between colors vertex-array
COLOR_ARRAY_POINTER Y GetPointerv 0 Pointer to the color array vertex-array

§ Vertex Array Object State (cont.)

SECONDARY_COLOR_ARRAY B IsEnabled \glc{FALSE} Secondary color array enable vertex-array
SECONDARY_COLOR_ARRAY_SIZE Z2 GetIntegerv 3 Secondary color components per vertex vertex-array
SECONDARY_COLOR_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of secondary color components vertex-array
SECONDARY_COLOR_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between secondary colors vertex-array
SECONDARY_COLOR_ARRAY_POINTER Y GetPointerv 0 Pointer to the secondary color array vertex-array
INDEX_ARRAY B IsEnabled \glc{FALSE} Index array enable vertex-array
INDEX_ARRAY_TYPE E GetIntegerv \glc{FLOAT} Type of indices vertex-array
INDEX_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between indices vertex-array
INDEX_ARRAY_POINTER Y GetPointerv 0 Pointer to the index array vertex-array
TEXTURE_COORD_ARRAY MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} Texture coordinate array enable vertex-array
TEXTURE_COORD_ARRAY_SIZE MAX_TEXTURE_COORDS × Z+ GetIntegerv 4 Coordinates per element vertex-array
TEXTURE_COORD_ARRAY_TYPE MAX_TEXTURE_COORDS × E GetIntegerv \glc{FLOAT} Type of texture coordinates vertex-array
TEXTURE_COORD_ARRAY_STRIDE MAX_TEXTURE_COORDS × Z+ GetIntegerv 0 Stride between texture coordinates vertex-array
TEXTURE_COORD_ARRAY_POINTER MAX_TEXTURE_COORDS × Y GetPointerv 0 Pointer to the texture coordinate array vertex-array

§ Vertex Array Object State (cont.)

VERTEX_ATTRIB_ARRAY_ENABLED MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array enable vertex-array
VERTEX_ATTRIB_ARRAY_SIZE MAX_VERTEX_ATTRIBS × Z5 GetVertexAttribiv 4 Vertex attrib array size vertex-array
VERTEX_ATTRIB_ARRAY_STRIDE MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Vertex attrib array stride vertex-array
VERTEX_ATTRIB_ARRAY_TYPE MAX_VERTEX_ATTRIBS × E GetVertexAttribiv \glc{FLOAT} Vertex attrib array type vertex-array
VERTEX_ATTRIB_ARRAY_NORMALIZED MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array normalized vertex-array
VERTEX_ATTRIB_ARRAY_INTEGER MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array has unconverted integers vertex-array
VERTEX_ATTRIB_ARRAY_LONG MAX_VERTEX_ATTRIBS × B GetVertexAttribiv \glc{FALSE} Vertex attrib array has unconverted doubles vertex-array
VERTEX_ATTRIB_ARRAY_DIVISOR MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Vertex attrib array instance divisor vertex-array
VERTEX_ATTRIB_ARRAY_POINTER MAX_VERTEX_ATTRIBS × Y GetVertexAttribPointerv \glc{NULL} Vertex attrib array pointer vertex-array
EDGE_FLAG_ARRAY B IsEnabled \glc{FALSE} Edge flag array enable vertex-array
EDGE_FLAG_ARRAY_STRIDE Z+ GetIntegerv 0 Stride between edge flags vertex-array
EDGE_FLAG_ARRAY_POINTER Y GetPointerv 0 Pointer to the edge flag array vertex-array
— S GetObjectLabel empty Debug label —

§ Vertex Array Object State (cont.)

  1. † The $i$th attribute defaults to a value of $i$.
VERTEX_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Vertex array buffer binding vertex-array
NORMAL_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Normal array buffer binding vertex-array
COLOR_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Color array buffer binding vertex-array
INDEX_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Index array buffer binding vertex-array
TEXTURE_COORD_ARRAY_BUFFER_BINDING MAX_TEXTURE_COORDS × Z+ GetIntegerv 0 Texcoord array buffer binding vertex-array
EDGE_FLAG_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Edge flag array buffer binding vertex-array
SECONDARY_COLOR_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Secondary color array buffer binding vertex-array
FOG_COORD_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Fog coordinate array buffer binding vertex-array
ELEMENT_ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Element array buffer binding vertex-array
VERTEX_ATTRIB_ARRAY_BUFFER_BINDING MAX_VERTEX_ATTRIBS × Z+ GetVertexAttribiv 0 Attribute array buffer binding vertex-array
VERTEX_ATTRIB_BINDING 16 × Z16* GetVertexAttribiv $i$† Vertex buffer binding used by vertex attrib $i$ vertex-array
VERTEX_ATTRIB_RELATIVE_OFFSET 16 × Z+ GetVertexAttribiv 0 Byte offset added to vertex binding offset for this attribute vertex-array
VERTEX_BINDING_OFFSET 16 × Z GetInteger64i_v 0 Byte offset of the first element in data store of the buffer bound to vertex binding $i$ vertex-array
VERTEX_BINDING_STRIDE 16 × Z GetIntegeri_v 16 Stride between elements in vertex binding $i$ vertex-array
VERTEX_BINDING_DIVISOR 16 × Z GetIntegeri_v 0 Instance divisor for vertex binding $i$ vertex-array
VERTEX_BINDING_BUFFER 16 × Z GetIntegeri_v 0 Name of buffer bound to vertex binding $i$ vertex-array

§ Vertex Array Data (not in Vertex Array objects)

CLIENT_ACTIVE_TEXTURE E GetIntegerv \glc{TEXTURE0} Client active texture unit selector vertex-array
ARRAY_BUFFER_BINDING Z+ GetIntegerv 0 Current buffer binding vertex-array
DRAW_INDIRECT_BUFFER_BINDING Z+ GetIntegerv 0 Indirect command buffer binding —
VERTEX_ARRAY_BINDING Z+ GetIntegerv 0 Current vertex array object binding vertex-array
PARAMETER_BUFFER_BINDING Z+ GetIntegerv 0 Indirect parameter buffer binding —
PRIMITIVE_RESTART B IsEnabled \glc{FALSE} Primitive restart enable vertex-array
PRIMITIVE_RESTART_FIXED_INDEX B IsEnabled \glc{FALSE} Primitive restart fixed index enable vertex-array
PRIMITIVE_RESTART_INDEX Z+ GetIntegerv 0 Primitive restart index vertex-array

§ Buffer Object State

— n × BMU GetBufferSubData — Buffer data —
BUFFER_SIZE n × Z+ GetBufferParameteri64v 0 Buffer data size —
BUFFER_USAGE n × E GetBufferParameteriv \glc{STATIC_DRAW} Buffer usage pattern —
BUFFER_ACCESS n × E GetBufferParameteriv \glc{READ_WRITE} Buffer access flag —
BUFFER_ACCESS_FLAGS n × Z+ GetBufferParameteriv 0 Extended buffer access flag —
BUFFER_IMMUTABLE_STORAGE B GetBufferParameteriv \glc{FALSE} \glc{TRUE} if buffer's data store is immutable, \glc{FALSE} otherwise —
BUFFER_STORAGE_FLAGS Z+ GetBufferParameteriv 0 Buffer object storage flags —
BUFFER_MAPPED n × B GetBufferParameteriv \glc{FALSE} Buffer map flag —
BUFFER_MAP_POINTER n × Y GetBufferPointerv \glc{NULL} Mapped buffer pointer —
BUFFER_MAP_OFFSET n × Z+ GetBufferParameteri64v 0 Start of mapped buffer range —
BUFFER_MAP_LENGTH n × Z+ GetBufferParameteri64v 0 Size of mapped buffer range —
— S GetObjectLabel empty Debug label —

§ Transformation state

COLOR_MATRIX or
TRANSPOSE_COLOR_MATRIX
2* × M4 GetFloatv Identity Color matrix stack —
MODELVIEW_MATRIX or
TRANSPOSE_MODELVIEW_MATRIX
32* × M4 GetFloatv Identity Model-view matrix stack —
PROJECTION_MATRIX or
TRANSPOSE_PROJECTION_MATRIX
2* × M4 GetFloatv Identity Projection matrix stack —
TEXTURE_MATRIX or
TRANSPOSE_TEXTURE_MATRIX
MAX_TEXTURE_COORDS × 2* × M4 GetFloatv Identity Texture matrix stack —
VIEWPORT 16* × 4 × R GetFloati_v See sec.~\ref{view:port} Viewport origin \& extent viewport
DEPTH_RANGE $16* \times {2 \times} R^{[0,1]}$ GetDoublei_v 0,1 Depth range near \& far viewport
COLOR_MATRIX_STACK_DEPTH Z+ GetIntegerv 1 Color matrix stack pointer —
MODELVIEW_STACK_DEPTH Z+ GetIntegerv 1 Model-view matrix stack pointer —
PROJECTION_STACK_DEPTH Z+ GetIntegerv 1 Projection matrix stack pointer —
TEXTURE_STACK_DEPTH MAX_TEXTURE_COORDS × Z+ GetIntegerv 1 Texture matrix stack pointer —
MATRIX_MODE E GetIntegerv \tt MODELVIEW Current matrix mode transform
NORMALIZE B IsEnabled \glc{FALSE} Current normal normalization on/off transform/enable
RESCALE_NORMAL B IsEnabled \glc{FALSE} Current normal rescaling on/off transform/enable
CLIP_PLANE0 …
CLIP_PLANE0 + (n-1)
where n ≥ 6
n × R4 GetClipPlane 0,0,0,0 User clipping plane coefficients transform
CLIP_DISTANCE0 …
CLIP_DISTANCE0 + (n-1)
where n ≥ 8
n × B IsEnabled \glc{FALSE} $i$th user clipping plane enabled transform/enable
CLIP_ORIGIN Z2 GetIntegerv \glc{LOWER_LEFT} Clip origin xform
CLIP_DEPTH_MODE Z2 GetIntegerv \glc{NEGATIVE_ONE_TO_ONE} Clip depth mode xform
DEPTH_CLAMP B IsEnabled \glc{FALSE} Depth clamping enabled transform/enable
TRANSFORM_FEEDBACK_BINDING Z+ GetIntegerv 0 Object bound for transform feedback operations —
TRANSFORM_FEEDBACK_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to generic bind point for transform feedback —

§ Coloring

FOG_COLOR C GetFloatv 0.0,0.0,0.0,0.0 Fog color fog
FOG_INDEX CI GetFloatv 0 Fog index fog
FOG_DENSITY R GetFloatv 1.0 Exponential fog density fog
FOG_START R GetFloatv 0.0 Linear fog start fog
FOG_END R GetFloatv 1.0 Linear fog end fog
FOG_MODE E GetIntegerv \glc{EXP} Fog mode fog
FOG B IsEnabled \glc{FALSE} True if fog enabled fog/enable
FOG_COORD_SRC E GetIntegerv \glc{FRAGMENT_DEPTH} Source of coordinate for fog calculation fog
COLOR_SUM B IsEnabled \glc{FALSE} True if color sum enabled fog/enable
SHADE_MODEL E GetIntegerv \glc{SMOOTH} \func{ShadeModel} setting lighting
CLAMP_VERTEX_COLOR E GetIntegerv \glc{TRUE} Vertex color clamping lighting/enable
CLAMP_FRAGMENT_COLOR E GetIntegerv \glc{FIXED_ONLY} Fragment color clamping color-buffer/enable
CLAMP_READ_COLOR E GetIntegerv \glc{FIXED_ONLY} Read color clamping color-buffer/enable
PROVOKING_VERTEX E GetIntegerv \glc{LAST_VERTEX_CONVENTION} Provoking vertex convention lighting

§ Lighting

(see also table~\ref{light:tab1} for defaults)

LIGHTING B IsEnabled \glc{FALSE} True if lighting is enabled lighting/enable
COLOR_MATERIAL B IsEnabled \glc{FALSE} True if color tracking is enabled lighting/enable
COLOR_MATERIAL_PARAMETER E GetIntegerv \tt AMBIENT_AND_DIFFUSE Material properties tracking current color lighting
COLOR_MATERIAL_FACE E GetIntegerv \tt FRONT_AND_BACK Face(s) affected by color tracking lighting
AMBIENT 2 × C GetMaterialfv (0.2,0.2,0.2,1.0) Ambient material color lighting
DIFFUSE 2 × C GetMaterialfv (0.8,0.8,0.8,1.0) Diffuse material color lighting
SPECULAR 2 × C GetMaterialfv (0.0,0.0,0.0,1.0) Specular material color lighting
EMISSION 2 × C GetMaterialfv (0.0,0.0,0.0,1.0) Emissive mat. color lighting
SHININESS 2 × R GetMaterialfv 0.0 Specular exponent of material lighting
LIGHT_MODEL_AMBIENT C GetFloatv (0.2,0.2,0.2,1.0) Ambient scene color lighting
LIGHT_MODEL_LOCAL_VIEWER B GetBooleanv \glc{FALSE} Viewer is local lighting
LIGHT_MODEL_TWO_SIDE B GetBooleanv \glc{FALSE} Use two-sided lighting lighting
LIGHT_MODEL_COLOR_CONTROL E GetIntegerv \glc{SINGLE_COLOR} Color control lighting

§ Lighting (cont.)

AMBIENT 8* × C GetLightfv (0.0,0.0,0.0,1.0) Ambient intensity of light $i$ lighting
DIFFUSE 8* × C GetLightfv See table~\ref{light:tab1} Diffuse intensity of light $i$ lighting
SPECULAR 8* × C GetLightfv See table~\ref{light:tab1} Specular intensity of light $i$ lighting
POSITION 8* × P GetLightfv (0.0,0.0,1.0,0.0) Position of light $i$ lighting
CONSTANT_ATTENUATION 8* × R+ GetLightfv 1.0 Constant atten. factor lighting
LINEAR_ATTENUATION 8* × R+ GetLightfv 0.0 Linear atten. factor lighting
QUADRATIC_ATTENUATION 8* × R+ GetLightfv 0.0 Quadratic atten. factor lighting
SPOT_DIRECTION 8* × D GetLightfv (0.0,0.0,-1.0) Spotlight direction of light $i$ lighting
SPOT_EXPONENT 8* × R+ GetLightfv 0.0 Spotlight exponent of light $i$ lighting
SPOT_CUTOFF 8* × R+ GetLightfv 180.0 Spot. angle of light $i$ lighting
LIGHT0 …
LIGHT0 + (n-1)
where n ≥ 8
n × B IsEnabled \glc{FALSE} True if light $i$ enabled lighting/enable
COLOR_INDEXES 2 × 3 × R GetMaterialfv 0,1,1 $a_m$, $d_m$, and $s_m$ for color index lighting lighting

§ Rasterization

  1. † Max. of the impl. dependent max. aliased and smooth point sizes
RASTERIZER_DISCARD B IsEnabled \glc{FALSE} Discard primitives before rasterization —
POINT_SIZE R+ GetFloatv 1.0 Point size point
POINT_SMOOTH B IsEnabled \glc{FALSE} Point antialiasing on point/enable
POINT_SPRITE B IsEnabled \glc{FALSE} Point sprite enable point/enable
POINT_SIZE_MIN R+ GetFloatv 0.0 Attenuated min point size point
POINT_SIZE_MAX R+ GetFloatv † Attenuated max point size. point
POINT_FADE_THRESHOLD_SIZE R+ GetFloatv 1.0 Threshold for alpha attenuation point
POINT_DISTANCE_ATTENUATION 3 × R+ GetFloatv 1,0,0 Attenuation coefficients point
POINT_SPRITE_COORD_ORIGIN E GetIntegerv \glc{UPPER_LEFT} Origin orientation for point sprites point
LINE_WIDTH R+ GetFloatv 1.0 Line width line
LINE_SMOOTH B IsEnabled \glc{FALSE} Line antialiasing on line/enable
LINE_STIPPLE_PATTERN Z+ GetIntegerv 1's Line stipple line
LINE_STIPPLE_REPEAT Z+ GetIntegerv 1 Line stipple repeat line
LINE_STIPPLE B IsEnabled \glc{FALSE} Line stipple enable line/enable

§ Rasterization (cont.)

CULL_FACE B IsEnabled \glc{FALSE} Polygon culling enabled polygon/enable
CULL_FACE_MODE E GetIntegerv \glc{BACK} Cull front-/back-facing polygons polygon
FRONT_FACE E GetIntegerv \glc{CCW} Polygon frontface CW/CCW indicator polygon
POLYGON_SMOOTH B IsEnabled \glc{FALSE} Polygon antialiasing on polygon/enable
POLYGON_MODE 2 × E GetIntegerv \glc{FILL} Polygon rasterization mode (front \& back) polygon
POLYGON_MODE E GetIntegerv \glc{FILL} Polygon rasterization mode (front \& back) polygon
POLYGON_OFFSET_CLAMP R GetFloatv 0 Polygon offset clamp polygon
POLYGON_OFFSET_FACTOR R GetFloatv 0 Polygon offset factor polygon
POLYGON_OFFSET_UNITS R GetFloatv 0 Polygon offset units polygon
POLYGON_OFFSET_POINT B IsEnabled \glc{FALSE} Polygon offset enable for \glc{POINT} mode rasterization polygon/enable
POLYGON_OFFSET_LINE B IsEnabled \glc{FALSE} Polygon offset enable for \glc{LINE} mode rasterization polygon/enable
POLYGON_OFFSET_FILL B IsEnabled \glc{FALSE} Polygon offset enable for \glc{FILL} mode rasterization polygon/enable
— I GetPolygonStipple 1's Polygon stipple polygon-stipple
POLYGON_STIPPLE B IsEnabled \glc{FALSE} Polygon stipple enable polygon/enable

§ Multisampling

MULTISAMPLE B IsEnabled \glc{TRUE} Multisample rasterization multisample/enable
SAMPLE_ALPHA_TO_COVERAGE B IsEnabled \glc{FALSE} Modify coverage from alpha multisample/enable
SAMPLE_ALPHA_TO_ONE B IsEnabled \glc{FALSE} Set alpha to max multisample/enable
SAMPLE_COVERAGE B IsEnabled \glc{FALSE} Mask to modify coverage multisample/enable
SAMPLE_COVERAGE_VALUE R+ GetFloatv 1 Coverage mask value multisample
SAMPLE_COVERAGE_INVERT B GetBooleanv \glc{FALSE} Invert coverage mask value multisample
SAMPLE_SHADING B IsEnabled \glc{FALSE} Sample shading enable multisample/enable
MIN_SAMPLE_SHADING_VALUE R+ GetFloatv 0 Fraction of multisamples to use for sample shading multisample
SAMPLE_MASK B IsEnabled \glc{FALSE} Additional sample mask —
SAMPLE_MASK_VALUE n × Z+ GetIntegeri_v All bits of all words set Additional sample mask value —

§ Textures (state per texture unit)

TEXTURE_1D MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} True if 1D texturing is enabled texture/enable
TEXTURE_2D MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} True if 2D texturing is enabled texture/enable
TEXTURE_3D MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} True if 3D texturing is enabled texture/enable
TEXTURE_CUBE_MAP MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} True if cube map texturing is enabled texture/enable
TEXTURE_RECTANGLE MAX_TEXTURE_COORDS × B IsEnabled \glc{FALSE} True if rectangle texturing is enabled texture/enable
TEXTURE_BINDING_1D MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \enum{TEXTURE_1D} texture
TEXTURE_BINDING_2D MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \enum{TEXTURE_2D} texture
TEXTURE_BINDING_3D MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \enum{TEXTURE_3D} texture
TEXTURE_BINDING_1D_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_1D_ARRAY} texture
TEXTURE_BINDING_2D_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_ARRAY} texture
TEXTURE_BINDING_CUBE_MAP_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_CUBE_MAP_ARRAY} texture
TEXTURE_BINDING_RECTANGLE MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_RECTANGLE} texture
TEXTURE_BINDING_BUFFER MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_BUFFER} texture
TEXTURE_BINDING_CUBE_MAP MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_CUBE_MAP} texture
TEXTURE_BINDING_2D_MULTISAMPLE MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_MULTISAMPLE} —
TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Texture object bound to \glc{TEXTURE_2D_MULTISAMPLE_ARRAY} —

§ Textures (state per texture unit) (cont.)

SAMPLER_BINDING MAX_COMBINED_TEXTURE_IMAGE_UNITS × Z+ GetIntegerv 0 Sampler object bound to active texture unit —
TEXTURE_1D 0* × I GetTexImage See ch.~\ref{texturing} 1D texture image at l.o.d. $i$ —
TEXTURE_2D 0* × I GetTexImage See ch.~\ref{texturing} 2D texture image at l.o.d. $i$ —
TEXTURE_3D 0* × I GetTexImage See ch.~\ref{texturing} 3D texture image at l.o.d. $i$ —
TEXTURE_1D_ARRAY 0* × I GetTexImage See ch.~\ref{texturing} 1D texture image at row $i$ —
TEXTURE_2D_ARRAY 0* × I GetTexImage See ch.~\ref{texturing} 2D texture image at slice $i$ —
TEXTURE_CUBE_MAP_ARRAY 0* × I GetTexImage See ch.~\ref{texturing} Cube map array texture image at l.o.d. $i$ —
TEXTURE_RECTANGLE 0* × I GetTexImage See ch.~\ref{texturing} Rectangle texture image at l.o.d. zero —
TEXTURE_CUBE_MAP_POSITIVE_X 0* × I GetTexImage See sec.~\ref{tex:spec} $+x$ face cube map texture image at l.o.d. $i$ —
TEXTURE_CUBE_MAP_NEGATIVE_X 0* × I GetTexImage See sec.~\ref{tex:spec} $-x$ face cube map texture image at l.o.d. $i$ —
TEXTURE_CUBE_MAP_POSITIVE_Y 0* × I GetTexImage See sec.~\ref{tex:spec} $+y$ face cube map texture image at l.o.d. $i$ —
TEXTURE_CUBE_MAP_NEGATIVE_Y 0* × I GetTexImage See sec.~\ref{tex:spec} $-y$ face cube map texture image at l.o.d. $i$ —
TEXTURE_CUBE_MAP_POSITIVE_Z 0* × I GetTexImage See sec.~\ref{tex:spec} $+z$ face cube map texture image at l.o.d. $i$ —
TEXTURE_CUBE_MAP_NEGATIVE_Z 0* × I GetTexImage See sec.~\ref{tex:spec} $-z$ face cube map texture image at l.o.d. $i$ —

§ Textures (state per texture object)

TEXTURE_SWIZZLE_R E GetTexParameteriv \glc{RED} Red component swizzle texture
TEXTURE_SWIZZLE_G E GetTexParameteriv \glc{GREEN} Green component swizzle texture
TEXTURE_SWIZZLE_B E GetTexParameteriv \glc{BLUE} Blue component swizzle texture
TEXTURE_SWIZZLE_A E GetTexParameteriv \glc{ALPHA} Alpha component swizzle texture
TEXTURE_BORDER_COLOR C GetTexParameterfv 0.0,0.0,0.0,0.0 Border color texture
TEXTURE_MIN_FILTER E GetTexParameteriv See sec.~\ref{tex:state} Minification function texture
TEXTURE_MAG_FILTER E GetTexParameteriv \glc{LINEAR} Magnification function texture
TEXTURE_WRAP_S E GetTexParameteriv See sec.~\ref{tex:state} Texcoord $s$ wrap mode texture
TEXTURE_WRAP_T E GetTexParameteriv See sec.~\ref{tex:state} Texcoord $t$ wrap mode (2D, 3D, cube map textures only) texture
TEXTURE_WRAP_R E GetTexParameteriv See sec.~\ref{tex:state} Texcoord $r$ wrap mode (3D textures only) texture
TEXTURE_TARGET E GetTextureParameteriv \glc{NONE} Target of texture object —
TEXTURE_PRIORITY R[0,1] GetTexParameterfv 1 Texture object priority texture
TEXTURE_RESIDENT B GetTexParameteriv See sec.\ref{tex:object} Texture residency texture
TEXTURE_MIN_LOD R GetTexParameterfv -1000 Min level-of-detail texture
TEXTURE_MAX_LOD R GetTexParameterfv 1000 Max. level-of-detail texture
TEXTURE_BASE_LEVEL Z+ GetTexParameterfv 0 Base texture array texture
TEXTURE_MAX_LEVEL Z+ GetTexParameterfv 1000 Max. texture array level texture
TEXTURE_LOD_BIAS R GetTexParameterfv 0.0 Texture level-of-detail bias ($\lodobjbias$) texture

§ Textures (state per texture object) (cont.)

DEPTH_TEXTURE_MODE E GetTexParameteriv \glc{LUMINANCE} Depth texture mode texture
DEPTH_STENCIL_TEXTURE_MODE E GetTexParameteriv \glc{DEPTH_COMPONENT} Depth stencil texture mode —
TEXTURE_COMPARE_MODE E GetTexParameteriv \glc{NONE} Comparison mode texture
TEXTURE_COMPARE_FUNC E GetTexParameteriv \glc{LEQUAL} Comparison function texture
GENERATE_MIPMAP B GetTexParameteriv \glc{FALSE} Automatic mipmap generation enabled texture
IMAGE_FORMAT_COMPATIBILITY_TYPE E GetTexParameteriv See sec.~\ref{tex:loadstore} Compatibility rules for texture use with image units texture
TEXTURE_IMMUTABLE_FORMAT B GetTexParameteriv \glc{FALSE} Size and format immutable —
TEXTURE_IMMUTABLE_LEVELS Z+ GetTexParameteriv 0 Storage no. of levels texture
TEXTURE_VIEW_MIN_LEVEL Z+ GetTexParameteriv 0 View base texture level texture
TEXTURE_VIEW_NUM_LEVELS Z+ GetTexParameteriv 0 View no. of texture levels texture
TEXTURE_VIEW_MIN_LAYER Z+ GetTexParameteriv 0 View min array layer texture
TEXTURE_VIEW_NUM_LAYERS Z+ GetTexParameteriv 0 View no. of array layers texture
— S GetObjectLabel empty Debug label —
TEXTURE_MAX_ANISOTROPY R GetTexParameterfv 1.0 Maximum degree of anisotropy texture

§ Textures (state per texture image)

TEXTURE_WIDTH Z+ GetTexLevelParameteriv 0 Specified width —
TEXTURE_HEIGHT Z+ GetTexLevelParameteriv 0 Specified height (2D/3D) —
TEXTURE_DEPTH Z+ GetTexLevelParameteriv 0 Specified depth (3D) —
TEXTURE_BORDER Z+ GetTexLevelParameteriv 0 Specified border width —
TEXTURE_SAMPLES Z+ GetTexLevelParameteriv 0 No. of samples per texel —
TEXTURE_FIXED_SAMPLE_LOCATIONS B GetTexLevelParameteriv \glc{TRUE} Whether the image uses a fixed sample pattern —
TEXTURE_INTERNAL_FORMAT or
TEXTURE_COMPONENTS
E GetTexLevelParameteriv 1 or \glc{LUMINANCE8} Internal format (see section~\ref{tex:state} —
TEXTURE_INTERNAL_FORMAT E GetTexLevelParameteriv \glc{RGBA} or \glc{R8} Internal format (see section~\ref{tex:state}) —
TEXTURE_RED_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_GREEN_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_BLUE_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_ALPHA_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_LUMINANCE_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_INTENSITY_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_DEPTH_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_STENCIL_SIZE Z+ GetTexLevelParameteriv 0 Component resolution —
TEXTURE_SHARED_SIZE Z+ GetTexLevelParameteriv 0 Shared exponent field resolution —
TEXTURE_RED_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_GREEN_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_BLUE_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_ALPHA_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_LUMINANCE_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_INTENSITY_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —
TEXTURE_DEPTH_TYPE E GetTexLevelParameteriv \glc{NONE} Component type —

§ Textures (state per texture image) (cont.)

TEXTURE_COMPRESSED B GetTexLevelParameteriv \glc{FALSE} True if image has a compressed internal format —
TEXTURE_COMPRESSED_IMAGE_SIZE Z+ GetTexLevelParameteriv 0 Size (in \glt{ubyte}\/s) of compressed image —
TEXTURE_BUFFER_DATA_STORE_BINDING Z+ GetTexLevelParameteriv 0 Buffer object bound as the data store for the active image unit's buffer texture texture
TEXTURE_BUFFER_OFFSET n × Z GetTexLevelParameteriv 0 Offset into buffer's data store used for the active image unit's buffer texture —
TEXTURE_BUFFER_SIZE n × Z GetTexLevelParameteriv 0 Size of the buffer's data store used for the active image unit's buffer texture —

§ Textures (state per sampler object)

TEXTURE_BORDER_COLOR C GetSamplerParameterfv 0.0,0.0,0.0,0.0 Border color —
TEXTURE_COMPARE_FUNC E GetSamplerParameteriv \glc{LEQUAL} Comparison function —
TEXTURE_COMPARE_MODE E GetSamplerParameteriv \glc{NONE} Comparison mode —
TEXTURE_LOD_BIAS R GetSamplerParameterfv 0.0 Texture level-of-detail bias ($\lodobjbias$) —
TEXTURE_MAX_LOD R GetSamplerParameterfv 1000 Max. level-of-detail —
TEXTURE_MAG_FILTER E GetSamplerParameteriv \glc{LINEAR} Magnification function —
TEXTURE_MIN_FILTER E GetSamplerParameteriv \glc{NEAREST_MIPMAP_LINEAR} Minification function —
TEXTURE_MIN_LOD R GetSamplerParameterfv -1000 Min level-of-detail —
TEXTURE_MAX_ANISOTROPY R GetSamplerParameterfv 1.0 Maximum degree of anisotropy texture
TEXTURE_WRAP_S E GetSamplerParameteriv \glc{REPEAT} Texcoord $s$ wrap mode —
TEXTURE_WRAP_T E GetSamplerParameteriv \glc{REPEAT} Texcoord $t$ wrap mode (2D, 3D, cube map textures only) —
TEXTURE_WRAP_R E GetSamplerParameteriv \glc{REPEAT} Texcoord $r$ wrap mode (3D textures only) —
— S GetObjectLabel empty Debug label —

§ Texture Environment and Generation

ACTIVE_TEXTURE E GetIntegerv \glc{TEXTURE0} Active texture unit selector texture
COORD_REPLACE MAX_TEXTURE_UNITS × B GetTexEnviv \glc{FALSE} Coordinate replacement enable point
TEXTURE_ENV_MODE MAX_TEXTURE_UNITS × E GetTexEnviv \glc{MODULATE} Texture application function texture
TEXTURE_ENV_COLOR MAX_TEXTURE_UNITS × C GetTexEnvfv 0.0,0.0,0.0,0.0 Texture environment color texture
TEXTURE_LOD_BIAS MAX_TEXTURE_UNITS × R GetTexEnvfv 0.0 Texture level-of-detail bias $\lodunitbias$ texture
TEXTURE_GEN_S MAX_TEXTURE_UNITS × B IsEnabled \glc{FALSE} Texgen enabled texture/enable
TEXTURE_GEN_T MAX_TEXTURE_UNITS × B IsEnabled \glc{FALSE} Texgen enabled texture/enable
TEXTURE_GEN_R MAX_TEXTURE_UNITS × B IsEnabled \glc{FALSE} Texgen enabled texture/enable
TEXTURE_GEN_Q MAX_TEXTURE_UNITS × B IsEnabled \glc{FALSE} Texgen enabled texture/enable
EYE_PLANE MAX_TEXTURE_UNITS × 4 × R4 GetTexGenfv See sec.~\ref{texgen} Texgen plane equation coefficients (for S, T, R, and Q) texture
OBJECT_PLANE MAX_TEXTURE_UNITS × 4 × R4 GetTexGenfv See sec.~\ref{texgen} Texgen object linear coefficients (for S, T, R, and Q) texture
TEXTURE_GEN_MODE MAX_TEXTURE_UNITS × 4 × E GetTexGeniv \glc{EYE_LINEAR} Function used for texgen (for S, T, R, and Q texture
COMBINE_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{MODULATE} RGB combiner function texture
COMBINE_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{MODULATE} Alpha combiner function texture

§ Texture Environment and Generation (cont.)

SRC0_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{TEXTURE} RGB source 0 texture
SRC1_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{PREVIOUS} RGB source 1 texture
SRC2_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{CONSTANT} RGB source 2 texture
SRC0_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{TEXTURE} Alpha source 0 texture
SRC1_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{PREVIOUS} Alpha source 1 texture
SRC2_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{CONSTANT} Alpha source 2 texture
OPERAND0_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_COLOR} RGB operand 0 texture
OPERAND1_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_COLOR} RGB operand 1 texture
OPERAND2_RGB MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_ALPHA} RGB operand 2 texture
OPERAND0_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_ALPHA} Alpha operand 0 texture
OPERAND1_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_ALPHA} Alpha operand 1 texture
OPERAND2_ALPHA MAX_TEXTURE_UNITS × E GetTexEnviv \glc{SRC_ALPHA} Alpha operand 2 texture
RGB_SCALE MAX_TEXTURE_UNITS × R3 GetTexEnvfv 1.0 RGB post-combiner scaling texture
ALPHA_SCALE MAX_TEXTURE_UNITS × R3 GetTexEnvfv 1.0 Alpha post-combiner scaling texture

§ Pixel Operations

SCISSOR_TEST 16* × B IsEnabledi \glc{FALSE} Scissoring enabled scissor/enable
SCISSOR_BOX 16* × 4 × Z GetIntegeri_v See sec.~\ref{scissor} Scissor box scissor
ALPHA_TEST B IsEnabled \glc{FALSE} Alpha test enabled color-buffer/enable
ALPHA_TEST_FUNC E GetIntegerv \glc{ALWAYS} Alpha test function color-buffer
ALPHA_TEST_REF R+ GetFloatv 0 Alpha test reference value color-buffer
STENCIL_TEST B IsEnabled \glc{FALSE} Stenciling enabled stencil-buffer/enable
STENCIL_FUNC E GetIntegerv \glc{ALWAYS} Front stencil function stencil-buffer
STENCIL_VALUE_MASK Z+ GetIntegerv See sec.~\ref{stencil} Front stencil mask stencil-buffer
STENCIL_REF Z+ GetIntegerv 0 Front stencil reference value stencil-buffer
STENCIL_FAIL E GetIntegerv \glc{KEEP} Front stencil fail action stencil-buffer
STENCIL_PASS_DEPTH_FAIL E GetIntegerv \glc{KEEP} Front stencil depth buffer fail action stencil-buffer
STENCIL_PASS_DEPTH_PASS E GetIntegerv \glc{KEEP} Front stencil depth buffer pass action stencil-buffer
STENCIL_BACK_FUNC E GetIntegerv \glc{ALWAYS} Back stencil function stencil-buffer
STENCIL_BACK_VALUE_MASK Z+ GetIntegerv See sec.~\ref{stencil} Back stencil mask stencil-buffer
STENCIL_BACK_REF Z+ GetIntegerv 0 Back stencil reference value stencil-buffer
STENCIL_BACK_FAIL E GetIntegerv \glc{KEEP} Back stencil fail action stencil-buffer
STENCIL_BACK_PASS_DEPTH_FAIL E GetIntegerv \glc{KEEP} Back stencil depth buffer fail action stencil-buffer
STENCIL_BACK_PASS_DEPTH_PASS E GetIntegerv \glc{KEEP} Back stencil depth buffer pass action stencil-buffer
DEPTH_TEST B IsEnabled \glc{FALSE} Depth buffer enabled depth-buffer/enable
DEPTH_FUNC E GetIntegerv \glc{LESS} Depth buffer test function depth-buffer

§ Pixel Operations (cont.)

BLEND MAX_DRAW_BUFFERS × B IsEnabledi \glc{FALSE} Blending enabled for draw buffer $i$ color-buffer/enable
BLEND_SRC_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ONE} Blending source RGB function for draw buffer $i$ color-buffer
BLEND_SRC_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ONE} Blending source A function for draw buffer $i$ color-buffer
BLEND_DST_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ZERO} Blending dest. RGB function for draw buffer $i$ color-buffer
BLEND_DST_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{ZERO} Blending dest. A function for draw buffer $i$ color-buffer
BLEND_EQUATION_RGB MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{FUNC_ADD} RGB blending equation for draw buffer $i$ color-buffer
BLEND_EQUATION_ALPHA MAX_DRAW_BUFFERS × E GetIntegeri_v \glc{FUNC_ADD} Alpha blending equation for draw buffer $i$ color-buffer
BLEND_COLOR C GetFloatv 0.0,0.0,0.0,0.0 Constant blend color color-buffer
FRAMEBUFFER_SRGB B IsEnabled \glc{FALSE} sRGB update and blending enable color-buffer/enable
DITHER B IsEnabled \glc{TRUE} Dithering enabled color-buffer/enable
INDEX_LOGIC_OP B IsEnabled \glc{FALSE} Index logic op enabled color-buffer/enable
COLOR_LOGIC_OP B IsEnabled \glc{FALSE} Color logic op enabled color-buffer/enable
LOGIC_OP_MODE E GetIntegerv \glc{COPY} Logic op function color-buffer

§ Framebuffer Control

INDEX_WRITEMASK Z+ GetIntegerv 1's Color index writemask color-buffer
COLOR_WRITEMASK MAX_DRAW_BUFFERS × 4 × B GetBooleani_v (\glc{TRUE},\glc{TRUE},\glc{TRUE},\glc{TRUE}) Color write enables (R,G,B,A) for draw buffer $i$ color-buffer
DEPTH_WRITEMASK B GetBooleanv \glc{TRUE} Depth buffer enabled for writing depth-buffer
STENCIL_WRITEMASK Z+ GetIntegerv 1's Front stencil buffer writemask stencil-buffer
STENCIL_BACK_WRITEMASK Z+ GetIntegerv 1's Back stencil buffer writemask stencil-buffer
COLOR_CLEAR_VALUE C GetFloatv 0.0,0.0,0.0,0.0 Color buffer clear value (RGBA mode) color-buffer
COLOR_CLEAR_VALUE C GetFloatv 0.0,0.0,0.0,0.0 Color buffer clear value color-buffer
INDEX_CLEAR_VALUE CI GetFloatv 0 Color buffer clear value (color index mode) color-buffer
DEPTH_CLEAR_VALUE R+ GetFloatv 1 Depth buffer clear value depth-buffer
STENCIL_CLEAR_VALUE Z+ GetIntegerv 0 Stencil clear value stencil-buffer
ACCUM_CLEAR_VALUE 4 × R+ GetFloatv 0 Accumulation buffer clear value accum-buffer

§ Framebuffer (state per target binding point)

DRAW_FRAMEBUFFER_BINDING Z+ GetIntegerv 0 Framebuffer object bound to \glc{DRAW_FRAMEBUFFER} —
READ_FRAMEBUFFER_BINDING Z+ GetIntegerv 0 Framebuffer object bound to \glc{READ_FRAMEBUFFER} —

§ Framebuffer (state per framebuffer object)

  1. † This state is queried from the currently bound read framebuffer.
DRAW_BUFFER0 …
DRAW_BUFFER0 + (n-1)
where n ≥ MAX_DRAW_BUFFERS
n × E GetIntegerv See sec.~\ref{setbuffers} Draw buffer selected for color output $i$ color-buffer
READ_BUFFER E GetIntegerv See sec.~\ref{pix:read} Read source buffer† pixel
FRAMEBUFFER_DEFAULT_WIDTH Z+ GetFramebufferParameteriv 0 Default width of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_HEIGHT Z+ GetFramebufferParameteriv 0 Default height of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_LAYERS Z+ GetFramebufferParameteriv 0 Default layer count of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_SAMPLES Z+ GetFramebufferParameteriv 0 Default sample count of framebuffer w/o attachments —
FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS B GetFramebufferParameteriv \glc{FALSE} Default sample location pattern of framebuffer w/o attachments —
— S GetObjectLabel empty Debug label —

§ Framebuffer (state per attachment point)

FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE E GetFramebufferAttachmentParameteriv \glc{NONE} Type of image attached to framebuffer attachment point —
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME Z+ GetFramebufferAttachmentParameteriv 0 Name of object attached to framebuffer attachment point —
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL Z+ GetFramebufferAttachmentParameteriv 0 Mipmap level of texture image attached, if object attached is texture —
FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE E GetFramebufferAttachmentParameteriv \glc{NONE} Cubemap face of texture image attached, if object attached is cubemap texture —
FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER Z GetFramebufferAttachmentParameteriv 0 Layer of texture image attached, if object attached is 3D texture —
FRAMEBUFFER_ATTACHMENT_LAYERED B GetFramebufferAttachmentParameteriv \glc{FALSE} Framebuffer attachment is layered —
FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING E GetFramebufferAttachmentParameteriv — Encoding of components in the attached image —
FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE E GetFramebufferAttachmentParameteriv — Data type of components in the attached image —
FRAMEBUFFER_ATTACHMENT_RED_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's RED component —
FRAMEBUFFER_ATTACHMENT_GREEN_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's GREEN component —
FRAMEBUFFER_ATTACHMENT_BLUE_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's BLUE component —
FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's ALPHA component —
FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's DEPTH component —
FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE Z+ GetFramebufferAttachmentParameteriv — Size in bits of attached image's STENCIL component —

§ Renderbuffer (state per target and binding point)

RENDERBUFFER_BINDING Z GetIntegerv 0 Renderbuffer object bound to \glc{RENDERBUFFER} —

§ Renderbuffer (state per renderbuffer object)

RENDERBUFFER_WIDTH Z+ GetRenderbufferParameteriv 0 Width of renderbuffer —
RENDERBUFFER_HEIGHT Z+ GetRenderbufferParameteriv 0 Height of renderbuffer —
RENDERBUFFER_INTERNAL_FORMAT E GetRenderbufferParameteriv \glc{RGBA} Internal format of renderbuffer —
RENDERBUFFER_RED_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's red component —
RENDERBUFFER_GREEN_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's green component —
RENDERBUFFER_BLUE_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's blue component —
RENDERBUFFER_ALPHA_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's alpha component —
RENDERBUFFER_DEPTH_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's depth component —
RENDERBUFFER_STENCIL_SIZE Z+ GetRenderbufferParameteriv 0 Size in bits of renderbuffer image's stencil component —
RENDERBUFFER_SAMPLES Z+ GetRenderbufferParameteriv 0 No. of samples —
— S GetObjectLabel empty Debug label —

§ Pixels

UNPACK_SWAP_BYTES B GetBooleanv \glc{FALSE} Value of \glc{UNPACK_SWAP_BYTES} pixel-store
UNPACK_LSB_FIRST B GetBooleanv \glc{FALSE} Value of \glc{UNPACK_LSB_FIRST} pixel-store
UNPACK_IMAGE_HEIGHT Z+ GetIntegerv 0 Value of \glc{UNPACK_IMAGE_HEIGHT} pixel-store
UNPACK_SKIP_IMAGES Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_IMAGES} pixel-store
UNPACK_ROW_LENGTH Z+ GetIntegerv 0 Value of \glc{UNPACK_ROW_LENGTH} pixel-store
UNPACK_SKIP_ROWS Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_ROWS} pixel-store
UNPACK_SKIP_PIXELS Z+ GetIntegerv 0 Value of \glc{UNPACK_SKIP_PIXELS} pixel-store
UNPACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{UNPACK_ALIGNMENT} pixel-store
UNPACK_COMPRESSED_BLOCK_WIDTH Z+ GetIntegerv 0 Value of \glc{UNPACK_COMPRESSED_BLOCK_WIDTH} —
UNPACK_COMPRESSED_BLOCK_HEIGHT Z+ GetIntegerv 0 Value of \glc{UNPACK_COMPRESSED_BLOCK_HEIGHT} —
UNPACK_COMPRESSED_BLOCK_DEPTH Z+ GetIntegerv 0 Value of \glc{UNPACK_COMPRESSED_BLOCK_DEPTH} —
UNPACK_COMPRESSED_BLOCK_SIZE Z+ GetIntegerv 0 Value of \glc{UNPACK_COMPRESSED_BLOCK_SIZE} —
PIXEL_UNPACK_BUFFER_BINDING Z+ GetIntegerv 0 Pixel unpack buffer binding pixel-store

§ Pixels (cont.)

PACK_SWAP_BYTES B GetBooleanv \glc{FALSE} Value of \glc{PACK_SWAP_BYTES} pixel-store
PACK_LSB_FIRST B GetBooleanv \glc{FALSE} Value of \glc{PACK_LSB_FIRST} pixel-store
PACK_IMAGE_HEIGHT Z+ GetIntegerv 0 Value of \glc{PACK_IMAGE_HEIGHT} pixel-store
PACK_SKIP_IMAGES Z+ GetIntegerv 0 Value of \glc{PACK_SKIP_IMAGES} pixel-store
PACK_ROW_LENGTH Z+ GetIntegerv 0 Value of \glc{PACK_ROW_LENGTH} pixel-store
PACK_SKIP_ROWS Z+ GetIntegerv 0 Value of \glc{PACK_SKIP_ROWS} pixel-store
PACK_SKIP_PIXELS Z+ GetIntegerv 0 Value of \glc{PACK_SKIP_PIXELS} pixel-store
PACK_ALIGNMENT Z+ GetIntegerv 4 Value of \glc{PACK_ALIGNMENT} pixel-store
PACK_COMPRESSED_BLOCK_WIDTH Z+ GetIntegerv 0 Value of \glc{PACK_COMPRESSED_BLOCK_WIDTH} —
PACK_COMPRESSED_BLOCK_HEIGHT Z+ GetIntegerv 0 Value of \glc{PACK_COMPRESSED_BLOCK_HEIGHT} —
PACK_COMPRESSED_BLOCK_DEPTH Z+ GetIntegerv 0 Value of \glc{PACK_COMPRESSED_BLOCK_DEPTH} —
PACK_COMPRESSED_BLOCK_SIZE Z+ GetIntegerv 0 Value of \glc{PACK_COMPRESSED_BLOCK_SIZE} —
PIXEL_PACK_BUFFER_BINDING Z+ GetIntegerv 0 Pixel pack buffer binding pixel-store
MAP_COLOR B GetBooleanv \glc{FALSE} True if colors are mapped pixel
MAP_STENCIL B GetBooleanv \glc{FALSE} True if stencil values are mapped pixel
INDEX_SHIFT Z GetIntegerv 0 Value of \glc{INDEX_SHIFT} pixel
INDEX_OFFSET Z GetIntegerv 0 Value of \glc{INDEX_OFFSET} pixel
RED_SCALE R GetFloatv 1 Value of \enum{RED_SCALE} pixel
GREEN_SCALE R GetFloatv 1 Value of \enum{GREEN_SCALE} pixel
BLUE_SCALE R GetFloatv 1 Value of \enum{BLUE_SCALE} pixel
ALPHA_SCALE R GetFloatv 1 Value of \enum{ALPHA_SCALE} pixel
DEPTH_SCALE R GetFloatv 1 Value of \enum{DEPTH_SCALE} pixel
RED_BIAS R GetFloatv 0 Value of \enum{RED_BIAS} pixel
GREEN_BIAS R GetFloatv 0 Value of \enum{GREEN_BIAS} pixel
BLUE_BIAS R GetFloatv 0 Value of \enum{BLUE_BIAS} pixel
ALPHA_BIAS R GetFloatv 0 Value of \enum{ALPHA_BIAS} pixel

§ Pixels (cont.)

COLOR_TABLE B IsEnabled \glc{FALSE} True if color table lookup is done pixel/enable
POST_CONVOLUTION_COLOR_TABLE B IsEnabled \glc{FALSE} True if post convolution color table lookup is done pixel/enable
POST_COLOR_MATRIX_COLOR_TABLE B IsEnabled \glc{FALSE} True if post color matrix color table lookup is done pixel/enable
COLOR_TABLE I GetColorTable \em empty Color table —
POST_CONVOLUTION_COLOR_TABLE I GetColorTable \em empty Post convolution color table —
POST_COLOR_MATRIX_COLOR_TABLE I GetColorTable \em empty Post color matrix color table —
COLOR_TABLE_FORMAT 2 × 3 × E GetColorTableParameteriv \glc{RGBA} Color tables' internal image format —
COLOR_TABLE_WIDTH 2 × 3 × Z+ GetColorTableParameteriv 0 Color tables' specified width —
COLOR_TABLE_RED_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_GREEN_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_BLUE_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_ALPHA_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_LUMINANCE_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_INTENSITY_SIZE 2 × 3 × Z+ GetColorTableParameteriv 0 Color table component resolution —
COLOR_TABLE_SCALE 3 × R4 GetColorTableParameterfv 1,1,1,1 Scale factors applied to color table entries pixel
COLOR_TABLE_BIAS 3 × R4 GetColorTableParameterfv 0,0,0,0 Bias factors applied to color table entries pixel

§ Pixels (cont.)

CONVOLUTION_1D B IsEnabled \glc{FALSE} True if 1D convolution is done pixel/enable
CONVOLUTION_2D B IsEnabled \glc{FALSE} True if 2D convolution is done pixel/enable
SEPARABLE_2D B IsEnabled \glc{FALSE} True if separable 2D convolution is done pixel/enable
CONVOLUTION_1D 2 × I GetConvolutionFilter \em empty Convolution filters —
CONVOLUTION_2D 2 × I GetConvolutionFilter \em empty Convolution filters —
CONVOLUTION_3D 2 × I GetConvolutionFilter \em empty Convolution filters —
SEPARABLE_2D 2 × I GetSeparableFilter \em empty Separable convolution filter —
CONVOLUTION_BORDER_COLOR 3 × C GetConvolutionParameterfv 0.0,0.0,0.0,0.0 Convolution border color pixel
CONVOLUTION_BORDER_MODE 3 × E GetConvolutionParameteriv \glc{REDUCE} Convolution border mode pixel
CONVOLUTION_FILTER_SCALE 3 × R4 GetConvolutionParameterfv 1,1,1,1 Scale factors applied to convolution filter entries pixel
CONVOLUTION_FILTER_BIAS 3 × R4 GetConvolutionParameterfv 0,0,0,0 Bias factors applied to convolution filter entries pixel
CONVOLUTION_FORMAT 3 × E GetConvolutionParameteriv \glc{RGBA} Convolution filter internal format —
CONVOLUTION_WIDTH 3 × Z+ GetConvolutionParameteriv 0 Convolution filter width —
CONVOLUTION_HEIGHT 2 × Z+ GetConvolutionParameteriv 0 Convolution filter height —

§ Pixels (cont.)

POST_CONVOLUTION_RED_SCALE R GetFloatv 1 Component scale factors after convolution pixel
POST_CONVOLUTION_GREEN_SCALE R GetFloatv 1 Component scale factors after convolution pixel
POST_CONVOLUTION_BLUE_SCALE R GetFloatv 1 Component scale factors after convolution pixel
POST_CONVOLUTION_ALPHA_SCALE R GetFloatv 1 Component scale factors after convolution pixel
POST_CONVOLUTION_RED_BIAS R GetFloatv 0 Component bias factors after convolution pixel
POST_CONVOLUTION_GREEN_BIAS R GetFloatv 0 Component bias factors after convolution pixel
POST_CONVOLUTION_BLUE_BIAS R GetFloatv 0 Component bias factors after convolution pixel
POST_CONVOLUTION_ALPHA_BIAS R GetFloatv 0 Component bias factors after convolution pixel
POST_COLOR_MATRIX_RED_SCALE R GetFloatv 1 Component scale factors after color matrix pixel
POST_COLOR_MATRIX_GREEN_SCALE R GetFloatv 1 Component scale factors after color matrix pixel
POST_COLOR_MATRIX_BLUE_SCALE R GetFloatv 1 Component scale factors after color matrix pixel
POST_COLOR_MATRIX_ALPHA_SCALE R GetFloatv 1 Component scale factors after color matrix pixel
POST_COLOR_MATRIX_RED_BIAS R GetFloatv 0 Component bias factors after color matrix pixel
POST_COLOR_MATRIX_GREEN_BIAS R GetFloatv 0 Component bias factors after color matrix pixel
POST_COLOR_MATRIX_BLUE_BIAS R GetFloatv 0 Component bias factors after color matrix pixel
POST_COLOR_MATRIX_ALPHA_BIAS R GetFloatv 0 Component bias factors after color matrix pixel
HISTOGRAM B IsEnabled \glc{FALSE} True if histogramming is enabled pixel/enable
HISTOGRAM I GetHistogram \em empty Histogram table —
HISTOGRAM_WIDTH 2 × Z+ GetHistogramParameteriv 0 Histogram table width —
HISTOGRAM_FORMAT 2 × E GetHistogramParameteriv \glc{RGBA} Histogram table internal format —
HISTOGRAM_RED_SIZE 2 × Z+ GetHistogramParameteriv 0 Histogram table component resolution —
HISTOGRAM_GREEN_SIZE 2 × Z+ GetHistogramParameteriv 0 Histogram table component resolution —
HISTOGRAM_BLUE_SIZE 2 × Z+ GetHistogramParameteriv 0 Histogram table component resolution —
HISTOGRAM_ALPHA_SIZE 2 × Z+ GetHistogramParameteriv 0 Histogram table component resolution —
HISTOGRAM_LUMINANCE_SIZE 2 × Z+ GetHistogramParameteriv 0 Histogram table component resolution —
HISTOGRAM_SINK B GetHistogramParameteriv \glc{FALSE} True if histogramming consumes pixel groups —

§ Pixels (cont.)

MINMAX B IsEnabled \glc{FALSE} True if minmax is enabled pixel/enable
MINMAX $R^n$ GetMinmax (M,M,M,M),(m,m,m,m) Minmax table —
MINMAX_FORMAT E GetMinmaxParameteriv \glc{RGBA} Minmax table internal format —
MINMAX_SINK B GetMinmaxParameteriv \glc{FALSE} True if minmax consumes pixel groups —
ZOOM_X R GetFloatv 1.0 $x$ zoom factor pixel
ZOOM_Y R GetFloatv 1.0 $y$ zoom factor pixel
PIXEL_MAP_I_TO_R 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_I_TO_G 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_I_TO_B 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_I_TO_A 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_R_TO_R 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_G_TO_G 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_B_TO_B 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_A_TO_A 32* × R GetPixelMap 0's RGBA \func{PixelMap} translation table —
PIXEL_MAP_I_TO_I 32* × Z GetPixelMap 0's Index \func{PixelMap} translation table —
PIXEL_MAP_S_TO_S 32* × Z GetPixelMap 0's Index \func{PixelMap} translation table —
PIXEL_MAP_I_TO_R_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_I_TO_R —
PIXEL_MAP_I_TO_G_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_I_TO_G —
PIXEL_MAP_I_TO_B_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_I_TO_B —
PIXEL_MAP_I_TO_A_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_I_TO_A —
PIXEL_MAP_R_TO_R_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_R_TO_R —
PIXEL_MAP_G_TO_G_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_G_TO_G —
PIXEL_MAP_B_TO_B_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_B_TO_B —
PIXEL_MAP_A_TO_A_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_A_TO_A —
PIXEL_MAP_I_TO_I_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_I_TO_I —
PIXEL_MAP_S_TO_S_SIZE Z+ GetIntegerv 1 Size of table PIXEL_MAP_S_TO_S —

§ Evaluators

(\func{GetMap} takes a map name)

ORDER 9 × E GetMapiv 1 1d map order —
ORDER 9 × 2 × E GetMapiv 1,1 2d map orders —
COEFF $9 \times 8* \times R^n$ GetMapfv See sec.~\ref{evaluators} 1d control points —
COEFF $9 \times 8* \times 8* \times R^n$ GetMapfv See sec.~\ref{evaluators} 2d control points —
DOMAIN 9 × 2 × R GetMapfv See sec.~\ref{evaluators} 1d domain endpoints —
DOMAIN 9 × 4 × R GetMapfv See sec.~\ref{evaluators} 2d domain endpoints —
MAP1_VERTEX_3 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_VERTEX_4 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_INDEX B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_COLOR_4 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_NORMAL B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_TEXTURE_COORD_1 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_TEXTURE_COORD_2 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_TEXTURE_COORD_3 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP1_TEXTURE_COORD_4 B IsEnabled \glc{FALSE} 1d map enable eval/enable
MAP2_VERTEX_3 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_VERTEX_4 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_INDEX B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_COLOR_4 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_NORMAL B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_TEXTURE_COORD_1 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_TEXTURE_COORD_2 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_TEXTURE_COORD_3 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP2_TEXTURE_COORD_4 B IsEnabled \glc{FALSE} 2d map enable eval/enable
MAP1_GRID_DOMAIN 2 × R GetFloatv 0,1 1d grid endpoints eval
MAP2_GRID_DOMAIN 4 × R GetFloatv 0,1;0,1 2d grid endpoints eval
MAP1_GRID_SEGMENTS Z+ GetFloatv 1 1d grid divisions eval
MAP2_GRID_SEGMENTS 2 × Z+ GetFloatv 1,1 2d grid divisions eval
AUTO_NORMAL B IsEnabled \glc{FALSE} True if automatic normal generation enabled eval/enable

§ Shader Object State

SHADER_TYPE E GetShaderiv — Type of shader (see table~\ref{tab:programs:shadertypes} —
DELETE_STATUS B GetShaderiv \glc{FALSE} Shader flagged for deletion —
COMPILE_STATUS B GetShaderiv \glc{FALSE} Last compile succeeded —
— S GetShaderInfoLog Empty string Info log for shader objects —
INFO_LOG_LENGTH Z+ GetShaderiv 0 Length of info log —
— S GetShaderSource Empty string Source code for a shader —
SHADER_SOURCE_LENGTH Z+ GetShaderiv 0 Length of source code —
— S GetObjectLabel empty Debug label —
SPIR_V_BINARY B GetShaderiv \glc{FALSE} Shader is associated with a SPIR-V module. —

§ Program Pipeline Object State

ACTIVE_PROGRAM Z+ GetProgramPipelineiv 0 Program object updated by \func{Uniform*} when PPO bound —
VERTEX_SHADER Z+ GetProgramPipelineiv 0 Name of current vertex shader program object —
GEOMETRY_SHADER Z+ GetProgramPipelineiv 0 Name of current geometry shader program object —
FRAGMENT_SHADER Z+ GetProgramPipelineiv 0 Name of current fragment shader program object —
COMPUTE_SHADER Z+ GetProgramPipelineiv 0 Name of current compute shader program object —
TESS_CONTROL_SHADER Z+ GetProgramPipelineiv 0 Name of current TCS program object —
TESS_EVALUATION_SHADER Z+ GetProgramPipelineiv 0 Name of current TES program object —
VALIDATE_STATUS B GetProgramPipelineiv \glc{FALSE} Validate status of program pipeline object —
— S GetProgramPiplineInfoLog empty Info log for program {pipeline} object —
INFO_LOG_LENGTH Z+ GetProgramPipelineiv 0 Length of info log —
— S GetObjectLabel empty Debug label —

§ Program Object State

CURRENT_PROGRAM Z+ GetIntegerv 0 Name of current program object —
PROGRAM_PIPELINE_BINDING Z+ GetIntegerv 0 Current program pipeline object binding —
PROGRAM_SEPARABLE B GetProgramiv \glc{FALSE} Program object can be bound for separate pipeline stages —
DELETE_STATUS B GetProgramiv \glc{FALSE} Program object deleted —
LINK_STATUS B GetProgramiv \glc{FALSE} Last link attempt succeeded —
VALIDATE_STATUS B GetProgramiv \glc{FALSE} Last validate attempt succeeded —
ATTACHED_SHADERS Z+ GetProgramiv 0 No. of attached shader objects —
— 0* × Z+ GetAttachedShaders empty Shader objects attached —
— S GetProgramInfoLog empty Info log for program object —
INFO_LOG_LENGTH Z+ GetProgramiv 0 Length of info log —
PROGRAM_BINARY_LENGTH Z+ GetProgramiv 0 Length of program binary —
PROGRAM_BINARY_RETRIEVABLE_HINT B GetProgramiv \glc{FALSE} Retrievable binary hint enabled —
— 0* × BMU GetProgramBinary — Binary representation of program —
COMPUTE_WORK_GROUP_SIZE 3 × Z+ GetProgramiv $\{ 0, \dots \}$ Local work size of a linked compute program —
— S GetObjectLabel empty Debug label —

§ Program Object State (cont.)

ACTIVE_UNIFORMS Z+ GetProgramiv 0 No. of active uniforms —
— 0* × Z GetUniformLocation — Location of active uniforms —
— 0* × Z+ GetActiveUniform — Size of active uniform —
— 0* × Z+ GetActiveUniform — Type of active uniform —
— 0* × char GetActiveUniform empty Name of active uniform —
ACTIVE_UNIFORM_MAX_LENGTH Z+ GetProgramiv 0 Max. active uniform name length —
— — GetUniform 0 Uniform value —
ACTIVE_ATTRIBUTES Z+ GetProgramiv 0 No. of active attributes —
— 0* × Z GetAttribLocation — Location of active generic attribute —
— 0* × Z+ GetActiveAttrib — Size of active attribute —
— 0* × Z+ GetActiveAttrib — Type of active attribute —
— 0* × char GetActiveAttrib empty Name of active attribute —
ACTIVE_ATTRIBUTE_MAX_LENGTH Z+ GetProgramiv 0 Max. active attribute name length —

§ Program Object State (cont.)

GEOMETRY_VERTICES_OUT Z+ GetProgramiv 0 Max. no. of output vertices —
GEOMETRY_INPUT_TYPE E GetProgramiv \glc{TRIANGLES} Primitive input type —
GEOMETRY_OUTPUT_TYPE E GetProgramiv \glc{TRIANGLE_STRIP} Primitive output type —
GEOMETRY_SHADER_INVOCATIONS Z+ GetProgramiv 1 No. of times a geom. shader should be executed for each input primitive —
TRANSFORM_FEEDBACK_BUFFER_MODE E GetProgramiv \glc{INTERLEAVED_ATTRIBS} Transform feedback mode for the program —
TRANSFORM_FEEDBACK_VARYINGS Z+ GetProgramiv 0 No. of outputs to stream to buffer object(s) —
TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH Z+ GetProgramiv 0 Max. transform feedback output variable name length —
— Z+ GetTransformFeedbackVarying — Size of each transform feedback output variable —
— Z+ GetTransformFeedbackVarying — Type of each transform feedback output variable —
— 0^{+} × char GetTransformFeedbackVarying — Name of each transform feedback output variable —

§ Program Object State (cont.)

ACTIVE_UNIFORM_BLOCKS Z+ GetProgramiv 0 No. of active uniform blocks in a program —
ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH Z+ GetProgramiv 0 Length of longest active uniform block name —
UNIFORM_TYPE 0* × E GetActiveUniformsiv — Type of active uniform —
UNIFORM_SIZE 0* × Z+ GetActiveUniformsiv — Size of active uniform —
UNIFORM_NAME_LENGTH 0* × Z+ GetActiveUniformsiv — Uniform name length —
UNIFORM_BLOCK_INDEX 0* × Z GetActiveUniformsiv — Uniform block index —
UNIFORM_OFFSET 0* × Z GetActiveUniformsiv — Uniform buffer offset —

§ Program Object State (cont.)

UNIFORM_ARRAY_STRIDE 0* × Z GetActiveUniformsiv — Uniform buffer array stride —
UNIFORM_MATRIX_STRIDE 0* × Z GetActiveUniformsiv — Uniform buffer intra-matrix stride —
UNIFORM_IS_ROW_MAJOR 0* × B GetActiveUniformsiv — Whether uniform is a row-major matrix —
UNIFORM_BLOCK_BINDING Z+ GetActiveUniformBlockiv 0 Uniform buffer binding {point} associated with the specified uniform block —
UNIFORM_BLOCK_DATA_SIZE Z+ GetActiveUniformBlockiv — Size of the storage needed to hold this uniform block's data —
UNIFORM_BLOCK_NAME_LENGTH Z+ GetActiveUniformBlockiv — Uniform block name length —
UNIFORM_BLOCK_ACTIVE_UNIFORMS Z+ GetActiveUniformBlockiv — Count of active uniforms in the specified uniform block —
UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES n × Z+ GetActiveUniformBlockiv — Array of active uniform indices of the specified uniform block —
UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by the vertex stage —
UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by tess. control stage —
UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUTION_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by tess. evaluation stage —

§ Program Object State (cont.)

UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by the geometry stage —
UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER B GetActiveUniformBlockiv 0 True if uniform block is actively referenced by the fragment stage —
UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER B GetActiveUniformBlockiv \glc{FALSE} True if uniform block is referenced by the compute stage —
TESS_CONTROL_OUTPUT_VERTICES Z+ GetProgramiv 0 Output patch size for tess. control shader —
TESS_GEN_MODE E GetProgramiv \glc{QUADS} Base primitive type for tess. prim. generator —
TESS_GEN_SPACING E GetProgramiv \glc{EQUAL} Spacing of tess. prim. generator edge subdivision —
TESS_GEN_VERTEX_ORDER E GetProgramiv \glc{CCW} Order of vertices in primitives generated by tess. primitive generator —
TESS_GEN_POINT_MODE B GetProgramiv \glc{FALSE} Tess. prim. generator emits points? —

§ Program Object State (cont.)

ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 6 × Z+ GetProgramStageiv 0 No. of subroutine unif. locations in the shader —
ACTIVE_SUBROUTINE_UNIFORMS 6 × Z+ GetProgramStageiv 0 No. of subroutine unif. variables in the shader —
ACTIVE_SUBROUTINES 6 × Z+ GetProgramStageiv 0 No. of subroutine functions in the shader —
ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 6 × Z+ GetProgramStageiv 0 Max. subroutine uniform name length —
ACTIVE_SUBROUTINE_MAX_LENGTH 6 × Z+ GetProgramStageiv 0 Max. subroutine name length —
NUM_COMPATIBLE_SUBROUTINES 6 × 0* × Z+ GetActiveSubroutineUniformiv — No. of subroutines compatible with a sub. uniform —
COMPATIBLE_SUBROUTINES 6 × 0* × 0* × Z+ GetActiveSubroutineUniformiv — List of subroutines compatible with a sub. uniform —
UNIFORM_SIZE 6 × 0* × Z+ GetActiveSubroutineUniformiv — No. of elements in sub. uniform array —
UNIFORM_NAME_LENGTH 6 × 0* × Z+ GetActiveSubroutineUniformiv — Length of sub. uniform name —
— 6 × 0* × S GetActiveSubroutineUniformName — Sub. uniform name string —
— 6 × 0* × S GetActiveSubroutineName — Length of subroutine name —
— 6 × 0* × S GetActiveSubroutineName — Subroutine name string —

§ Program Object State (cont.)

ACTIVE_ATOMIC_COUNTER_BUFFERS Z+ GetProgramiv 0 No. of active atomic counter buffers (AACBs) used by a program —
ATOMIC_COUNTER_BUFFER_BINDING n × Z+ GetActiveAtomicCounterBufferiv — Binding point associated with an AACB —
ATOMIC_COUNTER_BUFFER_DATA_SIZE n × Z+ GetActiveAtomicCounterBufferiv — Min size required by an AACB —
ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS n × Z+ GetActiveAtomicCounterBufferiv — No. of active atomic counters in an AACB —
ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES m × n × Z+ GetActiveAtomicCounterBufferiv — List of active atomic counters in an AACB —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER n × B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by vertex shaders —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER n × B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by tess. control shaders —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUTION_SHADER n × B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by tess. evaluation shaders —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER n × B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by geometry shaders —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER n × B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by fragment shaders —
ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER B GetActiveAtomicCounterBufferiv \glc{FALSE} AACB has a counter used by compute shaders —
UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX n × Z+ GetActiveUniformsiv — AACB associated with an active uniform —

§ Program Interface State

ACTIVE_RESOURCES n × Z+ GetProgramInterfaceiv 0 No. of active resources on an interface —
MAX_NAME_LENGTH n × Z+ GetProgramInterfaceiv 0 Max. name length for active resources —
MAX_NUM_ACTIVE_VARIABLES n × Z+ GetProgramInterfaceiv 0 Max. no. of active variables for active resources —
MAX_NUM_COMPATIBLE_SUBROUTINES n × Z+ GetProgramInterfaceiv 0 Max. no. of compatible subroutines for subroutine uniforms —

§ Program Object Resource State

ACTIVE_VARIABLES Z+ GetProgramResourceiv — List of active variables owned by active resource —
ARRAY_SIZE Z+ GetProgramResourceiv — Active resource array size —
ARRAY_STRIDE Z+ GetProgramResourceiv — Active resource array stride in memory —
ATOMIC_COUNTER_BUFFER_INDEX Z+ GetProgramResourceiv — Index of atomic counter buffer owning resource —
BLOCK_INDEX Z+ GetProgramResourceiv — Index of interface block owning resource —
BUFFER_BINDING Z+ GetProgramResourceiv — Buffer binding assigned to active resource —
BUFFER_DATA_SIZE Z+ GetProgramResourceiv — Min. buffer data size required for resource —
COMPATIBLE_SUBROUTINES Z+ GetProgramResourceiv — List of compatible subroutines for active subroutine uniform —
IS_PER_PATCH Z+ GetProgramResourceiv — Is active input/output a per-patch attribute? —
IS_ROW_MAJOR Z+ GetProgramResourceiv — Active resource stored as a row major matrix? —
LOCATION Z+ GetProgramResourceiv — Location assigned to active resource —
LOCATION_COMPONENT Z+ GetProgramResourceiv — Location component assigned to active resources —
LOCATION_INDEX Z+ GetProgramResourceiv — Location index assigned to active resource —
MATRIX_STRIDE Z+ GetProgramResourceiv — Active resource matrix stride in memory —

§ Program Object Resource State (cont.)

NAME_LENGTH Z+ GetProgramResourceiv — Length of active resource name —
NUM_ACTIVE_VARIABLES Z+ GetProgramResourceiv — No. of active variables owned by active resource —
NUM_COMPATIBLE_SUBROUTINES Z+ GetProgramResourceiv — No. of compatible subroutines for active subroutine uniform —
OFFSET Z+ GetProgramResourceiv — Active resource offset in memory —
REFERENCED_BY_VERTEX_SHADER Z+ GetProgramResourceiv — Active resource used by vertex shader? —
REFERENCED_BY_TESS_CONTROL_SHADER Z+ GetProgramResourceiv — Active resource used by tess. control shader? —
REFERENCED_BY_TESS_EVALUATION_SHADER Z+ GetProgramResourceiv — Active resource used by tess. evaluation shader? —
REFERENCED_BY_GEOMETRY_SHADER Z+ GetProgramResourceiv — Active resource used by geometry shader? —
REFERENCED_BY_FRAGMENT_SHADER Z+ GetProgramResourceiv — Active resource used by fragment shader? —
REFERENCED_BY_COMPUTE_SHADER Z+ GetProgramResourceiv — Active resource used by compute shader? —
TOP_LEVEL_ARRAY_SIZE Z+ GetProgramResourceiv — Array size of top level shd. storage block member —
TOP_LEVEL_ARRAY_STRIDE Z+ GetProgramResourceiv — Array stride of top level shd. storage block member —
TYPE Z+ GetProgramResourceiv — Active resource data type —

§ Vertex and Geometry Shader State

(not part of program objects)

VERTEX_PROGRAM_TWO_SIDE B IsEnabled \glc{FALSE} Two-sided color mode enable
CURRENT_VERTEX_ATTRIB MAX_VERTEX_ATTRIBS × R4 GetVertexAttribfv 0.0,0.0,0.0,1.0 Current generic vertex attribute values current
PROGRAM_POINT_SIZE B IsEnabled \glc{FALSE} Point size mode enable

§ Query Object State

QUERY_RESULT Z+ GetQueryObjectuiv 0 or \glc{FALSE} Query object result —
QUERY_RESULT_AVAILABLE B GetQueryObjectiv \glc{TRUE} Is the query object result available? —
— S GetObjectLabel empty Debug label —
QUERY_TARGET E GetQueryObjectiv \glc{NONE} Target of query object —

§ Image State (state per image unit)

IMAGE_BINDING_NAME MAX_IMAGE_UNITS × Z+ GetIntegeri_v 0 Name of bound texture object —
IMAGE_BINDING_LEVEL MAX_IMAGE_UNITS × Z+ GetIntegeri_v 0 Level of bound texture object —
IMAGE_BINDING_LAYERED MAX_IMAGE_UNITS × B GetBooleani_v \glc{FALSE} Texture object bound with multiple layers —
IMAGE_BINDING_LAYER MAX_IMAGE_UNITS × Z+ GetIntegeri_v 0 Layer of bound texture, if not layered —
IMAGE_BINDING_ACCESS MAX_IMAGE_UNITS × E GetIntegeri_v \glc{READ_ONLY} Read and/or write access for bound texture —
IMAGE_BINDING_FORMAT MAX_IMAGE_UNITS × Z+ GetIntegeri_v \glc{R8} Format used for accesses to bound texture —

§ Atomic Counter Buffer Binding State

ATOMIC_COUNTER_BUFFER_BINDING Z+ GetIntegerv 0 Current value of generic atomic counter buffer binding —
ATOMIC_COUNTER_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each atomic counter buffer binding point —
ATOMIC_COUNTER_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each atomic counter buffer —
ATOMIC_COUNTER_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each atomic counter buffer —

§ Shader Storage Buffer Binding State

SHADER_STORAGE_BUFFER_BINDING Z+ GetIntegerv 0 Current value of generic shader storage buffer binding —
SHADER_STORAGE_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each shader storage buffer binding point —
SHADER_STORAGE_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each shader storage buffer —
SHADER_STORAGE_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each shader storage buffer —

§ Transform Feedback Object State

TRANSFORM_FEEDBACK_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Buffer object bound to each transform feedback attribute stream —
TRANSFORM_FEEDBACK_BUFFER_START n × Z+ GetInteger64i_v 0 Start offset of binding range for each transform feedback attrib. stream —
TRANSFORM_FEEDBACK_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of binding range for each transform feedback attrib. stream —
TRANSFORM_FEEDBACK_PAUSED B GetBooleanv \glc{FALSE} Is transform feedback paused on this object? —
TRANSFORM_FEEDBACK_ACTIVE B GetBooleanv \glc{FALSE} Is transform feedback active on this object? —
— S GetObjectLabel empty Debug label —

§ Uniform Buffer Binding State

UNIFORM_BUFFER_BINDING Z+ GetIntegerv 0 Uniform buffer object bound to the context for buffer object manipulation —
UNIFORM_BUFFER_BINDING n × Z+ GetIntegeri_v 0 Uniform buffer object bound to the specified context binding point —
UNIFORM_BUFFER_START n × Z+ GetInteger64i_v 0 Start of bound uniform buffer region —
UNIFORM_BUFFER_SIZE n × Z+ GetInteger64i_v 0 Size of bound uniform buffer region —

§ Sync Object State

OBJECT_TYPE E GetSynciv \glc{SYNC_FENCE} Type of sync object —
SYNC_STATUS E GetSynciv \glc{UNSIGNALED} Sync object status —
SYNC_CONDITION E GetSynciv \glc{SYNC_GPU_COMMANDS_COMPLETE} Sync object condition —
SYNC_FLAGS Z+ GetSynciv 0 Sync object flags —
— S GetObjectPtrLabel empty Debug label —

§ Hints

PERSPECTIVE_CORRECTION_HINT E GetIntegerv \glc{DONT_CARE} Perspective correction hint hint
POINT_SMOOTH_HINT E GetIntegerv \glc{DONT_CARE} Point smooth hint hint
LINE_SMOOTH_HINT E GetIntegerv \glc{DONT_CARE} Line smooth hint hint
POLYGON_SMOOTH_HINT E GetIntegerv \glc{DONT_CARE} Polygon smooth hint hint
FOG_HINT E GetIntegerv \glc{DONT_CARE} Fog hint hint
GENERATE_MIPMAP_HINT E GetIntegerv \glc{DONT_CARE} Mipmap generation hint hint
TEXTURE_COMPRESSION_HINT E GetIntegerv \glc{DONT_CARE} Texture compression quality hint hint
FRAGMENT_SHADER_DERIVATIVE_HINT E GetIntegerv \glc{DONT_CARE} Fragment shader derivative accuracy hint hint

§ Compute Dispatch State

DISPATCH_INDIRECT_BUFFER_BINDING Z+ GetIntegerv 0 Indirect dispatch buffer binding —

§ Implementation Dependent Values

CONTEXT_RELEASE_BEHAVIOR E GetIntegerv See sec.~\ref{query:context} Flush behavior when context is released —
MAX_CLIP_DISTANCES Z+ GetIntegerv 8 Max. no. of user clipping planes —
MAX_CULL_DISTANCES Z+ GetIntegerv 8 Max. no. of user culling planes —
MAX_COMBINED_CLIP_AND_CULL_DISTANCES Z+ GetIntegerv 8 Max. combined no. of user clipping —
SUBPIXEL_BITS Z+ GetIntegerv 4 No. of bits of subpixel precision in screen $x_w$ and $y_w$ —
MAX_ELEMENT_INDEX Z+ GetInteger64v $2^{32} - 1$ Max. element index —
PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED B GetBooleanv — Primitive restart support for \glc{PATCHES} —
MAX_3D_TEXTURE_SIZE Z+ GetIntegerv 2048 Max. 3D texture image dimension —
MAX_TEXTURE_SIZE Z+ GetIntegerv 16384 Max. 2D/1D texture image dimension —
MAX_ARRAY_TEXTURE_LAYERS Z+ GetIntegerv 2048 Max. no. of layers for texture arrays —
MAX_TEXTURE_LOD_BIAS R+ GetFloatv 2.0 Max. absolute texture level-of-detail bias —
MAX_CUBE_MAP_TEXTURE_SIZE Z+ GetIntegerv 16384 Max. cube map texture image dimension —
MAX_RENDERBUFFER_SIZE Z+ GetIntegerv 16384 Max. width and height of renderbuffers —
MAX_TEXTURE_MAX_ANISOTROPY R GetFloatv 16.0 Limit of maximum degree of anisotropy —

§ Implementation Dependent Values (cont.)

MAX_LIGHTS Z+ GetIntegerv 8 Max. no. of lights —
MAX_COLOR_MATRIX_STACK_DEPTH Z+ GetIntegerv 2 Max. color matrix stack depth —
MAX_MODELVIEW_STACK_DEPTH Z+ GetIntegerv 32 Max. model-view stack depth —
MAX_PROJECTION_STACK_DEPTH Z+ GetIntegerv 2 Max. projection matrix stack depth —
MAX_TEXTURE_STACK_DEPTH Z+ GetIntegerv 2 Max. no. depth of texture matrix stack —
MAX_PIXEL_MAP_TABLE Z+ GetIntegerv 32 Max. size of a \func{PixelMap} translation table —
MAX_NAME_STACK_DEPTH Z+ GetIntegerv 64 Max. selection name stack depth —
MAX_LIST_NESTING Z+ GetIntegerv 64 Max. display list call nesting —
MAX_EVAL_ORDER Z+ GetIntegerv 8 Max. evaluator polynomial order —
MAX_ATTRIB_STACK_DEPTH Z+ GetIntegerv 16 Max. depth of the server attribute stack —
MAX_CLIENT_ATTRIB_STACK_DEPTH Z+ GetIntegerv 16 Max. depth of the client attribute stack —
— 3 × Z+ — 32 Max. size of a color table —
— Z+ — 32 Max. size of the histogram table —
ALIASED_POINT_SIZE_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of aliased point sizes —
MAX_CONVOLUTION_WIDTH 3 × Z+ GetConvolutionParameteriv 3 Max. width of convolution filter —
MAX_CONVOLUTION_HEIGHT 2 × Z+ GetConvolutionParameteriv 3 Max. height of convolution filter —

§ Implementation Dependent Values (cont.)

  1. † (at least $[-32768,32767]$)
MAX_VIEWPORT_DIMS 2 × Z+ GetFloatv See sec.~\ref{view:port} Max. viewport dimensions —
MAX_VIEWPORTS Z+ GetIntegerv 16 Max. no. of active viewports —
VIEWPORT_SUBPIXEL_BITS Z+ GetIntegerv 0 No. of bits of sub-pixel precision for viewport bounds —
VIEWPORT_BOUNDS_RANGE 2 × R GetFloatv † Viewport bounds range $[min,max]$ —
LAYER_PROVOKING_VERTEX E GetIntegerv See sec.~\ref{geomshad:exec} Vertex convention followed by \glv{gl_Layer} —
VIEWPORT_INDEX_PROVOKING_VERTEX E GetIntegerv See sec.~\ref{geomshad:exec} Vertex convention followed by \glv{gl_ViewportIndex} —
POINT_SIZE_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of point sprite sizes —
POINT_SIZE_GRANULARITY R+ GetFloatv — Point sprite size granularity —
ALIASED_LINE_WIDTH_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of aliased line widths —
SMOOTH_LINE_WIDTH_RANGE 2 × R+ GetFloatv 1,1 Range (lo to hi) of antialiased line widths —
SMOOTH_LINE_WIDTH_GRANULARITY R+ GetFloatv — Antialiased line width granularity —
MAX_ELEMENTS_INDICES Z+ GetIntegerv — Recommended max no. of \glr{DrawRangeElements} indices —
MAX_ELEMENTS_VERTICES Z+ GetIntegerv — Recommended max no. of \glr{DrawRangeElements} vertices —

§ Implementation Dependent Values (cont.)

  1. † The value of \enum{TEXTURE_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
MAX_VERTEX_ATTRIB_RELATIVE_OFFSET Z GetIntegerv 2047 Max. offset added to vertex buffer binding offset —
MAX_VERTEX_ATTRIB_BINDINGS Z16* GetIntegerv 16 Max. no. of vertex buffers —
MAX_VERTEX_ATTRIB_STRIDE Z GetIntegerv 2048 Max. vertex attribute stride —
NUM_COMPRESSED_TEXTURE_FORMATS Z+ GetIntegerv 18 No. of compressed texture formats —
COMPRESSED_TEXTURE_FORMATS 18* × Z+ GetIntegerv — Enumerated compressed texture formats —
MAX_TEXTURE_BUFFER_SIZE Z+ GetIntegerv 65536 No. of addressable texels for buffer textures —
MAX_RECTANGLE_TEXTURE_SIZE Z+ GetIntegerv 16384 Max. width \& height of rectangle textures —
NUM_PROGRAM_BINARY_FORMATS Z+ GetIntegerv 0 No. of program binary formats —
PROGRAM_BINARY_FORMATS 0* × Z+ GetIntegerv N/A Enumerated program binary formats —
NUM_SHADER_BINARY_FORMATS Z+ GetIntegerv 0 No. of shader binary formats —
SHADER_BINARY_FORMATS 0* × Z+ GetIntegerv — Enumerated shader binary formats —
SHADER_COMPILER B GetBooleanv \glc{TRUE} Shader compiler supported —
MIN_MAP_BUFFER_ALIGNMENT Z+ GetIntegerv 64 Min byte alignment of pointers returned by \func{Map*Buffer} —
TEXTURE_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† Min. required alignment for texture buffer offsets —

§ Implementation Dependent Version and Extension Support

MAJOR_VERSION Z+ GetIntegerv — Major version no. supported —
MINOR_VERSION Z+ GetIntegerv — Minor version no. supported —
CONTEXT_FLAGS Z+ GetIntegerv — Context full/forward-compatible flag —
CONTEXT_PROFILE_MASK Z+ GetIntegerv — Context profile mask —
EXTENSIONS S GetString — Supported extension names —
EXTENSIONS n × S GetStringi — Supported individual extension names —
NUM_EXTENSIONS Z+ GetIntegerv 0 No. of individual extension names —
RENDERER S GetString — Renderer string —
SHADING_LANGUAGE_VERSION S GetString — Latest Shading Language version supported —
SHADING_LANGUAGE_VERSION n × S GetStringi — Supported Shading Language versions —
NUM_SHADING_LANGUAGE_VERSIONS Z+ GetIntegerv 3 No. of supported Shading Language versions —
SPIR_V_EXTENSIONS n × S GetStringi — Supported SPIR-V extension names —
NUM_SPIR_V_EXTENSIONS Z+ GetIntegerv 0 No. of supported SPIR-V extension names —
VENDOR S GetString — Vendor string —
VERSION S GetString — OpenGL version supported —

§ Implementation Dependent Vertex Shader Limits

MAX_VERTEX_ATTRIBS Z+ GetIntegerv $16$ No. of active vertex attributes —
MAX_VERTEX_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for vertex shader uniform variables —
MAX_VERTEX_UNIFORM_VECTORS Z+ GetIntegerv 256 No. of vectors for vertex shader uniform variables —
MAX_VERTEX_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ Max. no. of vertex uniform buffers per program —
MAX_VERTEX_OUTPUT_COMPONENTS Z+ GetIntegerv 64 Max. no. of components of outputs written by a vertex shader —
MAX_VERTEX_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a vertex shader —
MAX_VERTEX_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter buffers accessed by a vertex shader —
MAX_VERTEX_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of atomic counters accessed by a vertex shader —
MAX_VERTEX_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a vertex shader —

§ Implementation Dependent Tessellation Shader Limits

MAX_TESS_GEN_LEVEL Z+ GetIntegerv 64 Max. level supported by tess. primitive generator —
MAX_PATCH_VERTICES Z+ GetIntegerv 32 Max. patch size —
MAX_TESS_CONTROL_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of words for tess. control shader (TCS) uniforms —
MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of tex. image units for TCS —
MAX_TESS_CONTROL_OUTPUT_COMPONENTS Z+ GetIntegerv 128 No. components for TCS per-vertex outputs —
MAX_TESS_PATCH_COMPONENTS Z+ GetIntegerv 120 No. components for TCS per-patch outputs —
MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS Z+ GetIntegerv 4096 Total no. components for TCS outputs —
MAX_TESS_CONTROL_INPUT_COMPONENTS Z+ GetIntegerv 128 No. components for TCS per-vertex inputs —
MAX_TESS_CONTROL_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ No. of supported uniform blocks for TCS —
MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter (AC) buffers accessed by a TCS —
MAX_TESS_CONTROL_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of ACs accessed by a TCS —
MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a tess. control shader —

§ Implementation Dependent Tessellation Shader Limits (cont.)

MAX_TESS_EVALUATION_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of words for tess. evaluation shader (TES) uniforms —
MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of tex. image units for TES —
MAX_TESS_EVALUATION_OUTPUT_COMPONENTS Z+ GetIntegerv 128 No. components for TES per-vertex outputs —
MAX_TESS_EVALUATION_INPUT_COMPONENTS Z+ GetIntegerv 128 No. components for TES per-vertex inputs —
MAX_TESS_EVALUATION_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ No. of supported uniform blocks for TES —
MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of AC buffers accessed by a TES —
MAX_TESS_EVALUATION_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of ACs accessed by a TES —
MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a tess. evaluation shader —

§ Implementation Dependent Geometry Shader Limits

MAX_GEOMETRY_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for geometry shader (GS) uniform variables —
MAX_GEOMETRY_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ Max. no. of GS uniform buffers per program —
MAX_GEOMETRY_INPUT_COMPONENTS Z+ GetIntegerv 64 Max. no. of components of inputs read by a GS —
MAX_GEOMETRY_OUTPUT_COMPONENTS Z+ GetIntegerv 128 Max. no. of components of outputs written by a GS —
MAX_GEOMETRY_OUTPUT_VERTICES Z+ GetIntegerv 256 Max. no. of vertices that any GS {can} emit —
MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS Z+ GetIntegerv 1024 Max. no. of total components (all vertices) of active outputs that a GS can emit —
MAX_GEOMETRY_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a GS —
MAX_GEOMETRY_SHADER_INVOCATIONS Z+ GetIntegerv 32 Max. supported GS invocation count —
MAX_VERTEX_STREAMS Z+ GetIntegerv 4 Total no. of vertex streams —
MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 0 No. of atomic counter buffers accessed by a GS —
MAX_GEOMETRY_ATOMIC_COUNTERS Z+ GetIntegerv 0 No. of atomic counters accessed by a GS —
MAX_GEOMETRY_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 0 No. of shader storage blocks accessed by a GS —

§ Implementation Dependent Fragment Shader Limits

MAX_FRAGMENT_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for fragment shader (FS) uniform variables —
MAX_FRAGMENT_UNIFORM_VECTORS Z+ GetIntegerv 256 No. of vectors for FS uniform variables —
MAX_FRAGMENT_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ Max. no. of FS uniform buffers per program —
MAX_FRAGMENT_INPUT_COMPONENTS Z+ GetIntegerv 128 Max. no. of components of inputs read by a FS —
MAX_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 No. of texture image units accessible by a FS —
MIN_PROGRAM_TEXTURE_GATHER_OFFSET Z GetIntegerv -8 Min texel offset for \glv{textureGather} —
MAX_PROGRAM_TEXTURE_GATHER_OFFSET Z+ GetIntegerv 7 Max. texel offset for \glv{textureGather} —
MAX_TEXTURE_UNITS Z+ GetIntegerv $2$ No. of fixed-function texture units —
MAX_TEXTURE_COORDS Z+ GetIntegerv $8$ No. of texture coordinate sets —
MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 No. of atomic counter buffers accessed by a FS —
MAX_FRAGMENT_ATOMIC_COUNTERS Z+ GetIntegerv 8 No. of atomic counters accessed by a FS —
MAX_FRAGMENT_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 8 No. of shader storage blocks accessed by a FS —

§ Implementation Dependent Compute Shader Limits

MAX_COMPUTE_WORK_GROUP_COUNT 3 × Z+ GetIntegeri_v 65535 Max. no. of workgroups (WG) that may be dispatched by a single dispatch command (per dimension) —
MAX_COMPUTE_WORK_GROUP_SIZE 3 × Z+ GetIntegeri_v 1024 (x, y), 64 (z) Max. local size of a compute WG (per dimension) —
MAX_COMPUTE_WORK_GROUP_INVOCATIONS Z+ GetIntegerv 1024 Max. total compute shader (CS) invocations in a single local WG —
MAX_COMPUTE_UNIFORM_BLOCKS Z+ GetIntegerv $14*$ Max. no. of uniform blocks per compute program —
MAX_COMPUTE_TEXTURE_IMAGE_UNITS Z+ GetIntegerv 16 Max. no. of texture image units accessible by a CS —
MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 8 No. of atomic counter buffers accessed by a CS —
MAX_COMPUTE_ATOMIC_COUNTERS Z+ GetIntegerv 8 No. of atomic counters accessed by a CS —
MAX_COMPUTE_SHARED_MEMORY_SIZE Z+ GetIntegerv 32768 Max. total storage size of all variables declared as {\em shared} in all CSs linked into a single program object —
MAX_COMPUTE_UNIFORM_COMPONENTS Z+ GetIntegerv 1024 No. of components for CS uniform variables —
MAX_COMPUTE_IMAGE_UNIFORMS Z+ GetIntegerv 8 No. of image variables in compute shaders —
MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS Z+ GetIntegerv * No. of words for compute shader uniform variables in all uniform blocks, including the default —
MAX_COMPUTE_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 8 No. of shader storage blocks accessed by a compute shader —

§ Implementation Dependent Aggregate Shader Limits

  1. † The value of \enum{UNIFORM_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
MIN_PROGRAM_TEXEL_OFFSET Z GetIntegerv -8 Min texel offset allowed in lookup —
MAX_PROGRAM_TEXEL_OFFSET Z GetIntegerv 7 Max. texel offset allowed in lookup —
MAX_UNIFORM_BUFFER_BINDINGS Z+ GetIntegerv 84 Max. no. of uniform buffer binding points on the context —
MAX_UNIFORM_BLOCK_SIZE Z+ GetIntegerv 16384 Max. size in basic machine units of a uniform block —
UNIFORM_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† Min. required alignment for uniform buffer sizes and offsets —
MAX_COMBINED_UNIFORM_BLOCKS Z+ GetIntegerv $70*$ Max. no. of uniform buffers per program —
MAX_VARYING_COMPONENTS Z+ GetIntegerv 60 No. of components for output variables —
MAX_VARYING_VECTORS Z+ GetIntegerv 15 No. of vectors for output variables —
MAX_COMBINED_TEXTURE_IMAGE_UNITS Z+ GetIntegerv $80$ Total no. of texture units accessible by the GL —
MAX_SUBROUTINES Z+ GetIntegerv 256 Max. no. of subroutines per shader stage —
MAX_SUBROUTINE_UNIFORM_LOCATIONS Z+ GetIntegerv 1024 Max. no. of subroutine uniform locations per stage —
MAX_UNIFORM_LOCATIONS Z+ GetIntegerv 1024 Max. no. of user-assignable uniform locations —

§ Implementation Dependent Aggregate Shader Limits (cont.)

  1. † The value of \enum{SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT} is the maximum allowed, not the minimum.
MAX_ATOMIC_COUNTER_BUFFER_BINDINGS Z+ GetIntegerv 1 Max. no. of atomic counter buffer bindings —
MAX_ATOMIC_COUNTER_BUFFER_SIZE Z+ GetIntegerv 32 Max. size in basic machine units of an atomic counter buffer —
MAX_COMBINED_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 Max. no. of atomic counter buffers per program —
MAX_COMBINED_ATOMIC_COUNTERS Z+ GetIntegerv 8 Max. no. of atomic counter uniforms per program —
MAX_SHADER_STORAGE_BUFFER_BINDINGS Z+ GetIntegerv 8 Max. no. of shader storage buffer bindings in the context —
MAX_SHADER_STORAGE_BLOCK_SIZE Z+ GetInteger64v $2^{27}$ Max. size in basic machine units of a shader storage block —
MAX_COMBINED_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 8 No. of shader storage blocks accessed by a program —
SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT Z+ GetIntegerv 256† Min. required alignment for shader storage buffer binding offsets —

§ Implementation Dependent Aggregate Shader Limits (cont.)

MAX_IMAGE_UNITS Z+ GetIntegerv $8$ No. of units for image load/store/atom —
MAX_COMBINED_SHADER_OUTPUT_RESOURCES Z+ GetIntegerv 8 Limit on active image units + {shader storage blocks +} fragment outputs —
MAX_IMAGE_SAMPLES Z+ GetIntegerv 0 Max. allowed samples for a texture level bound to an image unit —
MAX_VERTEX_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in vertex shaders —
MAX_TESS_CONTROL_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in tess. control shaders —
MAX_TESS_EVALUATION_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in tess. eval. shaders —
MAX_GEOMETRY_IMAGE_UNIFORMS Z+ GetIntegerv 0 No. of image variables in geometry shaders —
MAX_FRAGMENT_IMAGE_UNIFORMS Z+ GetIntegerv 8 No. of image variables in fragment shaders —
MAX_COMBINED_IMAGE_UNIFORMS Z+ GetIntegerv 8 No. of image variables in all shaders —

§ Implementation Dependent Aggregate Shader Limits (cont.)

  1. † The minimum value for each stage is \enum{MAX_{\em{stage}}_UNIFORM_BLOCKS} $\times$ \enum{MAX_UNIFORM_BLOCK_SIZE / 4} + \enum{MAX_{\em{stage}}_UNIFORM_COMPONENTS}
MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for vertex shader uniform variables in all uniform blocks (including default) —
MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for geometry shader uniform variables in all uniform blocks (including default) —
MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for TCS uniform variables in all uniform blocks (including default) —
MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for TES uniform variables in all uniform blocks (including default) —
MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS Z+ GetIntegerv † No. of words for fragment shader uniform variables in all uniform blocks (including default) —

§ Debug Output State

  1. † The initial value of \glc{DEBUG_OUTPUT} is \glc{TRUE} in a debug context and \glc{FALSE} in a non-debug context.
DEBUG_CALLBACK_FUNCTION Y GetPointerv \glc{NULL} The current debug output callback function pointer —
DEBUG_CALLBACK_USER_PARAM Y GetPointerv \glc{NULL} The current debug output callback user parameter —
DEBUG_LOGGED_MESSAGES Z+ GetIntegerv 0 The no. of messages currently in the debug message log —
DEBUG_NEXT_LOGGED_MESSAGE_LENGTH Z+ GetIntegerv 0 The string length of the oldest debug message in the debug message log —
DEBUG_OUTPUT_SYNCHRONOUS B IsEnabled \glc{FALSE} The enabled state for synchronous debug message callbacks —
DEBUG_GROUP_STACK_DEPTH Z+ GetIntegerv 1 Debug group stack pointer —
DEBUG_OUTPUT B IsEnabled Depends on the context† The enabled state for debug output functionality —

§ Implementation Dependent Debug Output State

MAX_DEBUG_MESSAGE_LENGTH Z+ GetIntegerv 1 The max length of a debug message string, including its null terminator —
MAX_DEBUG_LOGGED_MESSAGES Z+ GetIntegerv 1 The max no. of messages stored in the debug message log —
MAX_DEBUG_GROUP_STACK_DEPTH Z+ GetIntegerv 64 Max. group stack depth —
MAX_LABEL_LENGTH Z+ GetIntegerv 256 Max. length of a label string —

§ Implementation Dependent Values (cont.)

  1. † These queries return the maximum no. of samples for all internal formats required to support multisampled rendering.
MAX_FRAMEBUFFER_WIDTH Z+ GetIntegerv 16384 Max. width for framebuffer object —
MAX_FRAMEBUFFER_HEIGHT Z+ GetIntegerv 16384 Max. height for framebuffer object —
MAX_FRAMEBUFFER_LAYERS Z+ GetIntegerv 2048 Max. layer count for layered framebuffer object —
MAX_FRAMEBUFFER_SAMPLES Z+ GetIntegerv 4 Max. sample count for framebuffer object —
MAX_SAMPLE_MASK_WORDS Z+ GetIntegerv 1 Max. no. of sample mask words —
MAX_SAMPLES Z+ GetIntegerv 4 Max. no. of samples supported for multisampling† —
MAX_COLOR_TEXTURE_SAMPLES Z+ GetIntegerv 1 Max. no. of samples supported for all color formats in a multisample texture† —
MAX_DEPTH_TEXTURE_SAMPLES Z+ GetIntegerv 1 Max. no. of samples supported for all depth/stencil formats in a multisample texture† —
MAX_INTEGER_SAMPLES Z+ GetIntegerv 1 Max. no. of samples supported for all integer format multisample buffers† —
QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION B GetBooleanv — Whether quads follow provoking vertex convention —
QUERY_COUNTER_BITS n × Z+ GetQueryiv See sec.~\ref{state:occquery} Asynchronous query counter bits —
MAX_SERVER_WAIT_TIMEOUT Z+ GetInteger64v 0 Max. \glr{WaitSync} timeout interval —

§ Implementation Dependent Values (cont.)

  1. † “ULP” means “Units in the Last Place” or “Unit of Least Precision”.
MIN_FRAGMENT_INTERPOLATION_OFFSET R GetFloatv -0.5 Furthest negative offset for \glv{interpolateAtOffset} —
MAX_FRAGMENT_INTERPOLATION_OFFSET R GetFloatv +0.5 - 1 ULP† Furthest positive offset for \glv{interpolateAtOffset} —
FRAGMENT_INTERPOLATION_OFFSET_BITS Z+ GetIntegerv 4 Subpixel bits for \glv{interpolateAtOffset} —
MAX_DRAW_BUFFERS Z+ GetIntegerv $8$ Max. no. of active draw buffers —
MAX_DUAL_SOURCE_DRAW_BUFFERS Z+ GetIntegerv 1 Max. no. of active draw buffers when using dual-source blending —
MAX_COLOR_ATTACHMENTS Z+ GetIntegerv 8 Max. no. of FBO attachment points for color buffers —

§ Internal Format Dependent Values

  1. † See section~\ref{gets:internal}
SAMPLES 0* × Z+ GetInternalformativ † Supported sample counts —
NUM_SAMPLE_COUNTS Z+ GetInternalformativ 1 No. of supported sample counts —

§ Implementation Dependent Transform Feedback Limits

MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS Z+ GetIntegerv 64 Max. no. of components to write to a single buffer in interleaved mode —
MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS Z+ GetIntegerv 4 Max. no. of separate attributes or {outputs} that can be captured in transform feedback —
MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS Z+ GetIntegerv 4 Max. no. of components per attribute or output in separate mode —
MAX_TRANSFORM_FEEDBACK_BUFFERS Z+ GetIntegerv 4 Max. no. of buffer objs to write with transform feedback —

§ Framebuffer Dependent Values

  1. † Unlike most framebuffer-dependent state, which is queried from the currently bound draw framebuffer, this state is queried from the currently bound read framebuffer. $n$ is the value of \glc{SAMPLES}.
DOUBLEBUFFER B GetBooleanv — True if front \& back buffers exist —
STEREO B GetBooleanv — True if left \& right buffers exist —
SAMPLE_BUFFERS Z2 GetIntegerv 0 No. of multisample buffers —
SAMPLES Z+ GetIntegerv 0 Coverage mask size —
SAMPLE_POSITION n × 2 × R[0,1] GetMultisamplefv — Explicit sample positions —
IMPLEMENTATION_COLOR_READ_FORMAT E GetIntegerv † Implementation preferred pixel {\em format} —
IMPLEMENTATION_COLOR_READ_TYPE E GetIntegerv † Implementation preferred pixel {\em type} —

§ Framebuffer Dependent Values (cont.)

AUX_BUFFERS Z+ GetIntegerv 0 No. of auxiliary buffers —
RGBA_MODE B GetBooleanv — True if color buffers store RGBA —
INDEX_MODE B GetBooleanv — True if color buffers store indexes —
RED_BITS Z+ GetIntegerv — No. of bits in RED color buffer component —
GREEN_BITS Z+ GetIntegerv — No. of bits in GREEN color buffer component —
BLUE_BITS Z+ GetIntegerv — No. of bits in BLUE color buffer component —
ALPHA_BITS Z+ GetIntegerv — No. of bits in ALPHA color buffer component —
INDEX_BITS Z+ GetIntegerv — No. of bits in INDEX color buffer component —
DEPTH_BITS Z+ GetIntegerv — No. of depth buffer planes —
STENCIL_BITS Z+ GetIntegerv — No. of stencil planes —
ACCUM_RED_BITS Z+ GetIntegerv — No. of bits in RED accumulation buffer component —
ACCUM_GREEN_BITS Z+ GetIntegerv — No. of bits in GREEN accumulation buffer component —
ACCUM_BLUE_BITS Z+ GetIntegerv — No. of bits in BLUE accumulation buffer component —
ACCUM_ALPHA_BITS Z+ GetIntegerv — No. of bits in ALPHA accumulation buffer component —

§ Miscellaneous

LIST_BASE Z+ GetIntegerv 0 Setting of \func{ListBase} list
LIST_INDEX Z+ GetIntegerv 0 No. of display list under construction; 0 if none —
LIST_MODE Z+ GetIntegerv 0 Mode of display list under construction; undefined if none —
— n × S GetObjectLabel empty Debug label (per display list) —
— 16* × A — empty Server attribute stack —
ATTRIB_STACK_DEPTH Z+ GetIntegerv 0 Server attribute stack pointer —
— 16* × A — empty Client attribute stack —
CLIENT_ATTRIB_STACK_DEPTH Z+ GetIntegerv 0 Client attribute stack pointer —
NAME_STACK_DEPTH Z+ GetIntegerv 0 Name stack depth —
RENDER_MODE E GetIntegerv \glc{RENDER} \func{RenderMode} setting —
SELECTION_BUFFER_POINTER Y GetPointerv 0 Selection buffer pointer select
SELECTION_BUFFER_SIZE Z+ GetIntegerv 0 Selection buffer size select
FEEDBACK_BUFFER_POINTER Y GetPointerv 0 Feedback buffer pointer feedback
FEEDBACK_BUFFER_SIZE Z+ GetIntegerv 0 Feedback buffer size feedback
FEEDBACK_BUFFER_TYPE E GetIntegerv \glc{2D} Feedback type feedback
— n × E GetError 0 Current error code(s) —
— n × B — \glc{FALSE} True if there is a corresponding error —
CURRENT_QUERY n × Z+ GetQueryiv 0 Active query object names —
QUERY_BUFFER_BINDING Z+ GetIntegeriv 0 Query result buffer binding —
COPY_READ_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to copy buffer “read” bind point —
COPY_WRITE_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to copy buffer “write” bind point —
RESET_NOTIFICATION_STRATEGY Z2 GetIntegerv See sec.~\ref{fund:reset} Reset notification behavior —
TEXTURE_BUFFER_BINDING Z+ GetIntegerv 0 Buffer object bound to generic texture buffer bind point texture
TEXTURE_CUBE_MAP_SEAMLESS B IsEnabled \glc{FALSE} Seamless cube map filtering enable —

This page is not produced by the Khronos Group, and cannot substitute for the Khronos Group specifications. This page is an independently created composite and reinterpretation that may contain inaccuracies; you rely on it at your own risk. Always consult the Khronos Group specifications. OpenGL® and OpenGL ES™ are trademarks used under license by the Khronos Group.

OpenGL ES 1.1 specification acknowledgments:
Copyright 2002-2008 The Khronos Group Inc.
Copyright 1992-2002 Silicon Graphics, Inc.
SPDX-License-Identifier: CC-BY-4.0
OpenGL ES 3.2 specification acknowledgments:
Copyright 2008-2022 The Khronos Group Inc.
Copyright 1992-2005 Silicon Graphics, Inc.
SPDX-License-Identifier: CC-BY-4.0
OpenGL 4.6 specification acknowledgments:
Copyright 2008-2022 The Khronos Group Inc
Copyright 1992-2005 Silicon Graphics, Inc.
SPDX-License-Identifier: CC-BY-4.0

OpenGL-state-table-parser © 2023 hikari_no_yume. The content of this page may be redistributed under CC BY 4.0.