13464ebd5Sriastradh<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
23464ebd5Sriastradh<!ELEMENT category (type*, enum*, function*)*>
33464ebd5Sriastradh<!ELEMENT type EMPTY>
43464ebd5Sriastradh<!ELEMENT enum (size*)>
53464ebd5Sriastradh<!ELEMENT size EMPTY>
63464ebd5Sriastradh<!ELEMENT function (param*, return?, glx?)*>
73464ebd5Sriastradh<!ELEMENT param EMPTY>
83464ebd5Sriastradh<!ELEMENT return EMPTY>
93464ebd5Sriastradh<!ELEMENT glx EMPTY>
103464ebd5Sriastradh
113464ebd5Sriastradh<!ELEMENT xi:include (xi:fallback)?>
123464ebd5Sriastradh<!ATTLIST xi:include
133464ebd5Sriastradh          xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
143464ebd5Sriastradh          href       CDATA #REQUIRED
153464ebd5Sriastradh          parse      (xml|text) "xml"
163464ebd5Sriastradh          encoding   CDATA #IMPLIED>
173464ebd5Sriastradh<!ELEMENT xi:fallback ANY>
183464ebd5Sriastradh<!ATTLIST xi:fallback
193464ebd5Sriastradh          xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
203464ebd5Sriastradh
213464ebd5Sriastradh
223464ebd5Sriastradh<!ATTLIST category name                NMTOKEN #REQUIRED
233464ebd5Sriastradh                   number              NMTOKEN #IMPLIED
243464ebd5Sriastradh		   window_system       NMTOKEN #IMPLIED>
253464ebd5Sriastradh<!ATTLIST type     name                NMTOKEN #REQUIRED
263464ebd5Sriastradh                   size                NMTOKEN #REQUIRED
273464ebd5Sriastradh		   float               (true | false) "false"
283464ebd5Sriastradh		   unsigned            (true | false) "false"
29af69d88dSmrg		   pointer             (true | false) "false"
303464ebd5Sriastradh                   glx_name            NMTOKEN #IMPLIED>
313464ebd5Sriastradh<!ATTLIST enum     name                NMTOKEN #REQUIRED
323464ebd5Sriastradh                   count               CDATA   #IMPLIED
333464ebd5Sriastradh                   value               NMTOKEN #REQUIRED>
343464ebd5Sriastradh<!ATTLIST function name                NMTOKEN #REQUIRED
353464ebd5Sriastradh                   alias               NMTOKEN #IMPLIED
36af69d88dSmrg                   vectorequiv         NMTOKEN #IMPLIED
37af69d88dSmrg                   es1                 CDATA   "none"
38af69d88dSmrg                   es2                 CDATA   "none"
39af69d88dSmrg                   deprecated          CDATA   "none"
40af69d88dSmrg                   exec                NMTOKEN #IMPLIED
4101e04c3fSmrg                   desktop             (true | false) "true"
4201e04c3fSmrg                   marshal             NMTOKEN #IMPLIED
437ec681f3Smrg                   marshal_sync        CDATA #IMPLIED>
447ec681f3Smrg                   marshal_count       CDATA #IMPLIED>
457ec681f3Smrg                   marshal_call_after  CDATA #IMPLIED>
463464ebd5Sriastradh<!ATTLIST size     name                NMTOKEN #REQUIRED
473464ebd5Sriastradh                   count               NMTOKEN #IMPLIED
483464ebd5Sriastradh                   mode                (get | set) "set">
493464ebd5Sriastradh<!ATTLIST param    name                NMTOKEN #REQUIRED
503464ebd5Sriastradh                   type                CDATA   #REQUIRED
513464ebd5Sriastradh		   client_only	       (true | false) "false"
523464ebd5Sriastradh                   count               NMTOKEN #IMPLIED
533464ebd5Sriastradh                   counter             (true | false) "false"
543464ebd5Sriastradh                   count_scale         NMTOKEN "1"
553464ebd5Sriastradh                   output              (true | false) "false"
563464ebd5Sriastradh                   padding             (true | false) "false"
573464ebd5Sriastradh                   img_width           NMTOKEN #IMPLIED
583464ebd5Sriastradh                   img_height          NMTOKEN #IMPLIED
593464ebd5Sriastradh                   img_depth           NMTOKEN #IMPLIED
603464ebd5Sriastradh                   img_extent          NMTOKEN #IMPLIED
613464ebd5Sriastradh                   img_xoff            NMTOKEN #IMPLIED
623464ebd5Sriastradh                   img_yoff            NMTOKEN #IMPLIED
633464ebd5Sriastradh                   img_zoff            NMTOKEN #IMPLIED
643464ebd5Sriastradh                   img_woff            NMTOKEN #IMPLIED
653464ebd5Sriastradh                   img_format          NMTOKEN #IMPLIED
663464ebd5Sriastradh                   img_type            NMTOKEN #IMPLIED
673464ebd5Sriastradh                   img_target          NMTOKEN #IMPLIED
683464ebd5Sriastradh                   img_send_null       (true | false) "false"
693464ebd5Sriastradh                   img_null_flag       (true | false) "false"
703464ebd5Sriastradh                   img_pad_dimensions  (true | false) "false"
713464ebd5Sriastradh                   variable_param      NMTOKENS #IMPLIED>
723464ebd5Sriastradh<!ATTLIST return   type                CDATA   "void">
733464ebd5Sriastradh<!ATTLIST glx      rop                 NMTOKEN #IMPLIED
743464ebd5Sriastradh                   sop                 NMTOKEN #IMPLIED
753464ebd5Sriastradh                   vendorpriv          NMTOKEN #IMPLIED
763464ebd5Sriastradh                   large               (true | false) "false"
773464ebd5Sriastradh                   doubles_in_order    (true | false) "false"
783464ebd5Sriastradh                   always_array        (true | false) "false"
793464ebd5Sriastradh                   handcode            (true | false | client | server) "false"
803464ebd5Sriastradh                   img_reset           NMTOKEN #IMPLIED
813464ebd5Sriastradh                   dimensions_in_reply (true | false) "false"
823464ebd5Sriastradh                   ignore              (true | false) "false">
833464ebd5Sriastradh
843464ebd5Sriastradh<!--
853464ebd5SriastradhThe various attributes for param and glx have the meanings listed below.
863464ebd5SriastradhWhen adding new functions, please annote them correctly.  In most cases this
873464ebd5Sriastradhwill just mean adding a '<glx ignore="true"/>' tag.
883464ebd5Sriastradh
893464ebd5Sriastradhparam:
903464ebd5Sriastradh     name - name of the parameter
913464ebd5Sriastradh     type - fully qualified type (e.g., with "const", etc.)
923464ebd5Sriastradh     client_only - boolean flag set on parameters which are interpreted only
933464ebd5Sriastradh         by the client and are not present in the protocol encoding (e.g.,
943464ebd5Sriastradh	 the stride parameters to Map1f, etc.)
953464ebd5Sriastradh     count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
963464ebd5Sriastradh         the parameter or literal that represents the count.  For functions
9701e04c3fSmrg         like glVertex3fv it will be a literal, for others it will be one of
983464ebd5Sriastradh         the parameters.
993464ebd5Sriastradh     counter - this parameter is a counter that will be referenced by the
1003464ebd5Sriastradh         'count' attribute in another parameter.
1013464ebd5Sriastradh     count_scale - literal value scale factor for the 'count' attribute.
1023464ebd5Sriastradh         See ProgramParameters4dvNV for an example.
1033464ebd5Sriastradh     output - this parameter is used to store the output of the function.
1043464ebd5Sriastradh     variable_param - name of parameter used to determine the number of
1053464ebd5Sriastradh         elements referenced by this parameter.  This should be the name of a
1063464ebd5Sriastradh         single enum parameter.  Most of the gl*Parameter[if]v functions use
1073464ebd5Sriastradh         this.  Additionally, the enums that can be passed should be properly
1083464ebd5Sriastradh         annotated.
1093464ebd5Sriastradh     img_width / img_height / img_depth / img_extent - name of parameters
1103464ebd5Sriastradh         (or hardcoded integer) used for the dimensions of pixel data.
1113464ebd5Sriastradh     img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
1123464ebd5Sriastradh         for x, y, z, and w offsets of pixel data.
1133464ebd5Sriastradh     img_format - name of parameter used as the pixel data format.
1143464ebd5Sriastradh     img_type - name of parameter used as the pixel data type.
1153464ebd5Sriastradh     img_target - name of parameter used as a texture target.  Non-texture
1163464ebd5Sriastradh        pixel data should hardcode 0.
1173464ebd5Sriastradh     img_send_null - boolean flag to determine if blank pixel data should
1183464ebd5Sriastradh        be sent when a NULL pointer is passed.  This is only used by
1193464ebd5Sriastradh        TexImage1D and TexImage2D.
1203464ebd5Sriastradh     img_null_flag - boolean flag to determine if an extra flag is used to
1213464ebd5Sriastradh        determine if a NULL pixel pointer was passed.  This is used by
1223464ebd5Sriastradh        TexSubImage1D, TexSubImage2D, TexImage3D and others.
1233464ebd5Sriastradh     img_pad_dimensions - boolean flag to determine if dimension data and
1243464ebd5Sriastradh        offset data should be padded to the next even number of dimensions.
1253464ebd5Sriastradh        For example, this will insert an empty "height" field after the
1263464ebd5Sriastradh        "width" field in the protocol for TexImage1D.
1277ec681f3Smrg     marshal - One of "sync", "async", or "custom", defaulting to
12801e04c3fSmrg        async unless one of the arguments is something we know we can't
12901e04c3fSmrg        codegen for.  If "sync", we finish any queued glthread work and call
13001e04c3fSmrg        the Mesa implementation directly.  If "async", we queue the function
13101e04c3fSmrg        call to be performed by glthread.  If "custom", the prototype will be
13201e04c3fSmrg        generated but a custom implementation will be present in marshal.c.
1337ec681f3Smrg     marshal_sync - an expression that, if it evaluates true, causes glthread
1347ec681f3Smrg        to sync and execute the call directly.
1357ec681f3Smrg     marshal_count - same as count, but variable_param is ignored. Used by
1367ec681f3Smrg        glthread.
1377ec681f3Smrg     marshal_call_after - insert the string at the end of the marshal function
1383464ebd5Sriastradh
1393464ebd5Sriastradhglx:
1403464ebd5Sriastradh     rop - Opcode value for "render" commands
1413464ebd5Sriastradh     sop - Opcode value for "single" commands
1423464ebd5Sriastradh     vendorpriv - Opcode value for vendor private (or vendor private with
1433464ebd5Sriastradh         reply) commands
1443464ebd5Sriastradh     large - set to "true" of the render command can use RenderLarge protocol.
1453464ebd5Sriastradh     doubles_in_order - older commands always put GLdouble data at the
1463464ebd5Sriastradh         start of the render packet.  Newer commands (e.g., 
1473464ebd5Sriastradh         ProgramEnvParameter4dvARB) put the in the order that they appear
1483464ebd5Sriastradh         in the parameter list.
1493464ebd5Sriastradh     always_array - some single commands take reply data as an array or as
1503464ebd5Sriastradh         return value data (e.g., glGetLightfv).  Other single commands take
1513464ebd5Sriastradh         reply data only as an array (e.g., glGetClipPlane).
1523464ebd5Sriastradh     handcode - some functions are just too complicated to generate 
1533464ebd5Sriastradh         (e.g., glSeperableFilter2D) or operate only on client-side data
1543464ebd5Sriastradh         (e.g., glVertexPointer) and must be handcoded.
1553464ebd5Sriastradh     ignore - some functions have an entry in the dispatch table, but aren't
1563464ebd5Sriastradh         suitable for protocol implementation (e.g., glLockArraysEXT).  This
1573464ebd5Sriastradh         also applies to functions that don't have any GLX protocol specified
1583464ebd5Sriastradh         (e.g., glGetFogFuncSGIS).
1593464ebd5Sriastradh-->
160