api_arrayelt.c revision 1e3d868ffbec46eecb85b4aaf6990d9ad69e830f
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
630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * numbered in gl.h
640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
650aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paul#define TYPE_IDX(t) ((t) & 0xf)
66cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void (GLAPIENTRY *colorfuncs[2][8])( const void * ) = {
6953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   { (array_func)glColor3bv,
7053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3ubv,
7153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3sv,
7253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3usv,
7353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3iv,
7453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3uiv,
7553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3fv,
7653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor3dv },
7753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
7853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   { (array_func)glColor4bv,
7953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4ubv,
8053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4sv,
8153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4usv,
8253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4iv,
8353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4uiv,
8453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4fv,
8553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glColor4dv }
8653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
8753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
8853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void (GLAPIENTRY *vertexfuncs[3][8])( const void * ) = {
8953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   { 0,
9053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
9153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex2sv,
9253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
9353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex2iv,
9453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
9553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex2fv,
9653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex2dv },
9753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
9853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   { 0,
9953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
10053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex3sv,
10153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
10253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex3iv,
10353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
10453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex3fv,
10553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex3dv },
10653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
10753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   { 0,
10853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
10953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex4sv,
11053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
11153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex4iv,
11253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     0,
11353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex4fv,
11453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul     (array_func)glVertex4dv }
11553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
11653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
117b72902e061b0efbe442945dc319e60fcbccf9e8eKarl Schultzstatic void (GLAPIENTRY *indexfuncs[8])( const void * ) = {
1184b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
1191fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   (array_func)glIndexubv,
1201fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   (array_func)glIndexsv,
1214b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
1221fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   (array_func)glIndexiv,
1234b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   0,
1241fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   (array_func)glIndexfv,
1251fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   (array_func)glIndexdv
126cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell};
127cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
12853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void (GLAPIENTRY *normalfuncs[8])( const void * ) = {
12953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func)glNormal3bv,
13053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
13153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func)glNormal3sv,
13253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
13353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func)glNormal3iv,
13453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
13553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func)glNormal3fv,
13653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func)glNormal3dv,
13753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
13853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
13953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
14053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul/* Wrapper functions in case glSecondaryColor*EXT doesn't exist */
14153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3bvEXT(const GLbyte *c)
14253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
14353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3bvEXT(c);
14453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
14553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
14653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3ubvEXT(const GLubyte *c)
14753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
14853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3ubvEXT(c);
14953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
15053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
15153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3svEXT(const GLshort *c)
15253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
15353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3svEXT(c);
15453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
15553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
15653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3usvEXT(const GLushort *c)
15753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
15853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3usvEXT(c);
15953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
16053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
16153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3ivEXT(const GLint *c)
16253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
16353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3ivEXT(c);
16453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
16553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
16653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3uivEXT(const GLuint *c)
16753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
16853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3uivEXT(c);
16953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
17053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
17153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3fvEXT(const GLfloat *c)
17253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
17353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3fvEXT(c);
17453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
17553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
17653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void SecondaryColor3dvEXT(const GLdouble *c)
17753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
17853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->SecondaryColor3dvEXT(c);
17953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
18053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
18153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void (GLAPIENTRY *secondarycolorfuncs[8])( const void * ) = {
18253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3bvEXT,
18353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3ubvEXT,
18453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3svEXT,
18553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3usvEXT,
18653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3ivEXT,
18753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3uivEXT,
18853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3fvEXT,
18953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) SecondaryColor3dvEXT,
19053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
19153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
19253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
19353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul/* Again, wrapper functions in case glSecondaryColor*EXT doesn't exist */
19453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void FogCoordfvEXT(const GLfloat *f)
19553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
19653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->FogCoordfvEXT(f);
19753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
19853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
19953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void FogCoorddvEXT(const GLdouble *f)
20053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul{
20153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   _glapi_Dispatch->FogCoorddvEXT(f);
20253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul}
20353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
20453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paulstatic void (GLAPIENTRY *fogcoordfuncs[8])( const void * ) = {
20553ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
20653ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
20753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
20853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
20953ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
21053ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   0,
21153ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) FogCoordfvEXT,
21253ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   (array_func) FogCoorddvEXT
21353ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul};
21453ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
215cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
2160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**********************************************************************/
2170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_BYTE attributes */
2190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Nbv(GLuint index, const GLbyte *v)
2210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, BYTE_TO_FLOAT(v[0]));
2230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1bv(GLuint index, const GLbyte *v)
2260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
2280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Nbv(GLuint index, const GLbyte *v)
2310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, BYTE_TO_FLOAT(v[0]),
2330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[1]));
2340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2bv(GLuint index, const GLbyte *v)
2370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
2390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Nbv(GLuint index, const GLbyte *v)
2420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, BYTE_TO_FLOAT(v[0]),
2440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[1]),
2450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[2]));
2460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3bv(GLuint index, const GLbyte *v)
2490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
2510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Nbv(GLuint index, const GLbyte *v)
2540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, BYTE_TO_FLOAT(v[0]),
2560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[1]),
2570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[2]),
2580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     BYTE_TO_FLOAT(v[3]));
2590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4bv(GLuint index, const GLbyte *v)
2620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
2640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_BYTE attributes */
2670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Nubv(GLuint index, const GLubyte *v)
2690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, UBYTE_TO_FLOAT(v[0]));
2710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1ubv(GLuint index, const GLubyte *v)
2740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
2760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Nubv(GLuint index, const GLubyte *v)
2790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, UBYTE_TO_FLOAT(v[0]),
2810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[1]));
2820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2ubv(GLuint index, const GLubyte *v)
2850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
2870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
2890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Nubv(GLuint index, const GLubyte *v)
2900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, UBYTE_TO_FLOAT(v[0]),
2920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[1]),
2930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[2]));
2940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3ubv(GLuint index, const GLubyte *v)
2960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
2970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
2980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
2990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Nubv(GLuint index, const GLubyte *v)
3010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, UBYTE_TO_FLOAT(v[0]),
3030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[1]),
3040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[2]),
3050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UBYTE_TO_FLOAT(v[3]));
3060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4ubv(GLuint index, const GLubyte *v)
3090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
3110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_SHORT attributes */
3140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Nsv(GLuint index, const GLshort *v)
3160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, SHORT_TO_FLOAT(v[0]));
3180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1sv(GLuint index, const GLshort *v)
3210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
3230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Nsv(GLuint index, const GLshort *v)
3260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, SHORT_TO_FLOAT(v[0]),
3280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[1]));
3290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2sv(GLuint index, const GLshort *v)
3320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
3340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Nsv(GLuint index, const GLshort *v)
3370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, SHORT_TO_FLOAT(v[0]),
3390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[1]),
3400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[2]));
3410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3sv(GLuint index, const GLshort *v)
3440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
3460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Nsv(GLuint index, const GLshort *v)
3490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, SHORT_TO_FLOAT(v[0]),
3510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[1]),
3520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[2]),
3530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     SHORT_TO_FLOAT(v[3]));
3540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4sv(GLuint index, const GLshort *v)
3570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
3590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_SHORT attributes */
3620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Nusv(GLuint index, const GLushort *v)
3640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, USHORT_TO_FLOAT(v[0]));
3660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1usv(GLuint index, const GLushort *v)
3690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
3710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Nusv(GLuint index, const GLushort *v)
3740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, USHORT_TO_FLOAT(v[0]),
3760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[1]));
3770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2usv(GLuint index, const GLushort *v)
3800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
3820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Nusv(GLuint index, const GLushort *v)
3850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, USHORT_TO_FLOAT(v[0]),
3870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[1]),
3880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[2]));
3890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3usv(GLuint index, const GLushort *v)
3920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
3940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
3950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
3960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Nusv(GLuint index, const GLushort *v)
3970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
3980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, USHORT_TO_FLOAT(v[0]),
3990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[1]),
4000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[2]),
4010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     USHORT_TO_FLOAT(v[3]));
4020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4usv(GLuint index, const GLushort *v)
4050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
4070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_INT attributes */
4100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Niv(GLuint index, const GLint *v)
4120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, INT_TO_FLOAT(v[0]));
4140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1iv(GLuint index, const GLint *v)
4170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
4190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Niv(GLuint index, const GLint *v)
4220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, INT_TO_FLOAT(v[0]),
4240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[1]));
4250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2iv(GLuint index, const GLint *v)
4280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
4300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Niv(GLuint index, const GLint *v)
4330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, INT_TO_FLOAT(v[0]),
4350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[1]),
4360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[2]));
4370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3iv(GLuint index, const GLint *v)
4400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
4420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Niv(GLuint index, const GLint *v)
4450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, INT_TO_FLOAT(v[0]),
4470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[1]),
4480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[2]),
4490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     INT_TO_FLOAT(v[3]));
4500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4iv(GLuint index, const GLint *v)
4530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
4550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_UNSIGNED_INT attributes */
4580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1Nuiv(GLuint index, const GLuint *v)
4600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, UINT_TO_FLOAT(v[0]));
4620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1uiv(GLuint index, const GLuint *v)
4650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fNV(index, v[0]);
4670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2Nuiv(GLuint index, const GLuint *v)
4700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, UINT_TO_FLOAT(v[0]),
4720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[1]));
4730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2uiv(GLuint index, const GLuint *v)
4760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fNV(index, v[0], v[1]);
4780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3Nuiv(GLuint index, const GLuint *v)
4810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, UINT_TO_FLOAT(v[0]),
4830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[1]),
4840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[2]));
4850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3uiv(GLuint index, const GLuint *v)
4880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fNV(index, v[0], v[1], v[2]);
4900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
4920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4Nuiv(GLuint index, const GLuint *v)
4930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
4940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, UINT_TO_FLOAT(v[0]),
4950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[1]),
4960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[2]),
4970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                                     UINT_TO_FLOAT(v[3]));
4980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
4990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4uiv(GLuint index, const GLuint *v)
5010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
5030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_FLOAT attributes */
5060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1fv(GLuint index, const GLfloat *v)
5080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1fvNV(index, v);
5100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2fv(GLuint index, const GLfloat *v)
5130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2fvNV(index, v);
5150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3fv(GLuint index, const GLfloat *v)
5180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3fvNV(index, v);
5200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4fv(GLuint index, const GLfloat *v)
5230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4fvNV(index, v);
5250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/* GL_DOUBLE attributes */
5280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib1dv(GLuint index, const GLdouble *v)
5300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib1dvNV(index, v);
5320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib2dv(GLuint index, const GLdouble *v)
5350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib2dvNV(index, v);
5370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib3dv(GLuint index, const GLdouble *v)
5400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib3dvNV(index, v);
5420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void VertexAttrib4dv(GLuint index, const GLdouble *v)
5450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul{
5460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   _glapi_Dispatch->VertexAttrib4dvNV(index, v);
5470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul}
5480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
5500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/*
5510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Array [size][type] of VertexAttrib functions
5520d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
5530d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paulstatic void (GLAPIENTRY *attribfuncs[2][4][8])( GLuint, const void * ) = {
5540d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
5550d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* non-normalized */
5560d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
5570d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
5580d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1bv,
5590d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1ubv,
5600d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1sv,
5610d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1usv,
5620d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1iv,
5630d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1uiv,
5640d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1fv,
5650d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1dv
5660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
5670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
5680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
5690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2bv,
5700d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2ubv,
5710d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2sv,
5720d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2usv,
5730d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2iv,
5740d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2uiv,
5750d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2fv,
5760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2dv
5770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
5780d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
5790d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
5800d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3bv,
5810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3ubv,
5820d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3sv,
5830d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3usv,
5840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3iv,
5850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3uiv,
5860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3fv,
5870d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3dv
5880d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
5890d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
5900d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
5910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4bv,
5920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4ubv,
5930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4sv,
5940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4usv,
5950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4iv,
5960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4uiv,
5970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4fv,
5980d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4dv
5990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
6000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   },
6010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   {
6020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      /* normalized (except for float/double) */
6030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
6040d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 1 */
6050d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nbv,
6060d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nubv,
6070d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nsv,
6080d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nusv,
6090d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Niv,
6100d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1Nuiv,
6110d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1fv,
6120d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib1dv
6130d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
6140d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
6150d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 2 */
6160d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nbv,
6170d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nubv,
6180d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nsv,
6190d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nusv,
6200d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Niv,
6210d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2Nuiv,
6220d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2fv,
6230d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib2dv
6240d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
6250d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
6260d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 3 */
6270d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nbv,
6280d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nubv,
6290d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nsv,
6300d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nusv,
6310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Niv,
6320d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3Nuiv,
6330d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3fv,
6340d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib3dv
6350d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      },
6360d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      {
6370d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* size 4 */
6380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nbv,
6390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nubv,
6400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nsv,
6410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nusv,
6420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Niv,
6430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4Nuiv,
6440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4fv,
6450d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         (attrib_func) VertexAttrib4dv
6460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
6470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   }
6480d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul};
6490d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
6500d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**********************************************************************/
6510d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul
65203c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian Paul
65303c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian PaulGLboolean _ae_create_context( GLcontext *ctx )
65403c0c2e8aa5e5f1b430c4b3faa1f9ad92b1b71ebBrian Paul{
655ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell   if (ctx->aelt_context)
656ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell      return GL_TRUE;
657ae0eaf93e092ac8e8b1c98f3e986de96940663faKeith Whitwell
6584b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   ctx->aelt_context = MALLOC( sizeof(AEcontext) );
6591fb0a43c16190f4d043b8a0918361bee76b37e5fGareth Hughes   if (!ctx->aelt_context)
6604b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      return GL_FALSE;
6614b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
6624b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AE_CONTEXT(ctx)->NewState = ~0;
6634b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   return GL_TRUE;
6644b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell}
6654b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
6664b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
6674b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellvoid _ae_destroy_context( GLcontext *ctx )
6684b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell{
6694b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   if ( AE_CONTEXT( ctx ) ) {
6704b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      FREE( ctx->aelt_context );
6714b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      ctx->aelt_context = 0;
6724b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   }
673cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
674cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6754b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
6760d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul/**
6770d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul * Make a list of per-vertex functions to call for each glArrayElement call.
6781e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * These functions access the array data (i.e. glVertex, glColor, glNormal,
6791e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * etc).
6801e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Note: this may be called during display list construction.
6810d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul */
6824b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellstatic void _ae_update_state( GLcontext *ctx )
683cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
6844b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AEcontext *actx = AE_CONTEXT(ctx);
6854b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AEarray *aa = actx->arrays;
6860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   AEattrib *at = actx->attribs;
687db07de057f10ab7ab5be84352b674b200a0a9e22Brian Paul   GLuint i;
688cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
6891e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* conventional vertex arrays */
6901e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul  if (ctx->Array.Index.Enabled) {
691cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      aa->array = &ctx->Array.Index;
692cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      aa->func = indexfuncs[TYPE_IDX(aa->array->Type)];
693cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      aa++;
694cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   }
695cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (ctx->Array.EdgeFlag.Enabled) {
6964b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      aa->array = &ctx->Array.EdgeFlag;
6970d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      aa->func = (array_func) glEdgeFlagv;
698faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger      aa++;
699faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger   }
7001e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.Normal.Enabled) {
7011e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Normal;
7021e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = normalfuncs[TYPE_IDX(aa->array->Type)];
7031e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7041e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7051e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.Color.Enabled) {
7061e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Color;
7071e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = colorfuncs[aa->array->Size-3][TYPE_IDX(aa->array->Type)];
7081e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7091e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7101e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.SecondaryColor.Enabled) {
7111e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.SecondaryColor;
7121e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = secondarycolorfuncs[TYPE_IDX(aa->array->Type)];
7131e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7141e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7151e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.FogCoord.Enabled) {
7161e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.FogCoord;
7171e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = fogcoordfuncs[TYPE_IDX(aa->array->Type)];
7181e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7191e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7201e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
7211e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      if (ctx->Array.TexCoord[i].Enabled) {
7221e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         /* NOTE: we use generic glVertexAttrib functions here.
7231e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          * If we ever de-alias conventional/generic vertex attribs this
7241e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          * will have to change.
7251e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul          */
7261e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         struct gl_client_array *attribArray = &ctx->Array.TexCoord[i];
7271e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->array = attribArray;
7281e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->func = attribfuncs[at->array->Normalized][at->array->Size-1][TYPE_IDX(at->array->Type)];
7291e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->index = i;
7301e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at++;
7310d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
7321e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
733cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
7341e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* generic vertex attribute arrays */
7351e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   for (i = 1; i < VERT_ATTRIB_MAX; i++) {  /* skip zero! */
7361e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      if (ctx->Array.VertexAttrib[i].Enabled) {
7371e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         struct gl_client_array *attribArray = &ctx->Array.VertexAttrib[i];
7380d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         at->array = attribArray;
7390d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         /* Note: we can't grab the _glapi_Dispatch->VertexAttrib1fvNV
7400d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * function pointer here (for float arrays) since the pointer may
7410d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * change from one execution of _ae_loopback_array_elt() to
7420d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          * the next.  Doing so caused UT to break.
7430d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul          */
7440d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         at->func = attribfuncs[at->array->Normalized][at->array->Size-1][TYPE_IDX(at->array->Type)];
7451e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul         at->index = i;
7460d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul         at++;
7470d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      }
748faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger   }
7491e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul
7501e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   /* finally, vertex position */
7511e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   if (ctx->Array.VertexAttrib[0].Enabled) {
7521e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      /* Use glVertex(v) instead of glVertexAttrib(0, v) to be sure it's
7531e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul       * issued as the last (proviking) attribute).
7541e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul       */
7551e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.VertexAttrib[0];
7561e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      assert(aa->array->Size >= 2); /* XXX fix someday? */
7571e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = vertexfuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)];
7581e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7591e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7601e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   else if (ctx->Array.Vertex.Enabled) {
7611e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->array = &ctx->Array.Vertex;
7621e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa->func = vertexfuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)];
7631e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul      aa++;
7641e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul   }
7651e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul
7660d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   ASSERT(at - actx->attribs <= VERT_ATTRIB_MAX);
7670d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   ASSERT(aa - actx->arrays < 32);
7680d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   at->func = NULL;  /* terminate the list */
7690d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   aa->func = NULL;  /* terminate the list */
770faaf78aeb0e18c75c9b204a634f296b9c056cf5cRoland Scheidegger
771cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   actx->NewState = 0;
772cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
773cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
774cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
7751e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul/**
7761e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Called via glArrayElement() and glDrawArrays().
7771e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Issue the glNormal, glVertex, glColor, glVertexAttrib, etc functions
7781e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * for all enabled vertex arrays (for elt-th element).
7791e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul * Note: this may be called during display list construction.
7801e3d868ffbec46eecb85b4aaf6990d9ad69e830fBrian Paul */
781d6745697b625a6a5b7d6e3d7dd5f5510f96e277aKarl Schultzvoid GLAPIENTRY _ae_loopback_array_elt( GLint elt )
782cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
783cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   GET_CURRENT_CONTEXT(ctx);
7840d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEcontext *actx = AE_CONTEXT(ctx);
7850d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEarray *aa;
7860d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   const AEattrib *at;
7874b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell
7884b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   if (actx->NewState)
7894b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell      _ae_update_state( ctx );
790cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
7910d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   /* generic attributes */
7920d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   for (at = actx->attribs; at->func; at++) {
7930d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      const GLubyte *src = at->array->BufferObj->Data
7940d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + (GLuint) at->array->Ptr
7950d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + elt * at->array->StrideB;
7960d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      at->func( at->index, src );
79753ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul   }
79853ad0369721966c67bf6edad59c74e9ba7891fa5Brian Paul
7990d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   /* conventional arrays */
8000d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul   for (aa = actx->arrays; aa->func ; aa++) {
8010d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul      const GLubyte *src = aa->array->BufferObj->Data
8020d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + (GLuint) aa->array->Ptr
8030d4393a38a2237bb65fbd38b8da73ac328a967d0Brian Paul                         + elt * aa->array->StrideB;
8040aa8a1062a06616fad18a1901afb5fa67fdcf82aBrian Paul      aa->func( src );
805cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   }
806cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
807cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
808cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
809cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
8104b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwellvoid _ae_invalidate_state( GLcontext *ctx, GLuint new_state )
811cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell{
8124b7d6f216bf768482e07e4d7feb8ca3e1be92d53Keith Whitwell   AE_CONTEXT(ctx)->NewState |= new_state;
813cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell}
814