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