mesa/src/mapi/glapi/glapi_sparc.S

1452 lines
52 KiB
ArmAsm
Raw Normal View History

/* DO NOT EDIT - This file generated automatically by gl_SPARC_asm.py (from Mesa) script */
/*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
* (C) Copyright IBM Corporation 2004
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sub license,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* BRIAN PAUL, IBM,
* AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifdef __arch64__
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
#define GL_OFF(N) ((N) * 8)
#define GL_LL ldx
#define GL_TIE_LD(SYM) %tie_ldx(SYM)
#define GL_STACK_SIZE 128
#else
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
#define GL_OFF(N) ((N) * 4)
#define GL_LL ld
#define GL_TIE_LD(SYM) %tie_ld(SYM)
#define GL_STACK_SIZE 64
#endif
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
#define GLOBL_FN(x) .globl x ; .type x, @function
#define HIDDEN(x) .hidden x
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
.register %g2, #scratch
.register %g3, #scratch
.text
GLOBL_FN(__glapi_sparc_icache_flush)
HIDDEN(__glapi_sparc_icache_flush)
.type __glapi_sparc_icache_flush, @function
__glapi_sparc_icache_flush: /* %o0 = insn_addr */
flush %o0
retl
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
nop
.align 32
.type __glapi_sparc_get_pc, @function
__glapi_sparc_get_pc:
retl
add %o7, %g2, %g2
.size __glapi_sparc_get_pc, .-__glapi_sparc_get_pc
#ifdef GLX_USE_TLS
GLOBL_FN(__glapi_sparc_get_dispatch)
HIDDEN(__glapi_sparc_get_dispatch)
__glapi_sparc_get_dispatch:
mov %o7, %g1
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
call __glapi_sparc_get_pc
add %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
mov %g1, %o7
sethi %tie_hi22(_glapi_tls_Dispatch), %g1
add %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
GL_LL [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
retl
mov %g2, %o0
.data
.align 32
/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */
/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */
GLOBL_FN(__glapi_sparc_tls_stub)
HIDDEN(__glapi_sparc_tls_stub)
__glapi_sparc_tls_stub: /* Call offset in %g3 */
mov %o7, %g1
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
call __glapi_sparc_get_pc
add %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
mov %g1, %o7
srl %g3, 10, %g3
sethi %tie_hi22(_glapi_tls_Dispatch), %g1
add %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
GL_LL [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
GL_LL [%g7+%g2], %g1
GL_LL [%g1 + %g3], %g1
jmp %g1
nop
.size __glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub
#define GL_STUB(fn, off) \
GLOBL_FN(fn); \
fn: ba __glapi_sparc_tls_stub; \
sethi GL_OFF(off), %g3; \
.size fn,.-fn;
#elif defined(PTHREADS)
/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */
/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */
/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */
/* 64-bit 0x0c --> sllx %g1, 32, %g1 */
/* 64-bit 0x10 --> add %g1, %g2, %g1 */
/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */
/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
.data
.align 32
GLOBL_FN(__glapi_sparc_pthread_stub)
HIDDEN(__glapi_sparc_pthread_stub)
__glapi_sparc_pthread_stub: /* Call offset in %g3 */
mov %o7, %g1
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
call __glapi_sparc_get_pc
add %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
mov %g1, %o7
sethi %hi(_glapi_Dispatch), %g1
or %g1, %lo(_glapi_Dispatch), %g1
srl %g3, 10, %g3
GL_LL [%g2+%g1], %g2
GL_LL [%g2], %g1
cmp %g1, 0
be 2f
nop
1: GL_LL [%g1 + %g3], %g1
jmp %g1
nop
2: save %sp, GL_STACK_SIZE, %sp
mov %g3, %l0
call _glapi_get_dispatch
nop
mov %o0, %g1
mov %l0, %g3
ba 1b
restore %g0, %g0, %g0
.size __glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub
#define GL_STUB(fn, off) \
GLOBL_FN(fn); \
fn: ba __glapi_sparc_pthread_stub; \
sethi GL_OFF(off), %g3; \
.size fn,.-fn;
#else /* Non-threaded version. */
.type __glapi_sparc_nothread_stub, @function
__glapi_sparc_nothread_stub: /* Call offset in %g3 */
mov %o7, %g1
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
call __glapi_sparc_get_pc
add %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
mov %g1, %o7
srl %g3, 10, %g3
sethi %hi(_glapi_Dispatch), %g1
or %g1, %lo(_glapi_Dispatch), %g1
GL_LL [%g2+%g1], %g2
GL_LL [%g2], %g1
GL_LL [%g1 + %g3], %g1
jmp %g1
nop
.size __glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub
#define GL_STUB(fn, off) \
GLOBL_FN(fn); \
fn: ba __glapi_sparc_nothread_stub; \
sethi GL_OFF(off), %g3; \
.size fn,.-fn;
#endif
#define GL_STUB_ALIAS(fn, alias) \
.globl fn; \
.set fn, alias
.text
.align 32
.globl gl_dispatch_functions_start
HIDDEN(gl_dispatch_functions_start)
gl_dispatch_functions_start:
2001-06-05 23:54:00 +00:00
GL_STUB(glNewList, 0)
GL_STUB(glEndList, 1)
GL_STUB(glCallList, 2)
GL_STUB(glCallLists, 3)
GL_STUB(glDeleteLists, 4)
GL_STUB(glGenLists, 5)
GL_STUB(glListBase, 6)
GL_STUB(glBegin, 7)
GL_STUB(glBitmap, 8)
GL_STUB(glColor3b, 9)
GL_STUB(glColor3bv, 10)
GL_STUB(glColor3d, 11)
GL_STUB(glColor3dv, 12)
GL_STUB(glColor3f, 13)
GL_STUB(glColor3fv, 14)
GL_STUB(glColor3i, 15)
GL_STUB(glColor3iv, 16)
GL_STUB(glColor3s, 17)
GL_STUB(glColor3sv, 18)
GL_STUB(glColor3ub, 19)
GL_STUB(glColor3ubv, 20)
GL_STUB(glColor3ui, 21)
GL_STUB(glColor3uiv, 22)
GL_STUB(glColor3us, 23)
GL_STUB(glColor3usv, 24)
GL_STUB(glColor4b, 25)
GL_STUB(glColor4bv, 26)
GL_STUB(glColor4d, 27)
GL_STUB(glColor4dv, 28)
GL_STUB(glColor4f, 29)
GL_STUB(glColor4fv, 30)
GL_STUB(glColor4i, 31)
GL_STUB(glColor4iv, 32)
GL_STUB(glColor4s, 33)
GL_STUB(glColor4sv, 34)
GL_STUB(glColor4ub, 35)
GL_STUB(glColor4ubv, 36)
GL_STUB(glColor4ui, 37)
GL_STUB(glColor4uiv, 38)
GL_STUB(glColor4us, 39)
GL_STUB(glColor4usv, 40)
GL_STUB(glEdgeFlag, 41)
GL_STUB(glEdgeFlagv, 42)
GL_STUB(glEnd, 43)
GL_STUB(glIndexd, 44)
GL_STUB(glIndexdv, 45)
GL_STUB(glIndexf, 46)
GL_STUB(glIndexfv, 47)
GL_STUB(glIndexi, 48)
GL_STUB(glIndexiv, 49)
GL_STUB(glIndexs, 50)
GL_STUB(glIndexsv, 51)
GL_STUB(glNormal3b, 52)
GL_STUB(glNormal3bv, 53)
GL_STUB(glNormal3d, 54)
GL_STUB(glNormal3dv, 55)
GL_STUB(glNormal3f, 56)
GL_STUB(glNormal3fv, 57)
GL_STUB(glNormal3i, 58)
GL_STUB(glNormal3iv, 59)
GL_STUB(glNormal3s, 60)
GL_STUB(glNormal3sv, 61)
GL_STUB(glRasterPos2d, 62)
GL_STUB(glRasterPos2dv, 63)
GL_STUB(glRasterPos2f, 64)
GL_STUB(glRasterPos2fv, 65)
GL_STUB(glRasterPos2i, 66)
GL_STUB(glRasterPos2iv, 67)
GL_STUB(glRasterPos2s, 68)
GL_STUB(glRasterPos2sv, 69)
GL_STUB(glRasterPos3d, 70)
GL_STUB(glRasterPos3dv, 71)
GL_STUB(glRasterPos3f, 72)
GL_STUB(glRasterPos3fv, 73)
GL_STUB(glRasterPos3i, 74)
GL_STUB(glRasterPos3iv, 75)
GL_STUB(glRasterPos3s, 76)
GL_STUB(glRasterPos3sv, 77)
GL_STUB(glRasterPos4d, 78)
GL_STUB(glRasterPos4dv, 79)
GL_STUB(glRasterPos4f, 80)
GL_STUB(glRasterPos4fv, 81)
GL_STUB(glRasterPos4i, 82)
GL_STUB(glRasterPos4iv, 83)
GL_STUB(glRasterPos4s, 84)
GL_STUB(glRasterPos4sv, 85)
GL_STUB(glRectd, 86)
GL_STUB(glRectdv, 87)
GL_STUB(glRectf, 88)
GL_STUB(glRectfv, 89)
GL_STUB(glRecti, 90)
GL_STUB(glRectiv, 91)
GL_STUB(glRects, 92)
GL_STUB(glRectsv, 93)
GL_STUB(glTexCoord1d, 94)
GL_STUB(glTexCoord1dv, 95)
GL_STUB(glTexCoord1f, 96)
GL_STUB(glTexCoord1fv, 97)
GL_STUB(glTexCoord1i, 98)
GL_STUB(glTexCoord1iv, 99)
GL_STUB(glTexCoord1s, 100)
GL_STUB(glTexCoord1sv, 101)
GL_STUB(glTexCoord2d, 102)
GL_STUB(glTexCoord2dv, 103)
GL_STUB(glTexCoord2f, 104)
GL_STUB(glTexCoord2fv, 105)
GL_STUB(glTexCoord2i, 106)
GL_STUB(glTexCoord2iv, 107)
GL_STUB(glTexCoord2s, 108)
GL_STUB(glTexCoord2sv, 109)
GL_STUB(glTexCoord3d, 110)
GL_STUB(glTexCoord3dv, 111)
GL_STUB(glTexCoord3f, 112)
GL_STUB(glTexCoord3fv, 113)
GL_STUB(glTexCoord3i, 114)
GL_STUB(glTexCoord3iv, 115)
GL_STUB(glTexCoord3s, 116)
GL_STUB(glTexCoord3sv, 117)
GL_STUB(glTexCoord4d, 118)
GL_STUB(glTexCoord4dv, 119)
GL_STUB(glTexCoord4f, 120)
GL_STUB(glTexCoord4fv, 121)
GL_STUB(glTexCoord4i, 122)
GL_STUB(glTexCoord4iv, 123)
GL_STUB(glTexCoord4s, 124)
GL_STUB(glTexCoord4sv, 125)
GL_STUB(glVertex2d, 126)
GL_STUB(glVertex2dv, 127)
GL_STUB(glVertex2f, 128)
GL_STUB(glVertex2fv, 129)
GL_STUB(glVertex2i, 130)
GL_STUB(glVertex2iv, 131)
GL_STUB(glVertex2s, 132)
GL_STUB(glVertex2sv, 133)
GL_STUB(glVertex3d, 134)
GL_STUB(glVertex3dv, 135)
GL_STUB(glVertex3f, 136)
GL_STUB(glVertex3fv, 137)
GL_STUB(glVertex3i, 138)
GL_STUB(glVertex3iv, 139)
GL_STUB(glVertex3s, 140)
GL_STUB(glVertex3sv, 141)
GL_STUB(glVertex4d, 142)
GL_STUB(glVertex4dv, 143)
GL_STUB(glVertex4f, 144)
GL_STUB(glVertex4fv, 145)
GL_STUB(glVertex4i, 146)
GL_STUB(glVertex4iv, 147)
GL_STUB(glVertex4s, 148)
GL_STUB(glVertex4sv, 149)
GL_STUB(glClipPlane, 150)
GL_STUB(glColorMaterial, 151)
GL_STUB(glCullFace, 152)
GL_STUB(glFogf, 153)
GL_STUB(glFogfv, 154)
GL_STUB(glFogi, 155)
GL_STUB(glFogiv, 156)
GL_STUB(glFrontFace, 157)
GL_STUB(glHint, 158)
GL_STUB(glLightf, 159)
GL_STUB(glLightfv, 160)
GL_STUB(glLighti, 161)
GL_STUB(glLightiv, 162)
GL_STUB(glLightModelf, 163)
GL_STUB(glLightModelfv, 164)
GL_STUB(glLightModeli, 165)
GL_STUB(glLightModeliv, 166)
GL_STUB(glLineStipple, 167)
GL_STUB(glLineWidth, 168)
GL_STUB(glMaterialf, 169)
GL_STUB(glMaterialfv, 170)
GL_STUB(glMateriali, 171)
GL_STUB(glMaterialiv, 172)
GL_STUB(glPointSize, 173)
GL_STUB(glPolygonMode, 174)
GL_STUB(glPolygonStipple, 175)
GL_STUB(glScissor, 176)
GL_STUB(glShadeModel, 177)
GL_STUB(glTexParameterf, 178)
GL_STUB(glTexParameterfv, 179)
GL_STUB(glTexParameteri, 180)
GL_STUB(glTexParameteriv, 181)
GL_STUB(glTexImage1D, 182)
GL_STUB(glTexImage2D, 183)
GL_STUB(glTexEnvf, 184)
GL_STUB(glTexEnvfv, 185)
GL_STUB(glTexEnvi, 186)
GL_STUB(glTexEnviv, 187)
GL_STUB(glTexGend, 188)
GL_STUB(glTexGendv, 189)
GL_STUB(glTexGenf, 190)
GL_STUB(glTexGenfv, 191)
GL_STUB(glTexGeni, 192)
GL_STUB(glTexGeniv, 193)
GL_STUB(glFeedbackBuffer, 194)
GL_STUB(glSelectBuffer, 195)
GL_STUB(glRenderMode, 196)
GL_STUB(glInitNames, 197)
GL_STUB(glLoadName, 198)
GL_STUB(glPassThrough, 199)
GL_STUB(glPopName, 200)
GL_STUB(glPushName, 201)
GL_STUB(glDrawBuffer, 202)
GL_STUB(glClear, 203)
GL_STUB(glClearAccum, 204)
GL_STUB(glClearIndex, 205)
GL_STUB(glClearColor, 206)
GL_STUB(glClearStencil, 207)
GL_STUB(glClearDepth, 208)
GL_STUB(glStencilMask, 209)
GL_STUB(glColorMask, 210)
GL_STUB(glDepthMask, 211)
GL_STUB(glIndexMask, 212)
GL_STUB(glAccum, 213)
GL_STUB(glDisable, 214)
GL_STUB(glEnable, 215)
GL_STUB(glFinish, 216)
GL_STUB(glFlush, 217)
GL_STUB(glPopAttrib, 218)
GL_STUB(glPushAttrib, 219)
GL_STUB(glMap1d, 220)
GL_STUB(glMap1f, 221)
GL_STUB(glMap2d, 222)
GL_STUB(glMap2f, 223)
GL_STUB(glMapGrid1d, 224)
GL_STUB(glMapGrid1f, 225)
GL_STUB(glMapGrid2d, 226)
GL_STUB(glMapGrid2f, 227)
GL_STUB(glEvalCoord1d, 228)
GL_STUB(glEvalCoord1dv, 229)
GL_STUB(glEvalCoord1f, 230)
GL_STUB(glEvalCoord1fv, 231)
GL_STUB(glEvalCoord2d, 232)
GL_STUB(glEvalCoord2dv, 233)
GL_STUB(glEvalCoord2f, 234)
GL_STUB(glEvalCoord2fv, 235)
GL_STUB(glEvalMesh1, 236)
GL_STUB(glEvalPoint1, 237)
GL_STUB(glEvalMesh2, 238)
GL_STUB(glEvalPoint2, 239)
GL_STUB(glAlphaFunc, 240)
GL_STUB(glBlendFunc, 241)
GL_STUB(glLogicOp, 242)
GL_STUB(glStencilFunc, 243)
GL_STUB(glStencilOp, 244)
GL_STUB(glDepthFunc, 245)
GL_STUB(glPixelZoom, 246)
GL_STUB(glPixelTransferf, 247)
GL_STUB(glPixelTransferi, 248)
GL_STUB(glPixelStoref, 249)
GL_STUB(glPixelStorei, 250)
GL_STUB(glPixelMapfv, 251)
GL_STUB(glPixelMapuiv, 252)
GL_STUB(glPixelMapusv, 253)
GL_STUB(glReadBuffer, 254)
GL_STUB(glCopyPixels, 255)
GL_STUB(glReadPixels, 256)
GL_STUB(glDrawPixels, 257)
GL_STUB(glGetBooleanv, 258)
GL_STUB(glGetClipPlane, 259)
GL_STUB(glGetDoublev, 260)
GL_STUB(glGetError, 261)
GL_STUB(glGetFloatv, 262)
GL_STUB(glGetIntegerv, 263)
GL_STUB(glGetLightfv, 264)
GL_STUB(glGetLightiv, 265)
GL_STUB(glGetMapdv, 266)
GL_STUB(glGetMapfv, 267)
GL_STUB(glGetMapiv, 268)
GL_STUB(glGetMaterialfv, 269)
GL_STUB(glGetMaterialiv, 270)
GL_STUB(glGetPixelMapfv, 271)
GL_STUB(glGetPixelMapuiv, 272)
GL_STUB(glGetPixelMapusv, 273)
GL_STUB(glGetPolygonStipple, 274)
GL_STUB(glGetString, 275)
GL_STUB(glGetTexEnvfv, 276)
GL_STUB(glGetTexEnviv, 277)
GL_STUB(glGetTexGendv, 278)
GL_STUB(glGetTexGenfv, 279)
GL_STUB(glGetTexGeniv, 280)
GL_STUB(glGetTexImage, 281)
GL_STUB(glGetTexParameterfv, 282)
GL_STUB(glGetTexParameteriv, 283)
GL_STUB(glGetTexLevelParameterfv, 284)
GL_STUB(glGetTexLevelParameteriv, 285)
GL_STUB(glIsEnabled, 286)
GL_STUB(glIsList, 287)
GL_STUB(glDepthRange, 288)
GL_STUB(glFrustum, 289)
GL_STUB(glLoadIdentity, 290)
GL_STUB(glLoadMatrixf, 291)
GL_STUB(glLoadMatrixd, 292)
GL_STUB(glMatrixMode, 293)
GL_STUB(glMultMatrixf, 294)
GL_STUB(glMultMatrixd, 295)
GL_STUB(glOrtho, 296)
GL_STUB(glPopMatrix, 297)
GL_STUB(glPushMatrix, 298)
GL_STUB(glRotated, 299)
GL_STUB(glRotatef, 300)
GL_STUB(glScaled, 301)
GL_STUB(glScalef, 302)
GL_STUB(glTranslated, 303)
GL_STUB(glTranslatef, 304)
GL_STUB(glViewport, 305)
GL_STUB(glArrayElement, 306)
GL_STUB(glBindTexture, 307)
GL_STUB(glColorPointer, 308)
GL_STUB(glDisableClientState, 309)
GL_STUB(glDrawArrays, 310)
GL_STUB(glDrawElements, 311)
GL_STUB(glEdgeFlagPointer, 312)
GL_STUB(glEnableClientState, 313)
GL_STUB(glIndexPointer, 314)
GL_STUB(glIndexub, 315)
GL_STUB(glIndexubv, 316)
GL_STUB(glInterleavedArrays, 317)
GL_STUB(glNormalPointer, 318)
GL_STUB(glPolygonOffset, 319)
GL_STUB(glTexCoordPointer, 320)
GL_STUB(glVertexPointer, 321)
GL_STUB(glAreTexturesResident, 322)
GL_STUB(glCopyTexImage1D, 323)
GL_STUB(glCopyTexImage2D, 324)
GL_STUB(glCopyTexSubImage1D, 325)
GL_STUB(glCopyTexSubImage2D, 326)
GL_STUB(glDeleteTextures, 327)
GL_STUB(glGenTextures, 328)
GL_STUB(glGetPointerv, 329)
GL_STUB(glIsTexture, 330)
GL_STUB(glPrioritizeTextures, 331)
GL_STUB(glTexSubImage1D, 332)
GL_STUB(glTexSubImage2D, 333)
GL_STUB(glPopClientAttrib, 334)
GL_STUB(glPushClientAttrib, 335)
GL_STUB(glBlendColor, 336)
GL_STUB(glBlendEquation, 337)
GL_STUB(glDrawRangeElements, 338)
GL_STUB(glColorTable, 339)
GL_STUB(glColorTableParameterfv, 340)
GL_STUB(glColorTableParameteriv, 341)
GL_STUB(glCopyColorTable, 342)
GL_STUB(glGetColorTable, 343)
GL_STUB(glGetColorTableParameterfv, 344)
GL_STUB(glGetColorTableParameteriv, 345)
GL_STUB(glColorSubTable, 346)
GL_STUB(glCopyColorSubTable, 347)
GL_STUB(glConvolutionFilter1D, 348)
GL_STUB(glConvolutionFilter2D, 349)
GL_STUB(glConvolutionParameterf, 350)
GL_STUB(glConvolutionParameterfv, 351)
GL_STUB(glConvolutionParameteri, 352)
GL_STUB(glConvolutionParameteriv, 353)
GL_STUB(glCopyConvolutionFilter1D, 354)
GL_STUB(glCopyConvolutionFilter2D, 355)
GL_STUB(glGetConvolutionFilter, 356)
GL_STUB(glGetConvolutionParameterfv, 357)
GL_STUB(glGetConvolutionParameteriv, 358)
GL_STUB(glGetSeparableFilter, 359)
GL_STUB(glSeparableFilter2D, 360)
GL_STUB(glGetHistogram, 361)
GL_STUB(glGetHistogramParameterfv, 362)
GL_STUB(glGetHistogramParameteriv, 363)
GL_STUB(glGetMinmax, 364)
GL_STUB(glGetMinmaxParameterfv, 365)
GL_STUB(glGetMinmaxParameteriv, 366)
GL_STUB(glHistogram, 367)
GL_STUB(glMinmax, 368)
GL_STUB(glResetHistogram, 369)
GL_STUB(glResetMinmax, 370)
GL_STUB(glTexImage3D, 371)
GL_STUB(glTexSubImage3D, 372)
GL_STUB(glCopyTexSubImage3D, 373)
GL_STUB(glActiveTextureARB, 374)
GL_STUB(glClientActiveTextureARB, 375)
GL_STUB(glMultiTexCoord1dARB, 376)
GL_STUB(glMultiTexCoord1dvARB, 377)
GL_STUB(glMultiTexCoord1fARB, 378)
GL_STUB(glMultiTexCoord1fvARB, 379)
GL_STUB(glMultiTexCoord1iARB, 380)
GL_STUB(glMultiTexCoord1ivARB, 381)
GL_STUB(glMultiTexCoord1sARB, 382)
GL_STUB(glMultiTexCoord1svARB, 383)
GL_STUB(glMultiTexCoord2dARB, 384)
GL_STUB(glMultiTexCoord2dvARB, 385)
GL_STUB(glMultiTexCoord2fARB, 386)
GL_STUB(glMultiTexCoord2fvARB, 387)
GL_STUB(glMultiTexCoord2iARB, 388)
GL_STUB(glMultiTexCoord2ivARB, 389)
GL_STUB(glMultiTexCoord2sARB, 390)
GL_STUB(glMultiTexCoord2svARB, 391)
GL_STUB(glMultiTexCoord3dARB, 392)
GL_STUB(glMultiTexCoord3dvARB, 393)
GL_STUB(glMultiTexCoord3fARB, 394)
GL_STUB(glMultiTexCoord3fvARB, 395)
GL_STUB(glMultiTexCoord3iARB, 396)
GL_STUB(glMultiTexCoord3ivARB, 397)
GL_STUB(glMultiTexCoord3sARB, 398)
GL_STUB(glMultiTexCoord3svARB, 399)
GL_STUB(glMultiTexCoord4dARB, 400)
GL_STUB(glMultiTexCoord4dvARB, 401)
GL_STUB(glMultiTexCoord4fARB, 402)
GL_STUB(glMultiTexCoord4fvARB, 403)
GL_STUB(glMultiTexCoord4iARB, 404)
GL_STUB(glMultiTexCoord4ivARB, 405)
GL_STUB(glMultiTexCoord4sARB, 406)
GL_STUB(glMultiTexCoord4svARB, 407)
GL_STUB(glAttachShader, 408)
GL_STUB(glCreateProgram, 409)
GL_STUB(glCreateShader, 410)
GL_STUB(glDeleteProgram, 411)
GL_STUB(glDeleteShader, 412)
GL_STUB(glDetachShader, 413)
GL_STUB(glGetAttachedShaders, 414)
GL_STUB(glGetProgramInfoLog, 415)
GL_STUB(glGetProgramiv, 416)
GL_STUB(glGetShaderInfoLog, 417)
GL_STUB(glGetShaderiv, 418)
GL_STUB(glIsProgram, 419)
GL_STUB(glIsShader, 420)
GL_STUB(glStencilFuncSeparate, 421)
GL_STUB(glStencilMaskSeparate, 422)
GL_STUB(glStencilOpSeparate, 423)
GL_STUB(glUniformMatrix2x3fv, 424)
GL_STUB(glUniformMatrix2x4fv, 425)
GL_STUB(glUniformMatrix3x2fv, 426)
GL_STUB(glUniformMatrix3x4fv, 427)
GL_STUB(glUniformMatrix4x2fv, 428)
GL_STUB(glUniformMatrix4x3fv, 429)
GL_STUB(glDrawArraysInstanced, 430)
GL_STUB(glDrawElementsInstanced, 431)
GL_STUB(glLoadTransposeMatrixdARB, 432)
GL_STUB(glLoadTransposeMatrixfARB, 433)
GL_STUB(glMultTransposeMatrixdARB, 434)
GL_STUB(glMultTransposeMatrixfARB, 435)
GL_STUB(glSampleCoverageARB, 436)
GL_STUB(glCompressedTexImage1DARB, 437)
GL_STUB(glCompressedTexImage2DARB, 438)
GL_STUB(glCompressedTexImage3DARB, 439)
GL_STUB(glCompressedTexSubImage1DARB, 440)
GL_STUB(glCompressedTexSubImage2DARB, 441)
GL_STUB(glCompressedTexSubImage3DARB, 442)
GL_STUB(glGetCompressedTexImageARB, 443)
GL_STUB(glDisableVertexAttribArrayARB, 444)
GL_STUB(glEnableVertexAttribArrayARB, 445)
GL_STUB(glGetProgramEnvParameterdvARB, 446)
GL_STUB(glGetProgramEnvParameterfvARB, 447)
GL_STUB(glGetProgramLocalParameterdvARB, 448)
GL_STUB(glGetProgramLocalParameterfvARB, 449)
GL_STUB(glGetProgramStringARB, 450)
GL_STUB(glGetProgramivARB, 451)
GL_STUB(glGetVertexAttribdvARB, 452)
GL_STUB(glGetVertexAttribfvARB, 453)
GL_STUB(glGetVertexAttribivARB, 454)
GL_STUB(glProgramEnvParameter4dARB, 455)
GL_STUB(glProgramEnvParameter4dvARB, 456)
GL_STUB(glProgramEnvParameter4fARB, 457)
GL_STUB(glProgramEnvParameter4fvARB, 458)
GL_STUB(glProgramLocalParameter4dARB, 459)
GL_STUB(glProgramLocalParameter4dvARB, 460)
GL_STUB(glProgramLocalParameter4fARB, 461)
GL_STUB(glProgramLocalParameter4fvARB, 462)
GL_STUB(glProgramStringARB, 463)
GL_STUB(glVertexAttrib1dARB, 464)
GL_STUB(glVertexAttrib1dvARB, 465)
GL_STUB(glVertexAttrib1fARB, 466)
GL_STUB(glVertexAttrib1fvARB, 467)
GL_STUB(glVertexAttrib1sARB, 468)
GL_STUB(glVertexAttrib1svARB, 469)
GL_STUB(glVertexAttrib2dARB, 470)
GL_STUB(glVertexAttrib2dvARB, 471)
GL_STUB(glVertexAttrib2fARB, 472)
GL_STUB(glVertexAttrib2fvARB, 473)
GL_STUB(glVertexAttrib2sARB, 474)
GL_STUB(glVertexAttrib2svARB, 475)
GL_STUB(glVertexAttrib3dARB, 476)
GL_STUB(glVertexAttrib3dvARB, 477)
GL_STUB(glVertexAttrib3fARB, 478)
GL_STUB(glVertexAttrib3fvARB, 479)
GL_STUB(glVertexAttrib3sARB, 480)
GL_STUB(glVertexAttrib3svARB, 481)
GL_STUB(glVertexAttrib4NbvARB, 482)
GL_STUB(glVertexAttrib4NivARB, 483)
GL_STUB(glVertexAttrib4NsvARB, 484)
GL_STUB(glVertexAttrib4NubARB, 485)
GL_STUB(glVertexAttrib4NubvARB, 486)
GL_STUB(glVertexAttrib4NuivARB, 487)
GL_STUB(glVertexAttrib4NusvARB, 488)
GL_STUB(glVertexAttrib4bvARB, 489)
GL_STUB(glVertexAttrib4dARB, 490)
GL_STUB(glVertexAttrib4dvARB, 491)
GL_STUB(glVertexAttrib4fARB, 492)
GL_STUB(glVertexAttrib4fvARB, 493)
GL_STUB(glVertexAttrib4ivARB, 494)
GL_STUB(glVertexAttrib4sARB, 495)
GL_STUB(glVertexAttrib4svARB, 496)
GL_STUB(glVertexAttrib4ubvARB, 497)
GL_STUB(glVertexAttrib4uivARB, 498)
GL_STUB(glVertexAttrib4usvARB, 499)
GL_STUB(glVertexAttribPointerARB, 500)
GL_STUB(glBindBufferARB, 501)
GL_STUB(glBufferDataARB, 502)
GL_STUB(glBufferSubDataARB, 503)
GL_STUB(glDeleteBuffersARB, 504)
GL_STUB(glGenBuffersARB, 505)
GL_STUB(glGetBufferParameterivARB, 506)
GL_STUB(glGetBufferPointervARB, 507)
GL_STUB(glGetBufferSubDataARB, 508)
GL_STUB(glIsBufferARB, 509)
GL_STUB(glMapBufferARB, 510)
GL_STUB(glUnmapBufferARB, 511)
GL_STUB(glBeginQueryARB, 512)
GL_STUB(glDeleteQueriesARB, 513)
GL_STUB(glEndQueryARB, 514)
GL_STUB(glGenQueriesARB, 515)
GL_STUB(glGetQueryObjectivARB, 516)
GL_STUB(glGetQueryObjectuivARB, 517)
GL_STUB(glGetQueryivARB, 518)
GL_STUB(glIsQueryARB, 519)
GL_STUB(glAttachObjectARB, 520)
GL_STUB(glCompileShaderARB, 521)
GL_STUB(glCreateProgramObjectARB, 522)
GL_STUB(glCreateShaderObjectARB, 523)
GL_STUB(glDeleteObjectARB, 524)
GL_STUB(glDetachObjectARB, 525)
GL_STUB(glGetActiveUniformARB, 526)
GL_STUB(glGetAttachedObjectsARB, 527)
GL_STUB(glGetHandleARB, 528)
GL_STUB(glGetInfoLogARB, 529)
GL_STUB(glGetObjectParameterfvARB, 530)
GL_STUB(glGetObjectParameterivARB, 531)
GL_STUB(glGetShaderSourceARB, 532)
GL_STUB(glGetUniformLocationARB, 533)
GL_STUB(glGetUniformfvARB, 534)
GL_STUB(glGetUniformivARB, 535)
GL_STUB(glLinkProgramARB, 536)
GL_STUB(glShaderSourceARB, 537)
GL_STUB(glUniform1fARB, 538)
GL_STUB(glUniform1fvARB, 539)
GL_STUB(glUniform1iARB, 540)
GL_STUB(glUniform1ivARB, 541)
GL_STUB(glUniform2fARB, 542)
GL_STUB(glUniform2fvARB, 543)
GL_STUB(glUniform2iARB, 544)
GL_STUB(glUniform2ivARB, 545)
GL_STUB(glUniform3fARB, 546)
GL_STUB(glUniform3fvARB, 547)
GL_STUB(glUniform3iARB, 548)
GL_STUB(glUniform3ivARB, 549)
GL_STUB(glUniform4fARB, 550)
GL_STUB(glUniform4fvARB, 551)
GL_STUB(glUniform4iARB, 552)
GL_STUB(glUniform4ivARB, 553)
GL_STUB(glUniformMatrix2fvARB, 554)
GL_STUB(glUniformMatrix3fvARB, 555)
GL_STUB(glUniformMatrix4fvARB, 556)
GL_STUB(glUseProgramObjectARB, 557)
GL_STUB(glValidateProgramARB, 558)
GL_STUB(glBindAttribLocationARB, 559)
GL_STUB(glGetActiveAttribARB, 560)
GL_STUB(glGetAttribLocationARB, 561)
GL_STUB(glDrawBuffersARB, 562)
GL_STUB(glRenderbufferStorageMultisample, 563)
GL_STUB(glFramebufferTextureARB, 564)
GL_STUB(glFramebufferTextureFaceARB, 565)
GL_STUB(glProgramParameteriARB, 566)
GL_STUB(glFlushMappedBufferRange, 567)
GL_STUB(glMapBufferRange, 568)
GL_STUB(glBindVertexArray, 569)
GL_STUB(glGenVertexArrays, 570)
GL_STUB(glCopyBufferSubData, 571)
GL_STUB(glClientWaitSync, 572)
GL_STUB(glDeleteSync, 573)
GL_STUB(glFenceSync, 574)
GL_STUB(glGetInteger64v, 575)
GL_STUB(glGetSynciv, 576)
GL_STUB(glIsSync, 577)
GL_STUB(glWaitSync, 578)
GL_STUB(glDrawElementsBaseVertex, 579)
GL_STUB(glDrawRangeElementsBaseVertex, 580)
GL_STUB(glMultiDrawElementsBaseVertex, 581)
GL_STUB(glBindTransformFeedback, 582)
GL_STUB(glDeleteTransformFeedbacks, 583)
GL_STUB(glDrawTransformFeedback, 584)
GL_STUB(glGenTransformFeedbacks, 585)
GL_STUB(glIsTransformFeedback, 586)
GL_STUB(glPauseTransformFeedback, 587)
GL_STUB(glResumeTransformFeedback, 588)
GL_STUB(glPolygonOffsetEXT, 589)
GL_STUB(gl_dispatch_stub_590, 590)
HIDDEN(gl_dispatch_stub_590)
GL_STUB(gl_dispatch_stub_591, 591)
HIDDEN(gl_dispatch_stub_591)
GL_STUB(gl_dispatch_stub_592, 592)
HIDDEN(gl_dispatch_stub_592)
GL_STUB(gl_dispatch_stub_593, 593)
HIDDEN(gl_dispatch_stub_593)
GL_STUB(gl_dispatch_stub_594, 594)
HIDDEN(gl_dispatch_stub_594)
GL_STUB(gl_dispatch_stub_595, 595)
HIDDEN(gl_dispatch_stub_595)
GL_STUB(gl_dispatch_stub_596, 596)
HIDDEN(gl_dispatch_stub_596)
GL_STUB(gl_dispatch_stub_597, 597)
HIDDEN(gl_dispatch_stub_597)
GL_STUB(glColorPointerEXT, 598)
GL_STUB(glEdgeFlagPointerEXT, 599)
GL_STUB(glIndexPointerEXT, 600)
GL_STUB(glNormalPointerEXT, 601)
GL_STUB(glTexCoordPointerEXT, 602)
GL_STUB(glVertexPointerEXT, 603)
GL_STUB(glPointParameterfEXT, 604)
GL_STUB(glPointParameterfvEXT, 605)
GL_STUB(glLockArraysEXT, 606)
GL_STUB(glUnlockArraysEXT, 607)
GL_STUB(glSecondaryColor3bEXT, 608)
GL_STUB(glSecondaryColor3bvEXT, 609)
GL_STUB(glSecondaryColor3dEXT, 610)
GL_STUB(glSecondaryColor3dvEXT, 611)
GL_STUB(glSecondaryColor3fEXT, 612)
GL_STUB(glSecondaryColor3fvEXT, 613)
GL_STUB(glSecondaryColor3iEXT, 614)
GL_STUB(glSecondaryColor3ivEXT, 615)
GL_STUB(glSecondaryColor3sEXT, 616)
GL_STUB(glSecondaryColor3svEXT, 617)
GL_STUB(glSecondaryColor3ubEXT, 618)
GL_STUB(glSecondaryColor3ubvEXT, 619)
GL_STUB(glSecondaryColor3uiEXT, 620)
GL_STUB(glSecondaryColor3uivEXT, 621)
GL_STUB(glSecondaryColor3usEXT, 622)
GL_STUB(glSecondaryColor3usvEXT, 623)
GL_STUB(glSecondaryColorPointerEXT, 624)
GL_STUB(glMultiDrawArraysEXT, 625)
GL_STUB(glMultiDrawElementsEXT, 626)
GL_STUB(glFogCoordPointerEXT, 627)
GL_STUB(glFogCoorddEXT, 628)
GL_STUB(glFogCoorddvEXT, 629)
GL_STUB(glFogCoordfEXT, 630)
GL_STUB(glFogCoordfvEXT, 631)
GL_STUB(gl_dispatch_stub_632, 632)
HIDDEN(gl_dispatch_stub_632)
GL_STUB(glBlendFuncSeparateEXT, 633)
GL_STUB(glFlushVertexArrayRangeNV, 634)
GL_STUB(glVertexArrayRangeNV, 635)
GL_STUB(glCombinerInputNV, 636)
GL_STUB(glCombinerOutputNV, 637)
GL_STUB(glCombinerParameterfNV, 638)
GL_STUB(glCombinerParameterfvNV, 639)
GL_STUB(glCombinerParameteriNV, 640)
GL_STUB(glCombinerParameterivNV, 641)
GL_STUB(glFinalCombinerInputNV, 642)
GL_STUB(glGetCombinerInputParameterfvNV, 643)
GL_STUB(glGetCombinerInputParameterivNV, 644)
GL_STUB(glGetCombinerOutputParameterfvNV, 645)
GL_STUB(glGetCombinerOutputParameterivNV, 646)
GL_STUB(glGetFinalCombinerInputParameterfvNV, 647)
GL_STUB(glGetFinalCombinerInputParameterivNV, 648)
GL_STUB(glResizeBuffersMESA, 649)
GL_STUB(glWindowPos2dMESA, 650)
GL_STUB(glWindowPos2dvMESA, 651)
GL_STUB(glWindowPos2fMESA, 652)
GL_STUB(glWindowPos2fvMESA, 653)
GL_STUB(glWindowPos2iMESA, 654)
GL_STUB(glWindowPos2ivMESA, 655)
GL_STUB(glWindowPos2sMESA, 656)
GL_STUB(glWindowPos2svMESA, 657)
GL_STUB(glWindowPos3dMESA, 658)
GL_STUB(glWindowPos3dvMESA, 659)
GL_STUB(glWindowPos3fMESA, 660)
GL_STUB(glWindowPos3fvMESA, 661)
GL_STUB(glWindowPos3iMESA, 662)
GL_STUB(glWindowPos3ivMESA, 663)
GL_STUB(glWindowPos3sMESA, 664)
GL_STUB(glWindowPos3svMESA, 665)
GL_STUB(glWindowPos4dMESA, 666)
GL_STUB(glWindowPos4dvMESA, 667)
GL_STUB(glWindowPos4fMESA, 668)
GL_STUB(glWindowPos4fvMESA, 669)
GL_STUB(glWindowPos4iMESA, 670)
GL_STUB(glWindowPos4ivMESA, 671)
GL_STUB(glWindowPos4sMESA, 672)
GL_STUB(glWindowPos4svMESA, 673)
GL_STUB(gl_dispatch_stub_674, 674)
HIDDEN(gl_dispatch_stub_674)
GL_STUB(gl_dispatch_stub_675, 675)
HIDDEN(gl_dispatch_stub_675)
GL_STUB(gl_dispatch_stub_676, 676)
HIDDEN(gl_dispatch_stub_676)
GL_STUB(gl_dispatch_stub_677, 677)
HIDDEN(gl_dispatch_stub_677)
GL_STUB(gl_dispatch_stub_678, 678)
HIDDEN(gl_dispatch_stub_678)
GL_STUB(gl_dispatch_stub_679, 679)
HIDDEN(gl_dispatch_stub_679)
GL_STUB(gl_dispatch_stub_680, 680)
HIDDEN(gl_dispatch_stub_680)
GL_STUB(gl_dispatch_stub_681, 681)
HIDDEN(gl_dispatch_stub_681)
GL_STUB(gl_dispatch_stub_682, 682)
HIDDEN(gl_dispatch_stub_682)
GL_STUB(glAreProgramsResidentNV, 683)
GL_STUB(glBindProgramNV, 684)
GL_STUB(glDeleteProgramsNV, 685)
GL_STUB(glExecuteProgramNV, 686)
GL_STUB(glGenProgramsNV, 687)
GL_STUB(glGetProgramParameterdvNV, 688)
GL_STUB(glGetProgramParameterfvNV, 689)
GL_STUB(glGetProgramStringNV, 690)
GL_STUB(glGetProgramivNV, 691)
GL_STUB(glGetTrackMatrixivNV, 692)
GL_STUB(glGetVertexAttribPointervNV, 693)
GL_STUB(glGetVertexAttribdvNV, 694)
GL_STUB(glGetVertexAttribfvNV, 695)
GL_STUB(glGetVertexAttribivNV, 696)
GL_STUB(glIsProgramNV, 697)
GL_STUB(glLoadProgramNV, 698)
GL_STUB(glProgramParameters4dvNV, 699)
GL_STUB(glProgramParameters4fvNV, 700)
GL_STUB(glRequestResidentProgramsNV, 701)
GL_STUB(glTrackMatrixNV, 702)
GL_STUB(glVertexAttrib1dNV, 703)
GL_STUB(glVertexAttrib1dvNV, 704)
GL_STUB(glVertexAttrib1fNV, 705)
GL_STUB(glVertexAttrib1fvNV, 706)
GL_STUB(glVertexAttrib1sNV, 707)
GL_STUB(glVertexAttrib1svNV, 708)
GL_STUB(glVertexAttrib2dNV, 709)
GL_STUB(glVertexAttrib2dvNV, 710)
GL_STUB(glVertexAttrib2fNV, 711)
GL_STUB(glVertexAttrib2fvNV, 712)
GL_STUB(glVertexAttrib2sNV, 713)
GL_STUB(glVertexAttrib2svNV, 714)
GL_STUB(glVertexAttrib3dNV, 715)
GL_STUB(glVertexAttrib3dvNV, 716)
GL_STUB(glVertexAttrib3fNV, 717)
GL_STUB(glVertexAttrib3fvNV, 718)
GL_STUB(glVertexAttrib3sNV, 719)
GL_STUB(glVertexAttrib3svNV, 720)
GL_STUB(glVertexAttrib4dNV, 721)
GL_STUB(glVertexAttrib4dvNV, 722)
GL_STUB(glVertexAttrib4fNV, 723)
GL_STUB(glVertexAttrib4fvNV, 724)
GL_STUB(glVertexAttrib4sNV, 725)
GL_STUB(glVertexAttrib4svNV, 726)
GL_STUB(glVertexAttrib4ubNV, 727)
GL_STUB(glVertexAttrib4ubvNV, 728)
GL_STUB(glVertexAttribPointerNV, 729)
GL_STUB(glVertexAttribs1dvNV, 730)
GL_STUB(glVertexAttribs1fvNV, 731)
GL_STUB(glVertexAttribs1svNV, 732)
GL_STUB(glVertexAttribs2dvNV, 733)
GL_STUB(glVertexAttribs2fvNV, 734)
GL_STUB(glVertexAttribs2svNV, 735)
GL_STUB(glVertexAttribs3dvNV, 736)
GL_STUB(glVertexAttribs3fvNV, 737)
GL_STUB(glVertexAttribs3svNV, 738)
GL_STUB(glVertexAttribs4dvNV, 739)
GL_STUB(glVertexAttribs4fvNV, 740)
GL_STUB(glVertexAttribs4svNV, 741)
GL_STUB(glVertexAttribs4ubvNV, 742)
GL_STUB(glGetTexBumpParameterfvATI, 743)
GL_STUB(glGetTexBumpParameterivATI, 744)
GL_STUB(glTexBumpParameterfvATI, 745)
GL_STUB(glTexBumpParameterivATI, 746)
GL_STUB(glAlphaFragmentOp1ATI, 747)
GL_STUB(glAlphaFragmentOp2ATI, 748)
GL_STUB(glAlphaFragmentOp3ATI, 749)
GL_STUB(glBeginFragmentShaderATI, 750)
GL_STUB(glBindFragmentShaderATI, 751)
GL_STUB(glColorFragmentOp1ATI, 752)
GL_STUB(glColorFragmentOp2ATI, 753)
GL_STUB(glColorFragmentOp3ATI, 754)
GL_STUB(glDeleteFragmentShaderATI, 755)
GL_STUB(glEndFragmentShaderATI, 756)
GL_STUB(glGenFragmentShadersATI, 757)
GL_STUB(glPassTexCoordATI, 758)
GL_STUB(glSampleMapATI, 759)
GL_STUB(glSetFragmentShaderConstantATI, 760)
GL_STUB(glPointParameteriNV, 761)
GL_STUB(glPointParameterivNV, 762)
GL_STUB(gl_dispatch_stub_763, 763)
HIDDEN(gl_dispatch_stub_763)
GL_STUB(gl_dispatch_stub_764, 764)
HIDDEN(gl_dispatch_stub_764)
GL_STUB(gl_dispatch_stub_765, 765)
HIDDEN(gl_dispatch_stub_765)
GL_STUB(gl_dispatch_stub_766, 766)
HIDDEN(gl_dispatch_stub_766)
GL_STUB(gl_dispatch_stub_767, 767)
HIDDEN(gl_dispatch_stub_767)
GL_STUB(glGetProgramNamedParameterdvNV, 768)
GL_STUB(glGetProgramNamedParameterfvNV, 769)
GL_STUB(glProgramNamedParameter4dNV, 770)
GL_STUB(glProgramNamedParameter4dvNV, 771)
GL_STUB(glProgramNamedParameter4fNV, 772)
GL_STUB(glProgramNamedParameter4fvNV, 773)
GL_STUB(glPrimitiveRestartIndexNV, 774)
GL_STUB(glPrimitiveRestartNV, 775)
GL_STUB(gl_dispatch_stub_776, 776)
HIDDEN(gl_dispatch_stub_776)
GL_STUB(gl_dispatch_stub_777, 777)
HIDDEN(gl_dispatch_stub_777)
GL_STUB(glBindFramebufferEXT, 778)
GL_STUB(glBindRenderbufferEXT, 779)
GL_STUB(glCheckFramebufferStatusEXT, 780)
GL_STUB(glDeleteFramebuffersEXT, 781)
GL_STUB(glDeleteRenderbuffersEXT, 782)
GL_STUB(glFramebufferRenderbufferEXT, 783)
GL_STUB(glFramebufferTexture1DEXT, 784)
GL_STUB(glFramebufferTexture2DEXT, 785)
GL_STUB(glFramebufferTexture3DEXT, 786)
GL_STUB(glGenFramebuffersEXT, 787)
GL_STUB(glGenRenderbuffersEXT, 788)
GL_STUB(glGenerateMipmapEXT, 789)
GL_STUB(glGetFramebufferAttachmentParameterivEXT, 790)
GL_STUB(glGetRenderbufferParameterivEXT, 791)
GL_STUB(glIsFramebufferEXT, 792)
GL_STUB(glIsRenderbufferEXT, 793)
GL_STUB(glRenderbufferStorageEXT, 794)
GL_STUB(gl_dispatch_stub_795, 795)
HIDDEN(gl_dispatch_stub_795)
GL_STUB(gl_dispatch_stub_796, 796)
HIDDEN(gl_dispatch_stub_796)
GL_STUB(gl_dispatch_stub_797, 797)
HIDDEN(gl_dispatch_stub_797)
GL_STUB(glBindFragDataLocationEXT, 798)
GL_STUB(glGetFragDataLocationEXT, 799)
GL_STUB(glGetUniformuivEXT, 800)
GL_STUB(glGetVertexAttribIivEXT, 801)
GL_STUB(glGetVertexAttribIuivEXT, 802)
GL_STUB(glUniform1uiEXT, 803)
GL_STUB(glUniform1uivEXT, 804)
GL_STUB(glUniform2uiEXT, 805)
GL_STUB(glUniform2uivEXT, 806)
GL_STUB(glUniform3uiEXT, 807)
GL_STUB(glUniform3uivEXT, 808)
GL_STUB(glUniform4uiEXT, 809)
GL_STUB(glUniform4uivEXT, 810)
GL_STUB(glVertexAttribI1iEXT, 811)
GL_STUB(glVertexAttribI1ivEXT, 812)
GL_STUB(glVertexAttribI1uiEXT, 813)
GL_STUB(glVertexAttribI1uivEXT, 814)
GL_STUB(glVertexAttribI2iEXT, 815)
GL_STUB(glVertexAttribI2ivEXT, 816)
GL_STUB(glVertexAttribI2uiEXT, 817)
GL_STUB(glVertexAttribI2uivEXT, 818)
GL_STUB(glVertexAttribI3iEXT, 819)
GL_STUB(glVertexAttribI3ivEXT, 820)
GL_STUB(glVertexAttribI3uiEXT, 821)
GL_STUB(glVertexAttribI3uivEXT, 822)
GL_STUB(glVertexAttribI4bvEXT, 823)
GL_STUB(glVertexAttribI4iEXT, 824)
GL_STUB(glVertexAttribI4ivEXT, 825)
GL_STUB(glVertexAttribI4svEXT, 826)
GL_STUB(glVertexAttribI4ubvEXT, 827)
GL_STUB(glVertexAttribI4uiEXT, 828)
GL_STUB(glVertexAttribI4uivEXT, 829)
GL_STUB(glVertexAttribI4usvEXT, 830)
GL_STUB(glVertexAttribIPointerEXT, 831)
GL_STUB(glFramebufferTextureLayerEXT, 832)
GL_STUB(glColorMaskIndexedEXT, 833)
GL_STUB(glDisableIndexedEXT, 834)
GL_STUB(glEnableIndexedEXT, 835)
GL_STUB(glGetBooleanIndexedvEXT, 836)
GL_STUB(glGetIntegerIndexedvEXT, 837)
GL_STUB(glIsEnabledIndexedEXT, 838)
GL_STUB(glClearColorIiEXT, 839)
GL_STUB(glClearColorIuiEXT, 840)
GL_STUB(glGetTexParameterIivEXT, 841)
GL_STUB(glGetTexParameterIuivEXT, 842)
GL_STUB(glTexParameterIivEXT, 843)
GL_STUB(glTexParameterIuivEXT, 844)
GL_STUB(glBeginConditionalRenderNV, 845)
GL_STUB(glEndConditionalRenderNV, 846)
GL_STUB(glBeginTransformFeedbackEXT, 847)
GL_STUB(glBindBufferBaseEXT, 848)
GL_STUB(glBindBufferOffsetEXT, 849)
GL_STUB(glBindBufferRangeEXT, 850)
GL_STUB(glEndTransformFeedbackEXT, 851)
GL_STUB(glGetTransformFeedbackVaryingEXT, 852)
GL_STUB(glTransformFeedbackVaryingsEXT, 853)
GL_STUB(glProvokingVertexEXT, 854)
GL_STUB(gl_dispatch_stub_855, 855)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_855)
GL_STUB(gl_dispatch_stub_856, 856)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_856)
GL_STUB(glGetObjectParameterivAPPLE, 857)
GL_STUB(glObjectPurgeableAPPLE, 858)
GL_STUB(glObjectUnpurgeableAPPLE, 859)
GL_STUB(glActiveProgramEXT, 860)
GL_STUB(glCreateShaderProgramEXT, 861)
GL_STUB(glUseShaderProgramEXT, 862)
GL_STUB(gl_dispatch_stub_863, 863)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_863)
GL_STUB(gl_dispatch_stub_864, 864)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_864)
GL_STUB(gl_dispatch_stub_865, 865)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_865)
GL_STUB(gl_dispatch_stub_866, 866)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_866)
GL_STUB(gl_dispatch_stub_867, 867)
2010-10-28 21:17:41 -06:00
HIDDEN(gl_dispatch_stub_867)
GL_STUB(glEGLImageTargetRenderbufferStorageOES, 868)
GL_STUB(glEGLImageTargetTexture2DOES, 869)
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glArrayElementEXT, glArrayElement)
GL_STUB_ALIAS(glBindTextureEXT, glBindTexture)
GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays)
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glAreTexturesResidentEXT, glAreTexturesResident)
#endif
GL_STUB_ALIAS(glCopyTexImage1DEXT, glCopyTexImage1D)
GL_STUB_ALIAS(glCopyTexImage2DEXT, glCopyTexImage2D)
GL_STUB_ALIAS(glCopyTexSubImage1DEXT, glCopyTexSubImage1D)
GL_STUB_ALIAS(glCopyTexSubImage2DEXT, glCopyTexSubImage2D)
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glDeleteTexturesEXT, glDeleteTextures)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGenTexturesEXT, glGenTextures)
#endif
GL_STUB_ALIAS(glGetPointervEXT, glGetPointerv)
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glIsTextureEXT, glIsTexture)
#endif
GL_STUB_ALIAS(glPrioritizeTexturesEXT, glPrioritizeTextures)
GL_STUB_ALIAS(glTexSubImage1DEXT, glTexSubImage1D)
GL_STUB_ALIAS(glTexSubImage2DEXT, glTexSubImage2D)
GL_STUB_ALIAS(glBlendColorEXT, glBlendColor)
GL_STUB_ALIAS(glBlendEquationEXT, glBlendEquation)
GL_STUB_ALIAS(glDrawRangeElementsEXT, glDrawRangeElements)
GL_STUB_ALIAS(glColorTableSGI, glColorTable)
GL_STUB_ALIAS(glColorTableEXT, glColorTable)
GL_STUB_ALIAS(glColorTableParameterfvSGI, glColorTableParameterfv)
GL_STUB_ALIAS(glColorTableParameterivSGI, glColorTableParameteriv)
GL_STUB_ALIAS(glCopyColorTableSGI, glCopyColorTable)
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetColorTableSGI, glGetColorTable)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetColorTableEXT, glGetColorTable)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetColorTableParameterfvSGI, glGetColorTableParameterfv)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetColorTableParameterfvEXT, glGetColorTableParameterfv)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetColorTableParameterivSGI, glGetColorTableParameteriv)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetColorTableParameterivEXT, glGetColorTableParameteriv)
#endif
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glColorSubTableEXT, glColorSubTable)
GL_STUB_ALIAS(glCopyColorSubTableEXT, glCopyColorSubTable)
GL_STUB_ALIAS(glConvolutionFilter1DEXT, glConvolutionFilter1D)
GL_STUB_ALIAS(glConvolutionFilter2DEXT, glConvolutionFilter2D)
GL_STUB_ALIAS(glConvolutionParameterfEXT, glConvolutionParameterf)
GL_STUB_ALIAS(glConvolutionParameterfvEXT, glConvolutionParameterfv)
GL_STUB_ALIAS(glConvolutionParameteriEXT, glConvolutionParameteri)
GL_STUB_ALIAS(glConvolutionParameterivEXT, glConvolutionParameteriv)
GL_STUB_ALIAS(glCopyConvolutionFilter1DEXT, glCopyConvolutionFilter1D)
GL_STUB_ALIAS(glCopyConvolutionFilter2DEXT, glCopyConvolutionFilter2D)
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetConvolutionFilterEXT, glGetConvolutionFilter)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetConvolutionParameterfvEXT, glGetConvolutionParameterfv)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetConvolutionParameterivEXT, glGetConvolutionParameteriv)
#endif
#ifndef GLX_INDIRECT_RENDERING
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glGetSeparableFilterEXT, glGetSeparableFilter)
#endif
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glSeparableFilter2DEXT, glSeparableFilter2D)
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetHistogramEXT, glGetHistogram)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetHistogramParameterfvEXT, glGetHistogramParameterfv)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetHistogramParameterivEXT, glGetHistogramParameteriv)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetMinmaxEXT, glGetMinmax)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetMinmaxParameterfvEXT, glGetMinmaxParameterfv)
#endif
#ifndef GLX_INDIRECT_RENDERING
GL_STUB_ALIAS(glGetMinmaxParameterivEXT, glGetMinmaxParameteriv)
#endif
GL_STUB_ALIAS(glHistogramEXT, glHistogram)
GL_STUB_ALIAS(glMinmaxEXT, glMinmax)
GL_STUB_ALIAS(glResetHistogramEXT, glResetHistogram)
GL_STUB_ALIAS(glResetMinmaxEXT, glResetMinmax)
GL_STUB_ALIAS(glTexImage3DEXT, glTexImage3D)
GL_STUB_ALIAS(glTexSubImage3DEXT, glTexSubImage3D)
GL_STUB_ALIAS(glCopyTexSubImage3DEXT, glCopyTexSubImage3D)
GL_STUB_ALIAS(glActiveTexture, glActiveTextureARB)
GL_STUB_ALIAS(glClientActiveTexture, glClientActiveTextureARB)
GL_STUB_ALIAS(glMultiTexCoord1d, glMultiTexCoord1dARB)
GL_STUB_ALIAS(glMultiTexCoord1dv, glMultiTexCoord1dvARB)
GL_STUB_ALIAS(glMultiTexCoord1f, glMultiTexCoord1fARB)
GL_STUB_ALIAS(glMultiTexCoord1fv, glMultiTexCoord1fvARB)
GL_STUB_ALIAS(glMultiTexCoord1i, glMultiTexCoord1iARB)
GL_STUB_ALIAS(glMultiTexCoord1iv, glMultiTexCoord1ivARB)
GL_STUB_ALIAS(glMultiTexCoord1s, glMultiTexCoord1sARB)
GL_STUB_ALIAS(glMultiTexCoord1sv, glMultiTexCoord1svARB)
GL_STUB_ALIAS(glMultiTexCoord2d, glMultiTexCoord2dARB)
GL_STUB_ALIAS(glMultiTexCoord2dv, glMultiTexCoord2dvARB)
GL_STUB_ALIAS(glMultiTexCoord2f, glMultiTexCoord2fARB)
GL_STUB_ALIAS(glMultiTexCoord2fv, glMultiTexCoord2fvARB)
GL_STUB_ALIAS(glMultiTexCoord2i, glMultiTexCoord2iARB)
GL_STUB_ALIAS(glMultiTexCoord2iv, glMultiTexCoord2ivARB)
GL_STUB_ALIAS(glMultiTexCoord2s, glMultiTexCoord2sARB)
GL_STUB_ALIAS(glMultiTexCoord2sv, glMultiTexCoord2svARB)
GL_STUB_ALIAS(glMultiTexCoord3d, glMultiTexCoord3dARB)
GL_STUB_ALIAS(glMultiTexCoord3dv, glMultiTexCoord3dvARB)
GL_STUB_ALIAS(glMultiTexCoord3f, glMultiTexCoord3fARB)
GL_STUB_ALIAS(glMultiTexCoord3fv, glMultiTexCoord3fvARB)
GL_STUB_ALIAS(glMultiTexCoord3i, glMultiTexCoord3iARB)
GL_STUB_ALIAS(glMultiTexCoord3iv, glMultiTexCoord3ivARB)
GL_STUB_ALIAS(glMultiTexCoord3s, glMultiTexCoord3sARB)
GL_STUB_ALIAS(glMultiTexCoord3sv, glMultiTexCoord3svARB)
GL_STUB_ALIAS(glMultiTexCoord4d, glMultiTexCoord4dARB)
GL_STUB_ALIAS(glMultiTexCoord4dv, glMultiTexCoord4dvARB)
GL_STUB_ALIAS(glMultiTexCoord4f, glMultiTexCoord4fARB)
GL_STUB_ALIAS(glMultiTexCoord4fv, glMultiTexCoord4fvARB)
GL_STUB_ALIAS(glMultiTexCoord4i, glMultiTexCoord4iARB)
GL_STUB_ALIAS(glMultiTexCoord4iv, glMultiTexCoord4ivARB)
GL_STUB_ALIAS(glMultiTexCoord4s, glMultiTexCoord4sARB)
GL_STUB_ALIAS(glMultiTexCoord4sv, glMultiTexCoord4svARB)
GL_STUB_ALIAS(glStencilOpSeparateATI, glStencilOpSeparate)
GL_STUB_ALIAS(glDrawArraysInstancedARB, glDrawArraysInstanced)
GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstanced)
GL_STUB_ALIAS(glDrawElementsInstancedARB, glDrawElementsInstanced)
GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstanced)
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glLoadTransposeMatrixd, glLoadTransposeMatrixdARB)
GL_STUB_ALIAS(glLoadTransposeMatrixf, glLoadTransposeMatrixfARB)
GL_STUB_ALIAS(glMultTransposeMatrixd, glMultTransposeMatrixdARB)
GL_STUB_ALIAS(glMultTransposeMatrixf, glMultTransposeMatrixfARB)
GL_STUB_ALIAS(glSampleCoverage, glSampleCoverageARB)
GL_STUB_ALIAS(glCompressedTexImage1D, glCompressedTexImage1DARB)
GL_STUB_ALIAS(glCompressedTexImage2D, glCompressedTexImage2DARB)
GL_STUB_ALIAS(glCompressedTexImage3D, glCompressedTexImage3DARB)
GL_STUB_ALIAS(glCompressedTexSubImage1D, glCompressedTexSubImage1DARB)
GL_STUB_ALIAS(glCompressedTexSubImage2D, glCompressedTexSubImage2DARB)
GL_STUB_ALIAS(glCompressedTexSubImage3D, glCompressedTexSubImage3DARB)
GL_STUB_ALIAS(glGetCompressedTexImage, glGetCompressedTexImageARB)
GL_STUB_ALIAS(glDisableVertexAttribArray, glDisableVertexAttribArrayARB)
GL_STUB_ALIAS(glEnableVertexAttribArray, glEnableVertexAttribArrayARB)
GL_STUB_ALIAS(glGetVertexAttribdv, glGetVertexAttribdvARB)
GL_STUB_ALIAS(glGetVertexAttribfv, glGetVertexAttribfvARB)
GL_STUB_ALIAS(glGetVertexAttribiv, glGetVertexAttribivARB)
GL_STUB_ALIAS(glProgramParameter4dNV, glProgramEnvParameter4dARB)
GL_STUB_ALIAS(glProgramParameter4dvNV, glProgramEnvParameter4dvARB)
GL_STUB_ALIAS(glProgramParameter4fNV, glProgramEnvParameter4fARB)
GL_STUB_ALIAS(glProgramParameter4fvNV, glProgramEnvParameter4fvARB)
GL_STUB_ALIAS(glVertexAttrib1d, glVertexAttrib1dARB)
GL_STUB_ALIAS(glVertexAttrib1dv, glVertexAttrib1dvARB)
GL_STUB_ALIAS(glVertexAttrib1f, glVertexAttrib1fARB)
GL_STUB_ALIAS(glVertexAttrib1fv, glVertexAttrib1fvARB)
GL_STUB_ALIAS(glVertexAttrib1s, glVertexAttrib1sARB)
GL_STUB_ALIAS(glVertexAttrib1sv, glVertexAttrib1svARB)
GL_STUB_ALIAS(glVertexAttrib2d, glVertexAttrib2dARB)
GL_STUB_ALIAS(glVertexAttrib2dv, glVertexAttrib2dvARB)
GL_STUB_ALIAS(glVertexAttrib2f, glVertexAttrib2fARB)
GL_STUB_ALIAS(glVertexAttrib2fv, glVertexAttrib2fvARB)
GL_STUB_ALIAS(glVertexAttrib2s, glVertexAttrib2sARB)
GL_STUB_ALIAS(glVertexAttrib2sv, glVertexAttrib2svARB)
GL_STUB_ALIAS(glVertexAttrib3d, glVertexAttrib3dARB)
GL_STUB_ALIAS(glVertexAttrib3dv, glVertexAttrib3dvARB)
GL_STUB_ALIAS(glVertexAttrib3f, glVertexAttrib3fARB)
GL_STUB_ALIAS(glVertexAttrib3fv, glVertexAttrib3fvARB)
GL_STUB_ALIAS(glVertexAttrib3s, glVertexAttrib3sARB)
GL_STUB_ALIAS(glVertexAttrib3sv, glVertexAttrib3svARB)
GL_STUB_ALIAS(glVertexAttrib4Nbv, glVertexAttrib4NbvARB)
GL_STUB_ALIAS(glVertexAttrib4Niv, glVertexAttrib4NivARB)
GL_STUB_ALIAS(glVertexAttrib4Nsv, glVertexAttrib4NsvARB)
GL_STUB_ALIAS(glVertexAttrib4Nub, glVertexAttrib4NubARB)
GL_STUB_ALIAS(glVertexAttrib4Nubv, glVertexAttrib4NubvARB)
GL_STUB_ALIAS(glVertexAttrib4Nuiv, glVertexAttrib4NuivARB)
GL_STUB_ALIAS(glVertexAttrib4Nusv, glVertexAttrib4NusvARB)
GL_STUB_ALIAS(glVertexAttrib4bv, glVertexAttrib4bvARB)
GL_STUB_ALIAS(glVertexAttrib4d, glVertexAttrib4dARB)
GL_STUB_ALIAS(glVertexAttrib4dv, glVertexAttrib4dvARB)
GL_STUB_ALIAS(glVertexAttrib4f, glVertexAttrib4fARB)
GL_STUB_ALIAS(glVertexAttrib4fv, glVertexAttrib4fvARB)
GL_STUB_ALIAS(glVertexAttrib4iv, glVertexAttrib4ivARB)
GL_STUB_ALIAS(glVertexAttrib4s, glVertexAttrib4sARB)
GL_STUB_ALIAS(glVertexAttrib4sv, glVertexAttrib4svARB)
GL_STUB_ALIAS(glVertexAttrib4ubv, glVertexAttrib4ubvARB)
GL_STUB_ALIAS(glVertexAttrib4uiv, glVertexAttrib4uivARB)
GL_STUB_ALIAS(glVertexAttrib4usv, glVertexAttrib4usvARB)
GL_STUB_ALIAS(glVertexAttribPointer, glVertexAttribPointerARB)
GL_STUB_ALIAS(glBindBuffer, glBindBufferARB)
GL_STUB_ALIAS(glBufferData, glBufferDataARB)
GL_STUB_ALIAS(glBufferSubData, glBufferSubDataARB)
GL_STUB_ALIAS(glDeleteBuffers, glDeleteBuffersARB)
GL_STUB_ALIAS(glGenBuffers, glGenBuffersARB)
GL_STUB_ALIAS(glGetBufferParameteriv, glGetBufferParameterivARB)
GL_STUB_ALIAS(glGetBufferPointerv, glGetBufferPointervARB)
GL_STUB_ALIAS(glGetBufferSubData, glGetBufferSubDataARB)
GL_STUB_ALIAS(glIsBuffer, glIsBufferARB)
GL_STUB_ALIAS(glMapBuffer, glMapBufferARB)
GL_STUB_ALIAS(glUnmapBuffer, glUnmapBufferARB)
GL_STUB_ALIAS(glBeginQuery, glBeginQueryARB)
GL_STUB_ALIAS(glDeleteQueries, glDeleteQueriesARB)
GL_STUB_ALIAS(glEndQuery, glEndQueryARB)
GL_STUB_ALIAS(glGenQueries, glGenQueriesARB)
GL_STUB_ALIAS(glGetQueryObjectiv, glGetQueryObjectivARB)
GL_STUB_ALIAS(glGetQueryObjectuiv, glGetQueryObjectuivARB)
GL_STUB_ALIAS(glGetQueryiv, glGetQueryivARB)
GL_STUB_ALIAS(glIsQuery, glIsQueryARB)
GL_STUB_ALIAS(glCompileShader, glCompileShaderARB)
GL_STUB_ALIAS(glGetActiveUniform, glGetActiveUniformARB)
GL_STUB_ALIAS(glGetShaderSource, glGetShaderSourceARB)
GL_STUB_ALIAS(glGetUniformLocation, glGetUniformLocationARB)
GL_STUB_ALIAS(glGetUniformfv, glGetUniformfvARB)
GL_STUB_ALIAS(glGetUniformiv, glGetUniformivARB)
GL_STUB_ALIAS(glLinkProgram, glLinkProgramARB)
GL_STUB_ALIAS(glShaderSource, glShaderSourceARB)
GL_STUB_ALIAS(glUniform1f, glUniform1fARB)
GL_STUB_ALIAS(glUniform1fv, glUniform1fvARB)
GL_STUB_ALIAS(glUniform1i, glUniform1iARB)
GL_STUB_ALIAS(glUniform1iv, glUniform1ivARB)
GL_STUB_ALIAS(glUniform2f, glUniform2fARB)
GL_STUB_ALIAS(glUniform2fv, glUniform2fvARB)
GL_STUB_ALIAS(glUniform2i, glUniform2iARB)
GL_STUB_ALIAS(glUniform2iv, glUniform2ivARB)
GL_STUB_ALIAS(glUniform3f, glUniform3fARB)
GL_STUB_ALIAS(glUniform3fv, glUniform3fvARB)
GL_STUB_ALIAS(glUniform3i, glUniform3iARB)
GL_STUB_ALIAS(glUniform3iv, glUniform3ivARB)
GL_STUB_ALIAS(glUniform4f, glUniform4fARB)
GL_STUB_ALIAS(glUniform4fv, glUniform4fvARB)
GL_STUB_ALIAS(glUniform4i, glUniform4iARB)
GL_STUB_ALIAS(glUniform4iv, glUniform4ivARB)
GL_STUB_ALIAS(glUniformMatrix2fv, glUniformMatrix2fvARB)
GL_STUB_ALIAS(glUniformMatrix3fv, glUniformMatrix3fvARB)
GL_STUB_ALIAS(glUniformMatrix4fv, glUniformMatrix4fvARB)
GL_STUB_ALIAS(glUseProgram, glUseProgramObjectARB)
GL_STUB_ALIAS(glValidateProgram, glValidateProgramARB)
GL_STUB_ALIAS(glBindAttribLocation, glBindAttribLocationARB)
GL_STUB_ALIAS(glGetActiveAttrib, glGetActiveAttribARB)
GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB)
GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB)
GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB)
GL_STUB_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample)
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
GL_STUB_ALIAS(glPointParameterf, glPointParameterfEXT)
GL_STUB_ALIAS(glPointParameterfARB, glPointParameterfEXT)
GL_STUB_ALIAS(glPointParameterfSGIS, glPointParameterfEXT)
GL_STUB_ALIAS(glPointParameterfv, glPointParameterfvEXT)
GL_STUB_ALIAS(glPointParameterfvARB, glPointParameterfvEXT)
GL_STUB_ALIAS(glPointParameterfvSGIS, glPointParameterfvEXT)
GL_STUB_ALIAS(glSecondaryColor3b, glSecondaryColor3bEXT)
GL_STUB_ALIAS(glSecondaryColor3bv, glSecondaryColor3bvEXT)
GL_STUB_ALIAS(glSecondaryColor3d, glSecondaryColor3dEXT)
GL_STUB_ALIAS(glSecondaryColor3dv, glSecondaryColor3dvEXT)
GL_STUB_ALIAS(glSecondaryColor3f, glSecondaryColor3fEXT)
GL_STUB_ALIAS(glSecondaryColor3fv, glSecondaryColor3fvEXT)
GL_STUB_ALIAS(glSecondaryColor3i, glSecondaryColor3iEXT)
GL_STUB_ALIAS(glSecondaryColor3iv, glSecondaryColor3ivEXT)
GL_STUB_ALIAS(glSecondaryColor3s, glSecondaryColor3sEXT)
GL_STUB_ALIAS(glSecondaryColor3sv, glSecondaryColor3svEXT)
GL_STUB_ALIAS(glSecondaryColor3ub, glSecondaryColor3ubEXT)
GL_STUB_ALIAS(glSecondaryColor3ubv, glSecondaryColor3ubvEXT)
GL_STUB_ALIAS(glSecondaryColor3ui, glSecondaryColor3uiEXT)
GL_STUB_ALIAS(glSecondaryColor3uiv, glSecondaryColor3uivEXT)
GL_STUB_ALIAS(glSecondaryColor3us, glSecondaryColor3usEXT)
GL_STUB_ALIAS(glSecondaryColor3usv, glSecondaryColor3usvEXT)
GL_STUB_ALIAS(glSecondaryColorPointer, glSecondaryColorPointerEXT)
GL_STUB_ALIAS(glMultiDrawArrays, glMultiDrawArraysEXT)
GL_STUB_ALIAS(glMultiDrawElements, glMultiDrawElementsEXT)
GL_STUB_ALIAS(glFogCoordPointer, glFogCoordPointerEXT)
GL_STUB_ALIAS(glFogCoordd, glFogCoorddEXT)
GL_STUB_ALIAS(glFogCoorddv, glFogCoorddvEXT)
GL_STUB_ALIAS(glFogCoordf, glFogCoordfEXT)
GL_STUB_ALIAS(glFogCoordfv, glFogCoordfvEXT)
GL_STUB_ALIAS(glBlendFuncSeparate, glBlendFuncSeparateEXT)
GL_STUB_ALIAS(glBlendFuncSeparateINGR, glBlendFuncSeparateEXT)
GL_STUB_ALIAS(glWindowPos2d, glWindowPos2dMESA)
GL_STUB_ALIAS(glWindowPos2dARB, glWindowPos2dMESA)
GL_STUB_ALIAS(glWindowPos2dv, glWindowPos2dvMESA)
GL_STUB_ALIAS(glWindowPos2dvARB, glWindowPos2dvMESA)
GL_STUB_ALIAS(glWindowPos2f, glWindowPos2fMESA)
GL_STUB_ALIAS(glWindowPos2fARB, glWindowPos2fMESA)
GL_STUB_ALIAS(glWindowPos2fv, glWindowPos2fvMESA)
GL_STUB_ALIAS(glWindowPos2fvARB, glWindowPos2fvMESA)
GL_STUB_ALIAS(glWindowPos2i, glWindowPos2iMESA)
GL_STUB_ALIAS(glWindowPos2iARB, glWindowPos2iMESA)
GL_STUB_ALIAS(glWindowPos2iv, glWindowPos2ivMESA)
GL_STUB_ALIAS(glWindowPos2ivARB, glWindowPos2ivMESA)
GL_STUB_ALIAS(glWindowPos2s, glWindowPos2sMESA)
GL_STUB_ALIAS(glWindowPos2sARB, glWindowPos2sMESA)
GL_STUB_ALIAS(glWindowPos2sv, glWindowPos2svMESA)
GL_STUB_ALIAS(glWindowPos2svARB, glWindowPos2svMESA)
GL_STUB_ALIAS(glWindowPos3d, glWindowPos3dMESA)
GL_STUB_ALIAS(glWindowPos3dARB, glWindowPos3dMESA)
GL_STUB_ALIAS(glWindowPos3dv, glWindowPos3dvMESA)
GL_STUB_ALIAS(glWindowPos3dvARB, glWindowPos3dvMESA)
GL_STUB_ALIAS(glWindowPos3f, glWindowPos3fMESA)
GL_STUB_ALIAS(glWindowPos3fARB, glWindowPos3fMESA)
GL_STUB_ALIAS(glWindowPos3fv, glWindowPos3fvMESA)
GL_STUB_ALIAS(glWindowPos3fvARB, glWindowPos3fvMESA)
GL_STUB_ALIAS(glWindowPos3i, glWindowPos3iMESA)
GL_STUB_ALIAS(glWindowPos3iARB, glWindowPos3iMESA)
GL_STUB_ALIAS(glWindowPos3iv, glWindowPos3ivMESA)
GL_STUB_ALIAS(glWindowPos3ivARB, glWindowPos3ivMESA)
GL_STUB_ALIAS(glWindowPos3s, glWindowPos3sMESA)
GL_STUB_ALIAS(glWindowPos3sARB, glWindowPos3sMESA)
GL_STUB_ALIAS(glWindowPos3sv, glWindowPos3svMESA)
GL_STUB_ALIAS(glWindowPos3svARB, glWindowPos3svMESA)
GL_STUB_ALIAS(glBindProgramARB, glBindProgramNV)
GL_STUB_ALIAS(glDeleteProgramsARB, glDeleteProgramsNV)
GL_STUB_ALIAS(glGenProgramsARB, glGenProgramsNV)
GL_STUB_ALIAS(glGetVertexAttribPointerv, glGetVertexAttribPointervNV)
GL_STUB_ALIAS(glGetVertexAttribPointervARB, glGetVertexAttribPointervNV)
GL_STUB_ALIAS(glIsProgramARB, glIsProgramNV)
GL_STUB_ALIAS(glPointParameteri, glPointParameteriNV)
GL_STUB_ALIAS(glPointParameteriv, glPointParameterivNV)
GL_STUB_ALIAS(glBindFramebuffer, glBindFramebufferEXT)
GL_STUB_ALIAS(glBindRenderbuffer, glBindRenderbufferEXT)
GL_STUB_ALIAS(glCheckFramebufferStatus, glCheckFramebufferStatusEXT)
GL_STUB_ALIAS(glDeleteFramebuffers, glDeleteFramebuffersEXT)
GL_STUB_ALIAS(glDeleteRenderbuffers, glDeleteRenderbuffersEXT)
GL_STUB_ALIAS(glFramebufferRenderbuffer, glFramebufferRenderbufferEXT)
GL_STUB_ALIAS(glFramebufferTexture1D, glFramebufferTexture1DEXT)
GL_STUB_ALIAS(glFramebufferTexture2D, glFramebufferTexture2DEXT)
GL_STUB_ALIAS(glFramebufferTexture3D, glFramebufferTexture3DEXT)
GL_STUB_ALIAS(glGenFramebuffers, glGenFramebuffersEXT)
GL_STUB_ALIAS(glGenRenderbuffers, glGenRenderbuffersEXT)
GL_STUB_ALIAS(glGenerateMipmap, glGenerateMipmapEXT)
GL_STUB_ALIAS(glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT)
GL_STUB_ALIAS(glGetRenderbufferParameteriv, glGetRenderbufferParameterivEXT)
GL_STUB_ALIAS(glIsFramebuffer, glIsFramebufferEXT)
GL_STUB_ALIAS(glIsRenderbuffer, glIsRenderbufferEXT)
GL_STUB_ALIAS(glRenderbufferStorage, glRenderbufferStorageEXT)
GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT)
GL_STUB_ALIAS(glBeginTransformFeedback, glBeginTransformFeedbackEXT)
GL_STUB_ALIAS(glBindBufferBase, glBindBufferBaseEXT)
GL_STUB_ALIAS(glBindBufferRange, glBindBufferRangeEXT)
GL_STUB_ALIAS(glEndTransformFeedback, glEndTransformFeedbackEXT)
GL_STUB_ALIAS(glGetTransformFeedbackVarying, glGetTransformFeedbackVaryingEXT)
GL_STUB_ALIAS(glTransformFeedbackVaryings, glTransformFeedbackVaryingsEXT)
2009-09-19 10:00:55 -06:00
GL_STUB_ALIAS(glProvokingVertex, glProvokingVertexEXT)
mesa: Resurrect SPARC asm code. This rewrites the sparc GLAPI code so that it's PIC friendly and works with all of the TLS/PTHREADS/64-bit/32-bit combinations properly. As a result we can turn SPARC asm back on. Currently it's only enabled on Linux, as that's the only place where I can test this stuff out. For the moment the cliptest SPARC asm routines are disabled as they are non-working. The problem is that they use register %g7 as a temporary which is where the threading libraries store the thread pointer on SPARC. I will fix that code up in a future change as it's a pretty important routine to optimize. Like x86 we do the runtime patch as a pthread once-invoked initializer in init_glapi_relocs(). Unlike x86, however, our GLAPI stubs on SPARC are just two instruction sequences that branch to a trampoline and put the GLAPI offset into a register. The trampoline is what we run-time patch. The stubs thus all look like: glFoo: ba __glapi_sparc_foo_stub sethi GLAPI_OFFSET(glFOO) * PTR_SIZE, %g3 This actually makes generate_entrypoint() a lot simpler on SPARC. For this case in generate_entrypoint() we generate stubs using a 'call' instead of the 'ba' above to make sure it can reach. In order to get a proper tail call going here, in the unpatched case, we do several tricks. To get the current PC, for example, we save the return address register into a temporary, do a call, save the return address register written by the call to another temporary, then restore the original return address register value. This is to avoid having to allocate a stack frame. This is necessary for PIC address formation. This new GLAPI scheme lets us get rid of the ugly SPARC GLAPI hacks in __glXInitialize() and one_time_init(). Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 05:35:15 -08:00
.globl gl_dispatch_functions_end
HIDDEN(gl_dispatch_functions_end)
gl_dispatch_functions_end: