1bf215546Sopenharmony_ci<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
2bf215546Sopenharmony_ci<!ELEMENT category (type*, enum*, function*)*>
3bf215546Sopenharmony_ci<!ELEMENT type EMPTY>
4bf215546Sopenharmony_ci<!ELEMENT enum (size*)>
5bf215546Sopenharmony_ci<!ELEMENT size EMPTY>
6bf215546Sopenharmony_ci<!ELEMENT function (param*, return?, glx?)*>
7bf215546Sopenharmony_ci<!ELEMENT param EMPTY>
8bf215546Sopenharmony_ci<!ELEMENT return EMPTY>
9bf215546Sopenharmony_ci<!ELEMENT glx EMPTY>
10bf215546Sopenharmony_ci
11bf215546Sopenharmony_ci<!ELEMENT xi:include (xi:fallback)?>
12bf215546Sopenharmony_ci<!ATTLIST xi:include
13bf215546Sopenharmony_ci          xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
14bf215546Sopenharmony_ci          href       CDATA #REQUIRED
15bf215546Sopenharmony_ci          parse      (xml|text) "xml"
16bf215546Sopenharmony_ci          encoding   CDATA #IMPLIED>
17bf215546Sopenharmony_ci<!ELEMENT xi:fallback ANY>
18bf215546Sopenharmony_ci<!ATTLIST xi:fallback
19bf215546Sopenharmony_ci          xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
20bf215546Sopenharmony_ci
21bf215546Sopenharmony_ci
22bf215546Sopenharmony_ci<!ATTLIST category name                NMTOKEN #REQUIRED
23bf215546Sopenharmony_ci                   number              NMTOKEN #IMPLIED
24bf215546Sopenharmony_ci		   window_system       NMTOKEN #IMPLIED>
25bf215546Sopenharmony_ci<!ATTLIST type     name                NMTOKEN #REQUIRED
26bf215546Sopenharmony_ci                   size                NMTOKEN #REQUIRED
27bf215546Sopenharmony_ci		   float               (true | false) "false"
28bf215546Sopenharmony_ci		   unsigned            (true | false) "false"
29bf215546Sopenharmony_ci		   pointer             (true | false) "false"
30bf215546Sopenharmony_ci                   glx_name            NMTOKEN #IMPLIED>
31bf215546Sopenharmony_ci<!ATTLIST enum     name                NMTOKEN #REQUIRED
32bf215546Sopenharmony_ci                   count               CDATA   #IMPLIED
33bf215546Sopenharmony_ci                   value               NMTOKEN #REQUIRED>
34bf215546Sopenharmony_ci<!ATTLIST function name                NMTOKEN #REQUIRED
35bf215546Sopenharmony_ci                   alias               NMTOKEN #IMPLIED
36bf215546Sopenharmony_ci                   vectorequiv         NMTOKEN #IMPLIED
37bf215546Sopenharmony_ci                   es1                 CDATA   "none"
38bf215546Sopenharmony_ci                   es2                 CDATA   "none"
39bf215546Sopenharmony_ci                   deprecated          CDATA   "none"
40bf215546Sopenharmony_ci                   exec                NMTOKEN #IMPLIED
41bf215546Sopenharmony_ci                   desktop             (true | false) "true"
42bf215546Sopenharmony_ci                   marshal             NMTOKEN #IMPLIED
43bf215546Sopenharmony_ci                   marshal_sync        CDATA #IMPLIED>
44bf215546Sopenharmony_ci                   marshal_count       CDATA #IMPLIED>
45bf215546Sopenharmony_ci                   marshal_call_before CDATA #IMPLIED>
46bf215546Sopenharmony_ci                   marshal_call_after  CDATA #IMPLIED>
47bf215546Sopenharmony_ci<!ATTLIST size     name                NMTOKEN #REQUIRED
48bf215546Sopenharmony_ci                   count               NMTOKEN #IMPLIED
49bf215546Sopenharmony_ci                   mode                (get | set) "set">
50bf215546Sopenharmony_ci<!ATTLIST param    name                NMTOKEN #REQUIRED
51bf215546Sopenharmony_ci                   type                CDATA   #REQUIRED
52bf215546Sopenharmony_ci		   client_only	       (true | false) "false"
53bf215546Sopenharmony_ci                   count               NMTOKEN #IMPLIED
54bf215546Sopenharmony_ci                   counter             (true | false) "false"
55bf215546Sopenharmony_ci                   count_scale         NMTOKEN "1"
56bf215546Sopenharmony_ci                   output              (true | false) "false"
57bf215546Sopenharmony_ci                   padding             (true | false) "false"
58bf215546Sopenharmony_ci                   img_width           NMTOKEN #IMPLIED
59bf215546Sopenharmony_ci                   img_height          NMTOKEN #IMPLIED
60bf215546Sopenharmony_ci                   img_depth           NMTOKEN #IMPLIED
61bf215546Sopenharmony_ci                   img_extent          NMTOKEN #IMPLIED
62bf215546Sopenharmony_ci                   img_xoff            NMTOKEN #IMPLIED
63bf215546Sopenharmony_ci                   img_yoff            NMTOKEN #IMPLIED
64bf215546Sopenharmony_ci                   img_zoff            NMTOKEN #IMPLIED
65bf215546Sopenharmony_ci                   img_woff            NMTOKEN #IMPLIED
66bf215546Sopenharmony_ci                   img_format          NMTOKEN #IMPLIED
67bf215546Sopenharmony_ci                   img_type            NMTOKEN #IMPLIED
68bf215546Sopenharmony_ci                   img_target          NMTOKEN #IMPLIED
69bf215546Sopenharmony_ci                   img_send_null       (true | false) "false"
70bf215546Sopenharmony_ci                   img_null_flag       (true | false) "false"
71bf215546Sopenharmony_ci                   img_pad_dimensions  (true | false) "false"
72bf215546Sopenharmony_ci                   variable_param      NMTOKENS #IMPLIED>
73bf215546Sopenharmony_ci<!ATTLIST return   type                CDATA   "void">
74bf215546Sopenharmony_ci<!ATTLIST glx      rop                 NMTOKEN #IMPLIED
75bf215546Sopenharmony_ci                   sop                 NMTOKEN #IMPLIED
76bf215546Sopenharmony_ci                   vendorpriv          NMTOKEN #IMPLIED
77bf215546Sopenharmony_ci                   large               (true | false) "false"
78bf215546Sopenharmony_ci                   doubles_in_order    (true | false) "false"
79bf215546Sopenharmony_ci                   always_array        (true | false) "false"
80bf215546Sopenharmony_ci                   handcode            (true | false | client | server) "false"
81bf215546Sopenharmony_ci                   img_reset           NMTOKEN #IMPLIED
82bf215546Sopenharmony_ci                   dimensions_in_reply (true | false) "false"
83bf215546Sopenharmony_ci                   ignore              (true | false) "false">
84bf215546Sopenharmony_ci
85bf215546Sopenharmony_ci<!--
86bf215546Sopenharmony_ciThe various attributes for param and glx have the meanings listed below.
87bf215546Sopenharmony_ciWhen adding new functions, please annote them correctly.  In most cases this
88bf215546Sopenharmony_ciwill just mean adding a '<glx ignore="true"/>' tag.
89bf215546Sopenharmony_ci
90bf215546Sopenharmony_ciparam:
91bf215546Sopenharmony_ci     name - name of the parameter
92bf215546Sopenharmony_ci     type - fully qualified type (e.g., with "const", etc.)
93bf215546Sopenharmony_ci     client_only - boolean flag set on parameters which are interpreted only
94bf215546Sopenharmony_ci         by the client and are not present in the protocol encoding (e.g.,
95bf215546Sopenharmony_ci	 the stride parameters to Map1f, etc.)
96bf215546Sopenharmony_ci     count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
97bf215546Sopenharmony_ci         the parameter or literal that represents the count.  For functions
98bf215546Sopenharmony_ci         like glVertex3fv it will be a literal, for others it will be one of
99bf215546Sopenharmony_ci         the parameters.
100bf215546Sopenharmony_ci     counter - this parameter is a counter that will be referenced by the
101bf215546Sopenharmony_ci         'count' attribute in another parameter.
102bf215546Sopenharmony_ci     count_scale - literal value scale factor for the 'count' attribute.
103bf215546Sopenharmony_ci         See ProgramParameters4dvNV for an example.
104bf215546Sopenharmony_ci     output - this parameter is used to store the output of the function.
105bf215546Sopenharmony_ci     variable_param - name of parameter used to determine the number of
106bf215546Sopenharmony_ci         elements referenced by this parameter.  This should be the name of a
107bf215546Sopenharmony_ci         single enum parameter.  Most of the gl*Parameter[if]v functions use
108bf215546Sopenharmony_ci         this.  Additionally, the enums that can be passed should be properly
109bf215546Sopenharmony_ci         annotated.
110bf215546Sopenharmony_ci     img_width / img_height / img_depth / img_extent - name of parameters
111bf215546Sopenharmony_ci         (or hardcoded integer) used for the dimensions of pixel data.
112bf215546Sopenharmony_ci     img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
113bf215546Sopenharmony_ci         for x, y, z, and w offsets of pixel data.
114bf215546Sopenharmony_ci     img_format - name of parameter used as the pixel data format.
115bf215546Sopenharmony_ci     img_type - name of parameter used as the pixel data type.
116bf215546Sopenharmony_ci     img_target - name of parameter used as a texture target.  Non-texture
117bf215546Sopenharmony_ci        pixel data should hardcode 0.
118bf215546Sopenharmony_ci     img_send_null - boolean flag to determine if blank pixel data should
119bf215546Sopenharmony_ci        be sent when a NULL pointer is passed.  This is only used by
120bf215546Sopenharmony_ci        TexImage1D and TexImage2D.
121bf215546Sopenharmony_ci     img_null_flag - boolean flag to determine if an extra flag is used to
122bf215546Sopenharmony_ci        determine if a NULL pixel pointer was passed.  This is used by
123bf215546Sopenharmony_ci        TexSubImage1D, TexSubImage2D, TexImage3D and others.
124bf215546Sopenharmony_ci     img_pad_dimensions - boolean flag to determine if dimension data and
125bf215546Sopenharmony_ci        offset data should be padded to the next even number of dimensions.
126bf215546Sopenharmony_ci        For example, this will insert an empty "height" field after the
127bf215546Sopenharmony_ci        "width" field in the protocol for TexImage1D.
128bf215546Sopenharmony_ci     marshal - One of "sync", "async", or "custom", defaulting to
129bf215546Sopenharmony_ci        async unless one of the arguments is something we know we can't
130bf215546Sopenharmony_ci        codegen for.  If "sync", we finish any queued glthread work and call
131bf215546Sopenharmony_ci        the Mesa implementation directly.  If "async", we queue the function
132bf215546Sopenharmony_ci        call to be performed by glthread.  If "custom", the prototype will be
133bf215546Sopenharmony_ci        generated but a custom implementation will be present in marshal.c.
134bf215546Sopenharmony_ci     marshal_sync - an expression that, if it evaluates true, causes glthread
135bf215546Sopenharmony_ci        to sync and execute the call directly.
136bf215546Sopenharmony_ci     marshal_count - same as count, but variable_param is ignored. Used by
137bf215546Sopenharmony_ci        glthread.
138bf215546Sopenharmony_ci     marshal_call_before - insert the string at the beginning of the marshal
139bf215546Sopenharmony_ci        function
140bf215546Sopenharmony_ci     marshal_call_after - insert the string at the end of the marshal function
141bf215546Sopenharmony_ci
142bf215546Sopenharmony_ciglx:
143bf215546Sopenharmony_ci     rop - Opcode value for "render" commands
144bf215546Sopenharmony_ci     sop - Opcode value for "single" commands
145bf215546Sopenharmony_ci     vendorpriv - Opcode value for vendor private (or vendor private with
146bf215546Sopenharmony_ci         reply) commands
147bf215546Sopenharmony_ci     large - set to "true" of the render command can use RenderLarge protocol.
148bf215546Sopenharmony_ci     doubles_in_order - older commands always put GLdouble data at the
149bf215546Sopenharmony_ci         start of the render packet.  Newer commands (e.g., 
150bf215546Sopenharmony_ci         ProgramEnvParameter4dvARB) put the in the order that they appear
151bf215546Sopenharmony_ci         in the parameter list.
152bf215546Sopenharmony_ci     always_array - some single commands take reply data as an array or as
153bf215546Sopenharmony_ci         return value data (e.g., glGetLightfv).  Other single commands take
154bf215546Sopenharmony_ci         reply data only as an array (e.g., glGetClipPlane).
155bf215546Sopenharmony_ci     handcode - some functions are just too complicated to generate 
156bf215546Sopenharmony_ci         (e.g., glSeperableFilter2D) or operate only on client-side data
157bf215546Sopenharmony_ci         (e.g., glVertexPointer) and must be handcoded.
158bf215546Sopenharmony_ci     ignore - some functions have an entry in the dispatch table, but aren't
159bf215546Sopenharmony_ci         suitable for protocol implementation (e.g., glLockArraysEXT).  This
160bf215546Sopenharmony_ci         also applies to functions that don't have any GLX protocol specified
161bf215546Sopenharmony_ci         (e.g., glGetFogFuncSGIS).
162bf215546Sopenharmony_ci-->
163