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