api_arrayelt.c revision 94987beb2c9e87d9c55db5cb7c089dc77f78df94
122144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes/*
222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * Mesa 3-D graphics library
30d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Version:  6.1
422144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
50d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
722144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * Permission is hereby granted, free of charge, to any person obtaining a
822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * copy of this software and associated documentation files (the "Software"),
922144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * to deal in the Software without restriction, including without limitation
1022144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1122144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * and/or sell copies of the Software, and to permit persons to whom the
1222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * Software is furnished to do so, subject to the following conditions:
1322144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
1422144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * The above copyright notice and this permission notice shall be included
1522144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * in all copies or substantial portions of the Software.
1622144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes *
1722144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1922144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
2022144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
2122144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
2222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2322144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes */
2422144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes
25fc00cbe8d1ac48faf345e41a13757a8a1e2e5ebeKeith Whitwell/* Author:
2605a4b37707d2c598ea68c05d07a3d65bcbf5a076Brian Paul *    Keith Whitwell <keith@tungstengraphics.com>
27fc00cbe8d1ac48faf345e41a13757a8a1e2e5ebeKeith Whitwell */
28fc00cbe8d1ac48faf345e41a13757a8a1e2e5ebeKeith Whitwell
29cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#include "glheader.h"
304b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell#include "api_arrayelt.h"
31cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#include "context.h"
32fc00cbe8d1ac48faf345e41a13757a8a1e2e5ebeKeith Whitwell#include "glapi.h"
333c63452e64df7e10aa073c6c3b9492b1d7dabbb8Brian Paul#include "imports.h"
34cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#include "macros.h"
35cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell#include "mtypes.h"
36cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
37faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheideggertypedef void (GLAPIENTRY *array_func)( const void * );
380aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paul
39cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwelltypedef struct {
400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const struct gl_client_array *array;
41faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger   array_func func;
42faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger} AEarray;
430aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paul
440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paultypedef void (GLAPIENTRY *attrib_func)( GLuint indx, const void *data );
450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paultypedef struct {
470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const struct gl_client_array *array;
480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   attrib_func func;
490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   GLuint index;
500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul} AEattrib;
510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
520aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paultypedef struct {
5353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   AEarray arrays[32];
540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   AEattrib attribs[VERT_ATTRIB_MAX + 1];
55cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   GLuint NewState;
564b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell} AEcontext;
574b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
584b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell#define AE_CONTEXT(ctx) ((AEcontext *)(ctx)->aelt_context)
590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/*
610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Convert GL_BYTE, GL_UNSIGNED_BYTE, .. GL_DOUBLE into an integer
620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * in the range [0, 7].  Luckily these type tokens are sequentially
63f2f33507748260fe766742a0ed8b02c49d548bd8Brian Paul * numbered in gl.h, except for GL_DOUBLE.
640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
65f2f33507748260fe766742a0ed8b02c49d548bd8Brian Paul#define TYPE_IDX(t) ( (t) == GL_DOUBLE ? 7 : (t) & 7 )
66cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3bv(const GLbyte *v)
6894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
6994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3bv)(v);
7094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
7194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
7294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3ubv(const GLubyte *v)
7394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
7494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3ubv)(v);
7594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
7694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
7794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3sv(const GLshort *v)
7894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
7994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3sv)(v);
8094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
8194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
8294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3usv(const GLushort *v)
8394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
8494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3usv)(v);
8594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
8694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
8794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3iv(const GLint *v)
8894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
8994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3iv)(v);
9094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
9194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
9294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3uiv(const GLuint *v)
9394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
9494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3uiv)(v);
9594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
9694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
9794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3fv(const GLfloat *v)
9894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
9994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3fv)(v);
10094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
10194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
10294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color3dv(const GLdouble *v)
10394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
10494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color3dv)(v);
10594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
10694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
10794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4bv(const GLbyte *v)
10894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
10994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4bv)(v);
11094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
11194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
11294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4ubv(const GLubyte *v)
11394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
11494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4ubv)(v);
11594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
11694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
11794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4sv(const GLshort *v)
11894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
11994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4sv)(v);
12094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
1210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
12294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4usv(const GLushort *v)
12394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
12494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4usv)(v);
12594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
12694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
12794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4iv(const GLint *v)
12894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
12994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4iv)(v);
13094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
13194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
13294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4uiv(const GLuint *v)
13394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
13494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4uiv)(v);
13594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
13694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
13794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4fv(const GLfloat *v)
13894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
13994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4fv)(v);
14094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
14194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
14294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Color4dv(const GLdouble *v)
14394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
14494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Color4dv)(v);
14594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
14694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
14794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func ColorFuncs[2][8] = {
14894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
14994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3bv,
15094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3ubv,
15194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3sv,
15294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3usv,
15394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3iv,
15494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3uiv,
15594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3fv,
15694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color3dv,
15794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
15894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
15994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4bv,
16094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4ubv,
16194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4sv,
16294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4usv,
16394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4iv,
16494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4uiv,
16594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4fv,
16694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Color4dv,
16794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
16853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
16953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
17094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex2sv(const GLshort *v)
17194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
17294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex2sv)(v);
17394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
17494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
17594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex2iv(const GLint *v)
17694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
17794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex2iv)(v);
17894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
17994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
18094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex2fv(const GLfloat *v)
18194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
18294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex2fv)(v);
18394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
18494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
18594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex2dv(const GLdouble *v)
18694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
18794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex2dv)(v);
18894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
18994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
19094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex3sv(const GLshort *v)
19194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
19294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex3sv)(v);
19394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
19494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
19594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex3iv(const GLint *v)
19694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
19794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex3iv)(v);
19894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
19994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
20094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex3fv(const GLfloat *v)
20194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
20294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex3fv)(v);
20394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
20494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
20594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex3dv(const GLdouble *v)
20694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
20794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex3dv)(v);
20894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
20994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
21094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex4sv(const GLshort *v)
21194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
21294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex4sv)(v);
21394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
21494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
21594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex4iv(const GLint *v)
21694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
21794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex4iv)(v);
21894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
21994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
22094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex4fv(const GLfloat *v)
22194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
22294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex4fv)(v);
22394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
22494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
22594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Vertex4dv(const GLdouble *v)
22694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
22794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Vertex4dv)(v);
22894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
22994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
23094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func VertexFuncs[3][8] = {
23194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
23294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
23394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
23494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2sv,
23594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
23694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2iv,
23794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
23894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2fv,
23994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2dv,
24094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
24194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
24294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
24394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
24494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3sv,
24594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
24694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3iv,
24794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
24894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3fv,
24994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3dv,
25094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
25194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
25294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
25394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
25494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4sv,
25594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
25694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4iv,
25794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      0,
25894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4fv,
25994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4dv,
26094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
26153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
26253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
26394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Indexubv(const GLubyte *c)
26494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
26594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Indexubv)(c);
26694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
26794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
26894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Indexsv(const GLshort *c)
26994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
27094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Indexsv)(c);
27194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
27294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
27394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Indexiv(const GLint *c)
27494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
27594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Indexiv)(c);
27694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
27794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
27894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Indexfv(const GLfloat *c)
27994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
28094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Indexfv)(c);
28194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
28294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
28394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Indexdv(const GLdouble *c)
28494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
28594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Indexdv)(c);
28694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
28794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
28894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func IndexFuncs[8] = {
2894b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
29094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexubv,
29194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexsv,
2924b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
29394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexiv,
2944b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
29594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexfv,
29694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexdv,
297cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell};
298cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
29994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Normal3bv(const GLbyte *v)
30094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
30194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Normal3bv)(v);
30294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
30394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
30494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Normal3sv(const GLshort *v)
30594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
30694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Normal3sv)(v);
30794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
30894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
30994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Normal3iv(const GLint *v)
31094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
31194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Normal3iv)(v);
31294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
31394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
31494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Normal3fv(const GLfloat *v)
31594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
31694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Normal3fv)(v);
31794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
31894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
31994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY Normal3dv(const GLdouble *v)
32094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
32194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(Normal3dv)(v);
32294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
32394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
32494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func NormalFuncs[8] = {
32594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3bv,
32653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
32794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3sv,
32853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
32994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3iv,
33053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
33194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3fv,
33294987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3dv,
33353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
33453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
33553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul/* Wrapper functions in case glSecondaryColor*EXT doesn't exist */
3362615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3bvEXT(const GLbyte *c)
33753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
338c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3bvEXT)(c);
33953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
34053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3412615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3ubvEXT(const GLubyte *c)
34253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
343c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3ubvEXT)(c);
34453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
34553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3462615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3svEXT(const GLshort *c)
34753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
348c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3svEXT)(c);
34953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
35053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3512615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3usvEXT(const GLushort *c)
35253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
353c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3usvEXT)(c);
35453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
35553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3562615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3ivEXT(const GLint *c)
35753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
358c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3ivEXT)(c);
35953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
36053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3612615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3uivEXT(const GLuint *c)
36253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
363c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3uivEXT)(c);
36453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
36553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3662615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3fvEXT(const GLfloat *c)
36753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
368c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3fvEXT)(c);
36953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
37053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3712615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY SecondaryColor3dvEXT(const GLdouble *c)
37253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
373c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(SecondaryColor3dvEXT)(c);
37453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
37553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
37694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func SecondaryColorFuncs[8] = {
37753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3bvEXT,
37853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3ubvEXT,
37953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3svEXT,
38053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3usvEXT,
38153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3ivEXT,
38253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3uivEXT,
38353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3fvEXT,
38453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3dvEXT,
38553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
38653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
38753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
38853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul/* Again, wrapper functions in case glSecondaryColor*EXT doesn't exist */
3892615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY FogCoordfvEXT(const GLfloat *f)
39053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
391c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(FogCoordfvEXT)(f);
39253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
39353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
3942615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY FogCoorddvEXT(const GLdouble *f)
39553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
396c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(FogCoorddvEXT)(f);
39753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
39853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
39994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const array_func FogCoordFuncs[8] = {
40053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
40653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) FogCoordfvEXT,
40753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) FogCoorddvEXT
40853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
40953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
4100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**********************************************************************/
4110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_BYTE attributes */
4130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4142615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Nbv(GLuint index, const GLbyte *v)
4150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
416c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, BYTE_TO_FLOAT(v[0]));
4170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4192615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1bv(GLuint index, const GLbyte *v)
4200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
421c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
4220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4242615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Nbv(GLuint index, const GLbyte *v)
4250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
426c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]));
4270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4292615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2bv(GLuint index, const GLbyte *v)
4300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
431c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
4320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4342615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Nbv(GLuint index, const GLbyte *v)
4350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
436c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, BYTE_TO_FLOAT(v[0]),
437c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     BYTE_TO_FLOAT(v[1]),
438c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     BYTE_TO_FLOAT(v[2]));
4390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4412615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3bv(GLuint index, const GLbyte *v)
4420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
443c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
4440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4462615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Nbv(GLuint index, const GLbyte *v)
4470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
448c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, BYTE_TO_FLOAT(v[0]),
449c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     BYTE_TO_FLOAT(v[1]),
450c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     BYTE_TO_FLOAT(v[2]),
451c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     BYTE_TO_FLOAT(v[3]));
4520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4542615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4bv(GLuint index, const GLbyte *v)
4550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
456c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
4570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_BYTE attributes */
4600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4612615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Nubv(GLuint index, const GLubyte *v)
4620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
463c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, UBYTE_TO_FLOAT(v[0]));
4640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4662615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1ubv(GLuint index, const GLubyte *v)
4670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
468c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
4690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4712615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Nubv(GLuint index, const GLubyte *v)
4720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
473c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, UBYTE_TO_FLOAT(v[0]),
474c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UBYTE_TO_FLOAT(v[1]));
4750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4772615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2ubv(GLuint index, const GLubyte *v)
4780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
479c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
4800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4822615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Nubv(GLuint index, const GLubyte *v)
4830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
484c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, UBYTE_TO_FLOAT(v[0]),
485c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UBYTE_TO_FLOAT(v[1]),
486c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UBYTE_TO_FLOAT(v[2]));
4870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4882615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3ubv(GLuint index, const GLubyte *v)
4890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
490c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
4910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4932615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Nubv(GLuint index, const GLubyte *v)
4940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
495c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, UBYTE_TO_FLOAT(v[0]),
4960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[1]),
4970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[2]),
4980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[3]));
4990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5012615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4ubv(GLuint index, const GLubyte *v)
5020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
503c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
5040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_SHORT attributes */
5070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5082615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Nsv(GLuint index, const GLshort *v)
5090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
510c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, SHORT_TO_FLOAT(v[0]));
5110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5132615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1sv(GLuint index, const GLshort *v)
5140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
515c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
5160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5182615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Nsv(GLuint index, const GLshort *v)
5190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
520c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, SHORT_TO_FLOAT(v[0]),
521c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[1]));
5220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5242615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2sv(GLuint index, const GLshort *v)
5250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
526c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
5270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5292615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Nsv(GLuint index, const GLshort *v)
5300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
531c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, SHORT_TO_FLOAT(v[0]),
532c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[1]),
533c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[2]));
5340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5362615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3sv(GLuint index, const GLshort *v)
5370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
538c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
5390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5412615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Nsv(GLuint index, const GLshort *v)
5420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
543c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, SHORT_TO_FLOAT(v[0]),
544c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[1]),
545c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[2]),
546c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     SHORT_TO_FLOAT(v[3]));
5470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5492615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4sv(GLuint index, const GLshort *v)
5500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
551c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
5520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_SHORT attributes */
5550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5562615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Nusv(GLuint index, const GLushort *v)
5570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
558c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, USHORT_TO_FLOAT(v[0]));
5590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5612615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1usv(GLuint index, const GLushort *v)
5620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
563c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
5640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5662615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Nusv(GLuint index, const GLushort *v)
5670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
568c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, USHORT_TO_FLOAT(v[0]),
569c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[1]));
5700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5722615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2usv(GLuint index, const GLushort *v)
5730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
574c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
5750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5772615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Nusv(GLuint index, const GLushort *v)
5780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
579c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, USHORT_TO_FLOAT(v[0]),
580c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[1]),
581c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[2]));
5820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5842615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3usv(GLuint index, const GLushort *v)
5850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
586c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
5870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5892615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Nusv(GLuint index, const GLushort *v)
5900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
591c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, USHORT_TO_FLOAT(v[0]),
592c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[1]),
593c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[2]),
594c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     USHORT_TO_FLOAT(v[3]));
5950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5972615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4usv(GLuint index, const GLushort *v)
5980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
599c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
6000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_INT attributes */
6030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6042615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Niv(GLuint index, const GLint *v)
6050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
606c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, INT_TO_FLOAT(v[0]));
6070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6092615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1iv(GLuint index, const GLint *v)
6100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
611c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
6120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6142615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Niv(GLuint index, const GLint *v)
6150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
616c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, INT_TO_FLOAT(v[0]),
617c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[1]));
6180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6202615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2iv(GLuint index, const GLint *v)
6210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
622c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
6230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6252615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Niv(GLuint index, const GLint *v)
6260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
627c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, INT_TO_FLOAT(v[0]),
628c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[1]),
629c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[2]));
6300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6322615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3iv(GLuint index, const GLint *v)
6330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
634c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
6350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6372615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Niv(GLuint index, const GLint *v)
6380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
639c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, INT_TO_FLOAT(v[0]),
640c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[1]),
641c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[2]),
642c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     INT_TO_FLOAT(v[3]));
6430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6452615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4iv(GLuint index, const GLint *v)
6460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
647c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
6480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_INT attributes */
6510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6522615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1Nuiv(GLuint index, const GLuint *v)
6530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
654c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, UINT_TO_FLOAT(v[0]));
6550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6572615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1uiv(GLuint index, const GLuint *v)
6580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
659c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
6600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6622615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2Nuiv(GLuint index, const GLuint *v)
6630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
664c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, UINT_TO_FLOAT(v[0]),
665c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[1]));
6660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6682615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2uiv(GLuint index, const GLuint *v)
6690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
670c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
6710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6732615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3Nuiv(GLuint index, const GLuint *v)
6740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
675c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, UINT_TO_FLOAT(v[0]),
676c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[1]),
677c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[2]));
6780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6802615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3uiv(GLuint index, const GLuint *v)
6810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
682c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
6830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6852615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4Nuiv(GLuint index, const GLuint *v)
6860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
687c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, UINT_TO_FLOAT(v[0]),
688c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[1]),
689c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[2]),
690c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick			     UINT_TO_FLOAT(v[3]));
6910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6932615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4uiv(GLuint index, const GLuint *v)
6940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
695c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fNV)(index, v[0], v[1], v[2], v[3]);
6960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_FLOAT attributes */
6990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7002615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1fv(GLuint index, const GLfloat *v)
7010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
702c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fvNV)(index, v);
7030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7052615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2fv(GLuint index, const GLfloat *v)
7060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
707c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fvNV)(index, v);
7080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7102615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3fv(GLuint index, const GLfloat *v)
7110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
712c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fvNV)(index, v);
7130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7152615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4fv(GLuint index, const GLfloat *v)
7160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
717c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4fvNV)(index, v);
7180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_DOUBLE attributes */
7210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7222615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib1dv(GLuint index, const GLdouble *v)
7230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
724c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1dvNV)(index, v);
7250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7272615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib2dv(GLuint index, const GLdouble *v)
7280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
729c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2dvNV)(index, v);
7300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7322615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib3dv(GLuint index, const GLdouble *v)
7330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
734c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3dvNV)(index, v);
7350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7372615e81620bf91cc642b3373c41353b440242feeBrian Paulstatic void GLAPIENTRY VertexAttrib4dv(GLuint index, const GLdouble *v)
7380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
739c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib4dvNV)(index, v);
7400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
7430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/*
7440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Array [size][type] of VertexAttrib functions
7450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
74694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic const attrib_func AttribFuncs[2][4][8] = {
7470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
7480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* non-normalized */
7490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
7510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1bv,
7520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1ubv,
7530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1sv,
7540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1usv,
7550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1iv,
7560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1uiv,
7570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1fv,
7580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1dv
7590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
7620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2bv,
7630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2ubv,
7640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2sv,
7650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2usv,
7660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2iv,
7670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2uiv,
7680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2fv,
7690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2dv
7700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
7730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3bv,
7740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3ubv,
7750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3sv,
7760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3usv,
7770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3iv,
7780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3uiv,
7790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3fv,
7800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3dv
7810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
7840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4bv,
7850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4ubv,
7860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4sv,
7870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4usv,
7880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4iv,
7890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4uiv,
7900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4fv,
7910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4dv
7920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
7930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   },
7940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
7950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* normalized (except for float/double) */
7960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
7980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nbv,
7990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nubv,
8000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nsv,
8010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nusv,
8020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Niv,
8030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nuiv,
8040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1fv,
8050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1dv
8060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
8090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nbv,
8100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nubv,
8110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nsv,
8120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nusv,
8130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Niv,
8140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nuiv,
8150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2fv,
8160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2dv
8170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
8200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nbv,
8210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nubv,
8220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nsv,
8230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nusv,
8240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Niv,
8250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nuiv,
8260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3fv,
8270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3dv
8280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
8310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nbv,
8320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nubv,
8330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nsv,
8340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nusv,
8350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Niv,
8360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nuiv,
8370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4fv,
8380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4dv
8390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
8400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   }
8410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul};
8420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
84394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jacksonstatic void GLAPIENTRY EdgeFlagv(const GLboolean *flag)
84494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson{
84594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   GL_CALL(EdgeFlagv)(flag);
84694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson}
84794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson
8480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**********************************************************************/
8490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
85003c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian Paul
85103c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian PaulGLboolean _ae_create_context( GLcontext *ctx )
85203c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian Paul{
853ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell   if (ctx->aelt_context)
854ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell      return GL_TRUE;
855ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell
8564b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   ctx->aelt_context = MALLOC( sizeof(AEcontext) );
8571fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   if (!ctx->aelt_context)
8584b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      return GL_FALSE;
8594b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
8604b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AE_CONTEXT(ctx)->NewState = ~0;
8614b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   return GL_TRUE;
8624b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell}
8634b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
8644b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
8654b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellvoid _ae_destroy_context( GLcontext *ctx )
8664b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell{
8674b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   if ( AE_CONTEXT( ctx ) ) {
8684b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      FREE( ctx->aelt_context );
8694b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      ctx->aelt_context = 0;
8704b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   }
871cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
872cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
8734b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
8740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**
8750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Make a list of per-vertex functions to call for each glArrayElement call.
8761e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * These functions access the array data (i.e. glVertex, glColor, glNormal,
8771e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * etc).
8781e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Note: this may be called during display list construction.
8790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
8804b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellstatic void _ae_update_state( GLcontext *ctx )
881cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
8824b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AEcontext *actx = AE_CONTEXT(ctx);
8834b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AEarray *aa = actx->arrays;
8840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   AEattrib *at = actx->attribs;
885db07de057f10ab7ab5be84352b674b200a0a9e22Brian Paul   GLuint i;
886cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
8871e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* conventional vertex arrays */
8881e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul  if (ctx->Array.Index.Enabled) {
889cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      aa->array = &ctx->Array.Index;
8902615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = IndexFuncs[TYPE_IDX(aa->array->Type)];
891cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      aa++;
892cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   }
893cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (ctx->Array.EdgeFlag.Enabled) {
8944b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      aa->array = &ctx->Array.EdgeFlag;
89594987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      aa->func = (array_func) EdgeFlagv;
896faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger      aa++;
897faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger   }
8981e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.Normal.Enabled) {
8991e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Normal;
9002615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = NormalFuncs[TYPE_IDX(aa->array->Type)];
9011e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9021e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9031e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.Color.Enabled) {
9041e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Color;
9052615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = ColorFuncs[aa->array->Size-3][TYPE_IDX(aa->array->Type)];
9061e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9071e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9081e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.SecondaryColor.Enabled) {
9091e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.SecondaryColor;
9102615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = SecondaryColorFuncs[TYPE_IDX(aa->array->Type)];
9111e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9121e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9131e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.FogCoord.Enabled) {
9141e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.FogCoord;
9152615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = FogCoordFuncs[TYPE_IDX(aa->array->Type)];
9161e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9171e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9181e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
9191e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      if (ctx->Array.TexCoord[i].Enabled) {
9201e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         /* NOTE: we use generic glVertexAttrib functions here.
9211e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          * If we ever de-alias conventional/generic vertex attribs this
9221e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          * will have to change.
9231e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          */
9241e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         struct gl_client_array *attribArray = &ctx->Array.TexCoord[i];
9251e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->array = attribArray;
9262615e81620bf91cc642b3373c41353b440242feeBrian Paul         at->func = AttribFuncs[at->array->Normalized][at->array->Size-1][TYPE_IDX(at->array->Type)];
9279d1ff8c1bb56b9ba0d3bf4552351d8bff6620ef2Brian Paul         at->index = VERT_ATTRIB_TEX0 + i;
9281e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at++;
9290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
9301e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
931cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
9321e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* generic vertex attribute arrays */
9331e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   for (i = 1; i < VERT_ATTRIB_MAX; i++) {  /* skip zero! */
9341e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      if (ctx->Array.VertexAttrib[i].Enabled) {
9351e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         struct gl_client_array *attribArray = &ctx->Array.VertexAttrib[i];
9360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         at->array = attribArray;
9370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* Note: we can't grab the _glapi_Dispatch->VertexAttrib1fvNV
9380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * function pointer here (for float arrays) since the pointer may
9390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * change from one execution of _ae_loopback_array_elt() to
9400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * the next.  Doing so caused UT to break.
9410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          */
9422615e81620bf91cc642b3373c41353b440242feeBrian Paul         at->func = AttribFuncs[at->array->Normalized][at->array->Size-1][TYPE_IDX(at->array->Type)];
9431e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->index = i;
9440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         at++;
9450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
946faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger   }
9471e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul
9481e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* finally, vertex position */
9491e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.VertexAttrib[0].Enabled) {
9501e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      /* Use glVertex(v) instead of glVertexAttrib(0, v) to be sure it's
9511e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul       * issued as the last (proviking) attribute).
9521e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul       */
9531e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.VertexAttrib[0];
9541e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      assert(aa->array->Size >= 2); /* XXX fix someday? */
9552615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = VertexFuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)];
9561e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9571e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9581e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   else if (ctx->Array.Vertex.Enabled) {
9591e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Vertex;
9602615e81620bf91cc642b3373c41353b440242feeBrian Paul      aa->func = VertexFuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)];
9611e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
9621e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
9631e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul
9640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   ASSERT(at - actx->attribs <= VERT_ATTRIB_MAX);
9650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   ASSERT(aa - actx->arrays < 32);
9660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   at->func = NULL;  /* terminate the list */
9670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   aa->func = NULL;  /* terminate the list */
968faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger
969cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   actx->NewState = 0;
970cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
971cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
972cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
9731e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul/**
9741e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Called via glArrayElement() and glDrawArrays().
9751e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Issue the glNormal, glVertex, glColor, glVertexAttrib, etc functions
9761e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * for all enabled vertex arrays (for elt-th element).
9771e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Note: this may be called during display list construction.
9781e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul */
979d6745697b625a6a5b7d6e3d7dd5f5510f96e277aKarl Schultzvoid GLAPIENTRY _ae_loopback_array_elt( GLint elt )
980cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
981cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   GET_CURRENT_CONTEXT(ctx);
9820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEcontext *actx = AE_CONTEXT(ctx);
9830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEarray *aa;
9840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEattrib *at;
9854b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
9864b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   if (actx->NewState)
9874b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      _ae_update_state( ctx );
988cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
9890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   /* generic attributes */
9900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   for (at = actx->attribs; at->func; at++) {
9910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      const GLubyte *src = at->array->BufferObj->Data
99279b372b92a42aeee11f0500fefe8fc92126e39e3Brian Paul                         + (unsigned long) at->array->Ptr
9930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + elt * at->array->StrideB;
9940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      at->func( at->index, src );
99553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   }
99653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
9970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   /* conventional arrays */
9980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   for (aa = actx->arrays; aa->func ; aa++) {
9990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      const GLubyte *src = aa->array->BufferObj->Data
100079b372b92a42aeee11f0500fefe8fc92126e39e3Brian Paul                         + (unsigned long) aa->array->Ptr
10010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + elt * aa->array->StrideB;
10020aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paul      aa->func( src );
1003cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   }
1004cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
1005cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
1006cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
1007cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
10084b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellvoid _ae_invalidate_state( GLcontext *ctx, GLuint new_state )
1009cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
10104b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AE_CONTEXT(ctx)->NewState |= new_state;
1011cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
1012