13464ebd5Sriastradh<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+> 23464ebd5Sriastradh<!ELEMENT category (type*, enum*, function*)*> 33464ebd5Sriastradh<!ELEMENT type EMPTY> 43464ebd5Sriastradh<!ELEMENT enum (size*)> 53464ebd5Sriastradh<!ELEMENT size EMPTY> 63464ebd5Sriastradh<!ELEMENT function (param*, return?, glx?)*> 73464ebd5Sriastradh<!ELEMENT param EMPTY> 83464ebd5Sriastradh<!ELEMENT return EMPTY> 93464ebd5Sriastradh<!ELEMENT glx EMPTY> 103464ebd5Sriastradh 113464ebd5Sriastradh<!ELEMENT xi:include (xi:fallback)?> 123464ebd5Sriastradh<!ATTLIST xi:include 133464ebd5Sriastradh xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" 143464ebd5Sriastradh href CDATA #REQUIRED 153464ebd5Sriastradh parse (xml|text) "xml" 163464ebd5Sriastradh encoding CDATA #IMPLIED> 173464ebd5Sriastradh<!ELEMENT xi:fallback ANY> 183464ebd5Sriastradh<!ATTLIST xi:fallback 193464ebd5Sriastradh xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"> 203464ebd5Sriastradh 213464ebd5Sriastradh 223464ebd5Sriastradh<!ATTLIST category name NMTOKEN #REQUIRED 233464ebd5Sriastradh number NMTOKEN #IMPLIED 243464ebd5Sriastradh window_system NMTOKEN #IMPLIED> 253464ebd5Sriastradh<!ATTLIST type name NMTOKEN #REQUIRED 263464ebd5Sriastradh size NMTOKEN #REQUIRED 273464ebd5Sriastradh float (true | false) "false" 283464ebd5Sriastradh unsigned (true | false) "false" 29af69d88dSmrg pointer (true | false) "false" 303464ebd5Sriastradh glx_name NMTOKEN #IMPLIED> 313464ebd5Sriastradh<!ATTLIST enum name NMTOKEN #REQUIRED 323464ebd5Sriastradh count CDATA #IMPLIED 333464ebd5Sriastradh value NMTOKEN #REQUIRED> 343464ebd5Sriastradh<!ATTLIST function name NMTOKEN #REQUIRED 353464ebd5Sriastradh alias NMTOKEN #IMPLIED 36af69d88dSmrg vectorequiv NMTOKEN #IMPLIED 37af69d88dSmrg es1 CDATA "none" 38af69d88dSmrg es2 CDATA "none" 39af69d88dSmrg deprecated CDATA "none" 40af69d88dSmrg exec NMTOKEN #IMPLIED 4101e04c3fSmrg desktop (true | false) "true" 4201e04c3fSmrg marshal NMTOKEN #IMPLIED 437ec681f3Smrg marshal_sync CDATA #IMPLIED> 447ec681f3Smrg marshal_count CDATA #IMPLIED> 457ec681f3Smrg marshal_call_after CDATA #IMPLIED> 463464ebd5Sriastradh<!ATTLIST size name NMTOKEN #REQUIRED 473464ebd5Sriastradh count NMTOKEN #IMPLIED 483464ebd5Sriastradh mode (get | set) "set"> 493464ebd5Sriastradh<!ATTLIST param name NMTOKEN #REQUIRED 503464ebd5Sriastradh type CDATA #REQUIRED 513464ebd5Sriastradh client_only (true | false) "false" 523464ebd5Sriastradh count NMTOKEN #IMPLIED 533464ebd5Sriastradh counter (true | false) "false" 543464ebd5Sriastradh count_scale NMTOKEN "1" 553464ebd5Sriastradh output (true | false) "false" 563464ebd5Sriastradh padding (true | false) "false" 573464ebd5Sriastradh img_width NMTOKEN #IMPLIED 583464ebd5Sriastradh img_height NMTOKEN #IMPLIED 593464ebd5Sriastradh img_depth NMTOKEN #IMPLIED 603464ebd5Sriastradh img_extent NMTOKEN #IMPLIED 613464ebd5Sriastradh img_xoff NMTOKEN #IMPLIED 623464ebd5Sriastradh img_yoff NMTOKEN #IMPLIED 633464ebd5Sriastradh img_zoff NMTOKEN #IMPLIED 643464ebd5Sriastradh img_woff NMTOKEN #IMPLIED 653464ebd5Sriastradh img_format NMTOKEN #IMPLIED 663464ebd5Sriastradh img_type NMTOKEN #IMPLIED 673464ebd5Sriastradh img_target NMTOKEN #IMPLIED 683464ebd5Sriastradh img_send_null (true | false) "false" 693464ebd5Sriastradh img_null_flag (true | false) "false" 703464ebd5Sriastradh img_pad_dimensions (true | false) "false" 713464ebd5Sriastradh variable_param NMTOKENS #IMPLIED> 723464ebd5Sriastradh<!ATTLIST return type CDATA "void"> 733464ebd5Sriastradh<!ATTLIST glx rop NMTOKEN #IMPLIED 743464ebd5Sriastradh sop NMTOKEN #IMPLIED 753464ebd5Sriastradh vendorpriv NMTOKEN #IMPLIED 763464ebd5Sriastradh large (true | false) "false" 773464ebd5Sriastradh doubles_in_order (true | false) "false" 783464ebd5Sriastradh always_array (true | false) "false" 793464ebd5Sriastradh handcode (true | false | client | server) "false" 803464ebd5Sriastradh img_reset NMTOKEN #IMPLIED 813464ebd5Sriastradh dimensions_in_reply (true | false) "false" 823464ebd5Sriastradh ignore (true | false) "false"> 833464ebd5Sriastradh 843464ebd5Sriastradh<!-- 853464ebd5SriastradhThe various attributes for param and glx have the meanings listed below. 863464ebd5SriastradhWhen adding new functions, please annote them correctly. In most cases this 873464ebd5Sriastradhwill just mean adding a '<glx ignore="true"/>' tag. 883464ebd5Sriastradh 893464ebd5Sriastradhparam: 903464ebd5Sriastradh name - name of the parameter 913464ebd5Sriastradh type - fully qualified type (e.g., with "const", etc.) 923464ebd5Sriastradh client_only - boolean flag set on parameters which are interpreted only 933464ebd5Sriastradh by the client and are not present in the protocol encoding (e.g., 943464ebd5Sriastradh the stride parameters to Map1f, etc.) 953464ebd5Sriastradh count - for counted arrays (e.g., the 'lists' parameter to glCallLists), 963464ebd5Sriastradh the parameter or literal that represents the count. For functions 9701e04c3fSmrg like glVertex3fv it will be a literal, for others it will be one of 983464ebd5Sriastradh the parameters. 993464ebd5Sriastradh counter - this parameter is a counter that will be referenced by the 1003464ebd5Sriastradh 'count' attribute in another parameter. 1013464ebd5Sriastradh count_scale - literal value scale factor for the 'count' attribute. 1023464ebd5Sriastradh See ProgramParameters4dvNV for an example. 1033464ebd5Sriastradh output - this parameter is used to store the output of the function. 1043464ebd5Sriastradh variable_param - name of parameter used to determine the number of 1053464ebd5Sriastradh elements referenced by this parameter. This should be the name of a 1063464ebd5Sriastradh single enum parameter. Most of the gl*Parameter[if]v functions use 1073464ebd5Sriastradh this. Additionally, the enums that can be passed should be properly 1083464ebd5Sriastradh annotated. 1093464ebd5Sriastradh img_width / img_height / img_depth / img_extent - name of parameters 1103464ebd5Sriastradh (or hardcoded integer) used for the dimensions of pixel data. 1113464ebd5Sriastradh img_xoff / img_yoff / img_zoff / img_woff - name of parameters used 1123464ebd5Sriastradh for x, y, z, and w offsets of pixel data. 1133464ebd5Sriastradh img_format - name of parameter used as the pixel data format. 1143464ebd5Sriastradh img_type - name of parameter used as the pixel data type. 1153464ebd5Sriastradh img_target - name of parameter used as a texture target. Non-texture 1163464ebd5Sriastradh pixel data should hardcode 0. 1173464ebd5Sriastradh img_send_null - boolean flag to determine if blank pixel data should 1183464ebd5Sriastradh be sent when a NULL pointer is passed. This is only used by 1193464ebd5Sriastradh TexImage1D and TexImage2D. 1203464ebd5Sriastradh img_null_flag - boolean flag to determine if an extra flag is used to 1213464ebd5Sriastradh determine if a NULL pixel pointer was passed. This is used by 1223464ebd5Sriastradh TexSubImage1D, TexSubImage2D, TexImage3D and others. 1233464ebd5Sriastradh img_pad_dimensions - boolean flag to determine if dimension data and 1243464ebd5Sriastradh offset data should be padded to the next even number of dimensions. 1253464ebd5Sriastradh For example, this will insert an empty "height" field after the 1263464ebd5Sriastradh "width" field in the protocol for TexImage1D. 1277ec681f3Smrg marshal - One of "sync", "async", or "custom", defaulting to 12801e04c3fSmrg async unless one of the arguments is something we know we can't 12901e04c3fSmrg codegen for. If "sync", we finish any queued glthread work and call 13001e04c3fSmrg the Mesa implementation directly. If "async", we queue the function 13101e04c3fSmrg call to be performed by glthread. If "custom", the prototype will be 13201e04c3fSmrg generated but a custom implementation will be present in marshal.c. 1337ec681f3Smrg marshal_sync - an expression that, if it evaluates true, causes glthread 1347ec681f3Smrg to sync and execute the call directly. 1357ec681f3Smrg marshal_count - same as count, but variable_param is ignored. Used by 1367ec681f3Smrg glthread. 1377ec681f3Smrg marshal_call_after - insert the string at the end of the marshal function 1383464ebd5Sriastradh 1393464ebd5Sriastradhglx: 1403464ebd5Sriastradh rop - Opcode value for "render" commands 1413464ebd5Sriastradh sop - Opcode value for "single" commands 1423464ebd5Sriastradh vendorpriv - Opcode value for vendor private (or vendor private with 1433464ebd5Sriastradh reply) commands 1443464ebd5Sriastradh large - set to "true" of the render command can use RenderLarge protocol. 1453464ebd5Sriastradh doubles_in_order - older commands always put GLdouble data at the 1463464ebd5Sriastradh start of the render packet. Newer commands (e.g., 1473464ebd5Sriastradh ProgramEnvParameter4dvARB) put the in the order that they appear 1483464ebd5Sriastradh in the parameter list. 1493464ebd5Sriastradh always_array - some single commands take reply data as an array or as 1503464ebd5Sriastradh return value data (e.g., glGetLightfv). Other single commands take 1513464ebd5Sriastradh reply data only as an array (e.g., glGetClipPlane). 1523464ebd5Sriastradh handcode - some functions are just too complicated to generate 1533464ebd5Sriastradh (e.g., glSeperableFilter2D) or operate only on client-side data 1543464ebd5Sriastradh (e.g., glVertexPointer) and must be handcoded. 1553464ebd5Sriastradh ignore - some functions have an entry in the dispatch table, but aren't 1563464ebd5Sriastradh suitable for protocol implementation (e.g., glLockArraysEXT). This 1573464ebd5Sriastradh also applies to functions that don't have any GLX protocol specified 1583464ebd5Sriastradh (e.g., glGetFogFuncSGIS). 1593464ebd5Sriastradh--> 160