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