Updated the schema. Added comments explaining some of the non-obvious
authorIan Romanick <idr@us.ibm.com>
Thu, 2 Dec 2004 00:01:12 +0000 (00:01 +0000)
committerIan Romanick <idr@us.ibm.com>
Thu, 2 Dec 2004 00:01:12 +0000 (00:01 +0000)
attributes.  Modified a couple handcode functions to use the count_scale
attribute instead.

src/mesa/glapi/gl_API.xml

index 4844df6..bcd700a 100644 (file)
 <!ATTLIST param    name   CDATA #REQUIRED
                    type   CDATA #REQUIRED
                    count  CDATA #IMPLIED
+                   counter  CDATA #IMPLIED
+                   count_scale  CDATA #IMPLIED
+                   output   CDATA #IMPLIED
                    variable_param  CDATA #IMPLIED>
 <!ATTLIST return   type     CDATA #REQUIRED>
 <!ATTLIST glx      rop      CDATA #IMPLIED
                    sop      CDATA #IMPLIED
+                   vendorpriv  CDATA #IMPLIED
                    large    CDATA #IMPLIED
                    doubles_in_order CDATA #IMPLIED
                    always_array CDATA #IMPLIED
                    ignore   CDATA #IMPLIED>
 ]>
 
+<!--
+The various attributes for param and glx have the meanings listed below.
+When adding new functions, please annote them correct.  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.)
+     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 litteral, 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.
+
+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., glTexImage2D) 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).
+-->
+
 <OpenGLAPI>
 
 <!-- Core versions sorted by version number. -->
 <category name="GL_SGIS_sharpen_texture" number="22">
     <function name="SharpenTexFuncSGIS" offset="444">
         <param name="target" type="GLenum"/>
-        <param name="n" type="GLsizei"/>
-        <param name="points" type="const GLfloat *"/>
-
-        <!-- This is hand coded because the number of array elements
-             pointed to by 'points' is 2*n.
-        -->
-        <glx rop="2052" handcode="true" ignore="true"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="points" type="const GLfloat *" counter="n" count_scale="2"/>
+        <glx rop="2052" ignore="true"/>
     </function>
 
     <function name="GetSharpenTexFuncSGIS" offset="445">
 
 <category name="GL_SGIS_fog_function" number="64">
     <function name="FogFuncSGIS" offset="?">
-        <param name="n" type="GLsizei"/>
-        <param name="points" type="const GLfloat *"/>
-        <glx rop="2067" handcode="true"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="points" type="const GLfloat *" counter="n" count_scale="2"/>
+        <glx rop="2067" ignore="true"/>
     </function>
 
     <function name="GetFogFuncSGIS" offset="?">