blob: a61f0308d877527547d4c63b82a9027ef46f2d9f [file] [log] [blame]
This is the registry of GLX opcodes, error codes, and event codes. It is
very rarely modified since there is almost no interest in supporting GLX
with modern OpenGL features, and the work of extending the XML schema to
express it is not worthwhile.
When new GLX protocol is needed for extension specifications, allocate it
here and reflect it in the extension specification document as well as, if
appropriate, glx.xml.
Reserved opcode ranges assigned to vendors, and in some cases, opcodes
actually assigned within that range are tracked here. Not all opcodes used
by vendors are known.
GLX Opcodes (8 bits)
====================
1-15 GLX 1.0
16 Vendor Private
17 Vendor Private with Reply
18-20 GLX 1.1
21-32 GLX 1.3
33 glXSetClientInfoARB (GLX_ARB_create_context)
34 glXCreateContextAttribsARB (GLX_ARB_create_context)
35 glXSetClientInfo2ARB (GLX_ARB_create_context)
GLX Vendor Private / Vendor Private with Reply opcodes (32-bits)
(first 4 bytes past standard X header)
================================================================
0 255 EXT (various - contact SGI)
256 271 HP (originally Compaq)
(272-511 unused)
512 575 E&S
(576-1023 unused)
1024 1269 EXT (various - contact SGI)
1024 GLX_EXT_import_context
1270 1275 NV_register_combiners
1276 1280 NV_fence
1281 1292 NVIDIA (use TBD; was intended for NV_vertex_program)
1293 1308 NV_vertex_program / ARB_vertex_program / ARB_fragment_program
1309 NVIDIA (use TBD)
1310 1311 NV_fragment_program
1312 NV_fence
1313 1318 GLX_NV_video_output
1319 1320 NV_vertex_program
1321 1326 NVIDIA (use TBD)
1327 NV_register_combiners2
1328 1329 EXT_timer_query
1330 1331 GLX_EXT_texture_from_pixmap
1332 1339 NV_present_video
1340 NVIDIA (use TBD)
1341 GLX_NV_delay_before_swap
1342 1359 NVIDIA (use TBD)
1360 GLX_NV_copy_image
1361 1364 NVIDIA (use TBD)
1365 1368 NV_gpu_program4
1369 1386 NVIDIA (use TBD)
1387 1388 GLX_NV_copy_buffer
1389 1399 NVIDIA (use TBD)
1400 1415 NV_video_capture
1416 GLX_EXT_swap_control
1417 1420 NVIDIA (use TBD)
1421 OES_single_precision (Khronos OpenGL ES 1.0)
1422 1428 EXT_framebuffer_object
(1429-2047 unused)
2048 2064 SUN
3000 3999 IBM
4096 5151 SGI (4106-5151 unused)
4096 SGIS_detail_texture
4097 SGIS_sharpen_texture
4098 4100 SGI_color_table
4101 SGIS_texture_filter4
4102 4104 SGIX_instruments
4105 SGIX_flush_raster
5152 5184 Mesa (unknown use)
8192 8207 HP
16384 16399 ADD
65536 66575 SGI (various GLX extensions)
65536 GLX_SGI_swap_control
65537 GLX_SGI_make_current_read
65538 65539 GLX_SGIX_video_source
65540 65542 GLX_SGIX_fbconfig
65543 65546 GLX_SGIX_pbuffer
65547 GLX_SGIX_swap_group
65548 65549 GLX_SGIX_swap_barrier
65550 65553 GLX_SGIX_hyperpipe_group
65554 GLX_SGIX_query_board_num (internal, for shm)
OpenGL Single Opcodes (8 Bits)
===============================
167-up Reserved
0 146 OpenGL 1.0/1.1 core
147 159 OpenGL 1.2 core
160 160 ARB_texture_compression
161 166 ARB_occlusion_query
167 178 ARB_shader_objects
179 181 ARB_vertex_shader
182 183 EXT_gpu_shader4
184 185 NV_vertex_program4
186 194 ARB_vertex_buffer_object
195 202 OpenGL 2.0 core
203 204 EXT_texture_integer
205 205 ARB_map_buffer_range
206 209 ARB_vertex_array_object
210 212 EXT_draw_buffers2
213 214 OpenGL 3.0 core
215 220 ARB_uniform_buffer_object
221 ARB_copy_buffer
OpenGL Rendering Opcodes (16 Bits)
==================================
0-1007 Reserved to ARB (231-1007 unused)
0 191 OpenGL 1.0 core (140 deprecated?)
192 194 OpenGL 1.1 core
195 196 OpenGL 1.2 core
197 213 ARB_multitexture
214 219 ARB_texture_compression
220 228 ARB_vertex_blend
229 ARB_multisample
230 ARB_window_pos
231 232 ARB_occlusion_query
233 ARB_draw_buffers
234 ARB_color_buffer_float
235 237 ARB_framebuffer_object
238 264 ARB_shader_object
265 ARB_vertex_shader
266 268 ARB_geometry_shader4
269 277 EXT_gpu_shader4
278 289 NV_vertex_program4
290 301 ARB_vertex_buffer_object
302 304 ARB_stencil_two_side
305 310 OpenGL 2.1 core
311 345 ARB_pixel_buffer_object
346 347 EXT_texture_integer
348 349 NV_conditional_render
350 351 ARB_vertex_array_object
352 354 EXT_draw_buffers2
355 363 OpenGL 3.0 core
364 365 NV_primitive_restart
366 ARB_uniform_buffer_object
367 ARB_texture_buffer_object
1008-1023 Reserved to IBM (unknown usage)
1024-1039 Reserved to HP (originally Compaq) (unknown usage)
1040-2047 Unused
2048-3071 Reserved to SGI (2083-3071 unused)
2048 2049 SGIS_multisample
2050 SGIX_tag_sample_buffer
2051 SGIS_detail_texture
2052 SGIS_sharpen_texture
2053 2056 SGI_color_table
2057 2058 SGIS_texture4D
2059 SGIX_pixel_texture
2060 2063 SGIX_sprite
2064 SGIS_texture_filter4
2065 2066 EXT_point_parameters/SGIS_point_parameters
2067 SGIS_fog_function
2068 unused?
2069 2070 SGIX_instruments
2071 SGIX_reference_plane
2072 SGIX_framezoom
2073 2076 unused?
2077 SGIX_instruments
2078 2081 SGIX_list_priority
2082 SGIS_texture_color_mask
3072-4095 Reserved to ARB (unused)
4096-5151 Reserved to EXT (4460-5151 unused)
4096 EXT_blend_color/1.2
4097 EXT_blend_minmax/1.2
4098 EXT_polygon_offset
4099 4100 EXT_subtexture
4101 4109 EXT_convolution/1.2
4110 4113 EXT_histogram/1.2
4114 EXT_texture3D/1.2
4115 EXT_subtexture/1.2
4116 EXT_vertex_array
4117 4118 EXT_texture_object/1.1
4119 4123 EXT_copy_texture/1.1
4124 4125 EXT_fog_coord
4126 4133 EXT_secondary_color
4134 EXT_blend_func_separate
4135 EXT_vertex_weighting
4136 4142 NV_register_combiners
4143 4144 NV_fence (4144 retired, used to be for FinishFence)
4145 4179 NVIDIA (use TBD; was intended for NV_vertex_program)
4180 4214 NV_vertex_program
4215 4217 ARB_vertex_program
4218 4219 NV_fragment_program
4220 EXT_stencil_two_side
4221 4222 NV_point_sprite
4223 EXT_stencil_clear_tag
4225 EXT_polygon_offset_clamp
4228 EXT_blend_equation_separate
4229 EXT_depth_bounds_test
4230 4239 ARB_vertex_program
4240 4264 NV_half_float
4265 4280 NVIDIA (use TBD)
4281 4282 EXT_gpu_program_parameters
4283 4285 NV_depth_buffer_float
4286 4290 NVIDIA (use TBD)
4291 NV_copy_image
4292 4293 EXT_texture_integer
4294 4307 NVIDIA (use TBD)
4308 4312 OES_single_precision (Khronos OpenGL ES 1.0)
4313 4315 SUN (use TBD)
4316 4325 EXT_framebuffer_object
4326 4329 ARB_matrix_palette
4330 EXT_framebuffer_blit
4331 EXT_framebuffer_multisample
4332 4347 NVIDIA (use TBD, bug 6720)
4348 NV_texture_barrier
4349 4459 NVIDIA (use TBD, bug 6720)
8192-8207 Reserved to HP (unknown usage)
16384-16415 Reserved to SUN (unknown usage)
24576-24607 Reserved to ADD (unknown usage)
GLX Enumerateds (32 Bits)
=========================
0x0-0xFF Reserved to EXT (visual attribute names)
0x1 0x11 GLX 1.0 (attribute names)
0x12 0x1F unused?
0x20 GLX_EXT_visual_rating (attribute names)
0x21 unused?
0x22 0x28 GLX_EXT_visual_info (attribute names)
0x1F00-0x1F02 Reserved to ARB (shared with WGL)
0x1F00 0x1F02 GLX_AMD_gpu_association
0x2070-0x209F Reserved to ARB (shared with WGL)
0x2090 0x2094 GLX_ARB_create_context
0x2095 GL_ARB_vertex_buffer_object
0x2097 0x2098 GLX_ARB_context_flush_control
0x20A0-0x219F Reserved to NVIDIA (shared with WGL)
0x20B0 GLX_NV_float_buffer
0x20B1 GLX_EXT_fbconfig_packed_float
0x20B2 GLX_ARB_framebuffer_sRGB (nee EXT)
0x20B3 GLX_NV_multisample_coverage
0x20B9 GLX_ARB_fbconfig_float
0x20C3 0x20CC GLX_NV_video_out
0x20CD 0x20CF GLX_NV_video_capture
0x20D0 0x20EB GLX_EXT_texture_from_pixmap
0x20F0 GLX_NV_present_video
0x20F1 0x20F2 GLX_EXT_swap_control
0x20F3 GLX_EXT_swap_control_tear
0x20F4 GLX_EXT_buffer_age
0x20F5 GLX_EXT_stereo_tree
0x20F6 GLX_EXT_libglvnd
0x20F7 GLX_NV_robustness_video_memory_purge
0x21A0-0x21AF Reserved to AMD (shared with WGL)
0x21A2 0x21A8 GLX_AMD_gpu_association
0x31B3 Reserved to ARB (shared with WGL)
0x31B3 GLX_ARB_create_context_no_error
0x8000-0x800F Reserved to EXT (0x800E-0x800F unused)
0x8000 0x8009 GLX_EXT_visual_info
0x800A 0x800C GLX_EXT_import_context
0x800D GLX_EXT_visual_rating
0x8010-0x803F Reserved to SGI (0x8029-0x803F unused)
0x8010 0x8015 GLX_SGIX_fbconfig
0x8016 0x8023 GLX_SGIX_pbuffer
0x8024 GLX_SGIX_dm_buffer
0x8025 GLX_SGIS_blended_overlay
0x8026 0x8027 GLX_SGIS_shared_multisample
0x8028 GLX_SGIX_visual_select_group
0x8030 GLX_SGIX_hyperpipe
0x8040-0x804F Reserved to OpenGL ARB
0x8040 0x8041 GLX 1.3
0x8050-0x805F Reserved to 3Dfx
0x8050 0x8051 GLX_3DFX_multisample
0x8060-0x806F Reserved to OpenML SIG
0x8060 0x8063 GLX_OML_swap_method
0x8070-0x816F Reserved to NVIDIA
0x8170-0x817F Reserved to SUN
0x8180-0x818F Reserved to Intel (0x818F unused)
0x8180 0x8182 GLX_INTEL_swap_event
0x8183 0x818E GLX_MESA_query_renderer
0x8250-0x826F Reserved to ARB (Shared with GL and WGL)
0x8252 GLX_ARB_create_context_robustness
0x8256 GLX_ARB_create_context_robustness
0x8261 GLX_ARB_create_context_robustness
0x9126 GLX_ARB_create_context_profile (shared with WGL)
100000-100011 Reserved to SGI (100002-100011 unused)
100000 100001 GLX_SGIS_multisample/GLX_ARB_multisample
GLX Error Codes
===============
(Extension reservations for vendor extensions should start sufficiently
high so they don't interfere with GLX core and GLX ARB extensions.)
0 GLXBadContext OpenGL ARB (GLX core)
1 GLXBadContextState OpenGL ARB (GLX core)
2 GLXBadDrawable OpenGL ARB (GLX core)
3 GLXBadPixmap OpenGL ARB (GLX core)
4 GLXBadContextTag OpenGL ARB (GLX core)
5 GLXBadCurrentWindow OpenGL ARB (GLX core)
6 GLXBadRenderRequest OpenGL ARB (GLX core)
7 GLXBadLargeRequest OpenGL ARB (GLX core)
8 GLXUnsupportedPrivateRequest OpenGL ARB (GLX core)
9 GLXBadFBConfig OpenGL ARB (GLX core)
10 GLXBadPbuffer OpenGL ARB (GLX core)
11 GLXBadCurrentDrawable OpenGL ARB (GLX core)
12 GLXBadWindow OpenGL ARB (GLX core)
13 GLXBadProfileARB OpenGL ARB (GLX_ARB_create_context)
GLX Event Masks
===============
0x08000000 GLX 1.3 / SGIX_pbuffer
0x04000000 Intel (INTEL_swap_event)
GLX Event Codes
===============
(The X.org/Mesa GLX implementation derived from the SGI Sample
Implementation has __GLX_NUMBER_EVENTS == 17, suggesting that vendor
events should be allocated downwards from the first free value <= 16
(14), and core GLX events allocated upwards).
0 OpenGL ARB (GLX_PbufferClobber in GLX 1.3)
15 Intel (GLX_BufferSwapINTEL)
16 SGI (GLX_PbufferClobberSGIX)
64 SGI
GLX protocol encoding for GL >= 2.0
===================================
(This section - this whole file really - should eventually be incorporated
in a proper update of the GLX protocol specification.)
OpenGL 2.0
----------
DeleteShader
1 CARD8 opcode (X assigned)
1 195 GLX opcode
2 3 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 shader
IsShader
1 CARD8 opcode (X assigned)
1 196 GLX opcode
2 3 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 shader
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 0 reply length
4 BOOL32 return value
20 unused
IsProgram
1 CARD8 opcode (X assigned)
1 197 GLX opcode
2 3 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 0 reply length
4 BOOL32 return value
20 unused
GetShaderiv
1 CARD8 opcode (X assigned)
1 198 GLX opcode
2 4 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
4 CARD32 pname
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 m reply length, m = (n == 1 ? 0 : n)
4 unused
4 CARD32 n
if (n == 1) this follows:
4 CARD32 params
12 unused
otherwise this follows:
16 unused
n*4 LISTOFCARD32 params
Note that n may be 0, indicating that a GL error occurred.
GetProgramiv
1 CARD8 opcode (X assigned)
1 199 GLX opcode
2 4 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
4 CARD32 pname
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 m reply length, m = (n == 1 ? 0 : n)
4 unused
4 CARD32 n
if (n == 1) this follows:
4 CARD32 params
12 unused
otherwise this follows:
16 unused
n*4 LISTofCARD32 params
Note that n may be 0, indicating that a GL error occurred.
GetShaderInfoLog
1 CARD8 opcode (X assigned)
1 200 GLX opcode
2 4 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 shader
4 CARD32 bufSize
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 m reply length, m = (n + p) / 4
4 unused
4 CARD32 n, n = length + 1
16 unused
n LISTofBYTE infoLog
p unused, p=pad(n)
Note that n may be 0, indicating that a GL error occurred.
GetProgramInfoLog
1 CARD8 opcode (X assigned)
1 201 GLX opcode
2 4 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
4 CARD32 bufSize
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 m reply length, m = (n + p) / 4
4 unused
4 CARD32 n, n = length + 1
16 unused
n LISTofBYTE infoLog
p unused, p=pad(n)
Note that n may be 0, indicating that a GL error occurred.
DeleteProgram
1 CARD8 opcode (X assigned)
1 202 GLX opcode
2 3 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
OpenGL 2.1
----------
UniformMatrix2x3fv
2 16+4*count*2*3 rendering command length
2 305 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*2*3 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*2*2 rendering command length
4 305 rendering command opcode
UniformMatrix3x2fv
2 16+4*count*3*2 rendering command length
2 306 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*3*2 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*3*2 rendering command length
4 306 rendering command opcode
UniformMatrix2x4fv
2 16+4*count*2*4 rendering command length
2 307 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*2*4 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*2*4 rendering command length
4 307 rendering command opcode
UniformMatrix4x2fv
2 16+4*count*4*2 rendering command length
2 308 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*4*2 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*4*2 rendering command length
4 308 rendering command opcode
UniformMatrix3x4fv
2 16+4*count*3*4 rendering command length
2 309 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*3*4 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*3*4 rendering command length
4 309 rendering command opcode
UniformMatrix4x3fv
2 16+4*count*4*3 rendering command length
2 310 rendering command opcode
4 CARD32 location
4 CARD32 count
1 BOOL transpose
3 unused
4*count*4*3 LISTofFLOAT32 value
If the command is encoded in a glXRenderLarge request, the
command opcode and command length fields above are expanded to
4 bytes each:
4 20+4*count*4*3 rendering command length
4 310 rendering command opcode
OpenGL 3.0
----------
The following rendering commands are sent to the sever as part of a
glXRender request:
BindBufferRange
2 32 rendering command length
2 355 rendering command opcode
8 INT64 offset
8 INT64 size
4 ENUM target
4 CARD32 index
4 CARD32 buffer
BindBufferBase
2 16 rendering command length
2 356 rendering command opcode
4 ENUM target
4 CARD32 index
4 CARD32 buffer
BeginTransformFeedback
2 8 rendering command length
2 357 rendering command opcode
4 ENUM primitiveMode
EndTransformFeedback
2 4 rendering command length
2 358 rendering command opcode
ClearBufferfi
2 20 rendering command length
2 360 rendering command opcode
4 ENUM buffer
4 CARD32 drawbuffer
4 FLOAT32 depth
4 CARD32 stencil
ClearBufferfv
2 12+(4*n) rendering command length
2 361 rendering command opcode
4 ENUM buffer
0x1800 n=4 GL_COLOR
0x1801 n=1 GL_STENCIL
0x1802 n=1 GL_DEPTH
else n=0
4 CARD32 drawbuffer
4*n LISTofFLOAT32 value
ClearBufferiv
2 12+(4*n) rendering command length
2 362 rendering command opcode
4 ENUM buffer
0x1800 n=4 GL_COLOR
0x1801 n=1 GL_STENCIL
0x1802 n=1 GL_DEPTH
else n=0
4 CARD32 drawbuffer
4*n LISTofINT32 value
ClearBufferuiv
2 12+(4*n) rendering command length
2 363 rendering command opcode
4 ENUM buffer
0x1800 n=4 GL_COLOR
0x1801 n=1 GL_STENCIL
0x1802 n=1 GL_DEPTH
else n=0
4 CARD32 drawbuffer
4*n LISTofCARD32 value
The following rendering commands can be sent in a glXRender
or glXRenderLarge request.
TransformFeedbackVaryings
2 16+(n*4)+s+p rendering command length
2 359 rendering command opcode
4 CARD32 program
4 INT32 count
4 ENUM buffermode
n*4 LISTofINT32 lengths[n], n = count
s LISTofCHAR varyings, s = sum of all entries in the lengths
array
p unused, p = pad(s)
If the command is encoded in a glXRenderLarge request, the command
opcode and command length fields are expanded to 4 bytes each.
4 20+(n*4)+s+p rendering command length
4 359 rendering command opcode
lengths[i] is calculated as strlen(varyings[i]) + 1. The NUL terminator
is included when sending the varyings.
The following single commands are sent to the server as part of a
glXSingle request:
GetTransformFeedbackVarying
1 CARD8 opcode(X assigned)
1 213 GLX opcode
2 5 request length
4 GLX_CONTEXT_TAG context tag
4 CARD32 program
4 CARD32 index
4 CARD32 bufsize
=>
1 1 reply
1 unused
2 CARD16 sequence number
4 m reply length, m = (n == 0 ? 0 : (n + p) / 4)
4 unused
4 n-1 length
4 INT32 size
4 INT32 type
8 unused
n LISTofCHAR name, n = strlen(name)+1
p unused, p = pad(m)
GetStringi
1 CARD8 opcode (X assigned)
1 214 GLX opcode
2 4 request length
4 GLX_CONTEXT_TAG context tag
4 ENUM name
4 CARD32 index
=>
1 1 reply
1 1 unused
2 CARD16 sequence number
4 m reply length, m = (n + p) / 4
4 unused
4 CARD32 n
16 unused
n STRING8 string
p unused, p=pad(n)