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