Slightly modify the meaning of the 'handcode' attribute in a 'glx' element.
authorIan Romanick <idr@us.ibm.com>
Fri, 28 Jan 2005 17:30:25 +0000 (17:30 +0000)
committerIan Romanick <idr@us.ibm.com>
Fri, 28 Jan 2005 17:30:25 +0000 (17:30 +0000)
The attribute can now take one of 4 states.  "false" (the default value)
means that no handcoding is required for the function.  "client" means that
the function must be handcoded on the client-side only.  "server" means that
the function must be handcoded on the server-side only.  "true" menas that
the function must be handcoded on both the client-side and the server-side.

Version 1.14 of glX_proto_send.py accidentally contained a line of this
change.

src/mesa/glapi/glX_XML.py
src/mesa/glapi/glX_doc.py
src/mesa/glapi/gl_API.xml

index df3e6bb..6eb2f55 100644 (file)
@@ -328,8 +328,6 @@ class glXFunction(gl_XML.glFunction):
        glx_doubles_in_order = 0
 
        vectorequiv = None
-       handcode = 0
-       ignore = 0
        can_be_large = 0
 
        def __init__(self, context, name, attrs):
@@ -340,6 +338,10 @@ class glXFunction(gl_XML.glFunction):
                self.can_be_large = 0
                self.reply_always_array = 0
 
+               self.server_handcode = 0
+               self.client_handcode = 0
+               self.ignore = 0
+
                gl_XML.glFunction.__init__(self, context, name, attrs)
                return
 
@@ -356,10 +358,25 @@ class glXFunction(gl_XML.glFunction):
                        self.glx_sop = int(attrs.get('sop', "0"))
                        self.glx_vendorpriv = int(attrs.get('vendorpriv', "0"))
 
-                       if attrs.get('handcode', "false") == "true":
-                               self.handcode = 1
+                       # The 'handcode' attribute can be one of 'true',
+                       # 'false', 'client', or 'server'.
+
+                       handcode = attrs.get('handcode', "false")
+                       if handcode == "false":
+                               self.server_handcode = 0
+                               self.client_handcode = 0
+                       elif handcode == "true":
+                               self.server_handcode = 1
+                               self.client_handcode = 1
+                       elif handcode == "client":
+                               self.server_handcode = 0
+                               self.client_handcode = 1
+                       elif handcode == "server":
+                               self.server_handcode = 1
+                               self.client_handcode = 0
                        else:
-                               self.handcode = 0
+                               raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name))
+
 
                        if attrs.get('ignore', "false") == "true":
                                self.ignore = 1
@@ -395,7 +412,7 @@ class glXFunction(gl_XML.glFunction):
                        # This will also mark functions that don't have a
                        # dispatch offset at ignored.
 
-                       if (self.fn_offset == -1 and not self.fn_alias) or not (self.handcode or self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.fn_alias):
+                       if (self.fn_offset == -1 and not self.fn_alias) or not (self.client_handcode or self.server_handcode or self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.fn_alias):
                                #if not self.ignore:
                                #       if self.fn_offset == -1:
                                #               print '/* %s ignored becuase no offset assigned. */' % (self.name)
index 3755dbe..8a2ecb7 100644 (file)
@@ -234,7 +234,7 @@ class PrintGlxProtoText(glX_XML.GlxProto):
                # At some point this should be expanded to support pixel
                # functions, but I'm not going to lose any sleep over it now.
 
-               if f.fn_offset < 0 or f.handcode or f.ignore or f.vectorequiv or f.image:
+               if f.fn_offset < 0 or f.client_handcode or f.server_handcode or f.ignore or f.vectorequiv or f.image:
                        return
 
                print '        %s' % (f.name)
index 5f9c83c..d3c4d81 100644 (file)
@@ -2064,12 +2064,12 @@ glx:
 
     <function name="Disable" offset="214">
         <param name="cap" type="GLenum"/>
-        <glx rop="138" handcode="true"/>
+        <glx rop="138" handcode="client"/>
     </function>
 
     <function name="Enable" offset="215">
         <param name="cap" type="GLenum"/>
-        <glx rop="139" handcode="true"/>
+        <glx rop="139" handcode="client"/>
     </function>
 
     <function name="Finish" offset="216">
@@ -2293,13 +2293,13 @@ glx:
     <function name="PixelStoref" offset="249">
         <param name="pname" type="GLenum"/>
         <param name="param" type="GLfloat"/>
-        <glx sop="109" handcode="true"/>
+        <glx sop="109" handcode="client"/>
     </function>
 
     <function name="PixelStorei" offset="250">
         <param name="pname" type="GLenum"/>
         <param name="param" type="GLint"/>
-        <glx sop="110" handcode="true"/>
+        <glx sop="110" handcode="client"/>
     </function>
 
     <function name="PixelMapfv" offset="251">
@@ -2360,7 +2360,7 @@ glx:
     <function name="GetBooleanv" offset="258">
         <param name="pname" type="GLenum"/>
         <param name="params" type="GLboolean *" output="true"/>
-        <glx sop="112" handcode="true"/>
+        <glx sop="112" handcode="client"/>
     </function>
 
     <function name="GetClipPlane" offset="259">
@@ -2372,24 +2372,24 @@ glx:
     <function name="GetDoublev" offset="260">
         <param name="pname" type="GLenum"/>
         <param name="params" type="GLdouble *" output="true"/>
-        <glx sop="114" handcode="true"/>
+        <glx sop="114" handcode="client"/>
     </function>
 
     <function name="GetError" offset="261">
         <return type="GLenum"/>
-        <glx sop="115" handcode="true"/>
+        <glx sop="115" handcode="client"/>
     </function>
 
     <function name="GetFloatv" offset="262">
         <param name="pname" type="GLenum"/>
         <param name="params" type="GLfloat *" output="true"/>
-        <glx sop="116" handcode="true"/>
+        <glx sop="116" handcode="client"/>
     </function>
 
     <function name="GetIntegerv" offset="263">
         <param name="pname" type="GLenum"/>
         <param name="params" type="GLint *" output="true"/>
-        <glx sop="117" handcode="true"/>
+        <glx sop="117" handcode="client"/>
     </function>
 
     <function name="GetLightfv" offset="264">
@@ -2547,7 +2547,7 @@ glx:
     <function name="IsEnabled" offset="286">
         <param name="cap" type="GLenum"/>
         <return type="GLboolean"/>
-        <glx sop="140" handcode="true"/>
+        <glx sop="140" handcode="client"/>
     </function>
 
     <function name="IsList" offset="287">
@@ -2827,7 +2827,7 @@ glx:
         <param name="mode" type="GLenum"/>
         <param name="first" type="GLint"/>
         <param name="count" type="GLsizei"/>
-        <glx handcode="true"/>
+        <glx rop="193" handcode="true"/>
     </function>
 
     <function name="DrawElements" offset="311">
@@ -4887,7 +4887,7 @@ glx:
         <param name="border" type="GLint"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="216" handcode="true"/>
+        <glx rop="216" handcode="client"/>
     </function>
 
     <function name="CompressedTexImage2DARB" offset="555">
@@ -4899,7 +4899,7 @@ glx:
         <param name="border" type="GLint"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="215" handcode="true"/>
+        <glx rop="215" handcode="client"/>
     </function>
 
     <function name="CompressedTexImage1DARB" offset="556">
@@ -4910,7 +4910,7 @@ glx:
         <param name="border" type="GLint"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="214" handcode="true"/>
+        <glx rop="214" handcode="client"/>
     </function>
 
     <function name="CompressedTexSubImage3DARB" offset="557">
@@ -4925,7 +4925,7 @@ glx:
         <param name="format" type="GLenum"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="219" handcode="true"/>
+        <glx rop="219" handcode="client"/>
     </function>
 
     <function name="CompressedTexSubImage2DARB" offset="558">
@@ -4938,7 +4938,7 @@ glx:
         <param name="format" type="GLenum"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="218" handcode="true"/>
+        <glx rop="218" handcode="client"/>
     </function>
 
     <function name="CompressedTexSubImage1DARB" offset="559">
@@ -4949,7 +4949,7 @@ glx:
         <param name="format" type="GLenum"/>
         <param name="imageSize" type="GLsizei"/>
         <param name="data" type="const GLvoid *"/>
-        <glx rop="217" handcode="true"/>
+        <glx rop="217" handcode="client"/>
     </function>
 
     <function name="GetCompressedTexImageARB" offset="560">