Fix non-x86 specific builds. The changes from glTexImage3DEXT to

glTexImage3D that caused me so many problems during the re-development
of the API scripts reared its ugly head again.  This has been fixed by
tracking the parameter string for each entry-point individually.

This has the annoying side-effect that the names of the parameters in
all aliases of a function must be the same or gl_apitemp.py will
generate bad code. :(  The changes in
src/mesa/glapi/{gl_API.xml,glapitable.h} and src/glx/x11/* are caused
by fixing the parameter names in various function aliases that didn't
match.

Reported by: Eric Anholt, Jacob Jansen
This commit is contained in:
Ian Romanick 2005-06-24 18:35:31 +00:00
parent 3fb86eefe8
commit 5aafea03af
7 changed files with 131 additions and 123 deletions

View File

@ -6270,20 +6270,20 @@ __indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids, GLboolean * re
#define X_GLrop_BindProgramNV 4180 #define X_GLrop_BindProgramNV 4180
void void
__indirect_glBindProgramNV(GLenum target, GLuint id) __indirect_glBindProgramNV(GLenum target, GLuint program)
{ {
__GLXcontext * const gc = __glXGetCurrentContext(); __GLXcontext * const gc = __glXGetCurrentContext();
const GLuint cmdlen = 12; const GLuint cmdlen = 12;
emit_header(gc->pc, X_GLrop_BindProgramNV, cmdlen); emit_header(gc->pc, X_GLrop_BindProgramNV, cmdlen);
(void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4); (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
(void) memcpy((void *)(gc->pc + 8), (void *)(&id), 4); (void) memcpy((void *)(gc->pc + 8), (void *)(&program), 4);
gc->pc += cmdlen; gc->pc += cmdlen;
if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); } if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
} }
#define X_GLvop_DeleteProgramsNV 1294 #define X_GLvop_DeleteProgramsNV 1294
void void
__indirect_glDeleteProgramsNV(GLsizei n, const GLuint * ids) __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * programs)
{ {
__GLXcontext * const gc = __glXGetCurrentContext(); __GLXcontext * const gc = __glXGetCurrentContext();
Display * const dpy = gc->currentDpy; Display * const dpy = gc->currentDpy;
@ -6291,7 +6291,7 @@ __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * ids)
if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) { if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivate, X_GLvop_DeleteProgramsNV, cmdlen); GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivate, X_GLvop_DeleteProgramsNV, cmdlen);
(void) memcpy((void *)(pc + 0), (void *)(&n), 4); (void) memcpy((void *)(pc + 0), (void *)(&n), 4);
(void) memcpy((void *)(pc + 4), (void *)(ids), (n * 4)); (void) memcpy((void *)(pc + 4), (void *)(programs), (n * 4));
UnlockDisplay(dpy); SyncHandle(); UnlockDisplay(dpy); SyncHandle();
} }
return; return;
@ -6313,7 +6313,7 @@ __indirect_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params)
#define X_GLvop_GenProgramsNV 1295 #define X_GLvop_GenProgramsNV 1295
void void
__indirect_glGenProgramsNV(GLsizei n, GLuint * ids) __indirect_glGenProgramsNV(GLsizei n, GLuint * programs)
{ {
__GLXcontext * const gc = __glXGetCurrentContext(); __GLXcontext * const gc = __glXGetCurrentContext();
Display * const dpy = gc->currentDpy; Display * const dpy = gc->currentDpy;
@ -6321,7 +6321,7 @@ __indirect_glGenProgramsNV(GLsizei n, GLuint * ids)
if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) { if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GenProgramsNV, cmdlen); GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GenProgramsNV, cmdlen);
(void) memcpy((void *)(pc + 0), (void *)(&n), 4); (void) memcpy((void *)(pc + 0), (void *)(&n), 4);
(void) __glXReadReply(dpy, 4, ids, GL_FALSE); (void) __glXReadReply(dpy, 4, programs, GL_FALSE);
UnlockDisplay(dpy); SyncHandle(); UnlockDisplay(dpy); SyncHandle();
} }
return; return;
@ -6417,7 +6417,7 @@ __indirect_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLi
#define X_GLvop_IsProgramNV 1304 #define X_GLvop_IsProgramNV 1304
GLboolean GLboolean
__indirect_glIsProgramNV(GLuint id) __indirect_glIsProgramNV(GLuint program)
{ {
__GLXcontext * const gc = __glXGetCurrentContext(); __GLXcontext * const gc = __glXGetCurrentContext();
Display * const dpy = gc->currentDpy; Display * const dpy = gc->currentDpy;
@ -6425,7 +6425,7 @@ __indirect_glIsProgramNV(GLuint id)
const GLuint cmdlen = 4; const GLuint cmdlen = 4;
if (__builtin_expect(dpy != NULL, 1)) { if (__builtin_expect(dpy != NULL, 1)) {
GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_IsProgramNV, cmdlen); GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_IsProgramNV, cmdlen);
(void) memcpy((void *)(pc + 0), (void *)(&id), 4); (void) memcpy((void *)(pc + 0), (void *)(&program), 4);
retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE); retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
UnlockDisplay(dpy); SyncHandle(); UnlockDisplay(dpy); SyncHandle();
} }
@ -7144,13 +7144,13 @@ __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v)
#define X_GLrop_PointParameteriNV 4221 #define X_GLrop_PointParameteriNV 4221
void void
__indirect_glPointParameteriNV(GLenum pname, GLint params) __indirect_glPointParameteriNV(GLenum pname, GLint param)
{ {
__GLXcontext * const gc = __glXGetCurrentContext(); __GLXcontext * const gc = __glXGetCurrentContext();
const GLuint cmdlen = 12; const GLuint cmdlen = 12;
emit_header(gc->pc, X_GLrop_PointParameteriNV, cmdlen); emit_header(gc->pc, X_GLrop_PointParameteriNV, cmdlen);
(void) memcpy((void *)(gc->pc + 4), (void *)(&pname), 4); (void) memcpy((void *)(gc->pc + 4), (void *)(&pname), 4);
(void) memcpy((void *)(gc->pc + 8), (void *)(&params), 4); (void) memcpy((void *)(gc->pc + 8), (void *)(&param), 4);
gc->pc += cmdlen; gc->pc += cmdlen;
if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); } if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
} }

View File

@ -543,10 +543,10 @@ extern HIDDEN void __indirect_glSecondaryColor3usEXT(GLushort red, GLushort gree
extern HIDDEN void __indirect_glSecondaryColor3usvEXT(const GLushort * v); extern HIDDEN void __indirect_glSecondaryColor3usvEXT(const GLushort * v);
extern HIDDEN void __indirect_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); extern HIDDEN void __indirect_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN GLboolean __indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids, GLboolean * residences); extern HIDDEN GLboolean __indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids, GLboolean * residences);
extern HIDDEN void __indirect_glBindProgramNV(GLenum target, GLuint id); extern HIDDEN void __indirect_glBindProgramNV(GLenum target, GLuint program);
extern HIDDEN void __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * ids); extern HIDDEN void __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * programs);
extern HIDDEN void __indirect_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params); extern HIDDEN void __indirect_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params);
extern HIDDEN void __indirect_glGenProgramsNV(GLsizei n, GLuint * ids); extern HIDDEN void __indirect_glGenProgramsNV(GLsizei n, GLuint * programs);
extern HIDDEN void __indirect_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params); extern HIDDEN void __indirect_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params); extern HIDDEN void __indirect_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetProgramivNV(GLuint id, GLenum pname, GLint * params); extern HIDDEN void __indirect_glGetProgramivNV(GLuint id, GLenum pname, GLint * params);
@ -555,8 +555,8 @@ extern HIDDEN void __indirect_glGetTrackMatrixivNV(GLenum target, GLuint address
extern HIDDEN void __indirect_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params); extern HIDDEN void __indirect_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params); extern HIDDEN void __indirect_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params); extern HIDDEN void __indirect_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid ** pointer); extern HIDDEN void __indirect_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid ** params);
extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint id); extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint program);
extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program); extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
extern HIDDEN void __indirect_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); extern HIDDEN void __indirect_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble * params); extern HIDDEN void __indirect_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble * params);
@ -606,7 +606,7 @@ extern HIDDEN void __indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, cons
extern HIDDEN void __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v); extern HIDDEN void __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v); extern HIDDEN void __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v); extern HIDDEN void __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v);
extern HIDDEN void __indirect_glPointParameteriNV(GLenum pname, GLint params); extern HIDDEN void __indirect_glPointParameteriNV(GLenum pname, GLint param);
extern HIDDEN void __indirect_glPointParameterivNV(GLenum pname, const GLint * params); extern HIDDEN void __indirect_glPointParameterivNV(GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); extern HIDDEN void __indirect_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
extern HIDDEN void __indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); extern HIDDEN void __indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount);

View File

@ -5888,19 +5888,19 @@
</function> </function>
<function name="WindowPos2dvARB" alias="WindowPos2dvMESA"> <function name="WindowPos2dvARB" alias="WindowPos2dvMESA">
<param name="p" type="const GLdouble *"/> <param name="v" type="const GLdouble *"/>
</function> </function>
<function name="WindowPos2fvARB" alias="WindowPos2fvMESA"> <function name="WindowPos2fvARB" alias="WindowPos2fvMESA">
<param name="p" type="const GLfloat *"/> <param name="v" type="const GLfloat *"/>
</function> </function>
<function name="WindowPos2ivARB" alias="WindowPos2ivMESA"> <function name="WindowPos2ivARB" alias="WindowPos2ivMESA">
<param name="p" type="const GLint *"/> <param name="v" type="const GLint *"/>
</function> </function>
<function name="WindowPos2svARB" alias="WindowPos2svMESA"> <function name="WindowPos2svARB" alias="WindowPos2svMESA">
<param name="p" type="const GLshort *"/> <param name="v" type="const GLshort *"/>
</function> </function>
<function name="WindowPos3dARB" alias="WindowPos3dMESA"> <function name="WindowPos3dARB" alias="WindowPos3dMESA">
@ -5928,19 +5928,19 @@
</function> </function>
<function name="WindowPos3dvARB" alias="WindowPos3dvMESA"> <function name="WindowPos3dvARB" alias="WindowPos3dvMESA">
<param name="p" type="const GLdouble *"/> <param name="v" type="const GLdouble *"/>
</function> </function>
<function name="WindowPos3fvARB" alias="WindowPos3fvMESA"> <function name="WindowPos3fvARB" alias="WindowPos3fvMESA">
<param name="p" type="const GLfloat *"/> <param name="v" type="const GLfloat *"/>
</function> </function>
<function name="WindowPos3ivARB" alias="WindowPos3ivMESA"> <function name="WindowPos3ivARB" alias="WindowPos3ivMESA">
<param name="p" type="const GLint *"/> <param name="v" type="const GLint *"/>
</function> </function>
<function name="WindowPos3svARB" alias="WindowPos3svMESA"> <function name="WindowPos3svARB" alias="WindowPos3svMESA">
<param name="p" type="const GLshort *"/> <param name="v" type="const GLshort *"/>
</function> </function>
</category> </category>
@ -8412,7 +8412,7 @@
<function name="ColorTableEXT" alias="ColorTable"> <function name="ColorTableEXT" alias="ColorTable">
<param name="target" type="GLenum"/> <param name="target" type="GLenum"/>
<param name="internalFormat" type="GLenum"/> <param name="internalformat" type="GLenum"/>
<param name="width" type="GLsizei"/> <param name="width" type="GLsizei"/>
<param name="format" type="GLenum"/> <param name="format" type="GLenum"/>
<param name="type" type="GLenum"/> <param name="type" type="GLenum"/>
@ -10427,13 +10427,13 @@
<function name="BindProgramNV" offset="579"> <function name="BindProgramNV" offset="579">
<param name="target" type="GLenum"/> <param name="target" type="GLenum"/>
<param name="id" type="GLuint"/> <param name="program" type="GLuint"/>
<glx rop="4180"/> <glx rop="4180"/>
</function> </function>
<function name="DeleteProgramsNV" offset="580"> <function name="DeleteProgramsNV" offset="580">
<param name="n" type="GLsizei" counter="true"/> <param name="n" type="GLsizei" counter="true"/>
<param name="ids" type="const GLuint *" count="n"/> <param name="programs" type="const GLuint *" count="n"/>
<glx vendorpriv="1294"/> <glx vendorpriv="1294"/>
</function> </function>
@ -10446,7 +10446,7 @@
<function name="GenProgramsNV" offset="582"> <function name="GenProgramsNV" offset="582">
<param name="n" type="GLsizei" counter="true"/> <param name="n" type="GLsizei" counter="true"/>
<param name="ids" type="GLuint *" output="true" count="n"/> <param name="programs" type="GLuint *" output="true" count="n"/>
<glx vendorpriv="1295"/> <glx vendorpriv="1295"/>
</function> </function>
@ -10518,12 +10518,12 @@
<function name="GetVertexAttribPointervNV" offset="591"> <function name="GetVertexAttribPointervNV" offset="591">
<param name="index" type="GLuint"/> <param name="index" type="GLuint"/>
<param name="pname" type="GLenum"/> <param name="pname" type="GLenum"/>
<param name="pointer" type="GLvoid **" output="true"/> <param name="params" type="GLvoid **" output="true"/>
<glx handcode="true"/> <glx handcode="true"/>
</function> </function>
<function name="IsProgramNV" offset="592"> <function name="IsProgramNV" offset="592">
<param name="id" type="GLuint"/> <param name="program" type="GLuint"/>
<return type="GLboolean"/> <return type="GLboolean"/>
<glx vendorpriv="1304"/> <glx vendorpriv="1304"/>
</function> </function>
@ -11092,7 +11092,7 @@
<function name="PointParameteriNV" offset="642"> <function name="PointParameteriNV" offset="642">
<param name="pname" type="GLenum"/> <param name="pname" type="GLenum"/>
<param name="params" type="GLint"/> <param name="param" type="GLint"/>
<glx rop="4221"/> <glx rop="4221"/>
</function> </function>

View File

@ -269,18 +269,30 @@ def real_function_name(element):
return name return name
def real_category_name(c):
if re.compile("[1-9][0-9]*[.][0-9]+").match(c):
return "GL_VERSION_" + c.replace(".", "_")
else:
return c
def create_parameter_string(parameters):
"""Create a parameter string from a list of gl_parameters."""
list = []
for p in parameters:
list.append( p.string() )
if len(list) == 0: list = ["void"]
return string.join(list, ", ")
class gl_item: class gl_item:
def __init__(self, element, context): def __init__(self, element, context):
self.context = context self.context = context
self.name = element.nsProp( "name", None ) self.name = element.nsProp( "name", None )
self.category = real_category_name( element.parent.nsProp( "name", None ) )
c = element.parent.nsProp( "name", None )
if re.compile("[1-9][0-9]*[.][0-9]+").match(c):
self.category = "GL_VERSION_" + c.replace(".", "_")
else:
self.category = c
return return
@ -554,9 +566,20 @@ class gl_function( gl_item ):
self.return_type = "void" self.return_type = "void"
self.parameters = [] self.parameters = []
self.offset = -1 self.offset = -1
self.uninitialized = 1 self.initialized = 0
self.images = [] self.images = []
# Track the parameter string (for the function prototype)
# for each entry-point. This is done because some functions
# change their prototype slightly when promoted from extension
# to ARB extension to core. glTexImage3DEXT and glTexImage3D
# are good examples of this. Scripts that need to generate
# code for these differing aliases need to real prototype
# for each entry-point. Otherwise, they may generate code
# that won't compile.
self.parameter_strings = {}
self.process_element( element ) self.process_element( element )
return return
@ -591,37 +614,30 @@ class gl_function( gl_item ):
# There are two possible cases. The first time an entry-point # There are two possible cases. The first time an entry-point
# with data is seen, self.uninitialzied will be 1. On that # with data is seen, self.initialized will be 0. On that
# pass, we just fill in the data. The next time an # pass, we just fill in the data. The next time an
# entry-point with data is seen, self.uninitialized will be 0. # entry-point with data is seen, self.initialized will be 1.
# On that pass we have to make that the new values match the # On that pass we have to make that the new values match the
# valuse from the previous entry-point. # valuse from the previous entry-point.
child = element.children
if self.uninitialized:
while child:
if child.type == "element":
if child.name == "return":
self.return_type = child.nsProp( "type", None )
elif child.name == "param":
param = self.context.factory.create_item( "parameter", child, self.context)
self.parameters.append( param )
child = child.next
else:
parameters = [] parameters = []
return_type = "void"
child = element.children
while child: while child:
if child.type == "element": if child.type == "element":
if child.name == "return": if child.name == "return":
return_type = child.nsProp( "type", None ) return_type = child.nsProp( "type", None )
if self.return_type != return_type:
raise RuntimeError( "Return type changed in %s. Was %s, now %s." % (name, self.return_type, return_type))
elif child.name == "param": elif child.name == "param":
param = self.context.factory.create_item( "parameter", child, self.context) param = self.context.factory.create_item( "parameter", child, self.context)
parameters.append( param ) parameters.append( param )
child = child.next child = child.next
if self.initialized:
if self.return_type != return_type:
raise RuntimeError( "Return type changed in %s. Was %s, now %s." % (name, self.return_type, return_type))
if len(parameters) != len(self.parameters): if len(parameters) != len(self.parameters):
raise RuntimeError( "Parameter count mismatch in %s. Was %d, now %d." % (name, len(self.parameters), len(parameters))) raise RuntimeError( "Parameter count mismatch in %s. Was %d, now %d." % (name, len(self.parameters), len(parameters)))
@ -632,26 +648,19 @@ class gl_function( gl_item ):
raise RuntimeError( 'Parameter type mismatch in %s. "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string, p1.type_expr.original_string)) raise RuntimeError( 'Parameter type mismatch in %s. "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string, p1.type_expr.original_string))
# This is done becuase we may hit an alias before we if true_name == name or not self.initialized:
# hit the "real" entry. The aliases may not have all self.return_type = return_type
# of the parameter information (e.g., counter,
# variable_param, etc. fields) required to generate
# GLX code.
if true_name == name:
self.parameters = parameters self.parameters = parameters
for param in self.parameters: for param in self.parameters:
if param.is_image(): if param.is_image():
self.images.append( param ) self.images.append( param )
if true_name == name:
for param in self.parameters:
if param.is_image():
self.images.append( param )
if element.children: if element.children:
self.uninitialized = 0 self.initialized = 1
self.parameter_strings[name] = create_parameter_string(parameters)
else:
self.parameter_strings[name] = None
return return
@ -665,15 +674,13 @@ class gl_function( gl_item ):
return self.parameters.__iter__(); return self.parameters.__iter__();
def get_parameter_string(self): def get_parameter_string(self, entrypoint = None):
list = [] if entrypoint:
for p in self.parameters: s = self.parameter_strings[ entrypoint ]
list.append( p.string() ) if s:
return s
if len(list) == 0: return create_parameter_string( self.parameters )
return "void"
else:
return string.join(list, ", ")
class gl_item_factory: class gl_item_factory:
@ -741,6 +748,9 @@ class gl_api:
if child.name == "function": if child.name == "function":
func_name = real_function_name( child ) func_name = real_function_name( child )
temp_name = child.nsProp( "name", None )
self.category_dict[ temp_name ] = [cat_name, cat_number]
if self.functions_by_name.has_key( func_name ): if self.functions_by_name.has_key( func_name ):
func = self.functions_by_name[ func_name ] func = self.functions_by_name[ func_name ]
func.process_element( child ) func.process_element( child )
@ -748,8 +758,6 @@ class gl_api:
func = self.factory.create_item( "function", child, self ) func = self.factory.create_item( "function", child, self )
self.functions_by_name[ func_name ] = func self.functions_by_name[ func_name ] = func
if func_name == child.nsProp("name", None):
self.category_dict[ func.name ] = [cat_name, cat_number]
elif child.name == "enum": elif child.name == "enum":
enum = self.factory.create_item( "enum", child, self ) enum = self.factory.create_item( "enum", child, self )

View File

@ -72,7 +72,7 @@ class PrintGlOffsets(gl_XML.gl_print_base):
dispatch = "DISPATCH" dispatch = "DISPATCH"
print 'KEYWORD1 %s KEYWORD2 NAME(%s)(%s)' \ print 'KEYWORD1 %s KEYWORD2 NAME(%s)(%s)' \
% (f.return_type, name, f.get_parameter_string()) % (f.return_type, name, f.get_parameter_string(name))
print '{' print '{'
if p_string == "": if p_string == "":
print ' %s(%s, (), (F, "gl%s();\\n"));' \ print ' %s(%s, (), (F, "gl%s();\\n"));' \

View File

@ -614,10 +614,10 @@ struct _glapi_table
void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 576 */ void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 576 */
void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 577 */ void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 577 */
GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 578 */ GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 578 */
void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint id); /* 579 */ void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 579 */
void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * ids); /* 580 */ void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 580 */
void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 581 */ void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 581 */
void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * ids); /* 582 */ void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 582 */
void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 583 */ void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 583 */
void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 584 */ void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 584 */
void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 585 */ void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 585 */
@ -626,8 +626,8 @@ struct _glapi_table
void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 588 */ void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 588 */
void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 589 */ void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 589 */
void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 590 */ void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 590 */
void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 591 */ void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** params); /* 591 */
GLboolean (GLAPIENTRYP IsProgramNV)(GLuint id); /* 592 */ GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 592 */
void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 593 */ void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 593 */
void (GLAPIENTRYP ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 594 */ void (GLAPIENTRYP ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 594 */
void (GLAPIENTRYP ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params); /* 595 */ void (GLAPIENTRYP ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params); /* 595 */
@ -677,7 +677,7 @@ struct _glapi_table
void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 639 */ void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 639 */
void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 640 */ void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 640 */
void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 641 */ void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 641 */
void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint params); /* 642 */ void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 642 */
void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 643 */ void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 643 */
void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); /* 644 */ void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); /* 644 */
void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 645 */ void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 645 */

View File

@ -2105,7 +2105,7 @@ KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint intern
DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels)); DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
} }
KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
{ {
DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels)); DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
} }
@ -3710,24 +3710,24 @@ KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint
RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences)); RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
} }
KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint id) KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program)
{ {
DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramARB(0x%x, %d);\n", target, id)); DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program));
} }
KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id) KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint program)
{ {
DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);\n", target, id)); DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramNV(0x%x, %d);\n", target, program));
} }
KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * ids) KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * programs)
{ {
DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) ids)); DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) programs));
} }
KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids) KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * programs)
{ {
DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) ids)); DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) programs));
} }
KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params) KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
@ -3735,14 +3735,14 @@ KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GL
DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params)); DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
} }
KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * ids) KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * programs)
{ {
DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) ids)); DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) programs));
} }
KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids) KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * programs)
{ {
DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) ids)); DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) programs));
} }
KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params) KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
@ -3785,24 +3785,24 @@ KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GL
DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params)); DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
} }
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** pointer) KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** params)
{ {
DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) pointer)); DISPATCH(GetVertexAttribPointervNV, (index, pname, params), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
} }
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer) KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** params)
{ {
DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer)); DISPATCH(GetVertexAttribPointervNV, (index, pname, params), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
} }
KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint id) KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint program)
{ {
RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramARB(%d);\n", id)); RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program));
} }
KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id) KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint program)
{ {
RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);\n", id)); RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramNV(%d);\n", program));
} }
KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program) KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
@ -4050,14 +4050,14 @@ KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const
DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v)); DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
} }
KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint params) KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint param)
{ {
DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteri(0x%x, %d);\n", pname, params)); DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteri(0x%x, %d);\n", pname, param));
} }
KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint params) KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint param)
{ {
DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteriNV(0x%x, %d);\n", pname, params)); DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteriNV(0x%x, %d);\n", pname, param));
} }
KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params) KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
@ -4310,7 +4310,7 @@ KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer)); DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
} }
KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)
{ {
DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage)); DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
} }
@ -4320,7 +4320,7 @@ KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, co
DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage)); DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
} }
KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)
{ {
DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
} }
@ -4370,7 +4370,7 @@ KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, G
DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
} }
KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data) KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)
{ {
DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
} }