api_arrayelt.c revision a0c85249244e1af8dac88076d5f384cf4bd01236
122144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes/*
222144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * Mesa 3-D graphics library
3b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul * Version:  6.3
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   {
232a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
233a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
23494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2sv,
235a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
23694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2iv,
237a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
23894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2fv,
23994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex2dv,
24094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
24194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
242a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
243a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
24494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3sv,
245a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
24694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3iv,
247a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
24894987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3fv,
24994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex3dv,
25094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   },
25194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   {
252a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
253a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
25494987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4sv,
255a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
25694987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson      (array_func) Vertex4iv,
257a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      NULL,
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] = {
289a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
29094987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexubv,
29194987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexsv,
292a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
29394987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Indexiv,
294a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
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,
326a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
32794987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3sv,
328a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
32994987beb2c9e87d9c55db5cb7c089dc77f78df94Adam Jackson   (array_func) Normal3iv,
330a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
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] = {
400a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
401a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
402a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
403a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
404a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
405a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell   NULL,
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
414b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NbvNV(GLuint index, const GLbyte *v)
4150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
416c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, BYTE_TO_FLOAT(v[0]));
4170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
419b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1bvNV(GLuint index, const GLbyte *v)
4200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
421c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
4220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
424b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NbvNV(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
429b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2bvNV(GLuint index, const GLbyte *v)
4300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
431c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
4320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
434b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NbvNV(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
441b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3bvNV(GLuint index, const GLbyte *v)
4420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
443c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
4440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
446b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NbvNV(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
454b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4bvNV(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
461b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NubvNV(GLuint index, const GLubyte *v)
4620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
463c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, UBYTE_TO_FLOAT(v[0]));
4640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
466b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1ubvNV(GLuint index, const GLubyte *v)
4670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
468c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
4690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
471b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NubvNV(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
477b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2ubvNV(GLuint index, const GLubyte *v)
4780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
479c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
4800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
482b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NubvNV(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}
488b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3ubvNV(GLuint index, const GLubyte *v)
4890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
490c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
4910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
493b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NubvNV(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
501b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4ubvNV(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
508b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NsvNV(GLuint index, const GLshort *v)
5090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
510c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, SHORT_TO_FLOAT(v[0]));
5110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
513b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1svNV(GLuint index, const GLshort *v)
5140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
515c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
5160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
518b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NsvNV(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
524b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2svNV(GLuint index, const GLshort *v)
5250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
526c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
5270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
529b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NsvNV(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
536b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3svNV(GLuint index, const GLshort *v)
5370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
538c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
5390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
541b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NsvNV(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
549b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4svNV(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
556b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NusvNV(GLuint index, const GLushort *v)
5570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
558c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, USHORT_TO_FLOAT(v[0]));
5590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
561b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1usvNV(GLuint index, const GLushort *v)
5620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
563c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
5640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
566b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NusvNV(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
572b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2usvNV(GLuint index, const GLushort *v)
5730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
574c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
5750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
577b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NusvNV(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
584b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3usvNV(GLuint index, const GLushort *v)
5850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
586c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
5870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
589b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NusvNV(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
597b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4usvNV(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
604b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NivNV(GLuint index, const GLint *v)
6050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
606c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, INT_TO_FLOAT(v[0]));
6070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
609b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1ivNV(GLuint index, const GLint *v)
6100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
611c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
6120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
614b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NivNV(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
620b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2ivNV(GLuint index, const GLint *v)
6210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
622c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
6230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
625b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NivNV(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
632b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3ivNV(GLuint index, const GLint *v)
6330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
634c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
6350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
637b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NivNV(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
645b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4ivNV(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
652b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1NuivNV(GLuint index, const GLuint *v)
6530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
654c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, UINT_TO_FLOAT(v[0]));
6550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
657b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1uivNV(GLuint index, const GLuint *v)
6580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
659c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fNV)(index, v[0]);
6600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
662b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2NuivNV(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
668b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2uivNV(GLuint index, const GLuint *v)
6690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
670c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fNV)(index, v[0], v[1]);
6710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
673b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3NuivNV(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
680b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3uivNV(GLuint index, const GLuint *v)
6810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
682c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fNV)(index, v[0], v[1], v[2]);
6830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
6840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
685b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4NuivNV(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
693b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4uivNV(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
700b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1fvNV(GLuint index, const GLfloat *v)
7010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
702c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1fvNV)(index, v);
7030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
705b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2fvNV(GLuint index, const GLfloat *v)
7060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
707c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2fvNV)(index, v);
7080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
710b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3fvNV(GLuint index, const GLfloat *v)
7110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
712c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3fvNV)(index, v);
7130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
715b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4fvNV(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
722b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib1dvNV(GLuint index, const GLdouble *v)
7230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
724c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib1dvNV)(index, v);
7250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
727b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib2dvNV(GLuint index, const GLdouble *v)
7280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
729c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib2dvNV)(index, v);
7300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
732b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib3dvNV(GLuint index, const GLdouble *v)
7330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
734c1d455f5827e7044dcb316dadc755a6f91299906Ian Romanick   GL_CALL(VertexAttrib3dvNV)(index, v);
7350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
7360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
737b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic void GLAPIENTRY VertexAttrib4dvNV(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 */
746b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paulstatic attrib_func AttribFuncsNV[2][4][8] = {
7470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
7480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* non-normalized */
7490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
751b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1bvNV,
752b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1ubvNV,
753b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1svNV,
754b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1usvNV,
755b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1ivNV,
756b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1uivNV,
757b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1fvNV,
758b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1dvNV
7590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
762b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2bvNV,
763b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2ubvNV,
764b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2svNV,
765b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2usvNV,
766b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2ivNV,
767b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2uivNV,
768b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2fvNV,
769b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2dvNV
7700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
773b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3bvNV,
774b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3ubvNV,
775b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3svNV,
776b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3usvNV,
777b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3ivNV,
778b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3uivNV,
779b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3fvNV,
780b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3dvNV
7810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
7820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
784b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4bvNV,
785b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4ubvNV,
786b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4svNV,
787b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4usvNV,
788b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4ivNV,
789b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4uivNV,
790b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4fvNV,
791b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4dvNV
7920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
7930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   },
7940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
7950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* normalized (except for float/double) */
7960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
7970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
798b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NbvNV,
799b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NubvNV,
800b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NsvNV,
801b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NusvNV,
802b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NivNV,
803b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1NuivNV,
804b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1fvNV,
805b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib1dvNV
8060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
809b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NbvNV,
810b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NubvNV,
811b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NsvNV,
812b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NusvNV,
813b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NivNV,
814b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2NuivNV,
815b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2fvNV,
816b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib2dvNV
8170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
820b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NbvNV,
821b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NubvNV,
822b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NsvNV,
823b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NusvNV,
824b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NivNV,
825b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3NuivNV,
826b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3fvNV,
827b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib3dvNV
8280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
8290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
8300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
831b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NbvNV,
832b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NubvNV,
833b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NsvNV,
834b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NusvNV,
835b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NivNV,
836b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4NuivNV,
837b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4fvNV,
838b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         (attrib_func) VertexAttrib4dvNV
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 );
869a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell      ctx->aelt_context = NULL;
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;
926b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         at->func = AttribFuncsNV[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          */
942b5b8d22c4ee921dff99b898a5907023b20670a27Brian Paul         at->func = AttribFuncsNV[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
10074b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellvoid _ae_invalidate_state( GLcontext *ctx, GLuint new_state )
1008cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
10094b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AE_CONTEXT(ctx)->NewState |= new_state;
1010cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
1011