vbo_attrib_tmp.h revision 4a95185c9f30c2de7a03bb1a0653f51b53b1111d
1fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell/**************************************************************************
2fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
3fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellCopyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
4fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
5fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellAll Rights Reserved.
6fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
7fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellPermission is hereby granted, free of charge, to any person obtaining a
8fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellcopy of this software and associated documentation files (the "Software"),
9fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellto deal in the Software without restriction, including without limitation
10fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellon the rights to use, copy, modify, merge, publish, distribute, sub
11fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwelllicense, and/or sell copies of the Software, and to permit persons to whom
12fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellthe Software is furnished to do so, subject to the following conditions:
13fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
14fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellThe above copyright notice and this permission notice (including the next
15fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellparagraph) shall be included in all copies or substantial portions of the
16fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellSoftware.
17fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
18fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellTUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
22fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith WhitwellUSE OR OTHER DEALINGS IN THE SOFTWARE.
25fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
26fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell**************************************************************************/
27fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
28fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR1FV( A, V ) ATTR( A, 1, (V)[0], 0, 0, 1 )
29fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR2FV( A, V ) ATTR( A, 2, (V)[0], (V)[1], 0, 1 )
30fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR3FV( A, V ) ATTR( A, 3, (V)[0], (V)[1], (V)[2], 1 )
31fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR4FV( A, V ) ATTR( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
32fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
33fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR1F( A, X )          ATTR( A, 1, X, 0, 0, 1 )
34fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR2F( A, X, Y )       ATTR( A, 2, X, Y, 0, 1 )
35fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR3F( A, X, Y, Z )    ATTR( A, 3, X, Y, Z, 1 )
36fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define ATTR4F( A, X, Y, Z, W ) ATTR( A, 4, X, Y, Z, W )
37fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
38fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define MAT_ATTR( A, N, V ) ATTR( A, N, (V)[0], (V)[1], (V)[2], (V)[3] )
39fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
40fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex2f)( GLfloat x, GLfloat y )
41fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
42fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
43fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2F( VBO_ATTRIB_POS, x, y );
44fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
45fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
46fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex2fv)( const GLfloat *v )
47fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
48fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
49fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2FV( VBO_ATTRIB_POS, v );
50fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
51fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
52fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex3f)( GLfloat x, GLfloat y, GLfloat z )
53fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
54fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
55fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( VBO_ATTRIB_POS, x, y, z );
56fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
57fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
58fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex3fv)( const GLfloat *v )
59fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
60fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
61fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( VBO_ATTRIB_POS, v );
62fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
63fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
64fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
65fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
66fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
67fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4F( VBO_ATTRIB_POS, x, y, z, w );
68fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
69fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
70fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Vertex4fv)( const GLfloat *v )
71fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
72fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
73fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4FV( VBO_ATTRIB_POS, v );
74fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
75fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
76fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord1f)( GLfloat x )
77fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
78fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
79fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1F( VBO_ATTRIB_TEX0, x );
80fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
81fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
82fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord1fv)( const GLfloat *v )
83fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
84fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
85fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1FV( VBO_ATTRIB_TEX0, v );
86fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
87fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
88fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord2f)( GLfloat x, GLfloat y )
89fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
90fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
91fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2F( VBO_ATTRIB_TEX0, x, y );
92fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
93fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
94fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord2fv)( const GLfloat *v )
95fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
96fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
97fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2FV( VBO_ATTRIB_TEX0, v );
98fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
99fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
100fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord3f)( GLfloat x, GLfloat y, GLfloat z )
101fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
102fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
103fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( VBO_ATTRIB_TEX0, x, y, z );
104fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
105fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
106fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord3fv)( const GLfloat *v )
107fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
108fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
109fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( VBO_ATTRIB_TEX0, v );
110fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
111fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
112fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
113fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
114fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
115fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4F( VBO_ATTRIB_TEX0, x, y, z, w );
116fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
117fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
118fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(TexCoord4fv)( const GLfloat *v )
119fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
120fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
121fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4FV( VBO_ATTRIB_TEX0, v );
122fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
123fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
124fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Normal3f)( GLfloat x, GLfloat y, GLfloat z )
125fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
126fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
127fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( VBO_ATTRIB_NORMAL, x, y, z );
128fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
129fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
130fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Normal3fv)( const GLfloat *v )
131fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
132fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
133fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( VBO_ATTRIB_NORMAL, v );
134fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
135fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
136fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(FogCoordfEXT)( GLfloat x )
137fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
138fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
139fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1F( VBO_ATTRIB_FOG, x );
140fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
141fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
142fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(FogCoordfvEXT)( const GLfloat *v )
143fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
144fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
145fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1FV( VBO_ATTRIB_FOG, v );
146fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
147fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
148fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Color3f)( GLfloat x, GLfloat y, GLfloat z )
149fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
150fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
151fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( VBO_ATTRIB_COLOR0, x, y, z );
152fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
153fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
154fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Color3fv)( const GLfloat *v )
155fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
156fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
157fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( VBO_ATTRIB_COLOR0, v );
158fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
159fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
160fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Color4f)( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
161fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
162fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
163fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4F( VBO_ATTRIB_COLOR0, x, y, z, w );
164fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
165fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
166fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Color4fv)( const GLfloat *v )
167fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
168fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
169fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4FV( VBO_ATTRIB_COLOR0, v );
170fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
171fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
172fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(SecondaryColor3fEXT)( GLfloat x, GLfloat y, GLfloat z )
173fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
174fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
175fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( VBO_ATTRIB_COLOR1, x, y, z );
176fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
177fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
178fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(SecondaryColor3fvEXT)( const GLfloat *v )
179fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
180fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
181fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( VBO_ATTRIB_COLOR1, v );
182fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
183fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
184fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
185fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(EdgeFlag)( GLboolean b )
186fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
187fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
188fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1F( VBO_ATTRIB_EDGEFLAG, (GLfloat)b );
189fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
190fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
191fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Indexf)( GLfloat f )
192fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
193fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
194fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1F( VBO_ATTRIB_INDEX, f );
195fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
196fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
197fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Indexfv)( const GLfloat *f )
198fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
199fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
200fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1FV( VBO_ATTRIB_INDEX, f );
201fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
202fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
203fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
204fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord1f)( GLenum target, GLfloat x  )
205fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
206fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
207fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
208fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1F( attr, x );
209fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
210fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
211fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord1fv)( GLenum target, const GLfloat *v )
212fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
213fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
214fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
215fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR1FV( attr, v );
216fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
217fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
218fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord2f)( GLenum target, GLfloat x, GLfloat y )
219fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
220fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
221fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
222fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2F( attr, x, y );
223fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
224fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
225fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord2fv)( GLenum target, const GLfloat *v )
226fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
227fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
228fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
229fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR2FV( attr, v );
230fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
231fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
232fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord3f)( GLenum target, GLfloat x, GLfloat y,
233fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell				    GLfloat z)
234fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
235fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
236fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
237fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3F( attr, x, y, z );
238fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
239fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
240fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord3fv)( GLenum target, const GLfloat *v )
241fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
242fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
243fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
244fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR3FV( attr, v );
245fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
246fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
247fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord4f)( GLenum target, GLfloat x, GLfloat y,
248fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell				    GLfloat z, GLfloat w )
249fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
250fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
251fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
252fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4F( attr, x, y, z, w );
253fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
254fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
255fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(MultiTexCoord4fv)( GLenum target, const GLfloat *v )
256fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
257fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
258fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
259fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   ATTR4FV( attr, v );
260fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
261fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
262fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
263fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib1fARB)( GLuint index, GLfloat x )
264fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
265fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
266fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
267fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1F(0, x);
2684a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
269fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1F(VBO_ATTRIB_GENERIC0 + index, x);
270fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
271fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
272fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
273fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
274fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib1fvARB)( GLuint index,
275fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
276fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
277fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
278fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
279fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1FV(0, v);
2804a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
281fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v);
282fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
283fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
284fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
285fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
286fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib2fARB)( GLuint index, GLfloat x,
287fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y )
288fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
289fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
290fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
291fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2F(0, x, y);
2924a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
293fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y);
294fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
295fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
296fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
297fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
298fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib2fvARB)( GLuint index,
299fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
300fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
301fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
302fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
303fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2FV(0, v);
3044a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
305fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v);
306fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
307fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
308fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
309fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
310fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib3fARB)( GLuint index, GLfloat x,
311fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y, GLfloat z )
312fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
313fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
314fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
315fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3F(0, x, y, z);
3164a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
317fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z);
318fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
319fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
320fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
321fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
322fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib3fvARB)( GLuint index,
323fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
324fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
325fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
326fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
327fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3FV(0, v);
3284a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
329fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v);
330fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
331fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
332fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
333fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
334fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib4fARB)( GLuint index, GLfloat x,
335fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y, GLfloat z,
336fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat w )
337fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
338fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
339fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
340fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4F(0, x, y, z, w);
3414a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
342fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
343fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
344fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
345fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
346fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
347fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib4fvARB)( GLuint index,
348fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
349fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
350fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
351fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index == 0)
352fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4FV(0, v);
3534a95185c9f30c2de7a03bb1a0653f51b53b1111dBrian Paul   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
354fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v);
355fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   else
356fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
357fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
358fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
359fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
3602421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell/* In addition to supporting NV_vertex_program, these entrypoints are
361fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell * used by the display list and other code specifically because of
3622421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell * their property of aliasing with other attributes.  (See
3632421b25dd777ebfd614ae45907fd4af8c2713102Keith Whitwell * vbo_save_loopback.c)
364fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell */
365fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib1fNV)( GLuint index, GLfloat x )
366fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
367fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
368fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
369fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1F(index, x);
370fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
371fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
372fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib1fvNV)( GLuint index,
373fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
374fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
375fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
376fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
377fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR1FV(index, v);
378fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
379fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
380fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib2fNV)( GLuint index, GLfloat x,
381fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y )
382fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
383fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
384fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
385fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2F(index, x, y);
386fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
387fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
388fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib2fvNV)( GLuint index,
389fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
390fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
391fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
392fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
393fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR2FV(index, v);
394fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
395fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
396fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib3fNV)( GLuint index, GLfloat x,
397fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y, GLfloat z )
398fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
399fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
400fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
401fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3F(index, x, y, z);
402fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
403fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
404fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib3fvNV)( GLuint index,
405fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
406fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
407fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
408fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
409fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR3FV(index, v);
410fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
411fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
412fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib4fNV)( GLuint index, GLfloat x,
413fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat y, GLfloat z,
414fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					      GLfloat w )
415fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
416fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
417fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
418fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4F(index, x, y, z, w);
419fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
420fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
421fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(VertexAttrib4fvNV)( GLuint index,
422fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell					       const GLfloat *v )
423fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
424fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
425fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (index < VBO_ATTRIB_MAX)
426fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ATTR4FV(index, v);
427fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
428fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
429fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
430fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#define MAT( ATTR, N, face, params )			\
431fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwelldo {							\
432fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (face != GL_BACK)					\
433fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT_ATTR( ATTR, N, params ); /* front */		\
434fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   if (face != GL_FRONT)				\
435fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT_ATTR( ATTR + 1, N, params ); /* back */	\
436fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell} while (0)
437fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
438fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
439fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell/* Colormaterial conflicts are dealt with later.
440fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell */
441fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwellstatic void GLAPIENTRY TAG(Materialfv)( GLenum face, GLenum pname,
442fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell			       const GLfloat *params )
443fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell{
444fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   GET_CURRENT_CONTEXT( ctx );
445fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   switch (pname) {
446fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_EMISSION:
447fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params );
448fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
449fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_AMBIENT:
450fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params );
451fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
452fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_DIFFUSE:
453fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params );
454fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
455fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_SPECULAR:
456fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params );
457fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
458fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_SHININESS:
459fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params );
460fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
461fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_COLOR_INDEXES:
462fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params );
463fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
464fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   case GL_AMBIENT_AND_DIFFUSE:
465fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params );
466fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      MAT( VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params );
467fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      break;
468fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   default:
469fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      ERROR();
470fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell      return;
471fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell   }
472fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell}
473fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
474fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
475fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR1FV
476fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR2FV
477fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR3FV
478fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR4FV
479fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
480fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR1F
481fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR2F
482fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR3F
483fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef ATTR4F
484fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell
485fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef MAT
486fd12b37dbada6f945a94b93ecf332d0b6a8eef06Keith Whitwell#undef MAT_ATTR
487