ab321fad0f81b93fa008733e76b07500929f0b82
[mesa.git] / src / mapi / glapi / gen / gl_API.dtd
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 offset CDATA #IMPLIED
37 static_dispatch (true | false) "true"
38 vectorequiv NMTOKEN #IMPLIED
39 es1 CDATA "none"
40 es2 CDATA "none"
41 deprecated CDATA "none"
42 exec NMTOKEN #IMPLIED
43 desktop (true | false) "true">
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 <!--
83 The various attributes for param and glx have the meanings listed below.
84 When adding new functions, please annote them correctly. In most cases this
85 will just mean adding a '<glx ignore="true"/>' tag.
86
87 param:
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 litteral, 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
126 glx:
127 rop - Opcode value for "render" commands
128 sop - Opcode value for "single" commands
129 vendorpriv - Opcode value for vendor private (or vendor private with
130 reply) commands
131 large - set to "true" of the render command can use RenderLarge protocol.
132 doubles_in_order - older commands always put GLdouble data at the
133 start of the render packet. Newer commands (e.g.,
134 ProgramEnvParameter4dvARB) put the in the order that they appear
135 in the parameter list.
136 always_array - some single commands take reply data as an array or as
137 return value data (e.g., glGetLightfv). Other single commands take
138 reply data only as an array (e.g., glGetClipPlane).
139 handcode - some functions are just too complicated to generate
140 (e.g., glSeperableFilter2D) or operate only on client-side data
141 (e.g., glVertexPointer) and must be handcoded.
142 ignore - some functions have an entry in the dispatch table, but aren't
143 suitable for protocol implementation (e.g., glLockArraysEXT). This
144 also applies to functions that don't have any GLX protocol specified
145 (e.g., glGetFogFuncSGIS).
146 -->