summaryrefslogtreecommitdiffstats
path: root/src/mesa/glapi/gl_apitemp.py
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2006-10-11 22:37:14 +0000
committerIan Romanick <[email protected]>2006-10-11 22:37:14 +0000
commitf3f51bc844c8749250724d164722402cb9a07dc7 (patch)
tree68ccc40931c2d10f7a521d531609aeeb5b1637f9 /src/mesa/glapi/gl_apitemp.py
parent8a5871a98c23ce1a1d893b681f59dc8c42228dd1 (diff)
Fix bug #4681.
glDeleteTextures and glDeleteTexturesEXT were erroneously listed as aliases of each other. For anything /except/ GLX protocol they are aliases. This set of changes allows functions that are functionally identical but have different GLX protocol to be listed as aliases. When building with GLX_INDIRECT_RENDERING set, different static functions are used. These functions determine whether the current context is direct rendering or not. If the context is direct rendering, the aliased function (e.g., glDeleteTextures in the case of glDeleteTexturesEXT) is called. If the context is not direct rendering, the correct GLX protocol is sent. For a deeper explanation of what is changed, please see: http://dri.freedesktop.org/wiki/PartiallyAliasedFunctions
Diffstat (limited to 'src/mesa/glapi/gl_apitemp.py')
-rw-r--r--src/mesa/glapi/gl_apitemp.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/mesa/glapi/gl_apitemp.py b/src/mesa/glapi/gl_apitemp.py
index cb87dbd62b0..6e35571e143 100644
--- a/src/mesa/glapi/gl_apitemp.py
+++ b/src/mesa/glapi/gl_apitemp.py
@@ -25,7 +25,7 @@
# Authors:
# Ian Romanick <[email protected]>
-import gl_XML
+import gl_XML, glX_XML
import license
import sys, getopt
@@ -79,6 +79,9 @@ class PrintGlOffsets(gl_XML.gl_print_base):
else:
dispatch = "DISPATCH"
+ if f.has_different_protocol(name):
+ print '#ifndef GLX_INDIRECT_RENDERING'
+
if not f.is_static_entry_point(name):
print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name))
print ''
@@ -92,6 +95,8 @@ class PrintGlOffsets(gl_XML.gl_print_base):
print ' %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
% (dispatch, f.name, p_string, name, t_string, o_string)
print '}'
+ if f.has_different_protocol(name):
+ print '#endif /* GLX_INDIRECT_RENDERING */'
print ''
return
@@ -194,8 +199,14 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {"""
for n in f.entry_points:
if n != f.name:
if f.is_static_entry_point(n):
- print ' TABLE_ENTRY(%s),' % (n)
-
+ text = ' TABLE_ENTRY(%s),' % (n)
+
+ if f.has_different_protocol(n):
+ print '#ifndef GLX_INDIRECT_RENDERING'
+ print text
+ print '#endif'
+ else:
+ print text
print '};'
print '#endif /*UNUSED_TABLE_NAME*/'
print ''
@@ -233,7 +244,7 @@ if __name__ == '__main__':
if arg == "-f":
file_name = val
- api = gl_XML.parse_GL_API( file_name )
+ api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
printer = PrintGlOffsets()
printer.Print(api)