• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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