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