dispatch: properly handle parameter name mismatches in glapitemp.h.

Previously, when code-generating aliased functions in glapitemp.h, we
weren't consistent about which function alias we used to obtain the
parameter names, with the risk that we would generate incorrect code
like this:

  KEYWORD1 void KEYWORD2 NAME(Foo)(GLint x)
  {
    (void) x;
    DISPATCH(Foo, (x), (F, "glFoo(%d);\n", x));
  }
  KEYWORD1 void KEYWORD2 NAME(FooEXT)(GLint y)
  {
    (void) x;
    DISPATCH(Foo, (x), (F, "glFooEXT(%d);\n", x));
  }

At the moment there are no aliased functions with mismatched parameter
names, so this isn't the problem.  But when we introduce GLES1
functions into the dispatch table, there will be
(MapBufferRange/MapBufferRangeEXT).  This patch paves the way for that
by fixing the code generation script to handle the mismatch correctly.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
Paul Berry
2012-10-30 08:45:29 -07:00
parent 33e0004720
commit 571d5c353a
2 changed files with 6 additions and 3 deletions
+5 -2
View File
@@ -757,8 +757,11 @@ class gl_function( gl_item ):
return self.images
def parameterIterator(self):
return self.parameters.__iter__();
def parameterIterator(self, name = None):
if name is not None:
return self.entry_point_parameters[name].__iter__();
else:
return self.parameters.__iter__();
def get_parameter_string(self, entrypoint = None):
+1 -1
View File
@@ -66,7 +66,7 @@ class PrintGlOffsets(gl_XML.gl_print_base):
silence = ''
space = ''
for p in f.parameterIterator():
for p in f.parameterIterator(name):
if p.is_padding:
continue