blob: 2f0c88aae5bbc8ae3ef8ea90c01784ab695aee62 [file] [log] [blame]
Ian Romanick66a55482005-06-21 23:42:43 +00001<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
Ian Romanick61f08d82005-04-18 18:36:57 +00002<!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
Ian Romanick66a55482005-06-21 23:42:43 +000011<!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
Ian Romanick61f08d82005-04-18 18:36:57 +000022<!ATTLIST category name NMTOKEN #REQUIRED
Ian Romanick66a55482005-06-21 23:42:43 +000023 number NMTOKEN #IMPLIED
24 window_system NMTOKEN #IMPLIED>
Ian Romanick61f08d82005-04-18 18:36:57 +000025<!ATTLIST type name NMTOKEN #REQUIRED
26 size NMTOKEN #REQUIRED
Ian Romanick66a55482005-06-21 23:42:43 +000027 float (true | false) "false"
28 unsigned (true | false) "false"
Ian Romanick61f08d82005-04-18 18:36:57 +000029 glx_name NMTOKEN #IMPLIED>
30<!ATTLIST enum name NMTOKEN #REQUIRED
31 count CDATA #IMPLIED
32 value NMTOKEN #REQUIRED>
33<!ATTLIST function name NMTOKEN #REQUIRED
34 alias NMTOKEN #IMPLIED
35 offset CDATA #IMPLIED
Ian Romanick4e4b5f42006-08-22 16:34:38 +000036 static_dispatch (true | false) "true"
Ian Romanick61f08d82005-04-18 18:36:57 +000037 vectorequiv NMTOKEN #IMPLIED>
38<!ATTLIST size name NMTOKEN #REQUIRED
39 count NMTOKEN #IMPLIED
Ian Romanick249db892005-05-26 16:24:35 +000040 mode (get | set) "set">
Ian Romanick61f08d82005-04-18 18:36:57 +000041<!ATTLIST param name NMTOKEN #REQUIRED
42 type CDATA #REQUIRED
43 count NMTOKEN #IMPLIED
44 counter (true | false) "false"
Ian Romanick249db892005-05-26 16:24:35 +000045 count_scale NMTOKEN "1"
Ian Romanick61f08d82005-04-18 18:36:57 +000046 output (true | false) "false"
47 img_width NMTOKEN #IMPLIED
48 img_height NMTOKEN #IMPLIED
49 img_depth NMTOKEN #IMPLIED
50 img_extent NMTOKEN #IMPLIED
51 img_xoff NMTOKEN #IMPLIED
52 img_yoff NMTOKEN #IMPLIED
53 img_zoff NMTOKEN #IMPLIED
54 img_woff NMTOKEN #IMPLIED
55 img_format NMTOKEN #IMPLIED
56 img_type NMTOKEN #IMPLIED
57 img_target NMTOKEN #IMPLIED
58 img_send_null (true | false) "false"
59 img_null_flag (true | false) "false"
60 img_pad_dimensions (true | false) "false"
61 variable_param NMTOKENS #IMPLIED>
62<!ATTLIST return type CDATA "void">
63<!ATTLIST glx rop NMTOKEN #IMPLIED
64 sop NMTOKEN #IMPLIED
65 vendorpriv NMTOKEN #IMPLIED
66 large (true | false) "false"
67 doubles_in_order (true | false) "false"
68 always_array (true | false) "false"
69 handcode (true | false | client | server) "false"
70 img_reset NMTOKEN #IMPLIED
71 dimensions_in_reply (true | false) "false"
72 ignore (true | false) "false">
73
74<!--
75The various attributes for param and glx have the meanings listed below.
76When adding new functions, please annote them correctly. In most cases this
77will just mean adding a '<glx ignore="true"/>' tag.
78
79param:
80 name - name of the parameter
81 type - fully qualified type (e.g., with "const", etc.)
82 count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
83 the parameter or literal that represents the count. For functions
84 like glVertex3fv it will be a litteral, for others it will be one of
85 the parameters.
86 counter - this parameter is a counter that will be referenced by the
87 'count' attribute in another parameter.
88 count_scale - literal value scale factor for the 'count' attribute.
89 See ProgramParameters4dvNV for an example.
90 output - this parameter is used to store the output of the function.
91 variable_param - name of parameter used to determine the number of
92 elements referenced by this parameter. This should be the name of a
93 single enum parameter. Most of the gl*Parameter[if]v functions use
94 this. Additionally, the enums that can be passed should be properly
95 annotated.
96 img_width / img_height / img_depth / img_extent - name of parameters
97 (or hardcoded integer) used for the dimensions of pixel data.
98 img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
99 for x, y, z, and w offsets of pixel data.
100 img_format - name of parameter used as the pixel data format.
101 img_type - name of parameter used as the pixel data type.
102 img_target - name of parameter used as a texture target. Non-texture
103 pixel data should hardcode 0.
104 img_send_null - boolean flag to determine if blank pixel data should
105 be sent when a NULL pointer is passed. This is only used by
106 TexImage1D and TexImage2D.
107 img_null_flag - boolean flag to determine if an extra flag is used to
108 determine if a NULL pixel pointer was passed. This is used by
109 TexSubImage1D, TexSubImage2D, TexImage3D and others.
110 img_pad_dimensions - boolean flag to determine if dimension data and
111 offset data should be padded to the next even number of dimensions.
112 For example, this will insert an empty "height" field after the
113 "width" field in the protocol for TexImage1D.
114
115glx:
116 rop - Opcode value for "render" commands
117 sop - Opcode value for "single" commands
118 vendorpriv - Opcode value for vendor private (or vendor private with
119 reply) commands
120 large - set to "true" of the render command can use RenderLarge protocol.
121 doubles_in_order - older commands always put GLdouble data at the
122 start of the render packet. Newer commands (e.g.,
123 ProgramEnvParameter4dvARB) put the in the order that they appear
124 in the parameter list.
125 always_array - some single commands take reply data as an array or as
126 return value data (e.g., glGetLightfv). Other single commands take
127 reply data only as an array (e.g., glGetClipPlane).
128 handcode - some functions are just too complicated to generate
129 (e.g., glSeperableFilter2D) or operate only on client-side data
130 (e.g., glVertexPointer) and must be handcoded.
131 ignore - some functions have an entry in the dispatch table, but aren't
132 suitable for protocol implementation (e.g., glLockArraysEXT). This
133 also applies to functions that don't have any GLX protocol specified
134 (e.g., glGetFogFuncSGIS).
135-->