Fix bug #4681.
[mesa.git] / src / mesa / glapi / gl_x86_asm.py
index 3ce8404f8c9984e827b6d40a316e5f7965e2144b..977e0329cc56ea3b5b0c99aab92b3023a9466dc4 100644 (file)
@@ -25,7 +25,8 @@
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML, license
+import license
+import gl_XML, glX_XML
 import sys, getopt
 
 class PrintGenericStubs(gl_XML.gl_print_base):
@@ -197,35 +198,33 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 
        def printBody(self, api):
                for f in api.functionIterateByOffset():
-                       if f.static_dispatch:
-                               name = f.name
-                       else:
-                               name = "_dispatch_stub_%u" % (f.offset)
-
+                       name = f.dispatch_name()
                        stack = self.get_stack_size(f)
-
                        alt = "%s@%u" % (name, stack)
+
                        print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt)
 
-                       if not f.static_dispatch:
+                       if not f.is_static_entry_point(f.name):
                                print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
 
 
                for f in api.functionIterateByOffset():
-                       if f.static_dispatch:
-                               name = f.name
-                       else:
-                               name = "_dispatch_stub_%u" % (f.offset)
-
+                       name = f.dispatch_name()
                        stack = self.get_stack_size(f)
-
                        alt = "%s@%u" % (name, stack)
 
-                       if f.static_dispatch:
+                       if f.is_static_entry_point(f.name):
                                for n in f.entry_points:
                                        if n != f.name:
                                                alt2 = "%s@%u" % (n, stack)
-                                               print '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, f.name, alt)
+                                               text = '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, f.name, alt)
+
+                                               if f.has_different_protocol(n):
+                                                       print '#ifndef GLX_INDIRECT_RENDERING'
+                                                       print text
+                                                       print '#endif'
+                                               else:
+                                                       print text
 
                return
 
@@ -254,6 +253,5 @@ if __name__ == '__main__':
                print "ERROR: Invalid mode \"%s\" specified." % mode
                show_usage()
 
-       api = gl_XML.parse_GL_API( file_name )
-
-       printer.Print( api )
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+       printer.Print(api)