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)