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)
0x2070-0x209F Reserved to ARB (shared with WGL)
    0x2090  0x2094  GLX_ARB_create_context
    0x2095          GL_ARB_vertex_buffer_object
0x20A0-0x219F Reserved to NVIDIA (shared with WGL)
    (many NV and EXT extensions, see glxenum.spec)
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
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
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)
