1bf215546Sopenharmony_ci/**************************************************************************
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ciCopyright 2002 VMware, Inc.
4bf215546Sopenharmony_ciCopyright 2011 Dave Airlie (ARB_vertex_type_2_10_10_10_rev support)
5bf215546Sopenharmony_ciAll Rights Reserved.
6bf215546Sopenharmony_ci
7bf215546Sopenharmony_ciPermission is hereby granted, free of charge, to any person obtaining a
8bf215546Sopenharmony_cicopy of this software and associated documentation files (the "Software"),
9bf215546Sopenharmony_cito deal in the Software without restriction, including without limitation
10bf215546Sopenharmony_cion the rights to use, copy, modify, merge, publish, distribute, sub
11bf215546Sopenharmony_cilicense, and/or sell copies of the Software, and to permit persons to whom
12bf215546Sopenharmony_cithe Software is furnished to do so, subject to the following conditions:
13bf215546Sopenharmony_ci
14bf215546Sopenharmony_ciThe above copyright notice and this permission notice (including the next
15bf215546Sopenharmony_ciparagraph) shall be included in all copies or substantial portions of the
16bf215546Sopenharmony_ciSoftware.
17bf215546Sopenharmony_ci
18bf215546Sopenharmony_ciTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19bf215546Sopenharmony_ciIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20bf215546Sopenharmony_ciFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21bf215546Sopenharmony_ciVMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
22bf215546Sopenharmony_ciDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23bf215546Sopenharmony_ciOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24bf215546Sopenharmony_ciUSE OR OTHER DEALINGS IN THE SOFTWARE.
25bf215546Sopenharmony_ci
26bf215546Sopenharmony_ci**************************************************************************/
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ci#include "util/format_r11g11b10f.h"
29bf215546Sopenharmony_ci#include "main/varray.h"
30bf215546Sopenharmony_ci#include "vbo_util.h"
31bf215546Sopenharmony_ci#include "util/half_float.h"
32bf215546Sopenharmony_ci
33bf215546Sopenharmony_ci#ifdef SUPPRESS_STATIC
34bf215546Sopenharmony_ci#define static
35bf215546Sopenharmony_ci#endif
36bf215546Sopenharmony_ci
37bf215546Sopenharmony_ci/* ATTR */
38bf215546Sopenharmony_ci#define ATTRI( A, N, V0, V1, V2, V3 ) \
39bf215546Sopenharmony_ci    ATTR_UNION(A, N, GL_INT, uint32_t, INT_AS_UINT(V0), INT_AS_UINT(V1), \
40bf215546Sopenharmony_ci        INT_AS_UINT(V2), INT_AS_UINT(V3))
41bf215546Sopenharmony_ci#define ATTRUI( A, N, V0, V1, V2, V3 ) \
42bf215546Sopenharmony_ci    ATTR_UNION(A, N, GL_UNSIGNED_INT, uint32_t, (uint32_t)(V0), (uint32_t)(V1), \
43bf215546Sopenharmony_ci        (uint32_t)(V2), (uint32_t)(V3))
44bf215546Sopenharmony_ci#define ATTRF( A, N, V0, V1, V2, V3 ) \
45bf215546Sopenharmony_ci    ATTR_UNION(A, N, GL_FLOAT, uint32_t, FLOAT_AS_UINT(V0), FLOAT_AS_UINT(V1),\
46bf215546Sopenharmony_ci        FLOAT_AS_UINT(V2), FLOAT_AS_UINT(V3))
47bf215546Sopenharmony_ci#define ATTRD( A, N, V0, V1, V2, V3 ) \
48bf215546Sopenharmony_ci    ATTR_UNION(A, N, GL_DOUBLE, uint64_t, DOUBLE_AS_UINT64(V0), \
49bf215546Sopenharmony_ci        DOUBLE_AS_UINT64(V1), DOUBLE_AS_UINT64(V2), DOUBLE_AS_UINT64(V3))
50bf215546Sopenharmony_ci#define ATTRUI64( A, N, V0, V1, V2, V3 ) \
51bf215546Sopenharmony_ci    ATTR_UNION(A, N, GL_UNSIGNED_INT64_ARB, uint64_t, V0, V1, V2, V3)
52bf215546Sopenharmony_ci
53bf215546Sopenharmony_ci
54bf215546Sopenharmony_ci/* float */
55bf215546Sopenharmony_ci#define ATTR1FV( A, V ) ATTRF( A, 1, (V)[0], 0, 0, 1 )
56bf215546Sopenharmony_ci#define ATTR2FV( A, V ) ATTRF( A, 2, (V)[0], (V)[1], 0, 1 )
57bf215546Sopenharmony_ci#define ATTR3FV( A, V ) ATTRF( A, 3, (V)[0], (V)[1], (V)[2], 1 )
58bf215546Sopenharmony_ci#define ATTR4FV( A, V ) ATTRF( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ci#define ATTR1F( A, X )          ATTRF( A, 1, X, 0, 0, 1 )
61bf215546Sopenharmony_ci#define ATTR2F( A, X, Y )       ATTRF( A, 2, X, Y, 0, 1 )
62bf215546Sopenharmony_ci#define ATTR3F( A, X, Y, Z )    ATTRF( A, 3, X, Y, Z, 1 )
63bf215546Sopenharmony_ci#define ATTR4F( A, X, Y, Z, W ) ATTRF( A, 4, X, Y, Z, W )
64bf215546Sopenharmony_ci
65bf215546Sopenharmony_ci
66bf215546Sopenharmony_ci/* half */
67bf215546Sopenharmony_ci#define ATTR1HV( A, V ) ATTRF( A, 1, _mesa_half_to_float((uint16_t)(V)[0]), \
68bf215546Sopenharmony_ci                               0, 0, 1 )
69bf215546Sopenharmony_ci#define ATTR2HV( A, V ) ATTRF( A, 2, _mesa_half_to_float((uint16_t)(V)[0]), \
70bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[1]), 0, 1 )
71bf215546Sopenharmony_ci#define ATTR3HV( A, V ) ATTRF( A, 3, _mesa_half_to_float((uint16_t)(V)[0]), \
72bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[1]), \
73bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[2]), 1 )
74bf215546Sopenharmony_ci#define ATTR4HV( A, V ) ATTRF( A, 4, _mesa_half_to_float((uint16_t)(V)[0]), \
75bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[1]), \
76bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[2]), \
77bf215546Sopenharmony_ci                               _mesa_half_to_float((uint16_t)(V)[3]) )
78bf215546Sopenharmony_ci
79bf215546Sopenharmony_ci#define ATTR1H( A, X )          ATTRF( A, 1, _mesa_half_to_float(X), 0, 0, 1 )
80bf215546Sopenharmony_ci#define ATTR2H( A, X, Y )       ATTRF( A, 2, _mesa_half_to_float(X), \
81bf215546Sopenharmony_ci                                       _mesa_half_to_float(Y), 0, 1 )
82bf215546Sopenharmony_ci#define ATTR3H( A, X, Y, Z )    ATTRF( A, 3, _mesa_half_to_float(X), \
83bf215546Sopenharmony_ci                                       _mesa_half_to_float(Y), \
84bf215546Sopenharmony_ci                                       _mesa_half_to_float(Z), 1 )
85bf215546Sopenharmony_ci#define ATTR4H( A, X, Y, Z, W ) ATTRF( A, 4, _mesa_half_to_float(X), \
86bf215546Sopenharmony_ci                                       _mesa_half_to_float(Y), \
87bf215546Sopenharmony_ci                                       _mesa_half_to_float(Z), \
88bf215546Sopenharmony_ci                                       _mesa_half_to_float(W) )
89bf215546Sopenharmony_ci
90bf215546Sopenharmony_ci
91bf215546Sopenharmony_ci/* int */
92bf215546Sopenharmony_ci#define ATTR2IV( A, V ) ATTRI( A, 2, (V)[0], (V)[1], 0, 1 )
93bf215546Sopenharmony_ci#define ATTR3IV( A, V ) ATTRI( A, 3, (V)[0], (V)[1], (V)[2], 1 )
94bf215546Sopenharmony_ci#define ATTR4IV( A, V ) ATTRI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
95bf215546Sopenharmony_ci
96bf215546Sopenharmony_ci#define ATTR1I( A, X )          ATTRI( A, 1, X, 0, 0, 1 )
97bf215546Sopenharmony_ci#define ATTR2I( A, X, Y )       ATTRI( A, 2, X, Y, 0, 1 )
98bf215546Sopenharmony_ci#define ATTR3I( A, X, Y, Z )    ATTRI( A, 3, X, Y, Z, 1 )
99bf215546Sopenharmony_ci#define ATTR4I( A, X, Y, Z, W ) ATTRI( A, 4, X, Y, Z, W )
100bf215546Sopenharmony_ci
101bf215546Sopenharmony_ci
102bf215546Sopenharmony_ci/* uint */
103bf215546Sopenharmony_ci#define ATTR2UIV( A, V ) ATTRUI( A, 2, (V)[0], (V)[1], 0, 1 )
104bf215546Sopenharmony_ci#define ATTR3UIV( A, V ) ATTRUI( A, 3, (V)[0], (V)[1], (V)[2], 1 )
105bf215546Sopenharmony_ci#define ATTR4UIV( A, V ) ATTRUI( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
106bf215546Sopenharmony_ci
107bf215546Sopenharmony_ci#define ATTR1UI( A, X )          ATTRUI( A, 1, X, 0, 0, 1 )
108bf215546Sopenharmony_ci#define ATTR2UI( A, X, Y )       ATTRUI( A, 2, X, Y, 0, 1 )
109bf215546Sopenharmony_ci#define ATTR3UI( A, X, Y, Z )    ATTRUI( A, 3, X, Y, Z, 1 )
110bf215546Sopenharmony_ci#define ATTR4UI( A, X, Y, Z, W ) ATTRUI( A, 4, X, Y, Z, W )
111bf215546Sopenharmony_ci
112bf215546Sopenharmony_ci#define MAT_ATTR( A, N, V ) ATTRF( A, N, (V)[0], (V)[1], (V)[2], (V)[3] )
113bf215546Sopenharmony_ci
114bf215546Sopenharmony_ci#define ATTRUI10_1( A, UI ) ATTRF( A, 1, (UI) & 0x3ff, 0, 0, 1 )
115bf215546Sopenharmony_ci#define ATTRUI10_2( A, UI ) ATTRF( A, 2, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 0, 1 )
116bf215546Sopenharmony_ci#define ATTRUI10_3( A, UI ) ATTRF( A, 3, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, 1 )
117bf215546Sopenharmony_ci#define ATTRUI10_4( A, UI ) ATTRF( A, 4, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, ((UI) >> 20) & 0x3ff, ((UI) >> 30) & 0x3 )
118bf215546Sopenharmony_ci
119bf215546Sopenharmony_ci#define ATTRUI10N_1( A, UI ) ATTRF( A, 1, conv_ui10_to_norm_float((UI) & 0x3ff), 0, 0, 1 )
120bf215546Sopenharmony_ci#define ATTRUI10N_2( A, UI ) ATTRF( A, 2, \
121bf215546Sopenharmony_ci				   conv_ui10_to_norm_float((UI) & 0x3ff), \
122bf215546Sopenharmony_ci				   conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), 0, 1 )
123bf215546Sopenharmony_ci#define ATTRUI10N_3( A, UI ) ATTRF( A, 3, \
124bf215546Sopenharmony_ci				   conv_ui10_to_norm_float((UI) & 0x3ff), \
125bf215546Sopenharmony_ci				   conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \
126bf215546Sopenharmony_ci				   conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), 1 )
127bf215546Sopenharmony_ci#define ATTRUI10N_4( A, UI ) ATTRF( A, 4, \
128bf215546Sopenharmony_ci				   conv_ui10_to_norm_float((UI) & 0x3ff), \
129bf215546Sopenharmony_ci				   conv_ui10_to_norm_float(((UI) >> 10) & 0x3ff), \
130bf215546Sopenharmony_ci				   conv_ui10_to_norm_float(((UI) >> 20) & 0x3ff), \
131bf215546Sopenharmony_ci				   conv_ui2_to_norm_float(((UI) >> 30) & 0x3) )
132bf215546Sopenharmony_ci
133bf215546Sopenharmony_ci#define ATTRI10_1( A, I10 ) ATTRF( A, 1, conv_i10_to_i((I10) & 0x3ff), 0, 0, 1 )
134bf215546Sopenharmony_ci#define ATTRI10_2( A, I10 ) ATTRF( A, 2, \
135bf215546Sopenharmony_ci				conv_i10_to_i((I10) & 0x3ff),		\
136bf215546Sopenharmony_ci				conv_i10_to_i(((I10) >> 10) & 0x3ff), 0, 1 )
137bf215546Sopenharmony_ci#define ATTRI10_3( A, I10 ) ATTRF( A, 3, \
138bf215546Sopenharmony_ci				conv_i10_to_i((I10) & 0x3ff),	    \
139bf215546Sopenharmony_ci				conv_i10_to_i(((I10) >> 10) & 0x3ff), \
140bf215546Sopenharmony_ci				conv_i10_to_i(((I10) >> 20) & 0x3ff), 1 )
141bf215546Sopenharmony_ci#define ATTRI10_4( A, I10 ) ATTRF( A, 4, \
142bf215546Sopenharmony_ci				conv_i10_to_i((I10) & 0x3ff),		\
143bf215546Sopenharmony_ci				conv_i10_to_i(((I10) >> 10) & 0x3ff), \
144bf215546Sopenharmony_ci				conv_i10_to_i(((I10) >> 20) & 0x3ff), \
145bf215546Sopenharmony_ci				conv_i2_to_i(((I10) >> 30) & 0x3))
146bf215546Sopenharmony_ci
147bf215546Sopenharmony_ci
148bf215546Sopenharmony_ci#define ATTRI10N_1(ctx, A, I10) ATTRF(A, 1, conv_i10_to_norm_float(ctx, (I10) & 0x3ff), 0, 0, 1 )
149bf215546Sopenharmony_ci#define ATTRI10N_2(ctx, A, I10) ATTRF(A, 2, \
150bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, (I10) & 0x3ff),		\
151bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), 0, 1 )
152bf215546Sopenharmony_ci#define ATTRI10N_3(ctx, A, I10) ATTRF(A, 3, \
153bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, (I10) & 0x3ff),	    \
154bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), \
155bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, ((I10) >> 20) & 0x3ff), 1 )
156bf215546Sopenharmony_ci#define ATTRI10N_4(ctx, A, I10) ATTRF(A, 4, \
157bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, (I10) & 0x3ff),		\
158bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, ((I10) >> 10) & 0x3ff), \
159bf215546Sopenharmony_ci				conv_i10_to_norm_float(ctx, ((I10) >> 20) & 0x3ff), \
160bf215546Sopenharmony_ci				conv_i2_to_norm_float(ctx, ((I10) >> 30) & 0x3))
161bf215546Sopenharmony_ci
162bf215546Sopenharmony_ci#define ATTR_UI(ctx, val, type, normalized, attr, arg) do {	\
163bf215546Sopenharmony_ci   if ((type) == GL_UNSIGNED_INT_2_10_10_10_REV) {		\
164bf215546Sopenharmony_ci      if (normalized) {						\
165bf215546Sopenharmony_ci	 ATTRUI10N_##val((attr), (arg));			\
166bf215546Sopenharmony_ci      } else {							\
167bf215546Sopenharmony_ci	 ATTRUI10_##val((attr), (arg));				\
168bf215546Sopenharmony_ci      }								\
169bf215546Sopenharmony_ci   } else if ((type) == GL_INT_2_10_10_10_REV) {		\
170bf215546Sopenharmony_ci      if (normalized) {						\
171bf215546Sopenharmony_ci	 ATTRI10N_##val(ctx, (attr), (arg));			\
172bf215546Sopenharmony_ci      } else {							\
173bf215546Sopenharmony_ci	 ATTRI10_##val((attr), (arg));				\
174bf215546Sopenharmony_ci      }								\
175bf215546Sopenharmony_ci   } else if ((type) == GL_UNSIGNED_INT_10F_11F_11F_REV) {	\
176bf215546Sopenharmony_ci      float res[4];						\
177bf215546Sopenharmony_ci      res[3] = 1;                                               \
178bf215546Sopenharmony_ci      r11g11b10f_to_float3((arg), res);				\
179bf215546Sopenharmony_ci      ATTR##val##FV((attr), res);				\
180bf215546Sopenharmony_ci   } else							\
181bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);					\
182bf215546Sopenharmony_ci   } while(0)
183bf215546Sopenharmony_ci
184bf215546Sopenharmony_ci#define ATTR_UI_INDEX(ctx, val, type, normalized, index, arg) do {	\
185bf215546Sopenharmony_ci      if ((index) == 0 && _mesa_attr_zero_aliases_vertex(ctx)) {	\
186bf215546Sopenharmony_ci	 ATTR_UI(ctx, val, (type), normalized, 0, (arg));		\
187bf215546Sopenharmony_ci      } else if ((index) < MAX_VERTEX_GENERIC_ATTRIBS) {		\
188bf215546Sopenharmony_ci	 ATTR_UI(ctx, val, (type), normalized, VBO_ATTRIB_GENERIC0 + (index), (arg)); \
189bf215546Sopenharmony_ci      } else								\
190bf215546Sopenharmony_ci	 ERROR(GL_INVALID_VALUE);					\
191bf215546Sopenharmony_ci   } while(0)
192bf215546Sopenharmony_ci
193bf215546Sopenharmony_ci
194bf215546Sopenharmony_ci/* Doubles */
195bf215546Sopenharmony_ci#define ATTR1DV( A, V ) ATTRD( A, 1, (V)[0], 0, 0, 1 )
196bf215546Sopenharmony_ci#define ATTR2DV( A, V ) ATTRD( A, 2, (V)[0], (V)[1], 0, 1 )
197bf215546Sopenharmony_ci#define ATTR3DV( A, V ) ATTRD( A, 3, (V)[0], (V)[1], (V)[2], 1 )
198bf215546Sopenharmony_ci#define ATTR4DV( A, V ) ATTRD( A, 4, (V)[0], (V)[1], (V)[2], (V)[3] )
199bf215546Sopenharmony_ci
200bf215546Sopenharmony_ci#define ATTR1D( A, X )          ATTRD( A, 1, X, 0, 0, 1 )
201bf215546Sopenharmony_ci#define ATTR2D( A, X, Y )       ATTRD( A, 2, X, Y, 0, 1 )
202bf215546Sopenharmony_ci#define ATTR3D( A, X, Y, Z )    ATTRD( A, 3, X, Y, Z, 1 )
203bf215546Sopenharmony_ci#define ATTR4D( A, X, Y, Z, W ) ATTRD( A, 4, X, Y, Z, W )
204bf215546Sopenharmony_ci
205bf215546Sopenharmony_ci#define ATTR1UIV64( A, V ) ATTRUI64( A, 1, (V)[0], 0, 0, 0 )
206bf215546Sopenharmony_ci#define ATTR1UI64( A, X )  ATTRUI64( A, 1, X, 0, 0, 0 )
207bf215546Sopenharmony_ci
208bf215546Sopenharmony_ci
209bf215546Sopenharmony_cistatic void GLAPIENTRY
210bf215546Sopenharmony_ciTAG(Vertex2f)(GLfloat x, GLfloat y)
211bf215546Sopenharmony_ci{
212bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
213bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, x, y);
214bf215546Sopenharmony_ci}
215bf215546Sopenharmony_ci
216bf215546Sopenharmony_cistatic void GLAPIENTRY
217bf215546Sopenharmony_ciTAG(Vertex2fv)(const GLfloat * v)
218bf215546Sopenharmony_ci{
219bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
220bf215546Sopenharmony_ci   ATTR2FV(VBO_ATTRIB_POS, v);
221bf215546Sopenharmony_ci}
222bf215546Sopenharmony_ci
223bf215546Sopenharmony_cistatic void GLAPIENTRY
224bf215546Sopenharmony_ciTAG(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
225bf215546Sopenharmony_ci{
226bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
227bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, x, y, z);
228bf215546Sopenharmony_ci}
229bf215546Sopenharmony_ci
230bf215546Sopenharmony_cistatic void GLAPIENTRY
231bf215546Sopenharmony_ciTAG(Vertex3fv)(const GLfloat * v)
232bf215546Sopenharmony_ci{
233bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
234bf215546Sopenharmony_ci   ATTR3FV(VBO_ATTRIB_POS, v);
235bf215546Sopenharmony_ci}
236bf215546Sopenharmony_ci
237bf215546Sopenharmony_cistatic void GLAPIENTRY
238bf215546Sopenharmony_ciTAG(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
239bf215546Sopenharmony_ci{
240bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
241bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, x, y, z, w);
242bf215546Sopenharmony_ci}
243bf215546Sopenharmony_ci
244bf215546Sopenharmony_cistatic void GLAPIENTRY
245bf215546Sopenharmony_ciTAG(Vertex4fv)(const GLfloat * v)
246bf215546Sopenharmony_ci{
247bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
248bf215546Sopenharmony_ci   ATTR4FV(VBO_ATTRIB_POS, v);
249bf215546Sopenharmony_ci}
250bf215546Sopenharmony_ci
251bf215546Sopenharmony_cistatic void GLAPIENTRY
252bf215546Sopenharmony_ciTAG(VertexAttrib1fARB)(GLuint index, GLfloat x)
253bf215546Sopenharmony_ci{
254bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
255bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
256bf215546Sopenharmony_ci      ATTR1F(0, x);
257bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
258bf215546Sopenharmony_ci      ATTR1F(VBO_ATTRIB_GENERIC0 + index, x);
259bf215546Sopenharmony_ci   else
260bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
261bf215546Sopenharmony_ci}
262bf215546Sopenharmony_ci
263bf215546Sopenharmony_cistatic void GLAPIENTRY
264bf215546Sopenharmony_ciTAG(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
265bf215546Sopenharmony_ci{
266bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
267bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
268bf215546Sopenharmony_ci      ATTR1FV(0, v);
269bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
270bf215546Sopenharmony_ci      ATTR1FV(VBO_ATTRIB_GENERIC0 + index, v);
271bf215546Sopenharmony_ci   else
272bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
273bf215546Sopenharmony_ci}
274bf215546Sopenharmony_ci
275bf215546Sopenharmony_cistatic void GLAPIENTRY
276bf215546Sopenharmony_ciTAG(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
277bf215546Sopenharmony_ci{
278bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
279bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
280bf215546Sopenharmony_ci      ATTR2F(0, x, y);
281bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
282bf215546Sopenharmony_ci      ATTR2F(VBO_ATTRIB_GENERIC0 + index, x, y);
283bf215546Sopenharmony_ci   else
284bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
285bf215546Sopenharmony_ci}
286bf215546Sopenharmony_ci
287bf215546Sopenharmony_cistatic void GLAPIENTRY
288bf215546Sopenharmony_ciTAG(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
289bf215546Sopenharmony_ci{
290bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
291bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
292bf215546Sopenharmony_ci      ATTR2FV(0, v);
293bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
294bf215546Sopenharmony_ci      ATTR2FV(VBO_ATTRIB_GENERIC0 + index, v);
295bf215546Sopenharmony_ci   else
296bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
297bf215546Sopenharmony_ci}
298bf215546Sopenharmony_ci
299bf215546Sopenharmony_cistatic void GLAPIENTRY
300bf215546Sopenharmony_ciTAG(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
301bf215546Sopenharmony_ci{
302bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
303bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
304bf215546Sopenharmony_ci      ATTR3F(0, x, y, z);
305bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
306bf215546Sopenharmony_ci      ATTR3F(VBO_ATTRIB_GENERIC0 + index, x, y, z);
307bf215546Sopenharmony_ci   else
308bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
309bf215546Sopenharmony_ci}
310bf215546Sopenharmony_ci
311bf215546Sopenharmony_cistatic void GLAPIENTRY
312bf215546Sopenharmony_ciTAG(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
313bf215546Sopenharmony_ci{
314bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
315bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
316bf215546Sopenharmony_ci      ATTR3FV(0, v);
317bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
318bf215546Sopenharmony_ci      ATTR3FV(VBO_ATTRIB_GENERIC0 + index, v);
319bf215546Sopenharmony_ci   else
320bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
321bf215546Sopenharmony_ci}
322bf215546Sopenharmony_ci
323bf215546Sopenharmony_cistatic void GLAPIENTRY
324bf215546Sopenharmony_ciTAG(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
325bf215546Sopenharmony_ci{
326bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
327bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
328bf215546Sopenharmony_ci      ATTR4F(0, x, y, z, w);
329bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
330bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
331bf215546Sopenharmony_ci   else
332bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
333bf215546Sopenharmony_ci}
334bf215546Sopenharmony_ci
335bf215546Sopenharmony_cistatic void GLAPIENTRY
336bf215546Sopenharmony_ciTAG(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
337bf215546Sopenharmony_ci{
338bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
339bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
340bf215546Sopenharmony_ci      ATTR4FV(0, v);
341bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
342bf215546Sopenharmony_ci      ATTR4FV(VBO_ATTRIB_GENERIC0 + index, v);
343bf215546Sopenharmony_ci   else
344bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
345bf215546Sopenharmony_ci}
346bf215546Sopenharmony_ci
347bf215546Sopenharmony_ci
348bf215546Sopenharmony_ci
349bf215546Sopenharmony_ci/* Integer-valued generic attributes.
350bf215546Sopenharmony_ci * XXX: the integers just get converted to floats at this time
351bf215546Sopenharmony_ci */
352bf215546Sopenharmony_cistatic void GLAPIENTRY
353bf215546Sopenharmony_ciTAG(VertexAttribI1iEXT)(GLuint index, GLint x)
354bf215546Sopenharmony_ci{
355bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
356bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
357bf215546Sopenharmony_ci      ATTR1I(0, x);
358bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
359bf215546Sopenharmony_ci      ATTR1I(VBO_ATTRIB_GENERIC0 + index, x);
360bf215546Sopenharmony_ci   else
361bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
362bf215546Sopenharmony_ci}
363bf215546Sopenharmony_ci
364bf215546Sopenharmony_cistatic void GLAPIENTRY
365bf215546Sopenharmony_ciTAG(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y)
366bf215546Sopenharmony_ci{
367bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
368bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
369bf215546Sopenharmony_ci      ATTR2I(0, x, y);
370bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
371bf215546Sopenharmony_ci      ATTR2I(VBO_ATTRIB_GENERIC0 + index, x, y);
372bf215546Sopenharmony_ci   else
373bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
374bf215546Sopenharmony_ci}
375bf215546Sopenharmony_ci
376bf215546Sopenharmony_cistatic void GLAPIENTRY
377bf215546Sopenharmony_ciTAG(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z)
378bf215546Sopenharmony_ci{
379bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
380bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
381bf215546Sopenharmony_ci      ATTR3I(0, x, y, z);
382bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
383bf215546Sopenharmony_ci      ATTR3I(VBO_ATTRIB_GENERIC0 + index, x, y, z);
384bf215546Sopenharmony_ci   else
385bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
386bf215546Sopenharmony_ci}
387bf215546Sopenharmony_ci
388bf215546Sopenharmony_cistatic void GLAPIENTRY
389bf215546Sopenharmony_ciTAG(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w)
390bf215546Sopenharmony_ci{
391bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
392bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
393bf215546Sopenharmony_ci      ATTR4I(0, x, y, z, w);
394bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
395bf215546Sopenharmony_ci      ATTR4I(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
396bf215546Sopenharmony_ci   else
397bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
398bf215546Sopenharmony_ci}
399bf215546Sopenharmony_ci
400bf215546Sopenharmony_cistatic void GLAPIENTRY
401bf215546Sopenharmony_ciTAG(VertexAttribI2ivEXT)(GLuint index, const GLint *v)
402bf215546Sopenharmony_ci{
403bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
404bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
405bf215546Sopenharmony_ci      ATTR2IV(0, v);
406bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
407bf215546Sopenharmony_ci      ATTR2IV(VBO_ATTRIB_GENERIC0 + index, v);
408bf215546Sopenharmony_ci   else
409bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
410bf215546Sopenharmony_ci}
411bf215546Sopenharmony_ci
412bf215546Sopenharmony_cistatic void GLAPIENTRY
413bf215546Sopenharmony_ciTAG(VertexAttribI3ivEXT)(GLuint index, const GLint *v)
414bf215546Sopenharmony_ci{
415bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
416bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
417bf215546Sopenharmony_ci      ATTR3IV(0, v);
418bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
419bf215546Sopenharmony_ci      ATTR3IV(VBO_ATTRIB_GENERIC0 + index, v);
420bf215546Sopenharmony_ci   else
421bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
422bf215546Sopenharmony_ci}
423bf215546Sopenharmony_ci
424bf215546Sopenharmony_cistatic void GLAPIENTRY
425bf215546Sopenharmony_ciTAG(VertexAttribI4ivEXT)(GLuint index, const GLint *v)
426bf215546Sopenharmony_ci{
427bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
428bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
429bf215546Sopenharmony_ci      ATTR4IV(0, v);
430bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
431bf215546Sopenharmony_ci      ATTR4IV(VBO_ATTRIB_GENERIC0 + index, v);
432bf215546Sopenharmony_ci   else
433bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
434bf215546Sopenharmony_ci}
435bf215546Sopenharmony_ci
436bf215546Sopenharmony_ci
437bf215546Sopenharmony_ci
438bf215546Sopenharmony_ci/* Unsigned integer-valued generic attributes.
439bf215546Sopenharmony_ci * XXX: the integers just get converted to floats at this time
440bf215546Sopenharmony_ci */
441bf215546Sopenharmony_cistatic void GLAPIENTRY
442bf215546Sopenharmony_ciTAG(VertexAttribI1uiEXT)(GLuint index, GLuint x)
443bf215546Sopenharmony_ci{
444bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
445bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
446bf215546Sopenharmony_ci      ATTR1UI(0, x);
447bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
448bf215546Sopenharmony_ci      ATTR1UI(VBO_ATTRIB_GENERIC0 + index, x);
449bf215546Sopenharmony_ci   else
450bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
451bf215546Sopenharmony_ci}
452bf215546Sopenharmony_ci
453bf215546Sopenharmony_cistatic void GLAPIENTRY
454bf215546Sopenharmony_ciTAG(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y)
455bf215546Sopenharmony_ci{
456bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
457bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
458bf215546Sopenharmony_ci      ATTR2UI(0, x, y);
459bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
460bf215546Sopenharmony_ci      ATTR2UI(VBO_ATTRIB_GENERIC0 + index, x, y);
461bf215546Sopenharmony_ci   else
462bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
463bf215546Sopenharmony_ci}
464bf215546Sopenharmony_ci
465bf215546Sopenharmony_cistatic void GLAPIENTRY
466bf215546Sopenharmony_ciTAG(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z)
467bf215546Sopenharmony_ci{
468bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
469bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
470bf215546Sopenharmony_ci      ATTR3UI(0, x, y, z);
471bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
472bf215546Sopenharmony_ci      ATTR3UI(VBO_ATTRIB_GENERIC0 + index, x, y, z);
473bf215546Sopenharmony_ci   else
474bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
475bf215546Sopenharmony_ci}
476bf215546Sopenharmony_ci
477bf215546Sopenharmony_cistatic void GLAPIENTRY
478bf215546Sopenharmony_ciTAG(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
479bf215546Sopenharmony_ci{
480bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
481bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
482bf215546Sopenharmony_ci      ATTR4UI(0, x, y, z, w);
483bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
484bf215546Sopenharmony_ci      ATTR4UI(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
485bf215546Sopenharmony_ci   else
486bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
487bf215546Sopenharmony_ci}
488bf215546Sopenharmony_ci
489bf215546Sopenharmony_cistatic void GLAPIENTRY
490bf215546Sopenharmony_ciTAG(VertexAttribI2uivEXT)(GLuint index, const GLuint *v)
491bf215546Sopenharmony_ci{
492bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
493bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
494bf215546Sopenharmony_ci      ATTR2UIV(0, v);
495bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
496bf215546Sopenharmony_ci      ATTR2UIV(VBO_ATTRIB_GENERIC0 + index, v);
497bf215546Sopenharmony_ci   else
498bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
499bf215546Sopenharmony_ci}
500bf215546Sopenharmony_ci
501bf215546Sopenharmony_cistatic void GLAPIENTRY
502bf215546Sopenharmony_ciTAG(VertexAttribI3uivEXT)(GLuint index, const GLuint *v)
503bf215546Sopenharmony_ci{
504bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
505bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
506bf215546Sopenharmony_ci      ATTR3UIV(0, v);
507bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
508bf215546Sopenharmony_ci      ATTR3UIV(VBO_ATTRIB_GENERIC0 + index, v);
509bf215546Sopenharmony_ci   else
510bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
511bf215546Sopenharmony_ci}
512bf215546Sopenharmony_ci
513bf215546Sopenharmony_cistatic void GLAPIENTRY
514bf215546Sopenharmony_ciTAG(VertexAttribI4uivEXT)(GLuint index, const GLuint *v)
515bf215546Sopenharmony_ci{
516bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
517bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
518bf215546Sopenharmony_ci      ATTR4UIV(0, v);
519bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
520bf215546Sopenharmony_ci      ATTR4UIV(VBO_ATTRIB_GENERIC0 + index, v);
521bf215546Sopenharmony_ci   else
522bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
523bf215546Sopenharmony_ci}
524bf215546Sopenharmony_ci
525bf215546Sopenharmony_ci
526bf215546Sopenharmony_ci
527bf215546Sopenharmony_ci/* These entrypoints are no longer used for NV_vertex_program but they are
528bf215546Sopenharmony_ci * used by the display list and other code specifically because of their
529bf215546Sopenharmony_ci * property of aliasing with the legacy Vertex, TexCoord, Normal, etc
530bf215546Sopenharmony_ci * attributes.  (See vbo_save_loopback.c)
531bf215546Sopenharmony_ci */
532bf215546Sopenharmony_cistatic void GLAPIENTRY
533bf215546Sopenharmony_ciTAG(VertexAttrib1fNV)(GLuint index, GLfloat x)
534bf215546Sopenharmony_ci{
535bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
536bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
537bf215546Sopenharmony_ci      ATTR1F(index, x);
538bf215546Sopenharmony_ci}
539bf215546Sopenharmony_ci
540bf215546Sopenharmony_cistatic void GLAPIENTRY
541bf215546Sopenharmony_ciTAG(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
542bf215546Sopenharmony_ci{
543bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
544bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
545bf215546Sopenharmony_ci      ATTR1FV(index, v);
546bf215546Sopenharmony_ci}
547bf215546Sopenharmony_ci
548bf215546Sopenharmony_cistatic void GLAPIENTRY
549bf215546Sopenharmony_ciTAG(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
550bf215546Sopenharmony_ci{
551bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
552bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
553bf215546Sopenharmony_ci      ATTR2F(index, x, y);
554bf215546Sopenharmony_ci}
555bf215546Sopenharmony_ci
556bf215546Sopenharmony_cistatic void GLAPIENTRY
557bf215546Sopenharmony_ciTAG(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
558bf215546Sopenharmony_ci{
559bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
560bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
561bf215546Sopenharmony_ci      ATTR2FV(index, v);
562bf215546Sopenharmony_ci}
563bf215546Sopenharmony_ci
564bf215546Sopenharmony_cistatic void GLAPIENTRY
565bf215546Sopenharmony_ciTAG(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
566bf215546Sopenharmony_ci{
567bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
568bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
569bf215546Sopenharmony_ci      ATTR3F(index, x, y, z);
570bf215546Sopenharmony_ci}
571bf215546Sopenharmony_ci
572bf215546Sopenharmony_cistatic void GLAPIENTRY
573bf215546Sopenharmony_ciTAG(VertexAttrib3fvNV)(GLuint index,
574bf215546Sopenharmony_ci const GLfloat * v)
575bf215546Sopenharmony_ci{
576bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
577bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
578bf215546Sopenharmony_ci      ATTR3FV(index, v);
579bf215546Sopenharmony_ci}
580bf215546Sopenharmony_ci
581bf215546Sopenharmony_cistatic void GLAPIENTRY
582bf215546Sopenharmony_ciTAG(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
583bf215546Sopenharmony_ci{
584bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
585bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
586bf215546Sopenharmony_ci      ATTR4F(index, x, y, z, w);
587bf215546Sopenharmony_ci}
588bf215546Sopenharmony_ci
589bf215546Sopenharmony_cistatic void GLAPIENTRY
590bf215546Sopenharmony_ciTAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
591bf215546Sopenharmony_ci{
592bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
593bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX)
594bf215546Sopenharmony_ci      ATTR4FV(index, v);
595bf215546Sopenharmony_ci}
596bf215546Sopenharmony_ci
597bf215546Sopenharmony_cistatic void GLAPIENTRY
598bf215546Sopenharmony_ciTAG(VertexP2ui)(GLenum type, GLuint value)
599bf215546Sopenharmony_ci{
600bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
601bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP2ui");
602bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_POS, value);
603bf215546Sopenharmony_ci}
604bf215546Sopenharmony_ci
605bf215546Sopenharmony_cistatic void GLAPIENTRY
606bf215546Sopenharmony_ciTAG(VertexP2uiv)(GLenum type, const GLuint *value)
607bf215546Sopenharmony_ci{
608bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
609bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP2uiv");
610bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_POS, value[0]);
611bf215546Sopenharmony_ci}
612bf215546Sopenharmony_ci
613bf215546Sopenharmony_cistatic void GLAPIENTRY
614bf215546Sopenharmony_ciTAG(VertexP3ui)(GLenum type, GLuint value)
615bf215546Sopenharmony_ci{
616bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
617bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP3ui");
618bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_POS, value);
619bf215546Sopenharmony_ci}
620bf215546Sopenharmony_ci
621bf215546Sopenharmony_cistatic void GLAPIENTRY
622bf215546Sopenharmony_ciTAG(VertexP3uiv)(GLenum type, const GLuint *value)
623bf215546Sopenharmony_ci{
624bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
625bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP3uiv");
626bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_POS, value[0]);
627bf215546Sopenharmony_ci}
628bf215546Sopenharmony_ci
629bf215546Sopenharmony_cistatic void GLAPIENTRY
630bf215546Sopenharmony_ciTAG(VertexP4ui)(GLenum type, GLuint value)
631bf215546Sopenharmony_ci{
632bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
633bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP4ui");
634bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_POS, value);
635bf215546Sopenharmony_ci}
636bf215546Sopenharmony_ci
637bf215546Sopenharmony_cistatic void GLAPIENTRY
638bf215546Sopenharmony_ciTAG(VertexP4uiv)(GLenum type, const GLuint *value)
639bf215546Sopenharmony_ci{
640bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
641bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexP4uiv");
642bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_POS, value[0]);
643bf215546Sopenharmony_ci}
644bf215546Sopenharmony_ci
645bf215546Sopenharmony_cistatic void GLAPIENTRY
646bf215546Sopenharmony_ciTAG(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized,
647bf215546Sopenharmony_ci		      GLuint value)
648bf215546Sopenharmony_ci{
649bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
650bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1ui");
651bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 1, type, normalized, index, value);
652bf215546Sopenharmony_ci}
653bf215546Sopenharmony_ci
654bf215546Sopenharmony_cistatic void GLAPIENTRY
655bf215546Sopenharmony_ciTAG(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized,
656bf215546Sopenharmony_ci		      GLuint value)
657bf215546Sopenharmony_ci{
658bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
659bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2ui");
660bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 2, type, normalized, index, value);
661bf215546Sopenharmony_ci}
662bf215546Sopenharmony_ci
663bf215546Sopenharmony_cistatic void GLAPIENTRY
664bf215546Sopenharmony_ciTAG(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized,
665bf215546Sopenharmony_ci		      GLuint value)
666bf215546Sopenharmony_ci{
667bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
668bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3ui");
669bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 3, type, normalized, index, value);
670bf215546Sopenharmony_ci}
671bf215546Sopenharmony_ci
672bf215546Sopenharmony_cistatic void GLAPIENTRY
673bf215546Sopenharmony_ciTAG(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized,
674bf215546Sopenharmony_ci		      GLuint value)
675bf215546Sopenharmony_ci{
676bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
677bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4ui");
678bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 4, type, normalized, index, value);
679bf215546Sopenharmony_ci}
680bf215546Sopenharmony_ci
681bf215546Sopenharmony_cistatic void GLAPIENTRY
682bf215546Sopenharmony_ciTAG(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized,
683bf215546Sopenharmony_ci		       const GLuint *value)
684bf215546Sopenharmony_ci{
685bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
686bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1uiv");
687bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 1, type, normalized, index, *value);
688bf215546Sopenharmony_ci}
689bf215546Sopenharmony_ci
690bf215546Sopenharmony_cistatic void GLAPIENTRY
691bf215546Sopenharmony_ciTAG(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized,
692bf215546Sopenharmony_ci		       const GLuint *value)
693bf215546Sopenharmony_ci{
694bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
695bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2uiv");
696bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 2, type, normalized, index, *value);
697bf215546Sopenharmony_ci}
698bf215546Sopenharmony_ci
699bf215546Sopenharmony_cistatic void GLAPIENTRY
700bf215546Sopenharmony_ciTAG(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized,
701bf215546Sopenharmony_ci		       const GLuint *value)
702bf215546Sopenharmony_ci{
703bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
704bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3uiv");
705bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 3, type, normalized, index, *value);
706bf215546Sopenharmony_ci}
707bf215546Sopenharmony_ci
708bf215546Sopenharmony_cistatic void GLAPIENTRY
709bf215546Sopenharmony_ciTAG(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized,
710bf215546Sopenharmony_ci		      const GLuint *value)
711bf215546Sopenharmony_ci{
712bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
713bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4uiv");
714bf215546Sopenharmony_ci   ATTR_UI_INDEX(ctx, 4, type, normalized, index, *value);
715bf215546Sopenharmony_ci}
716bf215546Sopenharmony_ci
717bf215546Sopenharmony_ci
718bf215546Sopenharmony_ci
719bf215546Sopenharmony_cistatic void GLAPIENTRY
720bf215546Sopenharmony_ciTAG(VertexAttribL1d)(GLuint index, GLdouble x)
721bf215546Sopenharmony_ci{
722bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
723bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
724bf215546Sopenharmony_ci      ATTR1D(0, x);
725bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
726bf215546Sopenharmony_ci      ATTR1D(VBO_ATTRIB_GENERIC0 + index, x);
727bf215546Sopenharmony_ci   else
728bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
729bf215546Sopenharmony_ci}
730bf215546Sopenharmony_ci
731bf215546Sopenharmony_cistatic void GLAPIENTRY
732bf215546Sopenharmony_ciTAG(VertexAttribL1dv)(GLuint index, const GLdouble * v)
733bf215546Sopenharmony_ci{
734bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
735bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
736bf215546Sopenharmony_ci      ATTR1DV(0, v);
737bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
738bf215546Sopenharmony_ci      ATTR1DV(VBO_ATTRIB_GENERIC0 + index, v);
739bf215546Sopenharmony_ci   else
740bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
741bf215546Sopenharmony_ci}
742bf215546Sopenharmony_ci
743bf215546Sopenharmony_cistatic void GLAPIENTRY
744bf215546Sopenharmony_ciTAG(VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y)
745bf215546Sopenharmony_ci{
746bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
747bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
748bf215546Sopenharmony_ci      ATTR2D(0, x, y);
749bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
750bf215546Sopenharmony_ci      ATTR2D(VBO_ATTRIB_GENERIC0 + index, x, y);
751bf215546Sopenharmony_ci   else
752bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
753bf215546Sopenharmony_ci}
754bf215546Sopenharmony_ci
755bf215546Sopenharmony_cistatic void GLAPIENTRY
756bf215546Sopenharmony_ciTAG(VertexAttribL2dv)(GLuint index, const GLdouble * v)
757bf215546Sopenharmony_ci{
758bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
759bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
760bf215546Sopenharmony_ci      ATTR2DV(0, v);
761bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
762bf215546Sopenharmony_ci      ATTR2DV(VBO_ATTRIB_GENERIC0 + index, v);
763bf215546Sopenharmony_ci   else
764bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
765bf215546Sopenharmony_ci}
766bf215546Sopenharmony_ci
767bf215546Sopenharmony_cistatic void GLAPIENTRY
768bf215546Sopenharmony_ciTAG(VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
769bf215546Sopenharmony_ci{
770bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
771bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
772bf215546Sopenharmony_ci      ATTR3D(0, x, y, z);
773bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
774bf215546Sopenharmony_ci      ATTR3D(VBO_ATTRIB_GENERIC0 + index, x, y, z);
775bf215546Sopenharmony_ci   else
776bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
777bf215546Sopenharmony_ci}
778bf215546Sopenharmony_ci
779bf215546Sopenharmony_cistatic void GLAPIENTRY
780bf215546Sopenharmony_ciTAG(VertexAttribL3dv)(GLuint index, const GLdouble * v)
781bf215546Sopenharmony_ci{
782bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
783bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
784bf215546Sopenharmony_ci      ATTR3DV(0, v);
785bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
786bf215546Sopenharmony_ci      ATTR3DV(VBO_ATTRIB_GENERIC0 + index, v);
787bf215546Sopenharmony_ci   else
788bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
789bf215546Sopenharmony_ci}
790bf215546Sopenharmony_ci
791bf215546Sopenharmony_cistatic void GLAPIENTRY
792bf215546Sopenharmony_ciTAG(VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
793bf215546Sopenharmony_ci{
794bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
795bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
796bf215546Sopenharmony_ci      ATTR4D(0, x, y, z, w);
797bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
798bf215546Sopenharmony_ci      ATTR4D(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
799bf215546Sopenharmony_ci   else
800bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
801bf215546Sopenharmony_ci}
802bf215546Sopenharmony_ci
803bf215546Sopenharmony_cistatic void GLAPIENTRY
804bf215546Sopenharmony_ciTAG(VertexAttribL4dv)(GLuint index, const GLdouble * v)
805bf215546Sopenharmony_ci{
806bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
807bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
808bf215546Sopenharmony_ci      ATTR4DV(0, v);
809bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
810bf215546Sopenharmony_ci      ATTR4DV(VBO_ATTRIB_GENERIC0 + index, v);
811bf215546Sopenharmony_ci   else
812bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
813bf215546Sopenharmony_ci}
814bf215546Sopenharmony_ci
815bf215546Sopenharmony_cistatic void GLAPIENTRY
816bf215546Sopenharmony_ciTAG(VertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x)
817bf215546Sopenharmony_ci{
818bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
819bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
820bf215546Sopenharmony_ci      ATTR1UI64(0, x);
821bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
822bf215546Sopenharmony_ci      ATTR1UI64(VBO_ATTRIB_GENERIC0 + index, x);
823bf215546Sopenharmony_ci   else
824bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
825bf215546Sopenharmony_ci}
826bf215546Sopenharmony_ci
827bf215546Sopenharmony_cistatic void GLAPIENTRY
828bf215546Sopenharmony_ciTAG(VertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT *v)
829bf215546Sopenharmony_ci{
830bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
831bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
832bf215546Sopenharmony_ci      ATTR1UIV64(0, v);
833bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
834bf215546Sopenharmony_ci      ATTR1UIV64(VBO_ATTRIB_GENERIC0 + index, v);
835bf215546Sopenharmony_ci   else
836bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
837bf215546Sopenharmony_ci}
838bf215546Sopenharmony_ci
839bf215546Sopenharmony_ci/* GL_NV_half_float */
840bf215546Sopenharmony_cistatic void GLAPIENTRY
841bf215546Sopenharmony_ciTAG(Vertex2hNV)(GLhalfNV x, GLhalfNV y)
842bf215546Sopenharmony_ci{
843bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
844bf215546Sopenharmony_ci   ATTR2H(VBO_ATTRIB_POS, x, y);
845bf215546Sopenharmony_ci}
846bf215546Sopenharmony_ci
847bf215546Sopenharmony_cistatic void GLAPIENTRY
848bf215546Sopenharmony_ciTAG(Vertex2hvNV)(const GLhalfNV * v)
849bf215546Sopenharmony_ci{
850bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
851bf215546Sopenharmony_ci   ATTR2HV(VBO_ATTRIB_POS, v);
852bf215546Sopenharmony_ci}
853bf215546Sopenharmony_ci
854bf215546Sopenharmony_cistatic void GLAPIENTRY
855bf215546Sopenharmony_ciTAG(Vertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
856bf215546Sopenharmony_ci{
857bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
858bf215546Sopenharmony_ci   ATTR3H(VBO_ATTRIB_POS, x, y, z);
859bf215546Sopenharmony_ci}
860bf215546Sopenharmony_ci
861bf215546Sopenharmony_cistatic void GLAPIENTRY
862bf215546Sopenharmony_ciTAG(Vertex3hvNV)(const GLhalfNV * v)
863bf215546Sopenharmony_ci{
864bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
865bf215546Sopenharmony_ci   ATTR3HV(VBO_ATTRIB_POS, v);
866bf215546Sopenharmony_ci}
867bf215546Sopenharmony_ci
868bf215546Sopenharmony_cistatic void GLAPIENTRY
869bf215546Sopenharmony_ciTAG(Vertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
870bf215546Sopenharmony_ci{
871bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
872bf215546Sopenharmony_ci   ATTR4H(VBO_ATTRIB_POS, x, y, z, w);
873bf215546Sopenharmony_ci}
874bf215546Sopenharmony_ci
875bf215546Sopenharmony_cistatic void GLAPIENTRY
876bf215546Sopenharmony_ciTAG(Vertex4hvNV)(const GLhalfNV * v)
877bf215546Sopenharmony_ci{
878bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
879bf215546Sopenharmony_ci   ATTR4HV(VBO_ATTRIB_POS, v);
880bf215546Sopenharmony_ci}
881bf215546Sopenharmony_ci
882bf215546Sopenharmony_cistatic void GLAPIENTRY
883bf215546Sopenharmony_ciTAG(VertexAttrib1hNV)(GLuint index, GLhalfNV x)
884bf215546Sopenharmony_ci{
885bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
886bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
887bf215546Sopenharmony_ci      ATTR1H(0, x);
888bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
889bf215546Sopenharmony_ci      ATTR1H(VBO_ATTRIB_GENERIC0 + index, x);
890bf215546Sopenharmony_ci   else
891bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
892bf215546Sopenharmony_ci}
893bf215546Sopenharmony_ci
894bf215546Sopenharmony_cistatic void GLAPIENTRY
895bf215546Sopenharmony_ciTAG(VertexAttrib2hNV)(GLuint index, GLhalfNV x, GLhalfNV y)
896bf215546Sopenharmony_ci{
897bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
898bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
899bf215546Sopenharmony_ci      ATTR2H(0, x, y);
900bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
901bf215546Sopenharmony_ci      ATTR2H(VBO_ATTRIB_GENERIC0 + index, x, y);
902bf215546Sopenharmony_ci   else
903bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
904bf215546Sopenharmony_ci}
905bf215546Sopenharmony_ci
906bf215546Sopenharmony_cistatic void GLAPIENTRY
907bf215546Sopenharmony_ciTAG(VertexAttrib3hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z)
908bf215546Sopenharmony_ci{
909bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
910bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
911bf215546Sopenharmony_ci      ATTR3H(0, x, y, z);
912bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
913bf215546Sopenharmony_ci      ATTR3H(VBO_ATTRIB_GENERIC0 + index, x, y, z);
914bf215546Sopenharmony_ci   else
915bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
916bf215546Sopenharmony_ci}
917bf215546Sopenharmony_ci
918bf215546Sopenharmony_cistatic void GLAPIENTRY
919bf215546Sopenharmony_ciTAG(VertexAttrib4hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
920bf215546Sopenharmony_ci{
921bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
922bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
923bf215546Sopenharmony_ci      ATTR4H(0, x, y, z, w);
924bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
925bf215546Sopenharmony_ci      ATTR4H(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
926bf215546Sopenharmony_ci   else
927bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
928bf215546Sopenharmony_ci}
929bf215546Sopenharmony_ci
930bf215546Sopenharmony_cistatic void GLAPIENTRY
931bf215546Sopenharmony_ciTAG(VertexAttrib1hvNV)(GLuint index, const GLhalfNV * v)
932bf215546Sopenharmony_ci{
933bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
934bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
935bf215546Sopenharmony_ci      ATTR1HV(0, v);
936bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
937bf215546Sopenharmony_ci      ATTR1HV(VBO_ATTRIB_GENERIC0 + index, v);
938bf215546Sopenharmony_ci   else
939bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
940bf215546Sopenharmony_ci}
941bf215546Sopenharmony_ci
942bf215546Sopenharmony_cistatic void GLAPIENTRY
943bf215546Sopenharmony_ciTAG(VertexAttrib2hvNV)(GLuint index, const GLhalfNV * v)
944bf215546Sopenharmony_ci{
945bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
946bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
947bf215546Sopenharmony_ci      ATTR2HV(0, v);
948bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
949bf215546Sopenharmony_ci      ATTR2HV(VBO_ATTRIB_GENERIC0 + index, v);
950bf215546Sopenharmony_ci   else
951bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
952bf215546Sopenharmony_ci}
953bf215546Sopenharmony_ci
954bf215546Sopenharmony_cistatic void GLAPIENTRY
955bf215546Sopenharmony_ciTAG(VertexAttrib3hvNV)(GLuint index, const GLhalfNV * v)
956bf215546Sopenharmony_ci{
957bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
958bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
959bf215546Sopenharmony_ci      ATTR3HV(0, v);
960bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
961bf215546Sopenharmony_ci      ATTR3HV(VBO_ATTRIB_GENERIC0 + index, v);
962bf215546Sopenharmony_ci   else
963bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
964bf215546Sopenharmony_ci}
965bf215546Sopenharmony_ci
966bf215546Sopenharmony_cistatic void GLAPIENTRY
967bf215546Sopenharmony_ciTAG(VertexAttrib4hvNV)(GLuint index, const GLhalfNV * v)
968bf215546Sopenharmony_ci{
969bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
970bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
971bf215546Sopenharmony_ci      ATTR4HV(0, v);
972bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
973bf215546Sopenharmony_ci      ATTR4HV(VBO_ATTRIB_GENERIC0 + index, v);
974bf215546Sopenharmony_ci   else
975bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
976bf215546Sopenharmony_ci}
977bf215546Sopenharmony_ci
978bf215546Sopenharmony_cistatic void GLAPIENTRY
979bf215546Sopenharmony_ciTAG(VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
980bf215546Sopenharmony_ci{
981bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
982bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
983bf215546Sopenharmony_ci   for (GLint i = n - 1; i >= 0; i--)
984bf215546Sopenharmony_ci      ATTR1H(index + i, v[i]);
985bf215546Sopenharmony_ci}
986bf215546Sopenharmony_ci
987bf215546Sopenharmony_cistatic void GLAPIENTRY
988bf215546Sopenharmony_ciTAG(VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
989bf215546Sopenharmony_ci{
990bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
991bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
992bf215546Sopenharmony_ci   for (GLint i = n - 1; i >= 0; i--)
993bf215546Sopenharmony_ci      ATTR2H(index + i, v[2 * i], v[2 * i + 1]);
994bf215546Sopenharmony_ci}
995bf215546Sopenharmony_ci
996bf215546Sopenharmony_cistatic void GLAPIENTRY
997bf215546Sopenharmony_ciTAG(VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
998bf215546Sopenharmony_ci{
999bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1000bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1001bf215546Sopenharmony_ci   for (GLint i = n - 1; i >= 0; i--)
1002bf215546Sopenharmony_ci      ATTR3H(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1003bf215546Sopenharmony_ci}
1004bf215546Sopenharmony_ci
1005bf215546Sopenharmony_ci
1006bf215546Sopenharmony_cistatic void GLAPIENTRY
1007bf215546Sopenharmony_ciTAG(VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
1008bf215546Sopenharmony_ci{
1009bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1010bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1011bf215546Sopenharmony_ci   for (GLint i = n - 1; i >= 0; i--)
1012bf215546Sopenharmony_ci      ATTR4H(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1013bf215546Sopenharmony_ci}
1014bf215546Sopenharmony_ci
1015bf215546Sopenharmony_cistatic void GLAPIENTRY
1016bf215546Sopenharmony_ciTAG(Vertex2d)(GLdouble x, GLdouble y)
1017bf215546Sopenharmony_ci{
1018bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1019bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1020bf215546Sopenharmony_ci}
1021bf215546Sopenharmony_ci
1022bf215546Sopenharmony_cistatic void GLAPIENTRY
1023bf215546Sopenharmony_ciTAG(Vertex2i)(GLint x, GLint y)
1024bf215546Sopenharmony_ci{
1025bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1026bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1027bf215546Sopenharmony_ci}
1028bf215546Sopenharmony_ci
1029bf215546Sopenharmony_cistatic void GLAPIENTRY
1030bf215546Sopenharmony_ciTAG(Vertex2s)(GLshort x, GLshort y)
1031bf215546Sopenharmony_ci{
1032bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1033bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1034bf215546Sopenharmony_ci}
1035bf215546Sopenharmony_ci
1036bf215546Sopenharmony_cistatic void GLAPIENTRY
1037bf215546Sopenharmony_ciTAG(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
1038bf215546Sopenharmony_ci{
1039bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1040bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1041bf215546Sopenharmony_ci}
1042bf215546Sopenharmony_ci
1043bf215546Sopenharmony_cistatic void GLAPIENTRY
1044bf215546Sopenharmony_ciTAG(Vertex3i)(GLint x, GLint y, GLint z)
1045bf215546Sopenharmony_ci{
1046bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1047bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1048bf215546Sopenharmony_ci}
1049bf215546Sopenharmony_ci
1050bf215546Sopenharmony_cistatic void GLAPIENTRY
1051bf215546Sopenharmony_ciTAG(Vertex3s)(GLshort x, GLshort y, GLshort z)
1052bf215546Sopenharmony_ci{
1053bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1054bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1055bf215546Sopenharmony_ci}
1056bf215546Sopenharmony_ci
1057bf215546Sopenharmony_cistatic void GLAPIENTRY
1058bf215546Sopenharmony_ciTAG(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1059bf215546Sopenharmony_ci{
1060bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1061bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1062bf215546Sopenharmony_ci}
1063bf215546Sopenharmony_ci
1064bf215546Sopenharmony_cistatic void GLAPIENTRY
1065bf215546Sopenharmony_ciTAG(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
1066bf215546Sopenharmony_ci{
1067bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1068bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1069bf215546Sopenharmony_ci}
1070bf215546Sopenharmony_ci
1071bf215546Sopenharmony_cistatic void GLAPIENTRY
1072bf215546Sopenharmony_ciTAG(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
1073bf215546Sopenharmony_ci{
1074bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1075bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1076bf215546Sopenharmony_ci}
1077bf215546Sopenharmony_ci
1078bf215546Sopenharmony_cistatic void GLAPIENTRY
1079bf215546Sopenharmony_ciTAG(Vertex2dv)(const GLdouble *v)
1080bf215546Sopenharmony_ci{
1081bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1082bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1083bf215546Sopenharmony_ci}
1084bf215546Sopenharmony_ci
1085bf215546Sopenharmony_cistatic void GLAPIENTRY
1086bf215546Sopenharmony_ciTAG(Vertex2iv)(const GLint *v)
1087bf215546Sopenharmony_ci{
1088bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1089bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1090bf215546Sopenharmony_ci}
1091bf215546Sopenharmony_ci
1092bf215546Sopenharmony_cistatic void GLAPIENTRY
1093bf215546Sopenharmony_ciTAG(Vertex2sv)(const GLshort *v)
1094bf215546Sopenharmony_ci{
1095bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1096bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1097bf215546Sopenharmony_ci}
1098bf215546Sopenharmony_ci
1099bf215546Sopenharmony_cistatic void GLAPIENTRY
1100bf215546Sopenharmony_ciTAG(Vertex3dv)(const GLdouble *v)
1101bf215546Sopenharmony_ci{
1102bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1103bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1104bf215546Sopenharmony_ci}
1105bf215546Sopenharmony_ci
1106bf215546Sopenharmony_cistatic void GLAPIENTRY
1107bf215546Sopenharmony_ciTAG(Vertex3iv)(const GLint *v)
1108bf215546Sopenharmony_ci{
1109bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1110bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1111bf215546Sopenharmony_ci}
1112bf215546Sopenharmony_ci
1113bf215546Sopenharmony_cistatic void GLAPIENTRY
1114bf215546Sopenharmony_ciTAG(Vertex3sv)(const GLshort *v)
1115bf215546Sopenharmony_ci{
1116bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1117bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1118bf215546Sopenharmony_ci}
1119bf215546Sopenharmony_ci
1120bf215546Sopenharmony_cistatic void GLAPIENTRY
1121bf215546Sopenharmony_ciTAG(Vertex4dv)(const GLdouble *v)
1122bf215546Sopenharmony_ci{
1123bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1124bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1125bf215546Sopenharmony_ci         (GLfloat) v[2], (GLfloat) v[3]);
1126bf215546Sopenharmony_ci}
1127bf215546Sopenharmony_ci
1128bf215546Sopenharmony_cistatic void GLAPIENTRY
1129bf215546Sopenharmony_ciTAG(Vertex4iv)(const GLint *v)
1130bf215546Sopenharmony_ci{
1131bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1132bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1133bf215546Sopenharmony_ci         (GLfloat) v[2], (GLfloat) v[3]);
1134bf215546Sopenharmony_ci}
1135bf215546Sopenharmony_ci
1136bf215546Sopenharmony_cistatic void GLAPIENTRY
1137bf215546Sopenharmony_ciTAG(Vertex4sv)(const GLshort *v)
1138bf215546Sopenharmony_ci{
1139bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1140bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1141bf215546Sopenharmony_ci         (GLfloat) v[2], (GLfloat) v[3]);
1142bf215546Sopenharmony_ci}
1143bf215546Sopenharmony_ci
1144bf215546Sopenharmony_ci/*
1145bf215546Sopenharmony_ci * GL_NV_vertex_program:
1146bf215546Sopenharmony_ci * Note that attribute indexes DO alias conventional vertex attributes.
1147bf215546Sopenharmony_ci */
1148bf215546Sopenharmony_ci
1149bf215546Sopenharmony_cistatic void GLAPIENTRY
1150bf215546Sopenharmony_ciTAG(VertexAttrib1sNV)(GLuint index, GLshort x)
1151bf215546Sopenharmony_ci{
1152bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1153bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
1154bf215546Sopenharmony_ci}
1155bf215546Sopenharmony_ci
1156bf215546Sopenharmony_cistatic void GLAPIENTRY
1157bf215546Sopenharmony_ciTAG(VertexAttrib1dNV)(GLuint index, GLdouble x)
1158bf215546Sopenharmony_ci{
1159bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1160bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
1161bf215546Sopenharmony_ci}
1162bf215546Sopenharmony_ci
1163bf215546Sopenharmony_cistatic void GLAPIENTRY
1164bf215546Sopenharmony_ciTAG(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
1165bf215546Sopenharmony_ci{
1166bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1167bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, y);
1168bf215546Sopenharmony_ci}
1169bf215546Sopenharmony_ci
1170bf215546Sopenharmony_cistatic void GLAPIENTRY
1171bf215546Sopenharmony_ciTAG(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
1172bf215546Sopenharmony_ci{
1173bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1174bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, (GLfloat) y);
1175bf215546Sopenharmony_ci}
1176bf215546Sopenharmony_ci
1177bf215546Sopenharmony_cistatic void GLAPIENTRY
1178bf215546Sopenharmony_ciTAG(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
1179bf215546Sopenharmony_ci{
1180bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1181bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1182bf215546Sopenharmony_ci}
1183bf215546Sopenharmony_ci
1184bf215546Sopenharmony_cistatic void GLAPIENTRY
1185bf215546Sopenharmony_ciTAG(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1186bf215546Sopenharmony_ci{
1187bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1188bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1189bf215546Sopenharmony_ci}
1190bf215546Sopenharmony_ci
1191bf215546Sopenharmony_cistatic void GLAPIENTRY
1192bf215546Sopenharmony_ciTAG(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1193bf215546Sopenharmony_ci{
1194bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1195bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1196bf215546Sopenharmony_ci}
1197bf215546Sopenharmony_ci
1198bf215546Sopenharmony_cistatic void GLAPIENTRY
1199bf215546Sopenharmony_ciTAG(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1200bf215546Sopenharmony_ci{
1201bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1202bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1203bf215546Sopenharmony_ci}
1204bf215546Sopenharmony_ci
1205bf215546Sopenharmony_cistatic void GLAPIENTRY
1206bf215546Sopenharmony_ciTAG(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1207bf215546Sopenharmony_ci{
1208bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1209bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1210bf215546Sopenharmony_ci                                      UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1211bf215546Sopenharmony_ci}
1212bf215546Sopenharmony_ci
1213bf215546Sopenharmony_cistatic void GLAPIENTRY
1214bf215546Sopenharmony_ciTAG(VertexAttrib1svNV)(GLuint index, const GLshort *v)
1215bf215546Sopenharmony_ci{
1216bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1217bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
1218bf215546Sopenharmony_ci}
1219bf215546Sopenharmony_ci
1220bf215546Sopenharmony_cistatic void GLAPIENTRY
1221bf215546Sopenharmony_ciTAG(VertexAttrib1dvNV)(GLuint index, const GLdouble *v)
1222bf215546Sopenharmony_ci{
1223bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1224bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
1225bf215546Sopenharmony_ci}
1226bf215546Sopenharmony_ci
1227bf215546Sopenharmony_cistatic void GLAPIENTRY
1228bf215546Sopenharmony_ciTAG(VertexAttrib2svNV)(GLuint index, const GLshort *v)
1229bf215546Sopenharmony_ci{
1230bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1231bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
1232bf215546Sopenharmony_ci}
1233bf215546Sopenharmony_ci
1234bf215546Sopenharmony_cistatic void GLAPIENTRY
1235bf215546Sopenharmony_ciTAG(VertexAttrib2dvNV)(GLuint index, const GLdouble *v)
1236bf215546Sopenharmony_ci{
1237bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1238bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
1239bf215546Sopenharmony_ci}
1240bf215546Sopenharmony_ci
1241bf215546Sopenharmony_cistatic void GLAPIENTRY
1242bf215546Sopenharmony_ciTAG(VertexAttrib3svNV)(GLuint index, const GLshort *v)
1243bf215546Sopenharmony_ci{
1244bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1245bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1246bf215546Sopenharmony_ci}
1247bf215546Sopenharmony_ci
1248bf215546Sopenharmony_cistatic void GLAPIENTRY
1249bf215546Sopenharmony_ciTAG(VertexAttrib3dvNV)(GLuint index, const GLdouble *v)
1250bf215546Sopenharmony_ci{
1251bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1252bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1253bf215546Sopenharmony_ci}
1254bf215546Sopenharmony_ci
1255bf215546Sopenharmony_cistatic void GLAPIENTRY
1256bf215546Sopenharmony_ciTAG(VertexAttrib4svNV)(GLuint index, const GLshort *v)
1257bf215546Sopenharmony_ci{
1258bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1259bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1260bf215546Sopenharmony_ci         (GLfloat)v[3]);
1261bf215546Sopenharmony_ci}
1262bf215546Sopenharmony_ci
1263bf215546Sopenharmony_cistatic void GLAPIENTRY
1264bf215546Sopenharmony_ciTAG(VertexAttrib4dvNV)(GLuint index, const GLdouble *v)
1265bf215546Sopenharmony_ci{
1266bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1267bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1268bf215546Sopenharmony_ci}
1269bf215546Sopenharmony_ci
1270bf215546Sopenharmony_cistatic void GLAPIENTRY
1271bf215546Sopenharmony_ciTAG(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v)
1272bf215546Sopenharmony_ci{
1273bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1274bf215546Sopenharmony_ci   if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1275bf215546Sopenharmony_ci         UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1276bf215546Sopenharmony_ci}
1277bf215546Sopenharmony_ci
1278bf215546Sopenharmony_ci
1279bf215546Sopenharmony_cistatic void GLAPIENTRY
1280bf215546Sopenharmony_ciTAG(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v)
1281bf215546Sopenharmony_ci{
1282bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1283bf215546Sopenharmony_ci   GLint i;
1284bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1285bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1286bf215546Sopenharmony_ci      ATTR1F(index + i, (GLfloat) v[i]);
1287bf215546Sopenharmony_ci}
1288bf215546Sopenharmony_ci
1289bf215546Sopenharmony_cistatic void GLAPIENTRY
1290bf215546Sopenharmony_ciTAG(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1291bf215546Sopenharmony_ci{
1292bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1293bf215546Sopenharmony_ci   GLint i;
1294bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1295bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1296bf215546Sopenharmony_ci      ATTR1F(index + i, v[i]);
1297bf215546Sopenharmony_ci}
1298bf215546Sopenharmony_ci
1299bf215546Sopenharmony_cistatic void GLAPIENTRY
1300bf215546Sopenharmony_ciTAG(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1301bf215546Sopenharmony_ci{
1302bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1303bf215546Sopenharmony_ci   GLint i;
1304bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1305bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1306bf215546Sopenharmony_ci      ATTR1F(index + i, (GLfloat) v[i]);
1307bf215546Sopenharmony_ci}
1308bf215546Sopenharmony_ci
1309bf215546Sopenharmony_cistatic void GLAPIENTRY
1310bf215546Sopenharmony_ciTAG(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v)
1311bf215546Sopenharmony_ci{
1312bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1313bf215546Sopenharmony_ci   GLint i;
1314bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1315bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1316bf215546Sopenharmony_ci      ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
1317bf215546Sopenharmony_ci}
1318bf215546Sopenharmony_ci
1319bf215546Sopenharmony_cistatic void GLAPIENTRY
1320bf215546Sopenharmony_ciTAG(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1321bf215546Sopenharmony_ci{
1322bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1323bf215546Sopenharmony_ci   GLint i;
1324bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1325bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1326bf215546Sopenharmony_ci      ATTR2F(index + i, v[2 * i], v[2 * i + 1]);
1327bf215546Sopenharmony_ci}
1328bf215546Sopenharmony_ci
1329bf215546Sopenharmony_cistatic void GLAPIENTRY
1330bf215546Sopenharmony_ciTAG(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1331bf215546Sopenharmony_ci{
1332bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1333bf215546Sopenharmony_ci   GLint i;
1334bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1335bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1336bf215546Sopenharmony_ci      ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
1337bf215546Sopenharmony_ci}
1338bf215546Sopenharmony_ci
1339bf215546Sopenharmony_cistatic void GLAPIENTRY
1340bf215546Sopenharmony_ciTAG(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v)
1341bf215546Sopenharmony_ci{
1342bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1343bf215546Sopenharmony_ci   GLint i;
1344bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1345bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1346bf215546Sopenharmony_ci      ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
1347bf215546Sopenharmony_ci}
1348bf215546Sopenharmony_ci
1349bf215546Sopenharmony_cistatic void GLAPIENTRY
1350bf215546Sopenharmony_ciTAG(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1351bf215546Sopenharmony_ci{
1352bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1353bf215546Sopenharmony_ci   GLint i;
1354bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1355bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1356bf215546Sopenharmony_ci      ATTR3F(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1357bf215546Sopenharmony_ci}
1358bf215546Sopenharmony_ci
1359bf215546Sopenharmony_cistatic void GLAPIENTRY
1360bf215546Sopenharmony_ciTAG(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1361bf215546Sopenharmony_ci{
1362bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1363bf215546Sopenharmony_ci   GLint i;
1364bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1365bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1366bf215546Sopenharmony_ci      ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
1367bf215546Sopenharmony_ci}
1368bf215546Sopenharmony_ci
1369bf215546Sopenharmony_cistatic void GLAPIENTRY
1370bf215546Sopenharmony_ciTAG(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v)
1371bf215546Sopenharmony_ci{
1372bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1373bf215546Sopenharmony_ci   GLint i;
1374bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1375bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1376bf215546Sopenharmony_ci      ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
1377bf215546Sopenharmony_ci}
1378bf215546Sopenharmony_ci
1379bf215546Sopenharmony_cistatic void GLAPIENTRY
1380bf215546Sopenharmony_ciTAG(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1381bf215546Sopenharmony_ci{
1382bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1383bf215546Sopenharmony_ci   GLint i;
1384bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1385bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1386bf215546Sopenharmony_ci      ATTR4F(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1387bf215546Sopenharmony_ci}
1388bf215546Sopenharmony_ci
1389bf215546Sopenharmony_cistatic void GLAPIENTRY
1390bf215546Sopenharmony_ciTAG(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1391bf215546Sopenharmony_ci{
1392bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1393bf215546Sopenharmony_ci   GLint i;
1394bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1395bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1396bf215546Sopenharmony_ci      ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
1397bf215546Sopenharmony_ci}
1398bf215546Sopenharmony_ci
1399bf215546Sopenharmony_cistatic void GLAPIENTRY
1400bf215546Sopenharmony_ciTAG(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v)
1401bf215546Sopenharmony_ci{
1402bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1403bf215546Sopenharmony_ci   GLint i;
1404bf215546Sopenharmony_ci   n = MIN2(n, VBO_ATTRIB_MAX - index);
1405bf215546Sopenharmony_ci   for (i = n - 1; i >= 0; i--)
1406bf215546Sopenharmony_ci      ATTR4F(index + i, UBYTE_TO_FLOAT(v[4 * i]), UBYTE_TO_FLOAT(v[4 * i + 1]),
1407bf215546Sopenharmony_ci             UBYTE_TO_FLOAT(v[4 * i + 2]), UBYTE_TO_FLOAT(v[4 * i + 3]));
1408bf215546Sopenharmony_ci}
1409bf215546Sopenharmony_ci
1410bf215546Sopenharmony_ci
1411bf215546Sopenharmony_ci/*
1412bf215546Sopenharmony_ci * GL_ARB_vertex_program
1413bf215546Sopenharmony_ci * Note that attribute indexes do NOT alias conventional attributes.
1414bf215546Sopenharmony_ci */
1415bf215546Sopenharmony_ci
1416bf215546Sopenharmony_cistatic void GLAPIENTRY
1417bf215546Sopenharmony_ciTAG(VertexAttrib1s)(GLuint index, GLshort x)
1418bf215546Sopenharmony_ci{
1419bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1420bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1421bf215546Sopenharmony_ci      ATTR1F(0, (GLfloat) x);
1422bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1423bf215546Sopenharmony_ci      ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
1424bf215546Sopenharmony_ci   else
1425bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1426bf215546Sopenharmony_ci}
1427bf215546Sopenharmony_ci
1428bf215546Sopenharmony_cistatic void GLAPIENTRY
1429bf215546Sopenharmony_ciTAG(VertexAttrib1d)(GLuint index, GLdouble x)
1430bf215546Sopenharmony_ci{
1431bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1432bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1433bf215546Sopenharmony_ci      ATTR1F(0, (GLfloat) x);
1434bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1435bf215546Sopenharmony_ci      ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
1436bf215546Sopenharmony_ci   else
1437bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1438bf215546Sopenharmony_ci}
1439bf215546Sopenharmony_ci
1440bf215546Sopenharmony_cistatic void GLAPIENTRY
1441bf215546Sopenharmony_ciTAG(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
1442bf215546Sopenharmony_ci{
1443bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1444bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1445bf215546Sopenharmony_ci      ATTR2F(0, (GLfloat) x, (GLfloat) y);
1446bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1447bf215546Sopenharmony_ci      ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
1448bf215546Sopenharmony_ci   else
1449bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1450bf215546Sopenharmony_ci}
1451bf215546Sopenharmony_ci
1452bf215546Sopenharmony_cistatic void GLAPIENTRY
1453bf215546Sopenharmony_ciTAG(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
1454bf215546Sopenharmony_ci{
1455bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1456bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1457bf215546Sopenharmony_ci      ATTR2F(0, (GLfloat) x, (GLfloat) y);
1458bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1459bf215546Sopenharmony_ci      ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
1460bf215546Sopenharmony_ci   else
1461bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1462bf215546Sopenharmony_ci}
1463bf215546Sopenharmony_ci
1464bf215546Sopenharmony_cistatic void GLAPIENTRY
1465bf215546Sopenharmony_ciTAG(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
1466bf215546Sopenharmony_ci{
1467bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1468bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1469bf215546Sopenharmony_ci      ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1470bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1471bf215546Sopenharmony_ci      ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1472bf215546Sopenharmony_ci   else
1473bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1474bf215546Sopenharmony_ci}
1475bf215546Sopenharmony_ci
1476bf215546Sopenharmony_cistatic void GLAPIENTRY
1477bf215546Sopenharmony_ciTAG(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1478bf215546Sopenharmony_ci{
1479bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1480bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1481bf215546Sopenharmony_ci      ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1482bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1483bf215546Sopenharmony_ci      ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1484bf215546Sopenharmony_ci   else
1485bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1486bf215546Sopenharmony_ci}
1487bf215546Sopenharmony_ci
1488bf215546Sopenharmony_cistatic void GLAPIENTRY
1489bf215546Sopenharmony_ciTAG(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1490bf215546Sopenharmony_ci{
1491bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1492bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1493bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1494bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1495bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1496bf215546Sopenharmony_ci   else
1497bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1498bf215546Sopenharmony_ci}
1499bf215546Sopenharmony_ci
1500bf215546Sopenharmony_cistatic void GLAPIENTRY
1501bf215546Sopenharmony_ciTAG(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1502bf215546Sopenharmony_ci{
1503bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1504bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1505bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1506bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1507bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1508bf215546Sopenharmony_ci   else
1509bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1510bf215546Sopenharmony_ci}
1511bf215546Sopenharmony_ci
1512bf215546Sopenharmony_cistatic void GLAPIENTRY
1513bf215546Sopenharmony_ciTAG(VertexAttrib1sv)(GLuint index, const GLshort *v)
1514bf215546Sopenharmony_ci{
1515bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1516bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1517bf215546Sopenharmony_ci      ATTR1F(0, (GLfloat) v[0]);
1518bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1519bf215546Sopenharmony_ci      ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
1520bf215546Sopenharmony_ci   else
1521bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1522bf215546Sopenharmony_ci}
1523bf215546Sopenharmony_ci
1524bf215546Sopenharmony_cistatic void GLAPIENTRY
1525bf215546Sopenharmony_ciTAG(VertexAttrib1dv)(GLuint index, const GLdouble *v)
1526bf215546Sopenharmony_ci{
1527bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1528bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1529bf215546Sopenharmony_ci      ATTR1F(0, (GLfloat) v[0]);
1530bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1531bf215546Sopenharmony_ci      ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
1532bf215546Sopenharmony_ci   else
1533bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1534bf215546Sopenharmony_ci}
1535bf215546Sopenharmony_ci
1536bf215546Sopenharmony_cistatic void GLAPIENTRY
1537bf215546Sopenharmony_ciTAG(VertexAttrib2sv)(GLuint index, const GLshort *v)
1538bf215546Sopenharmony_ci{
1539bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1540bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1541bf215546Sopenharmony_ci      ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
1542bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1543bf215546Sopenharmony_ci      ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
1544bf215546Sopenharmony_ci   else
1545bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1546bf215546Sopenharmony_ci}
1547bf215546Sopenharmony_ci
1548bf215546Sopenharmony_cistatic void GLAPIENTRY
1549bf215546Sopenharmony_ciTAG(VertexAttrib2dv)(GLuint index, const GLdouble *v)
1550bf215546Sopenharmony_ci{
1551bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1552bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1553bf215546Sopenharmony_ci      ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
1554bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1555bf215546Sopenharmony_ci      ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
1556bf215546Sopenharmony_ci   else
1557bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1558bf215546Sopenharmony_ci}
1559bf215546Sopenharmony_ci
1560bf215546Sopenharmony_cistatic void GLAPIENTRY
1561bf215546Sopenharmony_ciTAG(VertexAttrib3sv)(GLuint index, const GLshort *v)
1562bf215546Sopenharmony_ci{
1563bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1564bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1565bf215546Sopenharmony_ci      ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1566bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1567bf215546Sopenharmony_ci      ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1568bf215546Sopenharmony_ci   else
1569bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1570bf215546Sopenharmony_ci}
1571bf215546Sopenharmony_ci
1572bf215546Sopenharmony_cistatic void GLAPIENTRY
1573bf215546Sopenharmony_ciTAG(VertexAttrib3dv)(GLuint index, const GLdouble *v)
1574bf215546Sopenharmony_ci{
1575bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1576bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1577bf215546Sopenharmony_ci      ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1578bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1579bf215546Sopenharmony_ci      ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1580bf215546Sopenharmony_ci   else
1581bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1582bf215546Sopenharmony_ci}
1583bf215546Sopenharmony_ci
1584bf215546Sopenharmony_cistatic void GLAPIENTRY
1585bf215546Sopenharmony_ciTAG(VertexAttrib4sv)(GLuint index, const GLshort *v)
1586bf215546Sopenharmony_ci{
1587bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1588bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1589bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1590bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1591bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1592bf215546Sopenharmony_ci   else
1593bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1594bf215546Sopenharmony_ci}
1595bf215546Sopenharmony_ci
1596bf215546Sopenharmony_cistatic void GLAPIENTRY
1597bf215546Sopenharmony_ciTAG(VertexAttrib4dv)(GLuint index, const GLdouble *v)
1598bf215546Sopenharmony_ci{
1599bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1600bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1601bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1602bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1603bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1604bf215546Sopenharmony_ci   else
1605bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1606bf215546Sopenharmony_ci}
1607bf215546Sopenharmony_ci
1608bf215546Sopenharmony_cistatic void GLAPIENTRY
1609bf215546Sopenharmony_ciTAG(VertexAttrib4bv)(GLuint index, const GLbyte * v)
1610bf215546Sopenharmony_ci{
1611bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1612bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1613bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1614bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1615bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1616bf215546Sopenharmony_ci   else
1617bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1618bf215546Sopenharmony_ci}
1619bf215546Sopenharmony_ci
1620bf215546Sopenharmony_cistatic void GLAPIENTRY
1621bf215546Sopenharmony_ciTAG(VertexAttrib4iv)(GLuint index, const GLint * v)
1622bf215546Sopenharmony_ci{
1623bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1624bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1625bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1626bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1627bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1628bf215546Sopenharmony_ci   else
1629bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1630bf215546Sopenharmony_ci}
1631bf215546Sopenharmony_ci
1632bf215546Sopenharmony_cistatic void GLAPIENTRY
1633bf215546Sopenharmony_ciTAG(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
1634bf215546Sopenharmony_ci{
1635bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1636bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1637bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1638bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1639bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1640bf215546Sopenharmony_ci   else
1641bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1642bf215546Sopenharmony_ci}
1643bf215546Sopenharmony_ci
1644bf215546Sopenharmony_cistatic void GLAPIENTRY
1645bf215546Sopenharmony_ciTAG(VertexAttrib4usv)(GLuint index, const GLushort * v)
1646bf215546Sopenharmony_ci{
1647bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1648bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1649bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1650bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1651bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1652bf215546Sopenharmony_ci   else
1653bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1654bf215546Sopenharmony_ci}
1655bf215546Sopenharmony_ci
1656bf215546Sopenharmony_cistatic void GLAPIENTRY
1657bf215546Sopenharmony_ciTAG(VertexAttrib4uiv)(GLuint index, const GLuint * v)
1658bf215546Sopenharmony_ci{
1659bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1660bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1661bf215546Sopenharmony_ci      ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1662bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1663bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1664bf215546Sopenharmony_ci   else
1665bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1666bf215546Sopenharmony_ci}
1667bf215546Sopenharmony_ci
1668bf215546Sopenharmony_cistatic void GLAPIENTRY
1669bf215546Sopenharmony_ciTAG(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
1670bf215546Sopenharmony_ci{
1671bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1672bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1673bf215546Sopenharmony_ci      ATTR4F(0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1674bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1675bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1676bf215546Sopenharmony_ci   else
1677bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1678bf215546Sopenharmony_ci}
1679bf215546Sopenharmony_ci
1680bf215546Sopenharmony_cistatic void GLAPIENTRY
1681bf215546Sopenharmony_ciTAG(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
1682bf215546Sopenharmony_ci{
1683bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1684bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1685bf215546Sopenharmony_ci      ATTR4F(0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1686bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1687bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1688bf215546Sopenharmony_ci   else
1689bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1690bf215546Sopenharmony_ci}
1691bf215546Sopenharmony_ci
1692bf215546Sopenharmony_cistatic void GLAPIENTRY
1693bf215546Sopenharmony_ciTAG(VertexAttrib4Niv)(GLuint index, const GLint * v)
1694bf215546Sopenharmony_ci{
1695bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1696bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1697bf215546Sopenharmony_ci      ATTR4F(0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1698bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1699bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1700bf215546Sopenharmony_ci   else
1701bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1702bf215546Sopenharmony_ci}
1703bf215546Sopenharmony_ci
1704bf215546Sopenharmony_cistatic void GLAPIENTRY
1705bf215546Sopenharmony_ciTAG(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1706bf215546Sopenharmony_ci{
1707bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1708bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1709bf215546Sopenharmony_ci      ATTR4F(0, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1710bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1711bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1712bf215546Sopenharmony_ci   else
1713bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1714bf215546Sopenharmony_ci}
1715bf215546Sopenharmony_ci
1716bf215546Sopenharmony_cistatic void GLAPIENTRY
1717bf215546Sopenharmony_ciTAG(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
1718bf215546Sopenharmony_ci{
1719bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1720bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1721bf215546Sopenharmony_ci      ATTR4F(0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1722bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1723bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1724bf215546Sopenharmony_ci   else
1725bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1726bf215546Sopenharmony_ci}
1727bf215546Sopenharmony_ci
1728bf215546Sopenharmony_cistatic void GLAPIENTRY
1729bf215546Sopenharmony_ciTAG(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
1730bf215546Sopenharmony_ci{
1731bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1732bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1733bf215546Sopenharmony_ci      ATTR4F(0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1734bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1735bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1736bf215546Sopenharmony_ci   else
1737bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1738bf215546Sopenharmony_ci}
1739bf215546Sopenharmony_ci
1740bf215546Sopenharmony_cistatic void GLAPIENTRY
1741bf215546Sopenharmony_ciTAG(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
1742bf215546Sopenharmony_ci{
1743bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1744bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1745bf215546Sopenharmony_ci      ATTR4F(0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1746bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1747bf215546Sopenharmony_ci      ATTR4F(VBO_ATTRIB_GENERIC0 + index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1748bf215546Sopenharmony_ci   else
1749bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1750bf215546Sopenharmony_ci}
1751bf215546Sopenharmony_ci
1752bf215546Sopenharmony_ci/**
1753bf215546Sopenharmony_ci * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
1754bf215546Sopenharmony_ci * Note that attribute indexes do NOT alias conventional attributes.
1755bf215546Sopenharmony_ci */
1756bf215546Sopenharmony_ci
1757bf215546Sopenharmony_cistatic void GLAPIENTRY
1758bf215546Sopenharmony_ciTAG(VertexAttribI1iv)(GLuint index, const GLint *v)
1759bf215546Sopenharmony_ci{
1760bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1761bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1762bf215546Sopenharmony_ci      ATTR1I(0, v[0]);
1763bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1764bf215546Sopenharmony_ci      ATTR1I(VBO_ATTRIB_GENERIC0 + index, v[0]);
1765bf215546Sopenharmony_ci   else
1766bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1767bf215546Sopenharmony_ci}
1768bf215546Sopenharmony_ci
1769bf215546Sopenharmony_cistatic void GLAPIENTRY
1770bf215546Sopenharmony_ciTAG(VertexAttribI1uiv)(GLuint index, const GLuint *v)
1771bf215546Sopenharmony_ci{
1772bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1773bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1774bf215546Sopenharmony_ci      ATTR1UI(0, v[0]);
1775bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1776bf215546Sopenharmony_ci      ATTR1UI(VBO_ATTRIB_GENERIC0 + index, v[0]);
1777bf215546Sopenharmony_ci   else
1778bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1779bf215546Sopenharmony_ci}
1780bf215546Sopenharmony_ci
1781bf215546Sopenharmony_cistatic void GLAPIENTRY
1782bf215546Sopenharmony_ciTAG(VertexAttribI4bv)(GLuint index, const GLbyte *v)
1783bf215546Sopenharmony_ci{
1784bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1785bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1786bf215546Sopenharmony_ci      ATTR4I(0, v[0], v[1], v[2], v[3]);
1787bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1788bf215546Sopenharmony_ci      ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1789bf215546Sopenharmony_ci   else
1790bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1791bf215546Sopenharmony_ci}
1792bf215546Sopenharmony_ci
1793bf215546Sopenharmony_cistatic void GLAPIENTRY
1794bf215546Sopenharmony_ciTAG(VertexAttribI4sv)(GLuint index, const GLshort *v)
1795bf215546Sopenharmony_ci{
1796bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1797bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1798bf215546Sopenharmony_ci      ATTR4I(0, v[0], v[1], v[2], v[3]);
1799bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1800bf215546Sopenharmony_ci      ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1801bf215546Sopenharmony_ci   else
1802bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1803bf215546Sopenharmony_ci}
1804bf215546Sopenharmony_ci
1805bf215546Sopenharmony_cistatic void GLAPIENTRY
1806bf215546Sopenharmony_ciTAG(VertexAttribI4ubv)(GLuint index, const GLubyte *v)
1807bf215546Sopenharmony_ci{
1808bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1809bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1810bf215546Sopenharmony_ci      ATTR4UI(0, v[0], v[1], v[2], v[3]);
1811bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1812bf215546Sopenharmony_ci      ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1813bf215546Sopenharmony_ci   else
1814bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1815bf215546Sopenharmony_ci}
1816bf215546Sopenharmony_ci
1817bf215546Sopenharmony_cistatic void GLAPIENTRY
1818bf215546Sopenharmony_ciTAG(VertexAttribI4usv)(GLuint index, const GLushort *v)
1819bf215546Sopenharmony_ci{
1820bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1821bf215546Sopenharmony_ci   if (is_vertex_position(ctx, index))
1822bf215546Sopenharmony_ci      ATTR4UI(0, v[0], v[1], v[2], v[3]);
1823bf215546Sopenharmony_ci   else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1824bf215546Sopenharmony_ci      ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1825bf215546Sopenharmony_ci   else
1826bf215546Sopenharmony_ci      ERROR(GL_INVALID_VALUE);
1827bf215546Sopenharmony_ci}
1828bf215546Sopenharmony_ci
1829bf215546Sopenharmony_ci/* define this macro to exclude folllowing none-vertex functions */
1830bf215546Sopenharmony_ci#ifndef HW_SELECT_MODE
1831bf215546Sopenharmony_ci
1832bf215546Sopenharmony_cistatic void GLAPIENTRY
1833bf215546Sopenharmony_ciTAG(TexCoord1f)(GLfloat x)
1834bf215546Sopenharmony_ci{
1835bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1836bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, x);
1837bf215546Sopenharmony_ci}
1838bf215546Sopenharmony_ci
1839bf215546Sopenharmony_cistatic void GLAPIENTRY
1840bf215546Sopenharmony_ciTAG(TexCoord1fv)(const GLfloat * v)
1841bf215546Sopenharmony_ci{
1842bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1843bf215546Sopenharmony_ci   ATTR1FV(VBO_ATTRIB_TEX0, v);
1844bf215546Sopenharmony_ci}
1845bf215546Sopenharmony_ci
1846bf215546Sopenharmony_cistatic void GLAPIENTRY
1847bf215546Sopenharmony_ciTAG(TexCoord2f)(GLfloat x, GLfloat y)
1848bf215546Sopenharmony_ci{
1849bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1850bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, x, y);
1851bf215546Sopenharmony_ci}
1852bf215546Sopenharmony_ci
1853bf215546Sopenharmony_cistatic void GLAPIENTRY
1854bf215546Sopenharmony_ciTAG(TexCoord2fv)(const GLfloat * v)
1855bf215546Sopenharmony_ci{
1856bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1857bf215546Sopenharmony_ci   ATTR2FV(VBO_ATTRIB_TEX0, v);
1858bf215546Sopenharmony_ci}
1859bf215546Sopenharmony_ci
1860bf215546Sopenharmony_cistatic void GLAPIENTRY
1861bf215546Sopenharmony_ciTAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z)
1862bf215546Sopenharmony_ci{
1863bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1864bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, x, y, z);
1865bf215546Sopenharmony_ci}
1866bf215546Sopenharmony_ci
1867bf215546Sopenharmony_cistatic void GLAPIENTRY
1868bf215546Sopenharmony_ciTAG(TexCoord3fv)(const GLfloat * v)
1869bf215546Sopenharmony_ci{
1870bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1871bf215546Sopenharmony_ci   ATTR3FV(VBO_ATTRIB_TEX0, v);
1872bf215546Sopenharmony_ci}
1873bf215546Sopenharmony_ci
1874bf215546Sopenharmony_cistatic void GLAPIENTRY
1875bf215546Sopenharmony_ciTAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1876bf215546Sopenharmony_ci{
1877bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1878bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w);
1879bf215546Sopenharmony_ci}
1880bf215546Sopenharmony_ci
1881bf215546Sopenharmony_cistatic void GLAPIENTRY
1882bf215546Sopenharmony_ciTAG(TexCoord4fv)(const GLfloat * v)
1883bf215546Sopenharmony_ci{
1884bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1885bf215546Sopenharmony_ci   ATTR4FV(VBO_ATTRIB_TEX0, v);
1886bf215546Sopenharmony_ci}
1887bf215546Sopenharmony_ci
1888bf215546Sopenharmony_ci
1889bf215546Sopenharmony_ci
1890bf215546Sopenharmony_cistatic void GLAPIENTRY
1891bf215546Sopenharmony_ciTAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z)
1892bf215546Sopenharmony_ci{
1893bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1894bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, x, y, z);
1895bf215546Sopenharmony_ci}
1896bf215546Sopenharmony_ci
1897bf215546Sopenharmony_cistatic void GLAPIENTRY
1898bf215546Sopenharmony_ciTAG(Normal3fv)(const GLfloat * v)
1899bf215546Sopenharmony_ci{
1900bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1901bf215546Sopenharmony_ci   ATTR3FV(VBO_ATTRIB_NORMAL, v);
1902bf215546Sopenharmony_ci}
1903bf215546Sopenharmony_ci
1904bf215546Sopenharmony_ci
1905bf215546Sopenharmony_ci
1906bf215546Sopenharmony_cistatic void GLAPIENTRY
1907bf215546Sopenharmony_ciTAG(FogCoordfEXT)(GLfloat x)
1908bf215546Sopenharmony_ci{
1909bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1910bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_FOG, x);
1911bf215546Sopenharmony_ci}
1912bf215546Sopenharmony_ci
1913bf215546Sopenharmony_ci
1914bf215546Sopenharmony_ci
1915bf215546Sopenharmony_cistatic void GLAPIENTRY
1916bf215546Sopenharmony_ciTAG(FogCoordfvEXT)(const GLfloat * v)
1917bf215546Sopenharmony_ci{
1918bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1919bf215546Sopenharmony_ci   ATTR1FV(VBO_ATTRIB_FOG, v);
1920bf215546Sopenharmony_ci}
1921bf215546Sopenharmony_ci
1922bf215546Sopenharmony_cistatic void GLAPIENTRY
1923bf215546Sopenharmony_ciTAG(Color3f)(GLfloat x, GLfloat y, GLfloat z)
1924bf215546Sopenharmony_ci{
1925bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1926bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR0, x, y, z);
1927bf215546Sopenharmony_ci}
1928bf215546Sopenharmony_ci
1929bf215546Sopenharmony_cistatic void GLAPIENTRY
1930bf215546Sopenharmony_ciTAG(Color3fv)(const GLfloat * v)
1931bf215546Sopenharmony_ci{
1932bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1933bf215546Sopenharmony_ci   ATTR3FV(VBO_ATTRIB_COLOR0, v);
1934bf215546Sopenharmony_ci}
1935bf215546Sopenharmony_ci
1936bf215546Sopenharmony_cistatic void GLAPIENTRY
1937bf215546Sopenharmony_ciTAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1938bf215546Sopenharmony_ci{
1939bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1940bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w);
1941bf215546Sopenharmony_ci}
1942bf215546Sopenharmony_ci
1943bf215546Sopenharmony_cistatic void GLAPIENTRY
1944bf215546Sopenharmony_ciTAG(Color4fv)(const GLfloat * v)
1945bf215546Sopenharmony_ci{
1946bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1947bf215546Sopenharmony_ci   ATTR4FV(VBO_ATTRIB_COLOR0, v);
1948bf215546Sopenharmony_ci}
1949bf215546Sopenharmony_ci
1950bf215546Sopenharmony_ci
1951bf215546Sopenharmony_ci
1952bf215546Sopenharmony_cistatic void GLAPIENTRY
1953bf215546Sopenharmony_ciTAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z)
1954bf215546Sopenharmony_ci{
1955bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1956bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, x, y, z);
1957bf215546Sopenharmony_ci}
1958bf215546Sopenharmony_ci
1959bf215546Sopenharmony_cistatic void GLAPIENTRY
1960bf215546Sopenharmony_ciTAG(SecondaryColor3fvEXT)(const GLfloat * v)
1961bf215546Sopenharmony_ci{
1962bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1963bf215546Sopenharmony_ci   ATTR3FV(VBO_ATTRIB_COLOR1, v);
1964bf215546Sopenharmony_ci}
1965bf215546Sopenharmony_ci
1966bf215546Sopenharmony_ci
1967bf215546Sopenharmony_ci
1968bf215546Sopenharmony_cistatic void GLAPIENTRY
1969bf215546Sopenharmony_ciTAG(EdgeFlag)(GLboolean b)
1970bf215546Sopenharmony_ci{
1971bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1972bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b);
1973bf215546Sopenharmony_ci}
1974bf215546Sopenharmony_ci
1975bf215546Sopenharmony_ci
1976bf215546Sopenharmony_ci
1977bf215546Sopenharmony_cistatic void GLAPIENTRY
1978bf215546Sopenharmony_ciTAG(Indexf)(GLfloat f)
1979bf215546Sopenharmony_ci{
1980bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1981bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, f);
1982bf215546Sopenharmony_ci}
1983bf215546Sopenharmony_ci
1984bf215546Sopenharmony_cistatic void GLAPIENTRY
1985bf215546Sopenharmony_ciTAG(Indexfv)(const GLfloat * f)
1986bf215546Sopenharmony_ci{
1987bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1988bf215546Sopenharmony_ci   ATTR1FV(VBO_ATTRIB_COLOR_INDEX, f);
1989bf215546Sopenharmony_ci}
1990bf215546Sopenharmony_ci
1991bf215546Sopenharmony_ci
1992bf215546Sopenharmony_ci
1993bf215546Sopenharmony_cistatic void GLAPIENTRY
1994bf215546Sopenharmony_ciTAG(MultiTexCoord1fARB)(GLenum target, GLfloat x)
1995bf215546Sopenharmony_ci{
1996bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
1997bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
1998bf215546Sopenharmony_ci   ATTR1F(attr, x);
1999bf215546Sopenharmony_ci}
2000bf215546Sopenharmony_ci
2001bf215546Sopenharmony_cistatic void GLAPIENTRY
2002bf215546Sopenharmony_ciTAG(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
2003bf215546Sopenharmony_ci{
2004bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2005bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2006bf215546Sopenharmony_ci   ATTR1FV(attr, v);
2007bf215546Sopenharmony_ci}
2008bf215546Sopenharmony_ci
2009bf215546Sopenharmony_cistatic void GLAPIENTRY
2010bf215546Sopenharmony_ciTAG(MultiTexCoord2fARB)(GLenum target, GLfloat x, GLfloat y)
2011bf215546Sopenharmony_ci{
2012bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2013bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2014bf215546Sopenharmony_ci   ATTR2F(attr, x, y);
2015bf215546Sopenharmony_ci}
2016bf215546Sopenharmony_ci
2017bf215546Sopenharmony_cistatic void GLAPIENTRY
2018bf215546Sopenharmony_ciTAG(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
2019bf215546Sopenharmony_ci{
2020bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2021bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2022bf215546Sopenharmony_ci   ATTR2FV(attr, v);
2023bf215546Sopenharmony_ci}
2024bf215546Sopenharmony_ci
2025bf215546Sopenharmony_cistatic void GLAPIENTRY
2026bf215546Sopenharmony_ciTAG(MultiTexCoord3fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z)
2027bf215546Sopenharmony_ci{
2028bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2029bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2030bf215546Sopenharmony_ci   ATTR3F(attr, x, y, z);
2031bf215546Sopenharmony_ci}
2032bf215546Sopenharmony_ci
2033bf215546Sopenharmony_cistatic void GLAPIENTRY
2034bf215546Sopenharmony_ciTAG(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
2035bf215546Sopenharmony_ci{
2036bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2037bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2038bf215546Sopenharmony_ci   ATTR3FV(attr, v);
2039bf215546Sopenharmony_ci}
2040bf215546Sopenharmony_ci
2041bf215546Sopenharmony_cistatic void GLAPIENTRY
2042bf215546Sopenharmony_ciTAG(MultiTexCoord4fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
2043bf215546Sopenharmony_ci{
2044bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2045bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2046bf215546Sopenharmony_ci   ATTR4F(attr, x, y, z, w);
2047bf215546Sopenharmony_ci}
2048bf215546Sopenharmony_ci
2049bf215546Sopenharmony_cistatic void GLAPIENTRY
2050bf215546Sopenharmony_ciTAG(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
2051bf215546Sopenharmony_ci{
2052bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2053bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2054bf215546Sopenharmony_ci   ATTR4FV(attr, v);
2055bf215546Sopenharmony_ci}
2056bf215546Sopenharmony_ci
2057bf215546Sopenharmony_cistatic void GLAPIENTRY
2058bf215546Sopenharmony_ciTAG(TexCoordP1ui)(GLenum type, GLuint coords)
2059bf215546Sopenharmony_ci{
2060bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2061bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP1ui");
2062bf215546Sopenharmony_ci   ATTR_UI(ctx, 1, type, 0, VBO_ATTRIB_TEX0, coords);
2063bf215546Sopenharmony_ci}
2064bf215546Sopenharmony_ci
2065bf215546Sopenharmony_cistatic void GLAPIENTRY
2066bf215546Sopenharmony_ciTAG(TexCoordP1uiv)(GLenum type, const GLuint *coords)
2067bf215546Sopenharmony_ci{
2068bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2069bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP1uiv");
2070bf215546Sopenharmony_ci   ATTR_UI(ctx, 1, type, 0, VBO_ATTRIB_TEX0, coords[0]);
2071bf215546Sopenharmony_ci}
2072bf215546Sopenharmony_ci
2073bf215546Sopenharmony_cistatic void GLAPIENTRY
2074bf215546Sopenharmony_ciTAG(TexCoordP2ui)(GLenum type, GLuint coords)
2075bf215546Sopenharmony_ci{
2076bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2077bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP2ui");
2078bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_TEX0, coords);
2079bf215546Sopenharmony_ci}
2080bf215546Sopenharmony_ci
2081bf215546Sopenharmony_cistatic void GLAPIENTRY
2082bf215546Sopenharmony_ciTAG(TexCoordP2uiv)(GLenum type, const GLuint *coords)
2083bf215546Sopenharmony_ci{
2084bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2085bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP2uiv");
2086bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, VBO_ATTRIB_TEX0, coords[0]);
2087bf215546Sopenharmony_ci}
2088bf215546Sopenharmony_ci
2089bf215546Sopenharmony_cistatic void GLAPIENTRY
2090bf215546Sopenharmony_ciTAG(TexCoordP3ui)(GLenum type, GLuint coords)
2091bf215546Sopenharmony_ci{
2092bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2093bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP3ui");
2094bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_TEX0, coords);
2095bf215546Sopenharmony_ci}
2096bf215546Sopenharmony_ci
2097bf215546Sopenharmony_cistatic void GLAPIENTRY
2098bf215546Sopenharmony_ciTAG(TexCoordP3uiv)(GLenum type, const GLuint *coords)
2099bf215546Sopenharmony_ci{
2100bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2101bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP3uiv");
2102bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, VBO_ATTRIB_TEX0, coords[0]);
2103bf215546Sopenharmony_ci}
2104bf215546Sopenharmony_ci
2105bf215546Sopenharmony_cistatic void GLAPIENTRY
2106bf215546Sopenharmony_ciTAG(TexCoordP4ui)(GLenum type, GLuint coords)
2107bf215546Sopenharmony_ci{
2108bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2109bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP4ui");
2110bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_TEX0, coords);
2111bf215546Sopenharmony_ci}
2112bf215546Sopenharmony_ci
2113bf215546Sopenharmony_cistatic void GLAPIENTRY
2114bf215546Sopenharmony_ciTAG(TexCoordP4uiv)(GLenum type, const GLuint *coords)
2115bf215546Sopenharmony_ci{
2116bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2117bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glTexCoordP4uiv");
2118bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, VBO_ATTRIB_TEX0, coords[0]);
2119bf215546Sopenharmony_ci}
2120bf215546Sopenharmony_ci
2121bf215546Sopenharmony_cistatic void GLAPIENTRY
2122bf215546Sopenharmony_ciTAG(MultiTexCoordP1ui)(GLenum target, GLenum type, GLuint coords)
2123bf215546Sopenharmony_ci{
2124bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2125bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2126bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP1ui");
2127bf215546Sopenharmony_ci   ATTR_UI(ctx, 1, type, 0, attr, coords);
2128bf215546Sopenharmony_ci}
2129bf215546Sopenharmony_ci
2130bf215546Sopenharmony_cistatic void GLAPIENTRY
2131bf215546Sopenharmony_ciTAG(MultiTexCoordP1uiv)(GLenum target, GLenum type, const GLuint *coords)
2132bf215546Sopenharmony_ci{
2133bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2134bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2135bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP1uiv");
2136bf215546Sopenharmony_ci   ATTR_UI(ctx, 1, type, 0, attr, coords[0]);
2137bf215546Sopenharmony_ci}
2138bf215546Sopenharmony_ci
2139bf215546Sopenharmony_cistatic void GLAPIENTRY
2140bf215546Sopenharmony_ciTAG(MultiTexCoordP2ui)(GLenum target, GLenum type, GLuint coords)
2141bf215546Sopenharmony_ci{
2142bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2143bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2144bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP2ui");
2145bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, attr, coords);
2146bf215546Sopenharmony_ci}
2147bf215546Sopenharmony_ci
2148bf215546Sopenharmony_cistatic void GLAPIENTRY
2149bf215546Sopenharmony_ciTAG(MultiTexCoordP2uiv)(GLenum target, GLenum type, const GLuint *coords)
2150bf215546Sopenharmony_ci{
2151bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2152bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2153bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP2uiv");
2154bf215546Sopenharmony_ci   ATTR_UI(ctx, 2, type, 0, attr, coords[0]);
2155bf215546Sopenharmony_ci}
2156bf215546Sopenharmony_ci
2157bf215546Sopenharmony_cistatic void GLAPIENTRY
2158bf215546Sopenharmony_ciTAG(MultiTexCoordP3ui)(GLenum target, GLenum type, GLuint coords)
2159bf215546Sopenharmony_ci{
2160bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2161bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2162bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP3ui");
2163bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, attr, coords);
2164bf215546Sopenharmony_ci}
2165bf215546Sopenharmony_ci
2166bf215546Sopenharmony_cistatic void GLAPIENTRY
2167bf215546Sopenharmony_ciTAG(MultiTexCoordP3uiv)(GLenum target, GLenum type, const GLuint *coords)
2168bf215546Sopenharmony_ci{
2169bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2170bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2171bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP3uiv");
2172bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 0, attr, coords[0]);
2173bf215546Sopenharmony_ci}
2174bf215546Sopenharmony_ci
2175bf215546Sopenharmony_cistatic void GLAPIENTRY
2176bf215546Sopenharmony_ciTAG(MultiTexCoordP4ui)(GLenum target, GLenum type, GLuint coords)
2177bf215546Sopenharmony_ci{
2178bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2179bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2180bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP4ui");
2181bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, attr, coords);
2182bf215546Sopenharmony_ci}
2183bf215546Sopenharmony_ci
2184bf215546Sopenharmony_cistatic void GLAPIENTRY
2185bf215546Sopenharmony_ciTAG(MultiTexCoordP4uiv)(GLenum target, GLenum type, const GLuint *coords)
2186bf215546Sopenharmony_ci{
2187bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2188bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2189bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glMultiTexCoordP4uiv");
2190bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 0, attr, coords[0]);
2191bf215546Sopenharmony_ci}
2192bf215546Sopenharmony_ci
2193bf215546Sopenharmony_cistatic void GLAPIENTRY
2194bf215546Sopenharmony_ciTAG(NormalP3ui)(GLenum type, GLuint coords)
2195bf215546Sopenharmony_ci{
2196bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2197bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glNormalP3ui");
2198bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_NORMAL, coords);
2199bf215546Sopenharmony_ci}
2200bf215546Sopenharmony_ci
2201bf215546Sopenharmony_cistatic void GLAPIENTRY
2202bf215546Sopenharmony_ciTAG(NormalP3uiv)(GLenum type, const GLuint *coords)
2203bf215546Sopenharmony_ci{
2204bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2205bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glNormalP3uiv");
2206bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_NORMAL, coords[0]);
2207bf215546Sopenharmony_ci}
2208bf215546Sopenharmony_ci
2209bf215546Sopenharmony_cistatic void GLAPIENTRY
2210bf215546Sopenharmony_ciTAG(ColorP3ui)(GLenum type, GLuint color)
2211bf215546Sopenharmony_ci{
2212bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2213bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP3ui");
2214bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR0, color);
2215bf215546Sopenharmony_ci}
2216bf215546Sopenharmony_ci
2217bf215546Sopenharmony_cistatic void GLAPIENTRY
2218bf215546Sopenharmony_ciTAG(ColorP3uiv)(GLenum type, const GLuint *color)
2219bf215546Sopenharmony_ci{
2220bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2221bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP3uiv");
2222bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR0, color[0]);
2223bf215546Sopenharmony_ci}
2224bf215546Sopenharmony_ci
2225bf215546Sopenharmony_cistatic void GLAPIENTRY
2226bf215546Sopenharmony_ciTAG(ColorP4ui)(GLenum type, GLuint color)
2227bf215546Sopenharmony_ci{
2228bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2229bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP4ui");
2230bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 1, VBO_ATTRIB_COLOR0, color);
2231bf215546Sopenharmony_ci}
2232bf215546Sopenharmony_ci
2233bf215546Sopenharmony_cistatic void GLAPIENTRY
2234bf215546Sopenharmony_ciTAG(ColorP4uiv)(GLenum type, const GLuint *color)
2235bf215546Sopenharmony_ci{
2236bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2237bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glColorP4uiv");
2238bf215546Sopenharmony_ci   ATTR_UI(ctx, 4, type, 1, VBO_ATTRIB_COLOR0, color[0]);
2239bf215546Sopenharmony_ci}
2240bf215546Sopenharmony_ci
2241bf215546Sopenharmony_cistatic void GLAPIENTRY
2242bf215546Sopenharmony_ciTAG(SecondaryColorP3ui)(GLenum type, GLuint color)
2243bf215546Sopenharmony_ci{
2244bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2245bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glSecondaryColorP3ui");
2246bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR1, color);
2247bf215546Sopenharmony_ci}
2248bf215546Sopenharmony_ci
2249bf215546Sopenharmony_cistatic void GLAPIENTRY
2250bf215546Sopenharmony_ciTAG(SecondaryColorP3uiv)(GLenum type, const GLuint *color)
2251bf215546Sopenharmony_ci{
2252bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2253bf215546Sopenharmony_ci   ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glSecondaryColorP3uiv");
2254bf215546Sopenharmony_ci   ATTR_UI(ctx, 3, type, 1, VBO_ATTRIB_COLOR1, color[0]);
2255bf215546Sopenharmony_ci}
2256bf215546Sopenharmony_ci
2257bf215546Sopenharmony_cistatic void GLAPIENTRY
2258bf215546Sopenharmony_ciTAG(Normal3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
2259bf215546Sopenharmony_ci{
2260bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2261bf215546Sopenharmony_ci   ATTR3H(VBO_ATTRIB_NORMAL, x, y, z);
2262bf215546Sopenharmony_ci}
2263bf215546Sopenharmony_ci
2264bf215546Sopenharmony_cistatic void GLAPIENTRY
2265bf215546Sopenharmony_ciTAG(Normal3hvNV)(const GLhalfNV * v)
2266bf215546Sopenharmony_ci{
2267bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2268bf215546Sopenharmony_ci   ATTR3HV(VBO_ATTRIB_NORMAL, v);
2269bf215546Sopenharmony_ci}
2270bf215546Sopenharmony_ci
2271bf215546Sopenharmony_ci
2272bf215546Sopenharmony_ci
2273bf215546Sopenharmony_cistatic void GLAPIENTRY
2274bf215546Sopenharmony_ciTAG(Color3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
2275bf215546Sopenharmony_ci{
2276bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2277bf215546Sopenharmony_ci   ATTR3H(VBO_ATTRIB_COLOR0, x, y, z);
2278bf215546Sopenharmony_ci}
2279bf215546Sopenharmony_ci
2280bf215546Sopenharmony_cistatic void GLAPIENTRY
2281bf215546Sopenharmony_ciTAG(Color3hvNV)(const GLhalfNV * v)
2282bf215546Sopenharmony_ci{
2283bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2284bf215546Sopenharmony_ci   ATTR3HV(VBO_ATTRIB_COLOR0, v);
2285bf215546Sopenharmony_ci}
2286bf215546Sopenharmony_ci
2287bf215546Sopenharmony_cistatic void GLAPIENTRY
2288bf215546Sopenharmony_ciTAG(Color4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
2289bf215546Sopenharmony_ci{
2290bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2291bf215546Sopenharmony_ci   ATTR4H(VBO_ATTRIB_COLOR0, x, y, z, w);
2292bf215546Sopenharmony_ci}
2293bf215546Sopenharmony_ci
2294bf215546Sopenharmony_cistatic void GLAPIENTRY
2295bf215546Sopenharmony_ciTAG(Color4hvNV)(const GLhalfNV * v)
2296bf215546Sopenharmony_ci{
2297bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2298bf215546Sopenharmony_ci   ATTR4HV(VBO_ATTRIB_COLOR0, v);
2299bf215546Sopenharmony_ci}
2300bf215546Sopenharmony_ci
2301bf215546Sopenharmony_ci
2302bf215546Sopenharmony_ci
2303bf215546Sopenharmony_cistatic void GLAPIENTRY
2304bf215546Sopenharmony_ciTAG(TexCoord1hNV)(GLhalfNV x)
2305bf215546Sopenharmony_ci{
2306bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2307bf215546Sopenharmony_ci   ATTR1H(VBO_ATTRIB_TEX0, x);
2308bf215546Sopenharmony_ci}
2309bf215546Sopenharmony_ci
2310bf215546Sopenharmony_cistatic void GLAPIENTRY
2311bf215546Sopenharmony_ciTAG(TexCoord1hvNV)(const GLhalfNV * v)
2312bf215546Sopenharmony_ci{
2313bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2314bf215546Sopenharmony_ci   ATTR1HV(VBO_ATTRIB_TEX0, v);
2315bf215546Sopenharmony_ci}
2316bf215546Sopenharmony_ci
2317bf215546Sopenharmony_cistatic void GLAPIENTRY
2318bf215546Sopenharmony_ciTAG(TexCoord2hNV)(GLhalfNV x, GLhalfNV y)
2319bf215546Sopenharmony_ci{
2320bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2321bf215546Sopenharmony_ci   ATTR2H(VBO_ATTRIB_TEX0, x, y);
2322bf215546Sopenharmony_ci}
2323bf215546Sopenharmony_ci
2324bf215546Sopenharmony_cistatic void GLAPIENTRY
2325bf215546Sopenharmony_ciTAG(TexCoord2hvNV)(const GLhalfNV * v)
2326bf215546Sopenharmony_ci{
2327bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2328bf215546Sopenharmony_ci   ATTR2HV(VBO_ATTRIB_TEX0, v);
2329bf215546Sopenharmony_ci}
2330bf215546Sopenharmony_ci
2331bf215546Sopenharmony_cistatic void GLAPIENTRY
2332bf215546Sopenharmony_ciTAG(TexCoord3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
2333bf215546Sopenharmony_ci{
2334bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2335bf215546Sopenharmony_ci   ATTR3H(VBO_ATTRIB_TEX0, x, y, z);
2336bf215546Sopenharmony_ci}
2337bf215546Sopenharmony_ci
2338bf215546Sopenharmony_cistatic void GLAPIENTRY
2339bf215546Sopenharmony_ciTAG(TexCoord3hvNV)(const GLhalfNV * v)
2340bf215546Sopenharmony_ci{
2341bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2342bf215546Sopenharmony_ci   ATTR3HV(VBO_ATTRIB_TEX0, v);
2343bf215546Sopenharmony_ci}
2344bf215546Sopenharmony_ci
2345bf215546Sopenharmony_cistatic void GLAPIENTRY
2346bf215546Sopenharmony_ciTAG(TexCoord4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
2347bf215546Sopenharmony_ci{
2348bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2349bf215546Sopenharmony_ci   ATTR4H(VBO_ATTRIB_TEX0, x, y, z, w);
2350bf215546Sopenharmony_ci}
2351bf215546Sopenharmony_ci
2352bf215546Sopenharmony_cistatic void GLAPIENTRY
2353bf215546Sopenharmony_ciTAG(TexCoord4hvNV)(const GLhalfNV * v)
2354bf215546Sopenharmony_ci{
2355bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2356bf215546Sopenharmony_ci   ATTR4HV(VBO_ATTRIB_TEX0, v);
2357bf215546Sopenharmony_ci}
2358bf215546Sopenharmony_ci
2359bf215546Sopenharmony_ci
2360bf215546Sopenharmony_ci
2361bf215546Sopenharmony_cistatic void GLAPIENTRY
2362bf215546Sopenharmony_ciTAG(MultiTexCoord1hNV)(GLenum target, GLhalfNV x)
2363bf215546Sopenharmony_ci{
2364bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2365bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2366bf215546Sopenharmony_ci   ATTR1H(attr, x);
2367bf215546Sopenharmony_ci}
2368bf215546Sopenharmony_ci
2369bf215546Sopenharmony_cistatic void GLAPIENTRY
2370bf215546Sopenharmony_ciTAG(MultiTexCoord1hvNV)(GLenum target, const GLhalfNV * v)
2371bf215546Sopenharmony_ci{
2372bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2373bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2374bf215546Sopenharmony_ci   ATTR1HV(attr, v);
2375bf215546Sopenharmony_ci}
2376bf215546Sopenharmony_ci
2377bf215546Sopenharmony_cistatic void GLAPIENTRY
2378bf215546Sopenharmony_ciTAG(MultiTexCoord2hNV)(GLenum target, GLhalfNV x, GLhalfNV y)
2379bf215546Sopenharmony_ci{
2380bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2381bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2382bf215546Sopenharmony_ci   ATTR2H(attr, x, y);
2383bf215546Sopenharmony_ci}
2384bf215546Sopenharmony_ci
2385bf215546Sopenharmony_cistatic void GLAPIENTRY
2386bf215546Sopenharmony_ciTAG(MultiTexCoord2hvNV)(GLenum target, const GLhalfNV * v)
2387bf215546Sopenharmony_ci{
2388bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2389bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2390bf215546Sopenharmony_ci   ATTR2HV(attr, v);
2391bf215546Sopenharmony_ci}
2392bf215546Sopenharmony_ci
2393bf215546Sopenharmony_cistatic void GLAPIENTRY
2394bf215546Sopenharmony_ciTAG(MultiTexCoord3hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z)
2395bf215546Sopenharmony_ci{
2396bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2397bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2398bf215546Sopenharmony_ci   ATTR3H(attr, x, y, z);
2399bf215546Sopenharmony_ci}
2400bf215546Sopenharmony_ci
2401bf215546Sopenharmony_cistatic void GLAPIENTRY
2402bf215546Sopenharmony_ciTAG(MultiTexCoord3hvNV)(GLenum target, const GLhalfNV * v)
2403bf215546Sopenharmony_ci{
2404bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2405bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2406bf215546Sopenharmony_ci   ATTR3HV(attr, v);
2407bf215546Sopenharmony_ci}
2408bf215546Sopenharmony_ci
2409bf215546Sopenharmony_cistatic void GLAPIENTRY
2410bf215546Sopenharmony_ciTAG(MultiTexCoord4hNV)(GLenum target, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
2411bf215546Sopenharmony_ci{
2412bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2413bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2414bf215546Sopenharmony_ci   ATTR4H(attr, x, y, z, w);
2415bf215546Sopenharmony_ci}
2416bf215546Sopenharmony_ci
2417bf215546Sopenharmony_cistatic void GLAPIENTRY
2418bf215546Sopenharmony_ciTAG(MultiTexCoord4hvNV)(GLenum target, const GLhalfNV * v)
2419bf215546Sopenharmony_ci{
2420bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2421bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2422bf215546Sopenharmony_ci   ATTR4HV(attr, v);
2423bf215546Sopenharmony_ci}
2424bf215546Sopenharmony_ci
2425bf215546Sopenharmony_ci
2426bf215546Sopenharmony_cistatic void GLAPIENTRY
2427bf215546Sopenharmony_ciTAG(FogCoordhNV)(GLhalf x)
2428bf215546Sopenharmony_ci{
2429bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2430bf215546Sopenharmony_ci   ATTR1H(VBO_ATTRIB_FOG, x);
2431bf215546Sopenharmony_ci}
2432bf215546Sopenharmony_ci
2433bf215546Sopenharmony_cistatic void GLAPIENTRY
2434bf215546Sopenharmony_ciTAG(FogCoordhvNV)(const GLhalf * v)
2435bf215546Sopenharmony_ci{
2436bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2437bf215546Sopenharmony_ci   ATTR1HV(VBO_ATTRIB_FOG, v);
2438bf215546Sopenharmony_ci}
2439bf215546Sopenharmony_ci
2440bf215546Sopenharmony_ci
2441bf215546Sopenharmony_ci
2442bf215546Sopenharmony_cistatic void GLAPIENTRY
2443bf215546Sopenharmony_ciTAG(SecondaryColor3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
2444bf215546Sopenharmony_ci{
2445bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2446bf215546Sopenharmony_ci   ATTR3H(VBO_ATTRIB_COLOR1, x, y, z);
2447bf215546Sopenharmony_ci}
2448bf215546Sopenharmony_ci
2449bf215546Sopenharmony_cistatic void GLAPIENTRY
2450bf215546Sopenharmony_ciTAG(SecondaryColor3hvNV)(const GLhalfNV * v)
2451bf215546Sopenharmony_ci{
2452bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2453bf215546Sopenharmony_ci   ATTR3HV(VBO_ATTRIB_COLOR1, v);
2454bf215546Sopenharmony_ci}
2455bf215546Sopenharmony_ci
2456bf215546Sopenharmony_ci
2457bf215546Sopenharmony_cistatic void GLAPIENTRY
2458bf215546Sopenharmony_ciTAG(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
2459bf215546Sopenharmony_ci{
2460bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2461bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(red),
2462bf215546Sopenharmony_ci          BYTE_TO_FLOAT(green),
2463bf215546Sopenharmony_ci          BYTE_TO_FLOAT(blue),
2464bf215546Sopenharmony_ci          1.0);
2465bf215546Sopenharmony_ci}
2466bf215546Sopenharmony_ci
2467bf215546Sopenharmony_cistatic void GLAPIENTRY
2468bf215546Sopenharmony_ciTAG(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
2469bf215546Sopenharmony_ci{
2470bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2471bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0);
2472bf215546Sopenharmony_ci}
2473bf215546Sopenharmony_ci
2474bf215546Sopenharmony_cistatic void GLAPIENTRY
2475bf215546Sopenharmony_ciTAG(Color3i)(GLint red, GLint green, GLint blue)
2476bf215546Sopenharmony_ci{
2477bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2478bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(red), INT_TO_FLOAT(green),
2479bf215546Sopenharmony_ci          INT_TO_FLOAT(blue), 1.0);
2480bf215546Sopenharmony_ci}
2481bf215546Sopenharmony_ci
2482bf215546Sopenharmony_cistatic void GLAPIENTRY
2483bf215546Sopenharmony_ciTAG(Color3s)(GLshort red, GLshort green, GLshort blue)
2484bf215546Sopenharmony_ci{
2485bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2486bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
2487bf215546Sopenharmony_ci          SHORT_TO_FLOAT(blue), 1.0);
2488bf215546Sopenharmony_ci}
2489bf215546Sopenharmony_ci
2490bf215546Sopenharmony_cistatic void GLAPIENTRY
2491bf215546Sopenharmony_ciTAG(Color3ui)(GLuint red, GLuint green, GLuint blue)
2492bf215546Sopenharmony_ci{
2493bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2494bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
2495bf215546Sopenharmony_ci          UINT_TO_FLOAT(blue), 1.0);
2496bf215546Sopenharmony_ci}
2497bf215546Sopenharmony_ci
2498bf215546Sopenharmony_cistatic void GLAPIENTRY
2499bf215546Sopenharmony_ciTAG(Color3us)(GLushort red, GLushort green, GLushort blue)
2500bf215546Sopenharmony_ci{
2501bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2502bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
2503bf215546Sopenharmony_ci          USHORT_TO_FLOAT(blue), 1.0);
2504bf215546Sopenharmony_ci}
2505bf215546Sopenharmony_ci
2506bf215546Sopenharmony_cistatic void GLAPIENTRY
2507bf215546Sopenharmony_ciTAG(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
2508bf215546Sopenharmony_ci{
2509bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2510bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
2511bf215546Sopenharmony_ci          UBYTE_TO_FLOAT(blue), 1.0);
2512bf215546Sopenharmony_ci}
2513bf215546Sopenharmony_ci
2514bf215546Sopenharmony_ci
2515bf215546Sopenharmony_cistatic void GLAPIENTRY
2516bf215546Sopenharmony_ciTAG(Color3bv)(const GLbyte *v)
2517bf215546Sopenharmony_ci{
2518bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2519bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
2520bf215546Sopenharmony_ci         BYTE_TO_FLOAT(v[2]), 1.0);
2521bf215546Sopenharmony_ci}
2522bf215546Sopenharmony_ci
2523bf215546Sopenharmony_cistatic void GLAPIENTRY
2524bf215546Sopenharmony_ciTAG(Color3dv)(const GLdouble *v)
2525bf215546Sopenharmony_ci{
2526bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2527bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0);
2528bf215546Sopenharmony_ci}
2529bf215546Sopenharmony_ci
2530bf215546Sopenharmony_cistatic void GLAPIENTRY
2531bf215546Sopenharmony_ciTAG(Color3iv)(const GLint *v)
2532bf215546Sopenharmony_ci{
2533bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2534bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
2535bf215546Sopenharmony_ci         INT_TO_FLOAT(v[2]), 1.0);
2536bf215546Sopenharmony_ci}
2537bf215546Sopenharmony_ci
2538bf215546Sopenharmony_cistatic void GLAPIENTRY
2539bf215546Sopenharmony_ciTAG(Color3sv)(const GLshort *v)
2540bf215546Sopenharmony_ci{
2541bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2542bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
2543bf215546Sopenharmony_ci         SHORT_TO_FLOAT(v[2]), 1.0);
2544bf215546Sopenharmony_ci}
2545bf215546Sopenharmony_ci
2546bf215546Sopenharmony_cistatic void GLAPIENTRY
2547bf215546Sopenharmony_ciTAG(Color3uiv)(const GLuint *v)
2548bf215546Sopenharmony_ci{
2549bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2550bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
2551bf215546Sopenharmony_ci         UINT_TO_FLOAT(v[2]), 1.0);
2552bf215546Sopenharmony_ci}
2553bf215546Sopenharmony_ci
2554bf215546Sopenharmony_cistatic void GLAPIENTRY
2555bf215546Sopenharmony_ciTAG(Color3usv)(const GLushort *v)
2556bf215546Sopenharmony_ci{
2557bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2558bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
2559bf215546Sopenharmony_ci         USHORT_TO_FLOAT(v[2]), 1.0);
2560bf215546Sopenharmony_ci}
2561bf215546Sopenharmony_ci
2562bf215546Sopenharmony_cistatic void GLAPIENTRY
2563bf215546Sopenharmony_ciTAG(Color3ubv)(const GLubyte *v)
2564bf215546Sopenharmony_ci{
2565bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2566bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
2567bf215546Sopenharmony_ci         UBYTE_TO_FLOAT(v[2]), 1.0);
2568bf215546Sopenharmony_ci}
2569bf215546Sopenharmony_ci
2570bf215546Sopenharmony_ci
2571bf215546Sopenharmony_cistatic void GLAPIENTRY
2572bf215546Sopenharmony_ciTAG(Color4b)(GLbyte red, GLbyte green, GLbyte blue,
2573bf215546Sopenharmony_ci              GLbyte alpha)
2574bf215546Sopenharmony_ci{
2575bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2576bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
2577bf215546Sopenharmony_ci          BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha));
2578bf215546Sopenharmony_ci}
2579bf215546Sopenharmony_ci
2580bf215546Sopenharmony_cistatic void GLAPIENTRY
2581bf215546Sopenharmony_ciTAG(Color4d)(GLdouble red, GLdouble green, GLdouble blue,
2582bf215546Sopenharmony_ci              GLdouble alpha)
2583bf215546Sopenharmony_ci{
2584bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2585bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha);
2586bf215546Sopenharmony_ci}
2587bf215546Sopenharmony_ci
2588bf215546Sopenharmony_cistatic void GLAPIENTRY
2589bf215546Sopenharmony_ciTAG(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
2590bf215546Sopenharmony_ci{
2591bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2592bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(red), INT_TO_FLOAT(green),
2593bf215546Sopenharmony_ci          INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha));
2594bf215546Sopenharmony_ci}
2595bf215546Sopenharmony_ci
2596bf215546Sopenharmony_cistatic void GLAPIENTRY
2597bf215546Sopenharmony_ciTAG(Color4s)(GLshort red, GLshort green, GLshort blue,
2598bf215546Sopenharmony_ci              GLshort alpha)
2599bf215546Sopenharmony_ci{
2600bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2601bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
2602bf215546Sopenharmony_ci          SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha));
2603bf215546Sopenharmony_ci}
2604bf215546Sopenharmony_ci
2605bf215546Sopenharmony_cistatic void GLAPIENTRY
2606bf215546Sopenharmony_ciTAG(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
2607bf215546Sopenharmony_ci{
2608bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2609bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
2610bf215546Sopenharmony_ci          UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha));
2611bf215546Sopenharmony_ci}
2612bf215546Sopenharmony_ci
2613bf215546Sopenharmony_cistatic void GLAPIENTRY
2614bf215546Sopenharmony_ciTAG(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
2615bf215546Sopenharmony_ci{
2616bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2617bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
2618bf215546Sopenharmony_ci          USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha));
2619bf215546Sopenharmony_ci}
2620bf215546Sopenharmony_ci
2621bf215546Sopenharmony_cistatic void GLAPIENTRY
2622bf215546Sopenharmony_ciTAG(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
2623bf215546Sopenharmony_ci{
2624bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2625bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
2626bf215546Sopenharmony_ci          UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha));
2627bf215546Sopenharmony_ci}
2628bf215546Sopenharmony_ci
2629bf215546Sopenharmony_ci
2630bf215546Sopenharmony_cistatic void GLAPIENTRY
2631bf215546Sopenharmony_ciTAG(Color4iv)(const GLint *v)
2632bf215546Sopenharmony_ci{
2633bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2634bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
2635bf215546Sopenharmony_ci         INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
2636bf215546Sopenharmony_ci}
2637bf215546Sopenharmony_ci
2638bf215546Sopenharmony_ci
2639bf215546Sopenharmony_cistatic void GLAPIENTRY
2640bf215546Sopenharmony_ciTAG(Color4bv)(const GLbyte *v)
2641bf215546Sopenharmony_ci{
2642bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2643bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
2644bf215546Sopenharmony_ci         BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
2645bf215546Sopenharmony_ci}
2646bf215546Sopenharmony_ci
2647bf215546Sopenharmony_cistatic void GLAPIENTRY
2648bf215546Sopenharmony_ciTAG(Color4dv)(const GLdouble *v)
2649bf215546Sopenharmony_ci{
2650bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2651bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
2652bf215546Sopenharmony_ci}
2653bf215546Sopenharmony_ci
2654bf215546Sopenharmony_ci
2655bf215546Sopenharmony_cistatic void GLAPIENTRY
2656bf215546Sopenharmony_ciTAG(Color4sv)(const GLshort *v)
2657bf215546Sopenharmony_ci{
2658bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2659bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
2660bf215546Sopenharmony_ci         SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
2661bf215546Sopenharmony_ci}
2662bf215546Sopenharmony_ci
2663bf215546Sopenharmony_ci
2664bf215546Sopenharmony_cistatic void GLAPIENTRY
2665bf215546Sopenharmony_ciTAG(Color4uiv)(const GLuint *v)
2666bf215546Sopenharmony_ci{
2667bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2668bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
2669bf215546Sopenharmony_ci         UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
2670bf215546Sopenharmony_ci}
2671bf215546Sopenharmony_ci
2672bf215546Sopenharmony_cistatic void GLAPIENTRY
2673bf215546Sopenharmony_ciTAG(Color4usv)(const GLushort *v)
2674bf215546Sopenharmony_ci{
2675bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2676bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
2677bf215546Sopenharmony_ci         USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
2678bf215546Sopenharmony_ci}
2679bf215546Sopenharmony_ci
2680bf215546Sopenharmony_cistatic void GLAPIENTRY
2681bf215546Sopenharmony_ciTAG(Color4ubv)(const GLubyte *v)
2682bf215546Sopenharmony_ci{
2683bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2684bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_COLOR0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
2685bf215546Sopenharmony_ci         UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
2686bf215546Sopenharmony_ci}
2687bf215546Sopenharmony_ci
2688bf215546Sopenharmony_ci
2689bf215546Sopenharmony_cistatic void GLAPIENTRY
2690bf215546Sopenharmony_ciTAG(FogCoordd)(GLdouble d)
2691bf215546Sopenharmony_ci{
2692bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2693bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_FOG, (GLfloat) d);
2694bf215546Sopenharmony_ci}
2695bf215546Sopenharmony_ci
2696bf215546Sopenharmony_cistatic void GLAPIENTRY
2697bf215546Sopenharmony_ciTAG(FogCoorddv)(const GLdouble *v)
2698bf215546Sopenharmony_ci{
2699bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2700bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_FOG, (GLfloat) *v);
2701bf215546Sopenharmony_ci}
2702bf215546Sopenharmony_ci
2703bf215546Sopenharmony_ci
2704bf215546Sopenharmony_cistatic void GLAPIENTRY
2705bf215546Sopenharmony_ciTAG(Indexd)(GLdouble c)
2706bf215546Sopenharmony_ci{
2707bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2708bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c);
2709bf215546Sopenharmony_ci}
2710bf215546Sopenharmony_ci
2711bf215546Sopenharmony_cistatic void GLAPIENTRY
2712bf215546Sopenharmony_ciTAG(Indexi)(GLint c)
2713bf215546Sopenharmony_ci{
2714bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2715bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c);
2716bf215546Sopenharmony_ci}
2717bf215546Sopenharmony_ci
2718bf215546Sopenharmony_cistatic void GLAPIENTRY
2719bf215546Sopenharmony_ciTAG(Indexs)(GLshort c)
2720bf215546Sopenharmony_ci{
2721bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2722bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c);
2723bf215546Sopenharmony_ci}
2724bf215546Sopenharmony_ci
2725bf215546Sopenharmony_cistatic void GLAPIENTRY
2726bf215546Sopenharmony_ciTAG(Indexub)(GLubyte c)
2727bf215546Sopenharmony_ci{
2728bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2729bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) c);
2730bf215546Sopenharmony_ci}
2731bf215546Sopenharmony_ci
2732bf215546Sopenharmony_cistatic void GLAPIENTRY
2733bf215546Sopenharmony_ciTAG(Indexdv)(const GLdouble *c)
2734bf215546Sopenharmony_ci{
2735bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2736bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c);
2737bf215546Sopenharmony_ci}
2738bf215546Sopenharmony_ci
2739bf215546Sopenharmony_cistatic void GLAPIENTRY
2740bf215546Sopenharmony_ciTAG(Indexiv)(const GLint *c)
2741bf215546Sopenharmony_ci{
2742bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2743bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c);
2744bf215546Sopenharmony_ci}
2745bf215546Sopenharmony_ci
2746bf215546Sopenharmony_cistatic void GLAPIENTRY
2747bf215546Sopenharmony_ciTAG(Indexsv)(const GLshort *c)
2748bf215546Sopenharmony_ci{
2749bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2750bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c);
2751bf215546Sopenharmony_ci}
2752bf215546Sopenharmony_ci
2753bf215546Sopenharmony_cistatic void GLAPIENTRY
2754bf215546Sopenharmony_ciTAG(Indexubv)(const GLubyte *c)
2755bf215546Sopenharmony_ci{
2756bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2757bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_COLOR_INDEX, (GLfloat) *c);
2758bf215546Sopenharmony_ci}
2759bf215546Sopenharmony_ci
2760bf215546Sopenharmony_ci
2761bf215546Sopenharmony_cistatic void GLAPIENTRY
2762bf215546Sopenharmony_ciTAG(EdgeFlagv)(const GLboolean *flag)
2763bf215546Sopenharmony_ci{
2764bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2765bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat)*flag);
2766bf215546Sopenharmony_ci}
2767bf215546Sopenharmony_ci
2768bf215546Sopenharmony_ci
2769bf215546Sopenharmony_cistatic void GLAPIENTRY
2770bf215546Sopenharmony_ciTAG(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
2771bf215546Sopenharmony_ci{
2772bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2773bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz));
2774bf215546Sopenharmony_ci}
2775bf215546Sopenharmony_ci
2776bf215546Sopenharmony_cistatic void GLAPIENTRY
2777bf215546Sopenharmony_ciTAG(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
2778bf215546Sopenharmony_ci{
2779bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2780bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, (GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
2781bf215546Sopenharmony_ci}
2782bf215546Sopenharmony_ci
2783bf215546Sopenharmony_cistatic void GLAPIENTRY
2784bf215546Sopenharmony_ciTAG(Normal3i)(GLint nx, GLint ny, GLint nz)
2785bf215546Sopenharmony_ci{
2786bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2787bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz));
2788bf215546Sopenharmony_ci}
2789bf215546Sopenharmony_ci
2790bf215546Sopenharmony_cistatic void GLAPIENTRY
2791bf215546Sopenharmony_ciTAG(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
2792bf215546Sopenharmony_ci{
2793bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2794bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz));
2795bf215546Sopenharmony_ci}
2796bf215546Sopenharmony_ci
2797bf215546Sopenharmony_cistatic void GLAPIENTRY
2798bf215546Sopenharmony_ciTAG(Normal3bv)(const GLbyte *v)
2799bf215546Sopenharmony_ci{
2800bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2801bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]));
2802bf215546Sopenharmony_ci}
2803bf215546Sopenharmony_ci
2804bf215546Sopenharmony_cistatic void GLAPIENTRY
2805bf215546Sopenharmony_ciTAG(Normal3dv)(const GLdouble *v)
2806bf215546Sopenharmony_ci{
2807bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2808bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
2809bf215546Sopenharmony_ci}
2810bf215546Sopenharmony_ci
2811bf215546Sopenharmony_cistatic void GLAPIENTRY
2812bf215546Sopenharmony_ciTAG(Normal3iv)(const GLint *v)
2813bf215546Sopenharmony_ci{
2814bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2815bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]));
2816bf215546Sopenharmony_ci}
2817bf215546Sopenharmony_ci
2818bf215546Sopenharmony_cistatic void GLAPIENTRY
2819bf215546Sopenharmony_ciTAG(Normal3sv)(const GLshort *v)
2820bf215546Sopenharmony_ci{
2821bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2822bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_NORMAL, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]));
2823bf215546Sopenharmony_ci}
2824bf215546Sopenharmony_ci
2825bf215546Sopenharmony_cistatic void GLAPIENTRY
2826bf215546Sopenharmony_ciTAG(TexCoord1d)(GLdouble s)
2827bf215546Sopenharmony_ci{
2828bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2829bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s);
2830bf215546Sopenharmony_ci}
2831bf215546Sopenharmony_ci
2832bf215546Sopenharmony_cistatic void GLAPIENTRY
2833bf215546Sopenharmony_ciTAG(TexCoord1i)(GLint s)
2834bf215546Sopenharmony_ci{
2835bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2836bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s);
2837bf215546Sopenharmony_ci}
2838bf215546Sopenharmony_ci
2839bf215546Sopenharmony_cistatic void GLAPIENTRY
2840bf215546Sopenharmony_ciTAG(TexCoord1s)(GLshort s)
2841bf215546Sopenharmony_ci{
2842bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2843bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) s);
2844bf215546Sopenharmony_ci}
2845bf215546Sopenharmony_ci
2846bf215546Sopenharmony_cistatic void GLAPIENTRY
2847bf215546Sopenharmony_ciTAG(TexCoord2d)(GLdouble s, GLdouble t)
2848bf215546Sopenharmony_ci{
2849bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2850bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t);
2851bf215546Sopenharmony_ci}
2852bf215546Sopenharmony_ci
2853bf215546Sopenharmony_cistatic void GLAPIENTRY
2854bf215546Sopenharmony_ciTAG(TexCoord2s)(GLshort s, GLshort t)
2855bf215546Sopenharmony_ci{
2856bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2857bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t);
2858bf215546Sopenharmony_ci}
2859bf215546Sopenharmony_ci
2860bf215546Sopenharmony_cistatic void GLAPIENTRY
2861bf215546Sopenharmony_ciTAG(TexCoord2i)(GLint s, GLint t)
2862bf215546Sopenharmony_ci{
2863bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2864bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t);
2865bf215546Sopenharmony_ci}
2866bf215546Sopenharmony_ci
2867bf215546Sopenharmony_cistatic void GLAPIENTRY
2868bf215546Sopenharmony_ciTAG(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
2869bf215546Sopenharmony_ci{
2870bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2871bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r);
2872bf215546Sopenharmony_ci}
2873bf215546Sopenharmony_ci
2874bf215546Sopenharmony_cistatic void GLAPIENTRY
2875bf215546Sopenharmony_ciTAG(TexCoord3i)(GLint s, GLint t, GLint r)
2876bf215546Sopenharmony_ci{
2877bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2878bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r);
2879bf215546Sopenharmony_ci}
2880bf215546Sopenharmony_ci
2881bf215546Sopenharmony_cistatic void GLAPIENTRY
2882bf215546Sopenharmony_ciTAG(TexCoord3s)(GLshort s, GLshort t, GLshort r)
2883bf215546Sopenharmony_ci{
2884bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2885bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r);
2886bf215546Sopenharmony_ci}
2887bf215546Sopenharmony_ci
2888bf215546Sopenharmony_cistatic void GLAPIENTRY
2889bf215546Sopenharmony_ciTAG(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
2890bf215546Sopenharmony_ci{
2891bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2892bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
2893bf215546Sopenharmony_ci}
2894bf215546Sopenharmony_ci
2895bf215546Sopenharmony_cistatic void GLAPIENTRY
2896bf215546Sopenharmony_ciTAG(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
2897bf215546Sopenharmony_ci{
2898bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2899bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
2900bf215546Sopenharmony_ci}
2901bf215546Sopenharmony_ci
2902bf215546Sopenharmony_cistatic void GLAPIENTRY
2903bf215546Sopenharmony_ciTAG(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
2904bf215546Sopenharmony_ci{
2905bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2906bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
2907bf215546Sopenharmony_ci}
2908bf215546Sopenharmony_ci
2909bf215546Sopenharmony_cistatic void GLAPIENTRY
2910bf215546Sopenharmony_ciTAG(TexCoord1dv)(const GLdouble *v)
2911bf215546Sopenharmony_ci{
2912bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2913bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]);
2914bf215546Sopenharmony_ci}
2915bf215546Sopenharmony_ci
2916bf215546Sopenharmony_cistatic void GLAPIENTRY
2917bf215546Sopenharmony_ciTAG(TexCoord1iv)(const GLint *v)
2918bf215546Sopenharmony_ci{
2919bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2920bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]);
2921bf215546Sopenharmony_ci}
2922bf215546Sopenharmony_ci
2923bf215546Sopenharmony_cistatic void GLAPIENTRY
2924bf215546Sopenharmony_ciTAG(TexCoord1sv)(const GLshort *v)
2925bf215546Sopenharmony_ci{
2926bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2927bf215546Sopenharmony_ci   ATTR1F(VBO_ATTRIB_TEX0, (GLfloat) v[0]);
2928bf215546Sopenharmony_ci}
2929bf215546Sopenharmony_ci
2930bf215546Sopenharmony_cistatic void GLAPIENTRY
2931bf215546Sopenharmony_ciTAG(TexCoord2dv)(const GLdouble *v)
2932bf215546Sopenharmony_ci{
2933bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2934bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]);
2935bf215546Sopenharmony_ci}
2936bf215546Sopenharmony_ci
2937bf215546Sopenharmony_cistatic void GLAPIENTRY
2938bf215546Sopenharmony_ciTAG(TexCoord2iv)(const GLint *v)
2939bf215546Sopenharmony_ci{
2940bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2941bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]);
2942bf215546Sopenharmony_ci}
2943bf215546Sopenharmony_ci
2944bf215546Sopenharmony_cistatic void GLAPIENTRY
2945bf215546Sopenharmony_ciTAG(TexCoord2sv)(const GLshort *v)
2946bf215546Sopenharmony_ci{
2947bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2948bf215546Sopenharmony_ci   ATTR2F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1]);
2949bf215546Sopenharmony_ci}
2950bf215546Sopenharmony_ci
2951bf215546Sopenharmony_cistatic void GLAPIENTRY
2952bf215546Sopenharmony_ciTAG(TexCoord3dv)(const GLdouble *v)
2953bf215546Sopenharmony_ci{
2954bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2955bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
2956bf215546Sopenharmony_ci}
2957bf215546Sopenharmony_ci
2958bf215546Sopenharmony_cistatic void GLAPIENTRY
2959bf215546Sopenharmony_ciTAG(TexCoord3iv)(const GLint *v)
2960bf215546Sopenharmony_ci{
2961bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2962bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
2963bf215546Sopenharmony_ci}
2964bf215546Sopenharmony_ci
2965bf215546Sopenharmony_cistatic void GLAPIENTRY
2966bf215546Sopenharmony_ciTAG(TexCoord3sv)(const GLshort *v)
2967bf215546Sopenharmony_ci{
2968bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2969bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
2970bf215546Sopenharmony_ci}
2971bf215546Sopenharmony_ci
2972bf215546Sopenharmony_cistatic void GLAPIENTRY
2973bf215546Sopenharmony_ciTAG(TexCoord4dv)(const GLdouble *v)
2974bf215546Sopenharmony_ci{
2975bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2976bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
2977bf215546Sopenharmony_ci}
2978bf215546Sopenharmony_ci
2979bf215546Sopenharmony_cistatic void GLAPIENTRY
2980bf215546Sopenharmony_ciTAG(TexCoord4iv)(const GLint *v)
2981bf215546Sopenharmony_ci{
2982bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2983bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
2984bf215546Sopenharmony_ci}
2985bf215546Sopenharmony_ci
2986bf215546Sopenharmony_cistatic void GLAPIENTRY
2987bf215546Sopenharmony_ciTAG(TexCoord4sv)(const GLshort *v)
2988bf215546Sopenharmony_ci{
2989bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2990bf215546Sopenharmony_ci   ATTR4F(VBO_ATTRIB_TEX0, (GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
2991bf215546Sopenharmony_ci}
2992bf215546Sopenharmony_ci
2993bf215546Sopenharmony_cistatic void GLAPIENTRY
2994bf215546Sopenharmony_ciTAG(MultiTexCoord1d)(GLenum target, GLdouble s)
2995bf215546Sopenharmony_ci{
2996bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
2997bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2998bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) s);
2999bf215546Sopenharmony_ci}
3000bf215546Sopenharmony_ci
3001bf215546Sopenharmony_cistatic void GLAPIENTRY
3002bf215546Sopenharmony_ciTAG(MultiTexCoord1dv)(GLenum target, const GLdouble *v)
3003bf215546Sopenharmony_ci{
3004bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3005bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3006bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) v[0]);
3007bf215546Sopenharmony_ci}
3008bf215546Sopenharmony_ci
3009bf215546Sopenharmony_cistatic void GLAPIENTRY
3010bf215546Sopenharmony_ciTAG(MultiTexCoord1i)(GLenum target, GLint s)
3011bf215546Sopenharmony_ci{
3012bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3013bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3014bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) s);
3015bf215546Sopenharmony_ci}
3016bf215546Sopenharmony_ci
3017bf215546Sopenharmony_cistatic void GLAPIENTRY
3018bf215546Sopenharmony_ciTAG(MultiTexCoord1iv)(GLenum target, const GLint *v)
3019bf215546Sopenharmony_ci{
3020bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3021bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3022bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) v[0]);
3023bf215546Sopenharmony_ci}
3024bf215546Sopenharmony_ci
3025bf215546Sopenharmony_cistatic void GLAPIENTRY
3026bf215546Sopenharmony_ciTAG(MultiTexCoord1s)(GLenum target, GLshort s)
3027bf215546Sopenharmony_ci{
3028bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3029bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3030bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) s);
3031bf215546Sopenharmony_ci}
3032bf215546Sopenharmony_ci
3033bf215546Sopenharmony_cistatic void GLAPIENTRY
3034bf215546Sopenharmony_ciTAG(MultiTexCoord1sv)(GLenum target, const GLshort *v)
3035bf215546Sopenharmony_ci{
3036bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3037bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3038bf215546Sopenharmony_ci   ATTR1F(attr, (GLfloat) v[0]);
3039bf215546Sopenharmony_ci}
3040bf215546Sopenharmony_ci
3041bf215546Sopenharmony_cistatic void GLAPIENTRY
3042bf215546Sopenharmony_ciTAG(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
3043bf215546Sopenharmony_ci{
3044bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3045bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3046bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) s, (GLfloat) t);
3047bf215546Sopenharmony_ci}
3048bf215546Sopenharmony_ci
3049bf215546Sopenharmony_cistatic void GLAPIENTRY
3050bf215546Sopenharmony_ciTAG(MultiTexCoord2dv)(GLenum target, const GLdouble *v)
3051bf215546Sopenharmony_ci{
3052bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3053bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3054bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]);
3055bf215546Sopenharmony_ci}
3056bf215546Sopenharmony_ci
3057bf215546Sopenharmony_cistatic void GLAPIENTRY
3058bf215546Sopenharmony_ciTAG(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
3059bf215546Sopenharmony_ci{
3060bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3061bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3062bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) s, (GLfloat) t);
3063bf215546Sopenharmony_ci}
3064bf215546Sopenharmony_ci
3065bf215546Sopenharmony_cistatic void GLAPIENTRY
3066bf215546Sopenharmony_ciTAG(MultiTexCoord2iv)(GLenum target, const GLint *v)
3067bf215546Sopenharmony_ci{
3068bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3069bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3070bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]);
3071bf215546Sopenharmony_ci}
3072bf215546Sopenharmony_ci
3073bf215546Sopenharmony_cistatic void GLAPIENTRY
3074bf215546Sopenharmony_ciTAG(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
3075bf215546Sopenharmony_ci{
3076bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3077bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3078bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) s, (GLfloat) t);
3079bf215546Sopenharmony_ci}
3080bf215546Sopenharmony_ci
3081bf215546Sopenharmony_cistatic void GLAPIENTRY
3082bf215546Sopenharmony_ciTAG(MultiTexCoord2sv)(GLenum target, const GLshort *v)
3083bf215546Sopenharmony_ci{
3084bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3085bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3086bf215546Sopenharmony_ci   ATTR2F(attr, (GLfloat) v[0], (GLfloat) v[1]);
3087bf215546Sopenharmony_ci}
3088bf215546Sopenharmony_ci
3089bf215546Sopenharmony_cistatic void GLAPIENTRY
3090bf215546Sopenharmony_ciTAG(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
3091bf215546Sopenharmony_ci{
3092bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3093bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3094bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r);
3095bf215546Sopenharmony_ci}
3096bf215546Sopenharmony_ci
3097bf215546Sopenharmony_cistatic void GLAPIENTRY
3098bf215546Sopenharmony_ciTAG(MultiTexCoord3dv)(GLenum target, const GLdouble *v)
3099bf215546Sopenharmony_ci{
3100bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3101bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3102bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3103bf215546Sopenharmony_ci}
3104bf215546Sopenharmony_ci
3105bf215546Sopenharmony_cistatic void GLAPIENTRY
3106bf215546Sopenharmony_ciTAG(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
3107bf215546Sopenharmony_ci{
3108bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3109bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3110bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r);
3111bf215546Sopenharmony_ci}
3112bf215546Sopenharmony_ci
3113bf215546Sopenharmony_cistatic void GLAPIENTRY
3114bf215546Sopenharmony_ciTAG(MultiTexCoord3iv)(GLenum target, const GLint *v)
3115bf215546Sopenharmony_ci{
3116bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3117bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3118bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3119bf215546Sopenharmony_ci}
3120bf215546Sopenharmony_ci
3121bf215546Sopenharmony_cistatic void GLAPIENTRY
3122bf215546Sopenharmony_ciTAG(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
3123bf215546Sopenharmony_ci{
3124bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3125bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3126bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r);
3127bf215546Sopenharmony_ci}
3128bf215546Sopenharmony_ci
3129bf215546Sopenharmony_cistatic void GLAPIENTRY
3130bf215546Sopenharmony_ciTAG(MultiTexCoord3sv)(GLenum target, const GLshort *v)
3131bf215546Sopenharmony_ci{
3132bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3133bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3134bf215546Sopenharmony_ci   ATTR3F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3135bf215546Sopenharmony_ci}
3136bf215546Sopenharmony_ci
3137bf215546Sopenharmony_cistatic void GLAPIENTRY
3138bf215546Sopenharmony_ciTAG(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
3139bf215546Sopenharmony_ci{
3140bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3141bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3142bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q);
3143bf215546Sopenharmony_ci}
3144bf215546Sopenharmony_ci
3145bf215546Sopenharmony_cistatic void GLAPIENTRY
3146bf215546Sopenharmony_ciTAG(MultiTexCoord4dv)(GLenum target, const GLdouble *v)
3147bf215546Sopenharmony_ci{
3148bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3149bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3150bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
3151bf215546Sopenharmony_ci}
3152bf215546Sopenharmony_ci
3153bf215546Sopenharmony_cistatic void GLAPIENTRY
3154bf215546Sopenharmony_ciTAG(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
3155bf215546Sopenharmony_ci{
3156bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3157bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3158bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q);
3159bf215546Sopenharmony_ci}
3160bf215546Sopenharmony_ci
3161bf215546Sopenharmony_cistatic void GLAPIENTRY
3162bf215546Sopenharmony_ciTAG(MultiTexCoord4iv)(GLenum target, const GLint *v)
3163bf215546Sopenharmony_ci{
3164bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3165bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3166bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
3167bf215546Sopenharmony_ci}
3168bf215546Sopenharmony_ci
3169bf215546Sopenharmony_cistatic void GLAPIENTRY
3170bf215546Sopenharmony_ciTAG(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
3171bf215546Sopenharmony_ci{
3172bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3173bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3174bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) s, (GLfloat) t, (GLfloat) r, (GLfloat) q);
3175bf215546Sopenharmony_ci}
3176bf215546Sopenharmony_ci
3177bf215546Sopenharmony_cistatic void GLAPIENTRY
3178bf215546Sopenharmony_ciTAG(MultiTexCoord4sv)(GLenum target, const GLshort *v)
3179bf215546Sopenharmony_ci{
3180bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3181bf215546Sopenharmony_ci   GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
3182bf215546Sopenharmony_ci   ATTR4F(attr, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
3183bf215546Sopenharmony_ci}
3184bf215546Sopenharmony_ci
3185bf215546Sopenharmony_ci
3186bf215546Sopenharmony_cistatic void GLAPIENTRY
3187bf215546Sopenharmony_ciTAG(EvalCoord2dv)(const GLdouble *u)
3188bf215546Sopenharmony_ci{
3189bf215546Sopenharmony_ci   TAG(EvalCoord2f)((GLfloat) u[0], (GLfloat) u[1]);
3190bf215546Sopenharmony_ci}
3191bf215546Sopenharmony_ci
3192bf215546Sopenharmony_cistatic void GLAPIENTRY
3193bf215546Sopenharmony_ciTAG(EvalCoord2d)(GLdouble u, GLdouble v)
3194bf215546Sopenharmony_ci{
3195bf215546Sopenharmony_ci   TAG(EvalCoord2f)((GLfloat) u, (GLfloat) v);
3196bf215546Sopenharmony_ci}
3197bf215546Sopenharmony_ci
3198bf215546Sopenharmony_cistatic void GLAPIENTRY
3199bf215546Sopenharmony_ciTAG(EvalCoord1dv)(const GLdouble *u)
3200bf215546Sopenharmony_ci{
3201bf215546Sopenharmony_ci   TAG(EvalCoord1f)((GLfloat) *u);
3202bf215546Sopenharmony_ci}
3203bf215546Sopenharmony_ci
3204bf215546Sopenharmony_cistatic void GLAPIENTRY
3205bf215546Sopenharmony_ciTAG(EvalCoord1d)(GLdouble u)
3206bf215546Sopenharmony_ci{
3207bf215546Sopenharmony_ci   TAG(EvalCoord1f)((GLfloat) u);
3208bf215546Sopenharmony_ci}
3209bf215546Sopenharmony_ci
3210bf215546Sopenharmony_ci
3211bf215546Sopenharmony_cistatic void GLAPIENTRY
3212bf215546Sopenharmony_ciTAG(Materialf)(GLenum face, GLenum pname, GLfloat param)
3213bf215546Sopenharmony_ci{
3214bf215546Sopenharmony_ci   GLfloat fparam[4];
3215bf215546Sopenharmony_ci   fparam[0] = param;
3216bf215546Sopenharmony_ci   TAG(Materialfv)(face, pname, fparam);
3217bf215546Sopenharmony_ci}
3218bf215546Sopenharmony_ci
3219bf215546Sopenharmony_cistatic void GLAPIENTRY
3220bf215546Sopenharmony_ciTAG(Materiali)(GLenum face, GLenum pname, GLint param)
3221bf215546Sopenharmony_ci{
3222bf215546Sopenharmony_ci   GLfloat p[4];
3223bf215546Sopenharmony_ci   p[0] = (GLfloat) param;
3224bf215546Sopenharmony_ci   TAG(Materialfv)(face, pname, p);
3225bf215546Sopenharmony_ci}
3226bf215546Sopenharmony_ci
3227bf215546Sopenharmony_cistatic void GLAPIENTRY
3228bf215546Sopenharmony_ciTAG(Materialiv)(GLenum face, GLenum pname, const GLint *params)
3229bf215546Sopenharmony_ci{
3230bf215546Sopenharmony_ci   GLfloat fparam[4];
3231bf215546Sopenharmony_ci   switch (pname) {
3232bf215546Sopenharmony_ci   case GL_AMBIENT:
3233bf215546Sopenharmony_ci   case GL_DIFFUSE:
3234bf215546Sopenharmony_ci   case GL_SPECULAR:
3235bf215546Sopenharmony_ci   case GL_EMISSION:
3236bf215546Sopenharmony_ci   case GL_AMBIENT_AND_DIFFUSE:
3237bf215546Sopenharmony_ci      fparam[0] = INT_TO_FLOAT(params[0]);
3238bf215546Sopenharmony_ci      fparam[1] = INT_TO_FLOAT(params[1]);
3239bf215546Sopenharmony_ci      fparam[2] = INT_TO_FLOAT(params[2]);
3240bf215546Sopenharmony_ci      fparam[3] = INT_TO_FLOAT(params[3]);
3241bf215546Sopenharmony_ci      break;
3242bf215546Sopenharmony_ci   case GL_SHININESS:
3243bf215546Sopenharmony_ci      fparam[0] = (GLfloat) params[0];
3244bf215546Sopenharmony_ci      break;
3245bf215546Sopenharmony_ci   case GL_COLOR_INDEXES:
3246bf215546Sopenharmony_ci      fparam[0] = (GLfloat) params[0];
3247bf215546Sopenharmony_ci      fparam[1] = (GLfloat) params[1];
3248bf215546Sopenharmony_ci      fparam[2] = (GLfloat) params[2];
3249bf215546Sopenharmony_ci      break;
3250bf215546Sopenharmony_ci   default:
3251bf215546Sopenharmony_ci      ;
3252bf215546Sopenharmony_ci   }
3253bf215546Sopenharmony_ci   TAG(Materialfv)(face, pname, fparam);
3254bf215546Sopenharmony_ci}
3255bf215546Sopenharmony_ci
3256bf215546Sopenharmony_ci
3257bf215546Sopenharmony_cistatic void GLAPIENTRY
3258bf215546Sopenharmony_ciTAG(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
3259bf215546Sopenharmony_ci{
3260bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3261bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, BYTE_TO_FLOAT(red),
3262bf215546Sopenharmony_ci          BYTE_TO_FLOAT(green),
3263bf215546Sopenharmony_ci          BYTE_TO_FLOAT(blue));
3264bf215546Sopenharmony_ci}
3265bf215546Sopenharmony_ci
3266bf215546Sopenharmony_cistatic void GLAPIENTRY
3267bf215546Sopenharmony_ciTAG(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
3268bf215546Sopenharmony_ci{
3269bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3270bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, (GLfloat) red, (GLfloat) green, (GLfloat) blue);
3271bf215546Sopenharmony_ci}
3272bf215546Sopenharmony_ci
3273bf215546Sopenharmony_cistatic void GLAPIENTRY
3274bf215546Sopenharmony_ciTAG(SecondaryColor3i)(GLint red, GLint green, GLint blue)
3275bf215546Sopenharmony_ci{
3276bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3277bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, INT_TO_FLOAT(red),
3278bf215546Sopenharmony_ci          INT_TO_FLOAT(green),
3279bf215546Sopenharmony_ci          INT_TO_FLOAT(blue));
3280bf215546Sopenharmony_ci}
3281bf215546Sopenharmony_ci
3282bf215546Sopenharmony_cistatic void GLAPIENTRY
3283bf215546Sopenharmony_ciTAG(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
3284bf215546Sopenharmony_ci{
3285bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3286bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, SHORT_TO_FLOAT(red),
3287bf215546Sopenharmony_ci          SHORT_TO_FLOAT(green),
3288bf215546Sopenharmony_ci          SHORT_TO_FLOAT(blue));
3289bf215546Sopenharmony_ci}
3290bf215546Sopenharmony_ci
3291bf215546Sopenharmony_cistatic void GLAPIENTRY
3292bf215546Sopenharmony_ciTAG(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
3293bf215546Sopenharmony_ci{
3294bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3295bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, UINT_TO_FLOAT(red),
3296bf215546Sopenharmony_ci          UINT_TO_FLOAT(green),
3297bf215546Sopenharmony_ci          UINT_TO_FLOAT(blue));
3298bf215546Sopenharmony_ci}
3299bf215546Sopenharmony_ci
3300bf215546Sopenharmony_cistatic void GLAPIENTRY
3301bf215546Sopenharmony_ciTAG(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
3302bf215546Sopenharmony_ci{
3303bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3304bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, USHORT_TO_FLOAT(red),
3305bf215546Sopenharmony_ci          USHORT_TO_FLOAT(green),
3306bf215546Sopenharmony_ci          USHORT_TO_FLOAT(blue));
3307bf215546Sopenharmony_ci}
3308bf215546Sopenharmony_ci
3309bf215546Sopenharmony_cistatic void GLAPIENTRY
3310bf215546Sopenharmony_ciTAG(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
3311bf215546Sopenharmony_ci{
3312bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3313bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, UBYTE_TO_FLOAT(red),
3314bf215546Sopenharmony_ci          UBYTE_TO_FLOAT(green),
3315bf215546Sopenharmony_ci          UBYTE_TO_FLOAT(blue));
3316bf215546Sopenharmony_ci}
3317bf215546Sopenharmony_ci
3318bf215546Sopenharmony_cistatic void GLAPIENTRY
3319bf215546Sopenharmony_ciTAG(SecondaryColor3bv)(const GLbyte *v)
3320bf215546Sopenharmony_ci{
3321bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3322bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, BYTE_TO_FLOAT(v[0]),
3323bf215546Sopenharmony_ci         BYTE_TO_FLOAT(v[1]),
3324bf215546Sopenharmony_ci         BYTE_TO_FLOAT(v[2]));
3325bf215546Sopenharmony_ci}
3326bf215546Sopenharmony_ci
3327bf215546Sopenharmony_cistatic void GLAPIENTRY
3328bf215546Sopenharmony_ciTAG(SecondaryColor3dv)(const GLdouble *v)
3329bf215546Sopenharmony_ci{
3330bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3331bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3332bf215546Sopenharmony_ci}
3333bf215546Sopenharmony_ci
3334bf215546Sopenharmony_cistatic void GLAPIENTRY
3335bf215546Sopenharmony_ciTAG(SecondaryColor3iv)(const GLint *v)
3336bf215546Sopenharmony_ci{
3337bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3338bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, INT_TO_FLOAT(v[0]),
3339bf215546Sopenharmony_ci         INT_TO_FLOAT(v[1]),
3340bf215546Sopenharmony_ci         INT_TO_FLOAT(v[2]));
3341bf215546Sopenharmony_ci}
3342bf215546Sopenharmony_ci
3343bf215546Sopenharmony_cistatic void GLAPIENTRY
3344bf215546Sopenharmony_ciTAG(SecondaryColor3sv)(const GLshort *v)
3345bf215546Sopenharmony_ci{
3346bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3347bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, SHORT_TO_FLOAT(v[0]),
3348bf215546Sopenharmony_ci         SHORT_TO_FLOAT(v[1]),
3349bf215546Sopenharmony_ci         SHORT_TO_FLOAT(v[2]));
3350bf215546Sopenharmony_ci}
3351bf215546Sopenharmony_ci
3352bf215546Sopenharmony_cistatic void GLAPIENTRY
3353bf215546Sopenharmony_ciTAG(SecondaryColor3uiv)(const GLuint *v)
3354bf215546Sopenharmony_ci{
3355bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3356bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, UINT_TO_FLOAT(v[0]),
3357bf215546Sopenharmony_ci         UINT_TO_FLOAT(v[1]),
3358bf215546Sopenharmony_ci         UINT_TO_FLOAT(v[2]));
3359bf215546Sopenharmony_ci}
3360bf215546Sopenharmony_ci
3361bf215546Sopenharmony_cistatic void GLAPIENTRY
3362bf215546Sopenharmony_ciTAG(SecondaryColor3usv)(const GLushort *v)
3363bf215546Sopenharmony_ci{
3364bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3365bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, USHORT_TO_FLOAT(v[0]),
3366bf215546Sopenharmony_ci         USHORT_TO_FLOAT(v[1]),
3367bf215546Sopenharmony_ci         USHORT_TO_FLOAT(v[2]));
3368bf215546Sopenharmony_ci}
3369bf215546Sopenharmony_ci
3370bf215546Sopenharmony_cistatic void GLAPIENTRY
3371bf215546Sopenharmony_ciTAG(SecondaryColor3ubv)(const GLubyte *v)
3372bf215546Sopenharmony_ci{
3373bf215546Sopenharmony_ci   GET_CURRENT_CONTEXT(ctx);
3374bf215546Sopenharmony_ci   ATTR3F(VBO_ATTRIB_COLOR1, UBYTE_TO_FLOAT(v[0]),
3375bf215546Sopenharmony_ci         UBYTE_TO_FLOAT(v[1]),
3376bf215546Sopenharmony_ci         UBYTE_TO_FLOAT(v[2]));
3377bf215546Sopenharmony_ci}
3378bf215546Sopenharmony_ci
3379bf215546Sopenharmony_ci#endif /* HW_SELECT_MODE */
3380bf215546Sopenharmony_ci
3381bf215546Sopenharmony_ci#undef ATTR1FV
3382bf215546Sopenharmony_ci#undef ATTR2FV
3383bf215546Sopenharmony_ci#undef ATTR3FV
3384bf215546Sopenharmony_ci#undef ATTR4FV
3385bf215546Sopenharmony_ci
3386bf215546Sopenharmony_ci#undef ATTR1F
3387bf215546Sopenharmony_ci#undef ATTR2F
3388bf215546Sopenharmony_ci#undef ATTR3F
3389bf215546Sopenharmony_ci#undef ATTR4F
3390bf215546Sopenharmony_ci
3391bf215546Sopenharmony_ci#undef ATTR_UI
3392bf215546Sopenharmony_ci
3393bf215546Sopenharmony_ci#ifdef SUPPRESS_STATIC
3394bf215546Sopenharmony_ci#undef static
3395bf215546Sopenharmony_ci#endif
3396bf215546Sopenharmony_ci
3397bf215546Sopenharmony_ci#undef MAT
3398