1This is the registry of GLX opcodes, error codes, and event codes. It is 2very rarely modified since there is almost no interest in supporting GLX 3with modern OpenGL features, and the work of extending the XML schema to 4express it is not worthwhile. 5 6When new GLX protocol is needed for extension specifications, allocate it 7here and reflect it in the extension specification document as well as, if 8appropriate, glx.xml. 9 10Reserved opcode ranges assigned to vendors, and in some cases, opcodes 11actually assigned within that range are tracked here. Not all opcodes used 12by vendors are known. 13 14GLX Opcodes (8 bits) 15==================== 16 1-15 GLX 1.0 17 16 Vendor Private 18 17 Vendor Private with Reply 19 18-20 GLX 1.1 20 21-32 GLX 1.3 21 33 glXSetClientInfoARB (GLX_ARB_create_context) 22 34 glXCreateContextAttribsARB (GLX_ARB_create_context) 23 35 glXSetClientInfo2ARB (GLX_ARB_create_context) 24 25GLX Vendor Private / Vendor Private with Reply opcodes (32-bits) 26 (first 4 bytes past standard X header) 27================================================================ 28 29 0 255 EXT (various - contact SGI) 30 256 271 HP (originally Compaq) 31 (272-511 unused) 32 512 575 E&S 33 (576-1023 unused) 34 1024 1269 EXT (various - contact SGI) 35 1024 GLX_EXT_import_context 36 1270 1275 NV_register_combiners 37 1276 1280 NV_fence 38 1281 1292 NVIDIA (use TBD; was intended for NV_vertex_program) 39 1293 1308 NV_vertex_program / ARB_vertex_program / ARB_fragment_program 40 1309 NVIDIA (use TBD) 41 1310 1311 NV_fragment_program 42 1312 NV_fence 43 1313 1318 GLX_NV_video_output 44 1319 1320 NV_vertex_program 45 1321 1326 NVIDIA (use TBD) 46 1327 NV_register_combiners2 47 1328 1329 EXT_timer_query 48 1330 1331 GLX_EXT_texture_from_pixmap 49 1332 1339 NV_present_video 50 1340 NVIDIA (use TBD) 51 1341 GLX_NV_delay_before_swap 52 1342 1359 NVIDIA (use TBD) 53 1360 GLX_NV_copy_image 54 1361 1364 NVIDIA (use TBD) 55 1365 1368 NV_gpu_program4 56 1369 1386 NVIDIA (use TBD) 57 1387 1388 GLX_NV_copy_buffer 58 1389 1399 NVIDIA (use TBD) 59 1400 1415 NV_video_capture 60 1416 GLX_EXT_swap_control 61 1417 1420 NVIDIA (use TBD) 62 1421 OES_single_precision (Khronos OpenGL ES 1.0) 63 1422 1428 EXT_framebuffer_object 64 (1429-2047 unused) 65 2048 2064 SUN 66 3000 3999 IBM 67 4096 5151 SGI (4106-5151 unused) 68 4096 SGIS_detail_texture 69 4097 SGIS_sharpen_texture 70 4098 4100 SGI_color_table 71 4101 SGIS_texture_filter4 72 4102 4104 SGIX_instruments 73 4105 SGIX_flush_raster 74 5152 5184 Mesa (unknown use) 75 8192 8207 HP 76 16384 16399 ADD 77 65536 66575 SGI (various GLX extensions) 78 65536 GLX_SGI_swap_control 79 65537 GLX_SGI_make_current_read 80 65538 65539 GLX_SGIX_video_source 81 65540 65542 GLX_SGIX_fbconfig 82 65543 65546 GLX_SGIX_pbuffer 83 65547 GLX_SGIX_swap_group 84 65548 65549 GLX_SGIX_swap_barrier 85 65550 65553 GLX_SGIX_hyperpipe_group 86 65554 GLX_SGIX_query_board_num (internal, for shm) 87 88OpenGL Single Opcodes (8 Bits) 89=============================== 90 91 167-up Reserved 92 0 146 OpenGL 1.0/1.1 core 93 147 159 OpenGL 1.2 core 94 160 160 ARB_texture_compression 95 161 166 ARB_occlusion_query 96 167 178 ARB_shader_objects 97 179 181 ARB_vertex_shader 98 182 183 EXT_gpu_shader4 99 184 185 NV_vertex_program4 100 186 194 ARB_vertex_buffer_object 101 195 202 OpenGL 2.0 core 102 203 204 EXT_texture_integer 103 205 205 ARB_map_buffer_range 104 206 209 ARB_vertex_array_object 105 210 212 EXT_draw_buffers2 106 213 214 OpenGL 3.0 core 107 215 220 ARB_uniform_buffer_object 108 221 ARB_copy_buffer 109 110OpenGL Rendering Opcodes (16 Bits) 111================================== 112 113 0-1007 Reserved to ARB (231-1007 unused) 114 0 191 OpenGL 1.0 core (140 deprecated?) 115 192 194 OpenGL 1.1 core 116 195 196 OpenGL 1.2 core 117 197 213 ARB_multitexture 118 214 219 ARB_texture_compression 119 220 228 ARB_vertex_blend 120 229 ARB_multisample 121 230 ARB_window_pos 122 231 232 ARB_occlusion_query 123 233 ARB_draw_buffers 124 234 ARB_color_buffer_float 125 235 237 ARB_framebuffer_object 126 238 264 ARB_shader_object 127 265 ARB_vertex_shader 128 266 268 ARB_geometry_shader4 129 269 277 EXT_gpu_shader4 130 278 289 NV_vertex_program4 131 290 301 ARB_vertex_buffer_object 132 302 304 ARB_stencil_two_side 133 305 310 OpenGL 2.1 core 134 311 345 ARB_pixel_buffer_object 135 346 347 EXT_texture_integer 136 348 349 NV_conditional_render 137 350 351 ARB_vertex_array_object 138 352 354 EXT_draw_buffers2 139 355 363 OpenGL 3.0 core 140 364 365 NV_primitive_restart 141 366 ARB_uniform_buffer_object 142 367 ARB_texture_buffer_object 143 1008-1023 Reserved to IBM (unknown usage) 144 1024-1039 Reserved to HP (originally Compaq) (unknown usage) 145 1040-2047 Unused 146 2048-3071 Reserved to SGI (2083-3071 unused) 147 2048 2049 SGIS_multisample 148 2050 SGIX_tag_sample_buffer 149 2051 SGIS_detail_texture 150 2052 SGIS_sharpen_texture 151 2053 2056 SGI_color_table 152 2057 2058 SGIS_texture4D 153 2059 SGIX_pixel_texture 154 2060 2063 SGIX_sprite 155 2064 SGIS_texture_filter4 156 2065 2066 EXT_point_parameters/SGIS_point_parameters 157 2067 SGIS_fog_function 158 2068 unused? 159 2069 2070 SGIX_instruments 160 2071 SGIX_reference_plane 161 2072 SGIX_framezoom 162 2073 2076 unused? 163 2077 SGIX_instruments 164 2078 2081 SGIX_list_priority 165 2082 SGIS_texture_color_mask 166 3072-4095 Reserved to ARB (unused) 167 4096-5151 Reserved to EXT (4460-5151 unused) 168 4096 EXT_blend_color/1.2 169 4097 EXT_blend_minmax/1.2 170 4098 EXT_polygon_offset 171 4099 4100 EXT_subtexture 172 4101 4109 EXT_convolution/1.2 173 4110 4113 EXT_histogram/1.2 174 4114 EXT_texture3D/1.2 175 4115 EXT_subtexture/1.2 176 4116 EXT_vertex_array 177 4117 4118 EXT_texture_object/1.1 178 4119 4123 EXT_copy_texture/1.1 179 4124 4125 EXT_fog_coord 180 4126 4133 EXT_secondary_color 181 4134 EXT_blend_func_separate 182 4135 EXT_vertex_weighting 183 4136 4142 NV_register_combiners 184 4143 4144 NV_fence (4144 retired, used to be for FinishFence) 185 4145 4179 NVIDIA (use TBD; was intended for NV_vertex_program) 186 4180 4214 NV_vertex_program 187 4215 4217 ARB_vertex_program 188 4218 4219 NV_fragment_program 189 4220 EXT_stencil_two_side 190 4221 4222 NV_point_sprite 191 4223 EXT_stencil_clear_tag 192 4225 EXT_polygon_offset_clamp 193 4228 EXT_blend_equation_separate 194 4229 EXT_depth_bounds_test 195 4230 4239 ARB_vertex_program 196 4240 4264 NV_half_float 197 4265 4280 NVIDIA (use TBD) 198 4281 4282 EXT_gpu_program_parameters 199 4283 4285 NV_depth_buffer_float 200 4286 4290 NVIDIA (use TBD) 201 4291 NV_copy_image 202 4292 4293 EXT_texture_integer 203 4294 4307 NVIDIA (use TBD) 204 4308 4312 OES_single_precision (Khronos OpenGL ES 1.0) 205 4313 4315 SUN (use TBD) 206 4316 4325 EXT_framebuffer_object 207 4326 4329 ARB_matrix_palette 208 4330 EXT_framebuffer_blit 209 4331 EXT_framebuffer_multisample 210 4332 4347 NVIDIA (use TBD, bug 6720) 211 4348 NV_texture_barrier 212 4349 4459 NVIDIA (use TBD, bug 6720) 213 214 8192-8207 Reserved to HP (unknown usage) 215 16384-16415 Reserved to SUN (unknown usage) 216 24576-24607 Reserved to ADD (unknown usage) 217 218 219GLX Enumerateds (32 Bits) 220========================= 2210x0-0xFF Reserved to EXT (visual attribute names) 222 0x1 0x11 GLX 1.0 (attribute names) 223 0x12 0x1F unused? 224 0x20 GLX_EXT_visual_rating (attribute names) 225 0x21 unused? 226 0x22 0x28 GLX_EXT_visual_info (attribute names) 2270x1F00-0x1F02 Reserved to ARB (shared with WGL) 228 0x1F00 0x1F02 GLX_AMD_gpu_association 2290x2070-0x209F Reserved to ARB (shared with WGL) 230 0x2090 0x2094 GLX_ARB_create_context 231 0x2095 GL_ARB_vertex_buffer_object 232 0x2097 0x2098 GLX_ARB_context_flush_control 2330x20A0-0x219F Reserved to NVIDIA (shared with WGL) 234 0x20B0 GLX_NV_float_buffer 235 0x20B1 GLX_EXT_fbconfig_packed_float 236 0x20B2 GLX_ARB_framebuffer_sRGB (nee EXT) 237 0x20B3 GLX_NV_multisample_coverage 238 0x20B9 GLX_ARB_fbconfig_float 239 0x20C3 0x20CC GLX_NV_video_out 240 0x20CD 0x20CF GLX_NV_video_capture 241 0x20D0 0x20EB GLX_EXT_texture_from_pixmap 242 0x20F0 GLX_NV_present_video 243 0x20F1 0x20F2 GLX_EXT_swap_control 244 0x20F3 GLX_EXT_swap_control_tear 245 0x20F4 GLX_EXT_buffer_age 246 0x20F5 GLX_EXT_stereo_tree 247 0x20F6 GLX_EXT_libglvnd 248 0x20F7 GLX_NV_robustness_video_memory_purge 2490x21A0-0x21AF Reserved to AMD (shared with WGL) 250 0x21A2 0x21A8 GLX_AMD_gpu_association 2510x31B3 Reserved to ARB (shared with WGL) 252 0x31B3 GLX_ARB_create_context_no_error 2530x8000-0x800F Reserved to EXT (0x800E-0x800F unused) 254 0x8000 0x8009 GLX_EXT_visual_info 255 0x800A 0x800C GLX_EXT_import_context 256 0x800D GLX_EXT_visual_rating 2570x8010-0x803F Reserved to SGI (0x8029-0x803F unused) 258 0x8010 0x8015 GLX_SGIX_fbconfig 259 0x8016 0x8023 GLX_SGIX_pbuffer 260 0x8024 GLX_SGIX_dm_buffer 261 0x8025 GLX_SGIS_blended_overlay 262 0x8026 0x8027 GLX_SGIS_shared_multisample 263 0x8028 GLX_SGIX_visual_select_group 264 0x8030 GLX_SGIX_hyperpipe 2650x8040-0x804F Reserved to OpenGL ARB 266 0x8040 0x8041 GLX 1.3 2670x8050-0x805F Reserved to 3Dfx 268 0x8050 0x8051 GLX_3DFX_multisample 2690x8060-0x806F Reserved to OpenML SIG 270 0x8060 0x8063 GLX_OML_swap_method 2710x8070-0x816F Reserved to NVIDIA 2720x8170-0x817F Reserved to SUN 2730x8180-0x818F Reserved to Intel (0x818F unused) 274 0x8180 0x8182 GLX_INTEL_swap_event 275 0x8183 0x818E GLX_MESA_query_renderer 2760x8250-0x826F Reserved to ARB (Shared with GL and WGL) 277 0x8252 GLX_ARB_create_context_robustness 278 0x8256 GLX_ARB_create_context_robustness 279 0x8261 GLX_ARB_create_context_robustness 2800x9126 GLX_ARB_create_context_profile (shared with WGL) 281 282100000-100011 Reserved to SGI (100002-100011 unused) 283 100000 100001 GLX_SGIS_multisample/GLX_ARB_multisample 284 285GLX Error Codes 286=============== 287 288(Extension reservations for vendor extensions should start sufficiently 289high so they don't interfere with GLX core and GLX ARB extensions.) 290 2910 GLXBadContext OpenGL ARB (GLX core) 2921 GLXBadContextState OpenGL ARB (GLX core) 2932 GLXBadDrawable OpenGL ARB (GLX core) 2943 GLXBadPixmap OpenGL ARB (GLX core) 2954 GLXBadContextTag OpenGL ARB (GLX core) 2965 GLXBadCurrentWindow OpenGL ARB (GLX core) 2976 GLXBadRenderRequest OpenGL ARB (GLX core) 2987 GLXBadLargeRequest OpenGL ARB (GLX core) 2998 GLXUnsupportedPrivateRequest OpenGL ARB (GLX core) 3009 GLXBadFBConfig OpenGL ARB (GLX core) 30110 GLXBadPbuffer OpenGL ARB (GLX core) 30211 GLXBadCurrentDrawable OpenGL ARB (GLX core) 30312 GLXBadWindow OpenGL ARB (GLX core) 30413 GLXBadProfileARB OpenGL ARB (GLX_ARB_create_context) 305 306 307GLX Event Masks 308=============== 3090x08000000 GLX 1.3 / SGIX_pbuffer 3100x04000000 Intel (INTEL_swap_event) 311 312GLX Event Codes 313=============== 314 315(The X.org/Mesa GLX implementation derived from the SGI Sample 316Implementation has __GLX_NUMBER_EVENTS == 17, suggesting that vendor 317events should be allocated downwards from the first free value <= 16 318(14), and core GLX events allocated upwards). 319 3200 OpenGL ARB (GLX_PbufferClobber in GLX 1.3) 32115 Intel (GLX_BufferSwapINTEL) 32216 SGI (GLX_PbufferClobberSGIX) 32364 SGI 324 325GLX protocol encoding for GL >= 2.0 326=================================== 327 328(This section - this whole file really - should eventually be incorporated 329in a proper update of the GLX protocol specification.) 330 331OpenGL 2.0 332---------- 333 334 DeleteShader 335 336 1 CARD8 opcode (X assigned) 337 1 195 GLX opcode 338 2 3 request length 339 4 GLX_CONTEXT_TAG context tag 340 4 CARD32 shader 341 342 IsShader 343 344 1 CARD8 opcode (X assigned) 345 1 196 GLX opcode 346 2 3 request length 347 4 GLX_CONTEXT_TAG context tag 348 4 CARD32 shader 349 => 350 1 1 reply 351 1 unused 352 2 CARD16 sequence number 353 4 0 reply length 354 4 BOOL32 return value 355 20 unused 356 357 IsProgram 358 359 1 CARD8 opcode (X assigned) 360 1 197 GLX opcode 361 2 3 request length 362 4 GLX_CONTEXT_TAG context tag 363 4 CARD32 program 364 => 365 1 1 reply 366 1 unused 367 2 CARD16 sequence number 368 4 0 reply length 369 4 BOOL32 return value 370 20 unused 371 372 GetShaderiv 373 374 1 CARD8 opcode (X assigned) 375 1 198 GLX opcode 376 2 4 request length 377 4 GLX_CONTEXT_TAG context tag 378 4 CARD32 program 379 4 CARD32 pname 380 => 381 1 1 reply 382 1 unused 383 2 CARD16 sequence number 384 4 m reply length, m = (n == 1 ? 0 : n) 385 4 unused 386 4 CARD32 n 387 388 if (n == 1) this follows: 389 390 4 CARD32 params 391 12 unused 392 393 otherwise this follows: 394 395 16 unused 396 n*4 LISTOFCARD32 params 397 398 Note that n may be 0, indicating that a GL error occurred. 399 400 GetProgramiv 401 402 1 CARD8 opcode (X assigned) 403 1 199 GLX opcode 404 2 4 request length 405 4 GLX_CONTEXT_TAG context tag 406 4 CARD32 program 407 4 CARD32 pname 408 => 409 1 1 reply 410 1 unused 411 2 CARD16 sequence number 412 4 m reply length, m = (n == 1 ? 0 : n) 413 4 unused 414 4 CARD32 n 415 416 if (n == 1) this follows: 417 418 4 CARD32 params 419 12 unused 420 421 otherwise this follows: 422 423 16 unused 424 n*4 LISTofCARD32 params 425 426 Note that n may be 0, indicating that a GL error occurred. 427 428 GetShaderInfoLog 429 430 1 CARD8 opcode (X assigned) 431 1 200 GLX opcode 432 2 4 request length 433 4 GLX_CONTEXT_TAG context tag 434 4 CARD32 shader 435 4 CARD32 bufSize 436 => 437 1 1 reply 438 1 unused 439 2 CARD16 sequence number 440 4 m reply length, m = (n + p) / 4 441 4 unused 442 4 CARD32 n, n = length + 1 443 16 unused 444 n LISTofBYTE infoLog 445 p unused, p=pad(n) 446 447 Note that n may be 0, indicating that a GL error occurred. 448 449 GetProgramInfoLog 450 451 1 CARD8 opcode (X assigned) 452 1 201 GLX opcode 453 2 4 request length 454 4 GLX_CONTEXT_TAG context tag 455 4 CARD32 program 456 4 CARD32 bufSize 457 => 458 1 1 reply 459 1 unused 460 2 CARD16 sequence number 461 4 m reply length, m = (n + p) / 4 462 4 unused 463 4 CARD32 n, n = length + 1 464 16 unused 465 n LISTofBYTE infoLog 466 p unused, p=pad(n) 467 468 Note that n may be 0, indicating that a GL error occurred. 469 470 DeleteProgram 471 472 1 CARD8 opcode (X assigned) 473 1 202 GLX opcode 474 2 3 request length 475 4 GLX_CONTEXT_TAG context tag 476 4 CARD32 program 477 478OpenGL 2.1 479---------- 480 481 UniformMatrix2x3fv 482 483 2 16+4*count*2*3 rendering command length 484 2 305 rendering command opcode 485 4 CARD32 location 486 4 CARD32 count 487 1 BOOL transpose 488 3 unused 489 4*count*2*3 LISTofFLOAT32 value 490 491 If the command is encoded in a glXRenderLarge request, the 492 command opcode and command length fields above are expanded to 493 4 bytes each: 494 495 4 20+4*count*2*2 rendering command length 496 4 305 rendering command opcode 497 498 UniformMatrix3x2fv 499 500 2 16+4*count*3*2 rendering command length 501 2 306 rendering command opcode 502 4 CARD32 location 503 4 CARD32 count 504 1 BOOL transpose 505 3 unused 506 4*count*3*2 LISTofFLOAT32 value 507 508 If the command is encoded in a glXRenderLarge request, the 509 command opcode and command length fields above are expanded to 510 4 bytes each: 511 512 4 20+4*count*3*2 rendering command length 513 4 306 rendering command opcode 514 515 UniformMatrix2x4fv 516 517 2 16+4*count*2*4 rendering command length 518 2 307 rendering command opcode 519 4 CARD32 location 520 4 CARD32 count 521 1 BOOL transpose 522 3 unused 523 4*count*2*4 LISTofFLOAT32 value 524 525 If the command is encoded in a glXRenderLarge request, the 526 command opcode and command length fields above are expanded to 527 4 bytes each: 528 529 4 20+4*count*2*4 rendering command length 530 4 307 rendering command opcode 531 532 UniformMatrix4x2fv 533 534 2 16+4*count*4*2 rendering command length 535 2 308 rendering command opcode 536 4 CARD32 location 537 4 CARD32 count 538 1 BOOL transpose 539 3 unused 540 4*count*4*2 LISTofFLOAT32 value 541 542 If the command is encoded in a glXRenderLarge request, the 543 command opcode and command length fields above are expanded to 544 4 bytes each: 545 546 4 20+4*count*4*2 rendering command length 547 4 308 rendering command opcode 548 549 UniformMatrix3x4fv 550 551 2 16+4*count*3*4 rendering command length 552 2 309 rendering command opcode 553 4 CARD32 location 554 4 CARD32 count 555 1 BOOL transpose 556 3 unused 557 4*count*3*4 LISTofFLOAT32 value 558 559 If the command is encoded in a glXRenderLarge request, the 560 command opcode and command length fields above are expanded to 561 4 bytes each: 562 563 4 20+4*count*3*4 rendering command length 564 4 309 rendering command opcode 565 566 UniformMatrix4x3fv 567 568 2 16+4*count*4*3 rendering command length 569 2 310 rendering command opcode 570 4 CARD32 location 571 4 CARD32 count 572 1 BOOL transpose 573 3 unused 574 4*count*4*3 LISTofFLOAT32 value 575 576 If the command is encoded in a glXRenderLarge request, the 577 command opcode and command length fields above are expanded to 578 4 bytes each: 579 580 4 20+4*count*4*3 rendering command length 581 4 310 rendering command opcode 582 583OpenGL 3.0 584---------- 585 586 The following rendering commands are sent to the sever as part of a 587 glXRender request: 588 589 BindBufferRange 590 591 2 32 rendering command length 592 2 355 rendering command opcode 593 8 INT64 offset 594 8 INT64 size 595 4 ENUM target 596 4 CARD32 index 597 4 CARD32 buffer 598 599 BindBufferBase 600 601 2 16 rendering command length 602 2 356 rendering command opcode 603 4 ENUM target 604 4 CARD32 index 605 4 CARD32 buffer 606 607 BeginTransformFeedback 608 609 2 8 rendering command length 610 2 357 rendering command opcode 611 4 ENUM primitiveMode 612 613 EndTransformFeedback 614 615 2 4 rendering command length 616 2 358 rendering command opcode 617 618 ClearBufferfi 619 620 2 20 rendering command length 621 2 360 rendering command opcode 622 4 ENUM buffer 623 4 CARD32 drawbuffer 624 4 FLOAT32 depth 625 4 CARD32 stencil 626 627 ClearBufferfv 628 629 2 12+(4*n) rendering command length 630 2 361 rendering command opcode 631 4 ENUM buffer 632 0x1800 n=4 GL_COLOR 633 0x1801 n=1 GL_STENCIL 634 0x1802 n=1 GL_DEPTH 635 else n=0 636 4 CARD32 drawbuffer 637 4*n LISTofFLOAT32 value 638 639 ClearBufferiv 640 641 2 12+(4*n) rendering command length 642 2 362 rendering command opcode 643 4 ENUM buffer 644 0x1800 n=4 GL_COLOR 645 0x1801 n=1 GL_STENCIL 646 0x1802 n=1 GL_DEPTH 647 else n=0 648 4 CARD32 drawbuffer 649 4*n LISTofINT32 value 650 651 ClearBufferuiv 652 653 2 12+(4*n) rendering command length 654 2 363 rendering command opcode 655 4 ENUM buffer 656 0x1800 n=4 GL_COLOR 657 0x1801 n=1 GL_STENCIL 658 0x1802 n=1 GL_DEPTH 659 else n=0 660 4 CARD32 drawbuffer 661 4*n LISTofCARD32 value 662 663 The following rendering commands can be sent in a glXRender 664 or glXRenderLarge request. 665 666 TransformFeedbackVaryings 667 668 2 16+(n*4)+s+p rendering command length 669 2 359 rendering command opcode 670 4 CARD32 program 671 4 INT32 count 672 4 ENUM buffermode 673 n*4 LISTofINT32 lengths[n], n = count 674 s LISTofCHAR varyings, s = sum of all entries in the lengths 675 array 676 p unused, p = pad(s) 677 678 If the command is encoded in a glXRenderLarge request, the command 679 opcode and command length fields are expanded to 4 bytes each. 680 681 4 20+(n*4)+s+p rendering command length 682 4 359 rendering command opcode 683 684 lengths[i] is calculated as strlen(varyings[i]) + 1. The NUL terminator 685 is included when sending the varyings. 686 687 The following single commands are sent to the server as part of a 688 glXSingle request: 689 690 GetTransformFeedbackVarying 691 692 1 CARD8 opcode(X assigned) 693 1 213 GLX opcode 694 2 5 request length 695 4 GLX_CONTEXT_TAG context tag 696 4 CARD32 program 697 4 CARD32 index 698 4 CARD32 bufsize 699 => 700 1 1 reply 701 1 unused 702 2 CARD16 sequence number 703 4 m reply length, m = (n == 0 ? 0 : (n + p) / 4) 704 4 unused 705 4 n-1 length 706 4 INT32 size 707 4 INT32 type 708 8 unused 709 n LISTofCHAR name, n = strlen(name)+1 710 p unused, p = pad(m) 711 712 GetStringi 713 714 1 CARD8 opcode (X assigned) 715 1 214 GLX opcode 716 2 4 request length 717 4 GLX_CONTEXT_TAG context tag 718 4 ENUM name 719 4 CARD32 index 720 => 721 1 1 reply 722 1 1 unused 723 2 CARD16 sequence number 724 4 m reply length, m = (n + p) / 4 725 4 unused 726 4 CARD32 n 727 16 unused 728 n STRING8 string 729 p unused, p=pad(n) 730