diff options
Diffstat (limited to 'src/mesa/glapi')
-rw-r--r-- | src/mesa/glapi/APPLE_vertex_array_object.xml | 8 | ||||
-rw-r--r-- | src/mesa/glapi/gl_API.dtd | 1 | ||||
-rw-r--r-- | src/mesa/glapi/gl_API.xml | 4 | ||||
-rw-r--r-- | src/mesa/glapi/gl_SPARC_asm.py | 21 | ||||
-rw-r--r-- | src/mesa/glapi/gl_XML.py | 2 | ||||
-rw-r--r-- | src/mesa/glapi/gl_apitemp.py | 42 | ||||
-rw-r--r-- | src/mesa/glapi/gl_procs.py | 22 | ||||
-rw-r--r-- | src/mesa/glapi/gl_x86-64_asm.py | 22 | ||||
-rw-r--r-- | src/mesa/glapi/gl_x86_asm.py | 29 | ||||
-rw-r--r-- | src/mesa/glapi/glapi.c | 1 | ||||
-rw-r--r-- | src/mesa/glapi/glapitemp.h | 48 | ||||
-rw-r--r-- | src/mesa/glapi/glprocs.h | 22 |
12 files changed, 169 insertions, 53 deletions
diff --git a/src/mesa/glapi/APPLE_vertex_array_object.xml b/src/mesa/glapi/APPLE_vertex_array_object.xml index 3c0c1cc57f..0d871563d0 100644 --- a/src/mesa/glapi/APPLE_vertex_array_object.xml +++ b/src/mesa/glapi/APPLE_vertex_array_object.xml @@ -5,21 +5,21 @@ <category name="GL_APPLE_vertex_array_object" number="273"> <enum name="VERTEX_ARRAY_BINDING_APPLE" value="0x85B5"/> - <function name="BindVertexArrayAPPLE" offset="819"> + <function name="BindVertexArrayAPPLE" offset="819" static_dispatch="false"> <param name="array" type="GLuint"/> </function> - <function name="DeleteVertexArraysAPPLE" offset="820"> + <function name="DeleteVertexArraysAPPLE" offset="820" static_dispatch="false"> <param name="n" type="GLsizei"/> <param name="arrays" type="const GLuint *" count="n"/> </function> - <function name="GenVertexArraysAPPLE" offset="821"> + <function name="GenVertexArraysAPPLE" offset="821" static_dispatch="false"> <param name="n" type="GLsizei"/> <param name="arrays" type="GLuint *" count="n" output="true"/> </function> - <function name="IsVertexArrayAPPLE" offset="822"> + <function name="IsVertexArrayAPPLE" offset="822" static_dispatch="false"> <param name="array" type="GLuint"/> <return type="GLboolean"/> </function> diff --git a/src/mesa/glapi/gl_API.dtd b/src/mesa/glapi/gl_API.dtd index ded487bc92..2f0c88aae5 100644 --- a/src/mesa/glapi/gl_API.dtd +++ b/src/mesa/glapi/gl_API.dtd @@ -33,6 +33,7 @@ <!ATTLIST function name NMTOKEN #REQUIRED alias NMTOKEN #IMPLIED offset CDATA #IMPLIED + static_dispatch (true | false) "true" vectorequiv NMTOKEN #IMPLIED> <!ATTLIST size name NMTOKEN #REQUIRED count NMTOKEN #IMPLIED diff --git a/src/mesa/glapi/gl_API.xml b/src/mesa/glapi/gl_API.xml index 419d3bc880..b5b549ccf0 100644 --- a/src/mesa/glapi/gl_API.xml +++ b/src/mesa/glapi/gl_API.xml @@ -11552,14 +11552,14 @@ </category> <category name="GL_EXT_gpu_program_parameters" number="319"> - <function name="ProgramEnvParameters4fvEXT" offset="823"> + <function name="ProgramEnvParameters4fvEXT" offset="823" static_dispatch="false"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="count" type="GLsizei"/> <param name="params" type="const GLfloat *"/> </function> - <function name="ProgramLocalParameters4fvEXT" offset="824"> + <function name="ProgramLocalParameters4fvEXT" offset="824" static_dispatch="false"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="count" type="GLsizei"/> diff --git a/src/mesa/glapi/gl_SPARC_asm.py b/src/mesa/glapi/gl_SPARC_asm.py index 1a8823cc40..1368e24a08 100644 --- a/src/mesa/glapi/gl_SPARC_asm.py +++ b/src/mesa/glapi/gl_SPARC_asm.py @@ -82,14 +82,24 @@ class PrintGenericStubs(gl_XML.gl_print_base): def printBody(self, api): for f in api.functionIterateByOffset(): - print '\t\t.globl gl%s ; .type gl%s,#function' % (f.name, f.name) + if f.static_dispatch: + name = f.name + else: + name = "_dispatch_stub_%u" % (f.offset) + + print '\t\t.globl gl%s ; .type gl%s,#function' % (name, name) print '\t\t.globl _mesa_sparc_glapi_begin ; .type _mesa_sparc_glapi_begin,#function' print '_mesa_sparc_glapi_begin:' print '' for f in api.functionIterateByOffset(): - print '\tGL_STUB(gl%s, _gloffset_%s)' % (f.name, f.name) + if f.static_dispatch: + name = f.name + else: + name = "_dispatch_stub_%u" % (f.offset) + + print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, name) print '' print '\t\t.globl _mesa_sparc_glapi_end ; .type _mesa_sparc_glapi_end,#function' @@ -98,9 +108,10 @@ class PrintGenericStubs(gl_XML.gl_print_base): for f in api.functionIterateByOffset(): - for n in f.entry_points: - if n != f.name: - print '\t.globl gl%s ; .type gl%s,#function ; gl%s = gl%s' % (n, n, n, f.name) + if f.static_dispatch: + for n in f.entry_points: + if n != f.name: + print '\t.globl gl%s ; .type gl%s,#function ; gl%s = gl%s' % (n, n, n, f.name) return diff --git a/src/mesa/glapi/gl_XML.py b/src/mesa/glapi/gl_XML.py index 11b23b7a86..e1bff79abc 100644 --- a/src/mesa/glapi/gl_XML.py +++ b/src/mesa/glapi/gl_XML.py @@ -575,6 +575,8 @@ class gl_function( gl_item ): name = element.nsProp( "name", None ) alias = element.nsProp( "alias", None ) + self.static_dispatch = is_attr_true(element, "static_dispatch") + self.entry_points.append( name ) if alias: true_name = alias diff --git a/src/mesa/glapi/gl_apitemp.py b/src/mesa/glapi/gl_apitemp.py index 7cc434fa89..30ee6596ed 100644 --- a/src/mesa/glapi/gl_apitemp.py +++ b/src/mesa/glapi/gl_apitemp.py @@ -39,6 +39,7 @@ class PrintGlOffsets(gl_XML.gl_print_base): (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM") self.undef_list.append( "KEYWORD1" ) + self.undef_list.append( "KEYWORD1_ALT" ) self.undef_list.append( "KEYWORD2" ) self.undef_list.append( "NAME" ) self.undef_list.append( "DISPATCH" ) @@ -54,6 +55,13 @@ class PrintGlOffsets(gl_XML.gl_print_base): t_string = "" comma = "" + if f.static_dispatch: + n = name + keyword = "KEYWORD1" + else: + n = "_dispatch_stub_%u" % (f.offset) + keyword = "KEYWORD1_ALT" + for p in f.parameterIterator(): if p.is_pointer(): cast = "(const void *) " @@ -71,8 +79,11 @@ class PrintGlOffsets(gl_XML.gl_print_base): else: dispatch = "DISPATCH" - print 'KEYWORD1 %s KEYWORD2 NAME(%s)(%s)' \ - % (f.return_type, name, f.get_parameter_string(name)) + if not f.static_dispatch: + print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name)) + print '' + + print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name)) print '{' if p_string == "": print ' %s(%s, (), (F, "gl%s();\\n"));' \ @@ -85,6 +96,8 @@ class PrintGlOffsets(gl_XML.gl_print_base): return def printRealHeader(self): + print '' + self.printVisibility( "HIDDEN", "hidden" ) print """ /* * This file is a template which generates the OpenGL API entry point @@ -116,6 +129,10 @@ class PrintGlOffsets(gl_XML.gl_print_base): #define KEYWORD1 #endif +#ifndef KEYWORD1_ALT +#define KEYWORD1_ALT HIDDEN +#endif + #ifndef KEYWORD2 #define KEYWORD2 #endif @@ -149,7 +166,12 @@ class PrintGlOffsets(gl_XML.gl_print_base): static _glapi_proc DISPATCH_TABLE_NAME[] = {""" for f in api.functionIterateByOffset(): - print ' TABLE_ENTRY(%s),' % (f.name) + if f.static_dispatch: + n = f.name + else: + n = "_dispatch_stub_%u" % (f.offset) + + print ' TABLE_ENTRY(%s),' % (n) print ' /* A whole bunch of no-op functions. These might be called' print ' * when someone tries to call a dynamically-registered' @@ -174,9 +196,10 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {""" static _glapi_proc UNUSED_TABLE_NAME[] = {""" for f in api.functionIterateByOffset(): - for n in f.entry_points: - if n != f.name: - print ' TABLE_ENTRY(%s),' % (n) + if f.static_dispatch: + for n in f.entry_points: + if n != f.name: + print ' TABLE_ENTRY(%s),' % (n) print '};' print '#endif /*UNUSED_TABLE_NAME*/' @@ -186,8 +209,11 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {""" def printBody(self, api): for func in api.functionIterateByOffset(): - for n in func.entry_points: - self.printFunction( func, n ) + if func.static_dispatch: + for n in func.entry_points: + self.printFunction( func, n ) + else: + self.printFunction(func, func.name) self.printInitDispatch(api) self.printAliasedTable(api) diff --git a/src/mesa/glapi/gl_procs.py b/src/mesa/glapi/gl_procs.py index 76131b83a0..145243ee0e 100644 --- a/src/mesa/glapi/gl_procs.py +++ b/src/mesa/glapi/gl_procs.py @@ -87,8 +87,13 @@ class PrintGlProcs(gl_XML.gl_print_base): base_offset = 0 table = [] for func in api.functionIterateByOffset(): + if func.static_dispatch: + name = func.name + else: + name = "_dispatch_stub_%u" % (func.offset) + self.printFunctionString( func.name ) - table.append((base_offset, func.name, func.name)) + table.append((base_offset, name, func.name)) # The length of the function's name, plus 2 for "gl", # plus 1 for the NUL. @@ -99,8 +104,13 @@ class PrintGlProcs(gl_XML.gl_print_base): for func in api.functionIterateByOffset(): for n in func.entry_points: if n != func.name: + if func.static_dispatch: + name = n + else: + name = "_dispatch_stub_%u" % (func.offset) + self.printFunctionString( n ) - table.append((base_offset, n, func.name)) + table.append((base_offset, name, func.name)) base_offset += len(n) + 3 @@ -110,6 +120,14 @@ class PrintGlProcs(gl_XML.gl_print_base): print '};' print '' + print '/* FIXME: Having these (incorrect) prototypes here is ugly. */' + print '#ifdef NEED_FUNCTION_POINTER' + for func in api.functionIterateByOffset(): + if not func.static_dispatch: + print 'extern void gl_dispatch_stub_%u(void);' % (func.offset) + print '#endif /* NEED_FUNCTION_POINTER */' + + print '' print 'static const glprocs_table_t static_functions[] = {' for (offset, disp_name, real_name) in table: diff --git a/src/mesa/glapi/gl_x86-64_asm.py b/src/mesa/glapi/gl_x86-64_asm.py index ea13d2ac52..eb440009b2 100644 --- a/src/mesa/glapi/gl_x86-64_asm.py +++ b/src/mesa/glapi/gl_x86-64_asm.py @@ -236,10 +236,17 @@ class PrintGenericStubs(gl_XML.gl_print_base): registers.append( ["%rbp", 0] ) + if f.static_dispatch: + name = f.name + else: + name = "_dispatch_stub_%u" % (f.offset) + print '\t.p2align\t4,,15' - print '\t.globl\tGL_PREFIX(%s)' % (f.name) - print '\t.type\tGL_PREFIX(%s), @function' % (f.name) - print 'GL_PREFIX(%s):' % (f.name) + print '\t.globl\tGL_PREFIX(%s)' % (name) + print '\t.type\tGL_PREFIX(%s), @function' % (name) + if not f.static_dispatch: + print '\tHIDDEN(GL_PREFIX(%s))' % (name) + print 'GL_PREFIX(%s):' % (name) print '#if defined(GLX_USE_TLS)' print '\tcall\t_x86_64_get_dispatch@PLT' print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8) @@ -273,7 +280,7 @@ class PrintGenericStubs(gl_XML.gl_print_base): print '\tjmp\t*%r11' print '#endif /* defined(GLX_USE_TLS) */' - print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (f.name, f.name) + print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name) print '' return @@ -284,9 +291,10 @@ class PrintGenericStubs(gl_XML.gl_print_base): for f in api.functionIterateByOffset(): - for n in f.entry_points: - if n != f.name: - print '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, f.name) + if f.static_dispatch: + for n in f.entry_points: + if n != f.name: + print '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, f.name) return diff --git a/src/mesa/glapi/gl_x86_asm.py b/src/mesa/glapi/gl_x86_asm.py index 899cce64b9..3ce8404f8c 100644 --- a/src/mesa/glapi/gl_x86_asm.py +++ b/src/mesa/glapi/gl_x86_asm.py @@ -197,20 +197,35 @@ 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) + stack = self.get_stack_size(f) - alt = "%s@%u" % (f.name, stack) - print '\tGL_STUB(%s, _gloffset_%s, %s)' % (f.name, f.name, alt) + alt = "%s@%u" % (name, stack) + print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt) + + if not f.static_dispatch: + 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) + stack = self.get_stack_size(f) - alt = "%s@%u" % (f.name, stack) + alt = "%s@%u" % (name, stack) - 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) + if f.static_dispatch: + 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) return diff --git a/src/mesa/glapi/glapi.c b/src/mesa/glapi/glapi.c index c095de3961..b82304b2fc 100644 --- a/src/mesa/glapi/glapi.c +++ b/src/mesa/glapi/glapi.c @@ -99,6 +99,7 @@ warn(void) #define KEYWORD1 static +#define KEYWORD1_ALT static #define KEYWORD2 GLAPIENTRY #define NAME(func) NoOp##func diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h index 442fccf295..52ca9733f3 100644 --- a/src/mesa/glapi/glapitemp.h +++ b/src/mesa/glapi/glapitemp.h @@ -27,6 +27,12 @@ */ +# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) +# define HIDDEN __attribute__((visibility("hidden"))) +# else +# define HIDDEN +# endif + /* * This file is a template which generates the OpenGL API entry point * functions. It should be included by a .c file which first defines @@ -57,6 +63,10 @@ #define KEYWORD1 #endif +#ifndef KEYWORD1_ALT +#define KEYWORD1_ALT HIDDEN +#endif + #ifndef KEYWORD2 #define KEYWORD2 #endif @@ -5055,32 +5065,44 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1 void KEYWORD2 NAME(BindVertexArrayAPPLE)(GLuint array) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_819)(GLuint array) { DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array)); } -KEYWORD1 void KEYWORD2 NAME(DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_820)(GLsizei n, const GLuint * arrays) { DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1 void KEYWORD2 NAME(GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLsizei n, GLuint * arrays) { DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArrayAPPLE)(GLuint array) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array); + +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_822)(GLuint array) { RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array)); } -KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); + +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } @@ -5918,12 +5940,12 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetQueryObjecti64vEXT), TABLE_ENTRY(GetQueryObjectui64vEXT), TABLE_ENTRY(BlitFramebufferEXT), - TABLE_ENTRY(BindVertexArrayAPPLE), - TABLE_ENTRY(DeleteVertexArraysAPPLE), - TABLE_ENTRY(GenVertexArraysAPPLE), - TABLE_ENTRY(IsVertexArrayAPPLE), - TABLE_ENTRY(ProgramEnvParameters4fvEXT), - TABLE_ENTRY(ProgramLocalParameters4fvEXT), + TABLE_ENTRY(_dispatch_stub_819), + TABLE_ENTRY(_dispatch_stub_820), + TABLE_ENTRY(_dispatch_stub_821), + TABLE_ENTRY(_dispatch_stub_822), + TABLE_ENTRY(_dispatch_stub_823), + TABLE_ENTRY(_dispatch_stub_824), /* A whole bunch of no-op functions. These might be called * when someone tries to call a dynamically-registered * extension function without a current rendering context. @@ -6220,6 +6242,7 @@ static _glapi_proc UNUSED_TABLE_NAME[] = { # undef KEYWORD1 +# undef KEYWORD1_ALT # undef KEYWORD2 # undef NAME # undef DISPATCH @@ -6227,3 +6250,4 @@ static _glapi_proc UNUSED_TABLE_NAME[] = { # undef DISPATCH_TABLE_NAME # undef UNUSED_TABLE_NAME # undef TABLE_ENTRY +# undef HIDDEN diff --git a/src/mesa/glapi/glprocs.h b/src/mesa/glapi/glprocs.h index 3a858ca0e7..b1943c11ec 100644 --- a/src/mesa/glapi/glprocs.h +++ b/src/mesa/glapi/glprocs.h @@ -1051,6 +1051,16 @@ static const char gl_string_table[] = "glBlendEquationSeparateATI\0" ; +/* FIXME: Having these (incorrect) prototypes here is ugly. */ +#ifdef NEED_FUNCTION_POINTER +extern void gl_dispatch_stub_819(void); +extern void gl_dispatch_stub_820(void); +extern void gl_dispatch_stub_821(void); +extern void gl_dispatch_stub_822(void); +extern void gl_dispatch_stub_823(void); +extern void gl_dispatch_stub_824(void); +#endif /* NEED_FUNCTION_POINTER */ + static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 0, glNewList, _gloffset_NewList ), NAME_FUNC_OFFSET( 10, glEndList, _gloffset_EndList ), @@ -1871,12 +1881,12 @@ static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 14671, glGetQueryObjecti64vEXT, _gloffset_GetQueryObjecti64vEXT ), NAME_FUNC_OFFSET( 14695, glGetQueryObjectui64vEXT, _gloffset_GetQueryObjectui64vEXT ), NAME_FUNC_OFFSET( 14720, glBlitFramebufferEXT, _gloffset_BlitFramebufferEXT ), - NAME_FUNC_OFFSET( 14741, glBindVertexArrayAPPLE, _gloffset_BindVertexArrayAPPLE ), - NAME_FUNC_OFFSET( 14764, glDeleteVertexArraysAPPLE, _gloffset_DeleteVertexArraysAPPLE ), - NAME_FUNC_OFFSET( 14790, glGenVertexArraysAPPLE, _gloffset_GenVertexArraysAPPLE ), - NAME_FUNC_OFFSET( 14813, glIsVertexArrayAPPLE, _gloffset_IsVertexArrayAPPLE ), - NAME_FUNC_OFFSET( 14834, glProgramEnvParameters4fvEXT, _gloffset_ProgramEnvParameters4fvEXT ), - NAME_FUNC_OFFSET( 14863, glProgramLocalParameters4fvEXT, _gloffset_ProgramLocalParameters4fvEXT ), + NAME_FUNC_OFFSET( 14741, gl_dispatch_stub_819, _gloffset_BindVertexArrayAPPLE ), + NAME_FUNC_OFFSET( 14764, gl_dispatch_stub_820, _gloffset_DeleteVertexArraysAPPLE ), + NAME_FUNC_OFFSET( 14790, gl_dispatch_stub_821, _gloffset_GenVertexArraysAPPLE ), + NAME_FUNC_OFFSET( 14813, gl_dispatch_stub_822, _gloffset_IsVertexArrayAPPLE ), + NAME_FUNC_OFFSET( 14834, gl_dispatch_stub_823, _gloffset_ProgramEnvParameters4fvEXT ), + NAME_FUNC_OFFSET( 14863, gl_dispatch_stub_824, _gloffset_ProgramLocalParameters4fvEXT ), NAME_FUNC_OFFSET( 14894, glArrayElementEXT, _gloffset_ArrayElement ), NAME_FUNC_OFFSET( 14912, glBindTextureEXT, _gloffset_BindTexture ), NAME_FUNC_OFFSET( 14929, glDrawArraysEXT, _gloffset_DrawArrays ), |