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