Merge remote-tracking branch 'jekstrand/wip/i965-uniforms' into vulkan
[mesa.git] / src / mesa / main / api_loopback.c
1 /**
2 * \file api_loopback.c
3 *
4 * \author Keith Whitwell <keithw@vmware.com>
5 */
6
7 /*
8 * Mesa 3-D graphics library
9 *
10 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
11 *
12 * Permission is hereby granted, free of charge, to any person obtaining a
13 * copy of this software and associated documentation files (the "Software"),
14 * to deal in the Software without restriction, including without limitation
15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16 * and/or sell copies of the Software, and to permit persons to whom the
17 * Software is furnished to do so, subject to the following conditions:
18 *
19 * The above copyright notice and this permission notice shall be included
20 * in all copies or substantial portions of the Software.
21 *
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28 * OTHER DEALINGS IN THE SOFTWARE.
29 */
30
31
32 #include "glheader.h"
33 #include "macros.h"
34 #include "api_loopback.h"
35 #include "mtypes.h"
36 #include "glapi/glapi.h"
37 #include "main/dispatch.h"
38 #include "main/context.h"
39
40 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
41 * calls to a smaller set of driver-provided formats. Currently just
42 * go back to dispatch to find these (eg. call glNormal3f directly),
43 * hence 'loopback'.
44 *
45 * The driver must supply all of the remaining entry points, which are
46 * listed in dd.h. The easiest way for a driver to do this is to
47 * install the supplied software t&l module.
48 */
49 #define COLORF(r,g,b,a) CALL_Color4f(GET_DISPATCH(), (r,g,b,a))
50 #define VERTEX2(x,y) CALL_Vertex2f(GET_DISPATCH(), (x,y))
51 #define VERTEX3(x,y,z) CALL_Vertex3f(GET_DISPATCH(), (x,y,z))
52 #define VERTEX4(x,y,z,w) CALL_Vertex4f(GET_DISPATCH(), (x,y,z,w))
53 #define NORMAL(x,y,z) CALL_Normal3f(GET_DISPATCH(), (x,y,z))
54 #define TEXCOORD1(s) CALL_TexCoord1f(GET_DISPATCH(), (s))
55 #define TEXCOORD2(s,t) CALL_TexCoord2f(GET_DISPATCH(), (s,t))
56 #define TEXCOORD3(s,t,u) CALL_TexCoord3f(GET_DISPATCH(), (s,t,u))
57 #define TEXCOORD4(s,t,u,v) CALL_TexCoord4f(GET_DISPATCH(), (s,t,u,v))
58 #define INDEX(c) CALL_Indexf(GET_DISPATCH(), (c))
59 #define MULTI_TEXCOORD1(z,s) CALL_MultiTexCoord1fARB(GET_DISPATCH(), (z,s))
60 #define MULTI_TEXCOORD2(z,s,t) CALL_MultiTexCoord2fARB(GET_DISPATCH(), (z,s,t))
61 #define MULTI_TEXCOORD3(z,s,t,u) CALL_MultiTexCoord3fARB(GET_DISPATCH(), (z,s,t,u))
62 #define MULTI_TEXCOORD4(z,s,t,u,v) CALL_MultiTexCoord4fARB(GET_DISPATCH(), (z,s,t,u,v))
63 #define EVALCOORD1(x) CALL_EvalCoord1f(GET_DISPATCH(), (x))
64 #define EVALCOORD2(x,y) CALL_EvalCoord2f(GET_DISPATCH(), (x,y))
65 #define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c))
66 #define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
67
68 #define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
69 #define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
70
71 #define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
72 #define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
73 #define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
74 #define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
75
76 #define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
77 #define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
78 #define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
79 #define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
80
81 #define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
82 #define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
83 #define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
84
85 #define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
86
87 #define ATTRIB1_D(index,x) CALL_VertexAttribL1d(GET_DISPATCH(), (index,x))
88 #define ATTRIB2_D(index,x,y) CALL_VertexAttribL2d(GET_DISPATCH(), (index,x,y))
89 #define ATTRIB3_D(index,x,y,z) CALL_VertexAttribL3d(GET_DISPATCH(), (index,x,y,z))
90 #define ATTRIB4_D(index,x,y,z,w) CALL_VertexAttribL4d(GET_DISPATCH(), (index,x,y,z,w))
91
92 void GLAPIENTRY
93 _mesa_Color3b( GLbyte red, GLbyte green, GLbyte blue )
94 {
95 COLORF( BYTE_TO_FLOAT(red),
96 BYTE_TO_FLOAT(green),
97 BYTE_TO_FLOAT(blue),
98 1.0 );
99 }
100
101 void GLAPIENTRY
102 _mesa_Color3d( GLdouble red, GLdouble green, GLdouble blue )
103 {
104 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
105 }
106
107 void GLAPIENTRY
108 _mesa_Color3i( GLint red, GLint green, GLint blue )
109 {
110 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
111 INT_TO_FLOAT(blue), 1.0);
112 }
113
114 void GLAPIENTRY
115 _mesa_Color3s( GLshort red, GLshort green, GLshort blue )
116 {
117 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
118 SHORT_TO_FLOAT(blue), 1.0);
119 }
120
121 void GLAPIENTRY
122 _mesa_Color3ui( GLuint red, GLuint green, GLuint blue )
123 {
124 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
125 UINT_TO_FLOAT(blue), 1.0 );
126 }
127
128 void GLAPIENTRY
129 _mesa_Color3us( GLushort red, GLushort green, GLushort blue )
130 {
131 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
132 USHORT_TO_FLOAT(blue), 1.0 );
133 }
134
135 void GLAPIENTRY
136 _mesa_Color3ub( GLubyte red, GLubyte green, GLubyte blue )
137 {
138 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
139 UBYTE_TO_FLOAT(blue), 1.0 );
140 }
141
142
143 void GLAPIENTRY
144 _mesa_Color3bv( const GLbyte *v )
145 {
146 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
147 BYTE_TO_FLOAT(v[2]), 1.0 );
148 }
149
150 void GLAPIENTRY
151 _mesa_Color3dv( const GLdouble *v )
152 {
153 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
154 }
155
156 void GLAPIENTRY
157 _mesa_Color3iv( const GLint *v )
158 {
159 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
160 INT_TO_FLOAT(v[2]), 1.0 );
161 }
162
163 void GLAPIENTRY
164 _mesa_Color3sv( const GLshort *v )
165 {
166 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
167 SHORT_TO_FLOAT(v[2]), 1.0 );
168 }
169
170 void GLAPIENTRY
171 _mesa_Color3uiv( const GLuint *v )
172 {
173 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
174 UINT_TO_FLOAT(v[2]), 1.0 );
175 }
176
177 void GLAPIENTRY
178 _mesa_Color3usv( const GLushort *v )
179 {
180 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
181 USHORT_TO_FLOAT(v[2]), 1.0 );
182 }
183
184 void GLAPIENTRY
185 _mesa_Color3ubv( const GLubyte *v )
186 {
187 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
188 UBYTE_TO_FLOAT(v[2]), 1.0 );
189 }
190
191
192 void GLAPIENTRY
193 _mesa_Color4b( GLbyte red, GLbyte green, GLbyte blue,
194 GLbyte alpha )
195 {
196 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
197 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
198 }
199
200 void GLAPIENTRY
201 _mesa_Color4d( GLdouble red, GLdouble green, GLdouble blue,
202 GLdouble alpha )
203 {
204 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
205 }
206
207 void GLAPIENTRY
208 _mesa_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
209 {
210 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
211 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
212 }
213
214 void GLAPIENTRY
215 _mesa_Color4s( GLshort red, GLshort green, GLshort blue,
216 GLshort alpha )
217 {
218 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
219 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
220 }
221
222 void GLAPIENTRY
223 _mesa_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
224 {
225 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
226 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
227 }
228
229 void GLAPIENTRY
230 _mesa_Color4us( GLushort red, GLushort green, GLushort blue, GLushort alpha )
231 {
232 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
233 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
234 }
235
236 void GLAPIENTRY
237 _mesa_Color4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
238 {
239 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
240 UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) );
241 }
242
243
244 void GLAPIENTRY
245 _mesa_Color4iv( const GLint *v )
246 {
247 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
248 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
249 }
250
251
252 void GLAPIENTRY
253 _mesa_Color4bv( const GLbyte *v )
254 {
255 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
256 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
257 }
258
259 void GLAPIENTRY
260 _mesa_Color4dv( const GLdouble *v )
261 {
262 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
263 }
264
265
266 void GLAPIENTRY
267 _mesa_Color4sv( const GLshort *v)
268 {
269 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
270 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
271 }
272
273
274 void GLAPIENTRY
275 _mesa_Color4uiv( const GLuint *v)
276 {
277 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
278 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
279 }
280
281 void GLAPIENTRY
282 _mesa_Color4usv( const GLushort *v)
283 {
284 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
285 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
286 }
287
288 void GLAPIENTRY
289 _mesa_Color4ubv( const GLubyte *v)
290 {
291 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
292 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) );
293 }
294
295
296 void GLAPIENTRY
297 _mesa_FogCoordd( GLdouble d )
298 {
299 FOGCOORDF( (GLfloat) d );
300 }
301
302 void GLAPIENTRY
303 _mesa_FogCoorddv( const GLdouble *v )
304 {
305 FOGCOORDF( (GLfloat) *v );
306 }
307
308
309 void GLAPIENTRY
310 _mesa_Indexd( GLdouble c )
311 {
312 INDEX( (GLfloat) c );
313 }
314
315 void GLAPIENTRY
316 _mesa_Indexi( GLint c )
317 {
318 INDEX( (GLfloat) c );
319 }
320
321 void GLAPIENTRY
322 _mesa_Indexs( GLshort c )
323 {
324 INDEX( (GLfloat) c );
325 }
326
327 void GLAPIENTRY
328 _mesa_Indexub( GLubyte c )
329 {
330 INDEX( (GLfloat) c );
331 }
332
333 void GLAPIENTRY
334 _mesa_Indexdv( const GLdouble *c )
335 {
336 INDEX( (GLfloat) *c );
337 }
338
339 void GLAPIENTRY
340 _mesa_Indexiv( const GLint *c )
341 {
342 INDEX( (GLfloat) *c );
343 }
344
345 void GLAPIENTRY
346 _mesa_Indexsv( const GLshort *c )
347 {
348 INDEX( (GLfloat) *c );
349 }
350
351 void GLAPIENTRY
352 _mesa_Indexubv( const GLubyte *c )
353 {
354 INDEX( (GLfloat) *c );
355 }
356
357
358 void GLAPIENTRY
359 _mesa_EdgeFlagv(const GLboolean *flag)
360 {
361 CALL_EdgeFlag(GET_DISPATCH(), (*flag));
362 }
363
364
365 void GLAPIENTRY
366 _mesa_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
367 {
368 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
369 }
370
371 void GLAPIENTRY
372 _mesa_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
373 {
374 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
375 }
376
377 void GLAPIENTRY
378 _mesa_Normal3i( GLint nx, GLint ny, GLint nz )
379 {
380 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
381 }
382
383 void GLAPIENTRY
384 _mesa_Normal3s( GLshort nx, GLshort ny, GLshort nz )
385 {
386 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
387 }
388
389 void GLAPIENTRY
390 _mesa_Normal3bv( const GLbyte *v )
391 {
392 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
393 }
394
395 void GLAPIENTRY
396 _mesa_Normal3dv( const GLdouble *v )
397 {
398 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
399 }
400
401 void GLAPIENTRY
402 _mesa_Normal3iv( const GLint *v )
403 {
404 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
405 }
406
407 void GLAPIENTRY
408 _mesa_Normal3sv( const GLshort *v )
409 {
410 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
411 }
412
413 void GLAPIENTRY
414 _mesa_TexCoord1d( GLdouble s )
415 {
416 TEXCOORD1((GLfloat) s);
417 }
418
419 void GLAPIENTRY
420 _mesa_TexCoord1i( GLint s )
421 {
422 TEXCOORD1((GLfloat) s);
423 }
424
425 void GLAPIENTRY
426 _mesa_TexCoord1s( GLshort s )
427 {
428 TEXCOORD1((GLfloat) s);
429 }
430
431 void GLAPIENTRY
432 _mesa_TexCoord2d( GLdouble s, GLdouble t )
433 {
434 TEXCOORD2((GLfloat) s,(GLfloat) t);
435 }
436
437 void GLAPIENTRY
438 _mesa_TexCoord2s( GLshort s, GLshort t )
439 {
440 TEXCOORD2((GLfloat) s,(GLfloat) t);
441 }
442
443 void GLAPIENTRY
444 _mesa_TexCoord2i( GLint s, GLint t )
445 {
446 TEXCOORD2((GLfloat) s,(GLfloat) t);
447 }
448
449 void GLAPIENTRY
450 _mesa_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
451 {
452 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
453 }
454
455 void GLAPIENTRY
456 _mesa_TexCoord3i( GLint s, GLint t, GLint r )
457 {
458 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
459 }
460
461 void GLAPIENTRY
462 _mesa_TexCoord3s( GLshort s, GLshort t, GLshort r )
463 {
464 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
465 }
466
467 void GLAPIENTRY
468 _mesa_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
469 {
470 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
471 }
472
473 void GLAPIENTRY
474 _mesa_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
475 {
476 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
477 }
478
479 void GLAPIENTRY
480 _mesa_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
481 {
482 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
483 }
484
485 void GLAPIENTRY
486 _mesa_TexCoord1dv( const GLdouble *v )
487 {
488 TEXCOORD1((GLfloat) v[0]);
489 }
490
491 void GLAPIENTRY
492 _mesa_TexCoord1iv( const GLint *v )
493 {
494 TEXCOORD1((GLfloat) v[0]);
495 }
496
497 void GLAPIENTRY
498 _mesa_TexCoord1sv( const GLshort *v )
499 {
500 TEXCOORD1((GLfloat) v[0]);
501 }
502
503 void GLAPIENTRY
504 _mesa_TexCoord2dv( const GLdouble *v )
505 {
506 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
507 }
508
509 void GLAPIENTRY
510 _mesa_TexCoord2iv( const GLint *v )
511 {
512 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
513 }
514
515 void GLAPIENTRY
516 _mesa_TexCoord2sv( const GLshort *v )
517 {
518 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
519 }
520
521 void GLAPIENTRY
522 _mesa_TexCoord3dv( const GLdouble *v )
523 {
524 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
525 }
526
527 void GLAPIENTRY
528 _mesa_TexCoord3iv( const GLint *v )
529 {
530 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
531 }
532
533 void GLAPIENTRY
534 _mesa_TexCoord3sv( const GLshort *v )
535 {
536 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
537 }
538
539 void GLAPIENTRY
540 _mesa_TexCoord4dv( const GLdouble *v )
541 {
542 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
543 }
544
545 void GLAPIENTRY
546 _mesa_TexCoord4iv( const GLint *v )
547 {
548 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
549 }
550
551 void GLAPIENTRY
552 _mesa_TexCoord4sv( const GLshort *v )
553 {
554 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
555 }
556
557 void GLAPIENTRY
558 _mesa_Vertex2d( GLdouble x, GLdouble y )
559 {
560 VERTEX2( (GLfloat) x, (GLfloat) y );
561 }
562
563 void GLAPIENTRY
564 _mesa_Vertex2i( GLint x, GLint y )
565 {
566 VERTEX2( (GLfloat) x, (GLfloat) y );
567 }
568
569 void GLAPIENTRY
570 _mesa_Vertex2s( GLshort x, GLshort y )
571 {
572 VERTEX2( (GLfloat) x, (GLfloat) y );
573 }
574
575 void GLAPIENTRY
576 _mesa_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
577 {
578 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
579 }
580
581 void GLAPIENTRY
582 _mesa_Vertex3i( GLint x, GLint y, GLint z )
583 {
584 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
585 }
586
587 void GLAPIENTRY
588 _mesa_Vertex3s( GLshort x, GLshort y, GLshort z )
589 {
590 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
591 }
592
593 void GLAPIENTRY
594 _mesa_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
595 {
596 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
597 }
598
599 void GLAPIENTRY
600 _mesa_Vertex4i( GLint x, GLint y, GLint z, GLint w )
601 {
602 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
603 }
604
605 void GLAPIENTRY
606 _mesa_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
607 {
608 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
609 }
610
611 void GLAPIENTRY
612 _mesa_Vertex2dv( const GLdouble *v )
613 {
614 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
615 }
616
617 void GLAPIENTRY
618 _mesa_Vertex2iv( const GLint *v )
619 {
620 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
621 }
622
623 void GLAPIENTRY
624 _mesa_Vertex2sv( const GLshort *v )
625 {
626 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
627 }
628
629 void GLAPIENTRY
630 _mesa_Vertex3dv( const GLdouble *v )
631 {
632 if (v[2] == 0.0)
633 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
634 else
635 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
636 }
637
638 void GLAPIENTRY
639 _mesa_Vertex3iv( const GLint *v )
640 {
641 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
642 }
643
644 void GLAPIENTRY
645 _mesa_Vertex3sv( const GLshort *v )
646 {
647 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
648 }
649
650 void GLAPIENTRY
651 _mesa_Vertex4dv( const GLdouble *v )
652 {
653 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
654 (GLfloat) v[2], (GLfloat) v[3] );
655 }
656
657 void GLAPIENTRY
658 _mesa_Vertex4iv( const GLint *v )
659 {
660 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
661 (GLfloat) v[2], (GLfloat) v[3] );
662 }
663
664 void GLAPIENTRY
665 _mesa_Vertex4sv( const GLshort *v )
666 {
667 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
668 (GLfloat) v[2], (GLfloat) v[3] );
669 }
670
671 void GLAPIENTRY
672 _mesa_MultiTexCoord1d(GLenum target, GLdouble s)
673 {
674 MULTI_TEXCOORD1( target, (GLfloat) s );
675 }
676
677 void GLAPIENTRY
678 _mesa_MultiTexCoord1dv(GLenum target, const GLdouble *v)
679 {
680 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
681 }
682
683 void GLAPIENTRY
684 _mesa_MultiTexCoord1i(GLenum target, GLint s)
685 {
686 MULTI_TEXCOORD1( target, (GLfloat) s );
687 }
688
689 void GLAPIENTRY
690 _mesa_MultiTexCoord1iv(GLenum target, const GLint *v)
691 {
692 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
693 }
694
695 void GLAPIENTRY
696 _mesa_MultiTexCoord1s(GLenum target, GLshort s)
697 {
698 MULTI_TEXCOORD1( target, (GLfloat) s );
699 }
700
701 void GLAPIENTRY
702 _mesa_MultiTexCoord1sv(GLenum target, const GLshort *v)
703 {
704 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
705 }
706
707 void GLAPIENTRY
708 _mesa_MultiTexCoord2d(GLenum target, GLdouble s, GLdouble t)
709 {
710 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
711 }
712
713 void GLAPIENTRY
714 _mesa_MultiTexCoord2dv(GLenum target, const GLdouble *v)
715 {
716 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
717 }
718
719 void GLAPIENTRY
720 _mesa_MultiTexCoord2i(GLenum target, GLint s, GLint t)
721 {
722 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
723 }
724
725 void GLAPIENTRY
726 _mesa_MultiTexCoord2iv(GLenum target, const GLint *v)
727 {
728 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
729 }
730
731 void GLAPIENTRY
732 _mesa_MultiTexCoord2s(GLenum target, GLshort s, GLshort t)
733 {
734 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
735 }
736
737 void GLAPIENTRY
738 _mesa_MultiTexCoord2sv(GLenum target, const GLshort *v)
739 {
740 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
741 }
742
743 void GLAPIENTRY
744 _mesa_MultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r)
745 {
746 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
747 }
748
749 void GLAPIENTRY
750 _mesa_MultiTexCoord3dv(GLenum target, const GLdouble *v)
751 {
752 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
753 }
754
755 void GLAPIENTRY
756 _mesa_MultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r)
757 {
758 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
759 }
760
761 void GLAPIENTRY
762 _mesa_MultiTexCoord3iv(GLenum target, const GLint *v)
763 {
764 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
765 }
766
767 void GLAPIENTRY
768 _mesa_MultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r)
769 {
770 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
771 }
772
773 void GLAPIENTRY
774 _mesa_MultiTexCoord3sv(GLenum target, const GLshort *v)
775 {
776 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
777 }
778
779 void GLAPIENTRY
780 _mesa_MultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
781 {
782 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
783 (GLfloat) r, (GLfloat) q );
784 }
785
786 void GLAPIENTRY
787 _mesa_MultiTexCoord4dv(GLenum target, const GLdouble *v)
788 {
789 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
790 (GLfloat) v[2], (GLfloat) v[3] );
791 }
792
793 void GLAPIENTRY
794 _mesa_MultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q)
795 {
796 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
797 (GLfloat) r, (GLfloat) q );
798 }
799
800 void GLAPIENTRY
801 _mesa_MultiTexCoord4iv(GLenum target, const GLint *v)
802 {
803 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
804 (GLfloat) v[2], (GLfloat) v[3] );
805 }
806
807 void GLAPIENTRY
808 _mesa_MultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
809 {
810 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
811 (GLfloat) r, (GLfloat) q );
812 }
813
814 void GLAPIENTRY
815 _mesa_MultiTexCoord4sv(GLenum target, const GLshort *v)
816 {
817 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
818 (GLfloat) v[2], (GLfloat) v[3] );
819 }
820
821 void GLAPIENTRY
822 _mesa_EvalCoord2dv( const GLdouble *u )
823 {
824 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
825 }
826
827 void GLAPIENTRY
828 _mesa_EvalCoord2fv( const GLfloat *u )
829 {
830 EVALCOORD2( u[0], u[1] );
831 }
832
833 void GLAPIENTRY
834 _mesa_EvalCoord2d( GLdouble u, GLdouble v )
835 {
836 EVALCOORD2( (GLfloat) u, (GLfloat) v );
837 }
838
839 void GLAPIENTRY
840 _mesa_EvalCoord1dv( const GLdouble *u )
841 {
842 EVALCOORD1( (GLfloat) *u );
843 }
844
845 void GLAPIENTRY
846 _mesa_EvalCoord1fv( const GLfloat *u )
847 {
848 EVALCOORD1( (GLfloat) *u );
849 }
850
851 void GLAPIENTRY
852 _mesa_EvalCoord1d( GLdouble u )
853 {
854 EVALCOORD1( (GLfloat) u );
855 }
856
857 void GLAPIENTRY
858 _mesa_Materialf( GLenum face, GLenum pname, GLfloat param )
859 {
860 GLfloat fparam[4];
861 fparam[0] = param;
862 MATERIALFV( face, pname, fparam );
863 }
864
865 void GLAPIENTRY
866 _mesa_Materiali(GLenum face, GLenum pname, GLint param )
867 {
868 GLfloat p = (GLfloat) param;
869 MATERIALFV(face, pname, &p);
870 }
871
872 void GLAPIENTRY
873 _mesa_Materialiv(GLenum face, GLenum pname, const GLint *params )
874 {
875 GLfloat fparam[4];
876 switch (pname) {
877 case GL_AMBIENT:
878 case GL_DIFFUSE:
879 case GL_SPECULAR:
880 case GL_EMISSION:
881 case GL_AMBIENT_AND_DIFFUSE:
882 fparam[0] = INT_TO_FLOAT( params[0] );
883 fparam[1] = INT_TO_FLOAT( params[1] );
884 fparam[2] = INT_TO_FLOAT( params[2] );
885 fparam[3] = INT_TO_FLOAT( params[3] );
886 break;
887 case GL_SHININESS:
888 fparam[0] = (GLfloat) params[0];
889 break;
890 case GL_COLOR_INDEXES:
891 fparam[0] = (GLfloat) params[0];
892 fparam[1] = (GLfloat) params[1];
893 fparam[2] = (GLfloat) params[2];
894 break;
895 default:
896 ;
897 }
898 MATERIALFV(face, pname, fparam);
899 }
900
901
902 void GLAPIENTRY
903 _mesa_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
904 {
905 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
906 }
907
908 void GLAPIENTRY
909 _mesa_Rectdv(const GLdouble *v1, const GLdouble *v2)
910 {
911 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
912 }
913
914 void GLAPIENTRY
915 _mesa_Rectfv(const GLfloat *v1, const GLfloat *v2)
916 {
917 RECTF(v1[0], v1[1], v2[0], v2[1]);
918 }
919
920 void GLAPIENTRY
921 _mesa_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
922 {
923 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
924 }
925
926 void GLAPIENTRY
927 _mesa_Rectiv(const GLint *v1, const GLint *v2)
928 {
929 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
930 }
931
932 void GLAPIENTRY
933 _mesa_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
934 {
935 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
936 }
937
938 void GLAPIENTRY
939 _mesa_Rectsv(const GLshort *v1, const GLshort *v2)
940 {
941 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
942 }
943
944 void GLAPIENTRY
945 _mesa_SecondaryColor3b( GLbyte red, GLbyte green, GLbyte blue )
946 {
947 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
948 BYTE_TO_FLOAT(green),
949 BYTE_TO_FLOAT(blue) );
950 }
951
952 void GLAPIENTRY
953 _mesa_SecondaryColor3d( GLdouble red, GLdouble green, GLdouble blue )
954 {
955 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
956 }
957
958 void GLAPIENTRY
959 _mesa_SecondaryColor3i( GLint red, GLint green, GLint blue )
960 {
961 SECONDARYCOLORF( INT_TO_FLOAT(red),
962 INT_TO_FLOAT(green),
963 INT_TO_FLOAT(blue));
964 }
965
966 void GLAPIENTRY
967 _mesa_SecondaryColor3s( GLshort red, GLshort green, GLshort blue )
968 {
969 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
970 SHORT_TO_FLOAT(green),
971 SHORT_TO_FLOAT(blue));
972 }
973
974 void GLAPIENTRY
975 _mesa_SecondaryColor3ui( GLuint red, GLuint green, GLuint blue )
976 {
977 SECONDARYCOLORF(UINT_TO_FLOAT(red),
978 UINT_TO_FLOAT(green),
979 UINT_TO_FLOAT(blue));
980 }
981
982 void GLAPIENTRY
983 _mesa_SecondaryColor3us( GLushort red, GLushort green, GLushort blue )
984 {
985 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
986 USHORT_TO_FLOAT(green),
987 USHORT_TO_FLOAT(blue));
988 }
989
990 void GLAPIENTRY
991 _mesa_SecondaryColor3ub( GLubyte red, GLubyte green, GLubyte blue )
992 {
993 SECONDARYCOLORF(UBYTE_TO_FLOAT(red),
994 UBYTE_TO_FLOAT(green),
995 UBYTE_TO_FLOAT(blue));
996 }
997
998 void GLAPIENTRY
999 _mesa_SecondaryColor3bv( const GLbyte *v )
1000 {
1001 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1002 BYTE_TO_FLOAT(v[1]),
1003 BYTE_TO_FLOAT(v[2]));
1004 }
1005
1006 void GLAPIENTRY
1007 _mesa_SecondaryColor3dv( const GLdouble *v )
1008 {
1009 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
1010 }
1011 void GLAPIENTRY
1012 _mesa_SecondaryColor3iv( const GLint *v )
1013 {
1014 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1015 INT_TO_FLOAT(v[1]),
1016 INT_TO_FLOAT(v[2]));
1017 }
1018
1019 void GLAPIENTRY
1020 _mesa_SecondaryColor3sv( const GLshort *v )
1021 {
1022 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1023 SHORT_TO_FLOAT(v[1]),
1024 SHORT_TO_FLOAT(v[2]));
1025 }
1026
1027 void GLAPIENTRY
1028 _mesa_SecondaryColor3uiv( const GLuint *v )
1029 {
1030 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1031 UINT_TO_FLOAT(v[1]),
1032 UINT_TO_FLOAT(v[2]));
1033 }
1034
1035 void GLAPIENTRY
1036 _mesa_SecondaryColor3usv( const GLushort *v )
1037 {
1038 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1039 USHORT_TO_FLOAT(v[1]),
1040 USHORT_TO_FLOAT(v[2]));
1041 }
1042
1043 void GLAPIENTRY
1044 _mesa_SecondaryColor3ubv( const GLubyte *v )
1045 {
1046 SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]),
1047 UBYTE_TO_FLOAT(v[1]),
1048 UBYTE_TO_FLOAT(v[2]));
1049 }
1050
1051
1052 /*
1053 * GL_NV_vertex_program:
1054 * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
1055 * Note that attribute indexes DO alias conventional vertex attributes.
1056 */
1057
1058 void GLAPIENTRY
1059 _mesa_VertexAttrib1sNV(GLuint index, GLshort x)
1060 {
1061 ATTRIB1NV(index, (GLfloat) x);
1062 }
1063
1064 void GLAPIENTRY
1065 _mesa_VertexAttrib1dNV(GLuint index, GLdouble x)
1066 {
1067 ATTRIB1NV(index, (GLfloat) x);
1068 }
1069
1070 void GLAPIENTRY
1071 _mesa_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1072 {
1073 ATTRIB2NV(index, (GLfloat) x, y);
1074 }
1075
1076 void GLAPIENTRY
1077 _mesa_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1078 {
1079 ATTRIB2NV(index, (GLfloat) x, (GLfloat) y);
1080 }
1081
1082 void GLAPIENTRY
1083 _mesa_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1084 {
1085 ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1086 }
1087
1088 void GLAPIENTRY
1089 _mesa_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1090 {
1091 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1092 }
1093
1094 void GLAPIENTRY
1095 _mesa_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1096 {
1097 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1098 }
1099
1100 void GLAPIENTRY
1101 _mesa_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1102 {
1103 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1104 }
1105
1106 void GLAPIENTRY
1107 _mesa_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1108 {
1109 ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1110 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1111 }
1112
1113 void GLAPIENTRY
1114 _mesa_VertexAttrib1svNV(GLuint index, const GLshort *v)
1115 {
1116 ATTRIB1NV(index, (GLfloat) v[0]);
1117 }
1118
1119 void GLAPIENTRY
1120 _mesa_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1121 {
1122 ATTRIB1NV(index, (GLfloat) v[0]);
1123 }
1124
1125 void GLAPIENTRY
1126 _mesa_VertexAttrib2svNV(GLuint index, const GLshort *v)
1127 {
1128 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1129 }
1130
1131 void GLAPIENTRY
1132 _mesa_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1133 {
1134 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1135 }
1136
1137 void GLAPIENTRY
1138 _mesa_VertexAttrib3svNV(GLuint index, const GLshort *v)
1139 {
1140 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1141 }
1142
1143 void GLAPIENTRY
1144 _mesa_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1145 {
1146 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1147 }
1148
1149 void GLAPIENTRY
1150 _mesa_VertexAttrib4svNV(GLuint index, const GLshort *v)
1151 {
1152 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1153 (GLfloat)v[3]);
1154 }
1155
1156 void GLAPIENTRY
1157 _mesa_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1158 {
1159 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1160 }
1161
1162 void GLAPIENTRY
1163 _mesa_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1164 {
1165 ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1166 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1167 }
1168
1169
1170 void GLAPIENTRY
1171 _mesa_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1172 {
1173 GLint i;
1174 for (i = n - 1; i >= 0; i--)
1175 _mesa_VertexAttrib1svNV(index + i, v + i);
1176 }
1177
1178 void GLAPIENTRY
1179 _mesa_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1180 {
1181 GLint i;
1182 for (i = n - 1; i >= 0; i--)
1183 ATTRIB1NV(index + i, v[i]);
1184 }
1185
1186 void GLAPIENTRY
1187 _mesa_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1188 {
1189 GLint i;
1190 for (i = n - 1; i >= 0; i--)
1191 _mesa_VertexAttrib1dvNV(index + i, v + i);
1192 }
1193
1194 void GLAPIENTRY
1195 _mesa_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1196 {
1197 GLint i;
1198 for (i = n - 1; i >= 0; i--)
1199 _mesa_VertexAttrib2svNV(index + i, v + 2 * i);
1200 }
1201
1202 void GLAPIENTRY
1203 _mesa_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1204 {
1205 GLint i;
1206 for (i = n - 1; i >= 0; i--)
1207 ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]);
1208 }
1209
1210 void GLAPIENTRY
1211 _mesa_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1212 {
1213 GLint i;
1214 for (i = n - 1; i >= 0; i--)
1215 _mesa_VertexAttrib2dvNV(index + i, v + 2 * i);
1216 }
1217
1218 void GLAPIENTRY
1219 _mesa_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1220 {
1221 GLint i;
1222 for (i = n - 1; i >= 0; i--)
1223 _mesa_VertexAttrib3svNV(index + i, v + 3 * i);
1224 }
1225
1226 void GLAPIENTRY
1227 _mesa_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1228 {
1229 GLint i;
1230 for (i = n - 1; i >= 0; i--)
1231 ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1232 }
1233
1234 void GLAPIENTRY
1235 _mesa_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1236 {
1237 GLint i;
1238 for (i = n - 1; i >= 0; i--)
1239 _mesa_VertexAttrib3dvNV(index + i, v + 3 * i);
1240 }
1241
1242 void GLAPIENTRY
1243 _mesa_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1244 {
1245 GLint i;
1246 for (i = n - 1; i >= 0; i--)
1247 _mesa_VertexAttrib4svNV(index + i, v + 4 * i);
1248 }
1249
1250 void GLAPIENTRY
1251 _mesa_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1252 {
1253 GLint i;
1254 for (i = n - 1; i >= 0; i--)
1255 ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1256 }
1257
1258 void GLAPIENTRY
1259 _mesa_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1260 {
1261 GLint i;
1262 for (i = n - 1; i >= 0; i--)
1263 _mesa_VertexAttrib4dvNV(index + i, v + 4 * i);
1264 }
1265
1266 void GLAPIENTRY
1267 _mesa_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1268 {
1269 GLint i;
1270 for (i = n - 1; i >= 0; i--)
1271 _mesa_VertexAttrib4ubvNV(index + i, v + 4 * i);
1272 }
1273
1274
1275 /*
1276 * GL_ARB_vertex_program
1277 * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
1278 * Note that attribute indexes do NOT alias conventional attributes.
1279 */
1280
1281 void GLAPIENTRY
1282 _mesa_VertexAttrib1s(GLuint index, GLshort x)
1283 {
1284 ATTRIB1ARB(index, (GLfloat) x);
1285 }
1286
1287 void GLAPIENTRY
1288 _mesa_VertexAttrib1d(GLuint index, GLdouble x)
1289 {
1290 ATTRIB1ARB(index, (GLfloat) x);
1291 }
1292
1293 void GLAPIENTRY
1294 _mesa_VertexAttrib2s(GLuint index, GLshort x, GLshort y)
1295 {
1296 ATTRIB2ARB(index, (GLfloat) x, y);
1297 }
1298
1299 void GLAPIENTRY
1300 _mesa_VertexAttrib2d(GLuint index, GLdouble x, GLdouble y)
1301 {
1302 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
1303 }
1304
1305 void GLAPIENTRY
1306 _mesa_VertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z)
1307 {
1308 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1309 }
1310
1311 void GLAPIENTRY
1312 _mesa_VertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1313 {
1314 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1315 }
1316
1317 void GLAPIENTRY
1318 _mesa_VertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1319 {
1320 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1321 }
1322
1323 void GLAPIENTRY
1324 _mesa_VertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1325 {
1326 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1327 }
1328
1329 void GLAPIENTRY
1330 _mesa_VertexAttrib1sv(GLuint index, const GLshort *v)
1331 {
1332 ATTRIB1ARB(index, (GLfloat) v[0]);
1333 }
1334
1335 void GLAPIENTRY
1336 _mesa_VertexAttrib1dv(GLuint index, const GLdouble *v)
1337 {
1338 ATTRIB1ARB(index, (GLfloat) v[0]);
1339 }
1340
1341 void GLAPIENTRY
1342 _mesa_VertexAttrib2sv(GLuint index, const GLshort *v)
1343 {
1344 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1345 }
1346
1347 void GLAPIENTRY
1348 _mesa_VertexAttrib2dv(GLuint index, const GLdouble *v)
1349 {
1350 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1351 }
1352
1353 void GLAPIENTRY
1354 _mesa_VertexAttrib3sv(GLuint index, const GLshort *v)
1355 {
1356 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1357 }
1358
1359 void GLAPIENTRY
1360 _mesa_VertexAttrib3dv(GLuint index, const GLdouble *v)
1361 {
1362 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1363 }
1364
1365 void GLAPIENTRY
1366 _mesa_VertexAttrib4sv(GLuint index, const GLshort *v)
1367 {
1368 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1369 (GLfloat)v[3]);
1370 }
1371
1372 void GLAPIENTRY
1373 _mesa_VertexAttrib4dv(GLuint index, const GLdouble *v)
1374 {
1375 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1376 }
1377
1378 void GLAPIENTRY
1379 _mesa_VertexAttrib4bv(GLuint index, const GLbyte * v)
1380 {
1381 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1382 }
1383
1384 void GLAPIENTRY
1385 _mesa_VertexAttrib4iv(GLuint index, const GLint * v)
1386 {
1387 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1388 }
1389
1390 void GLAPIENTRY
1391 _mesa_VertexAttrib4ubv(GLuint index, const GLubyte * v)
1392 {
1393 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1394 }
1395
1396 void GLAPIENTRY
1397 _mesa_VertexAttrib4usv(GLuint index, const GLushort * v)
1398 {
1399 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1400 }
1401
1402 void GLAPIENTRY
1403 _mesa_VertexAttrib4uiv(GLuint index, const GLuint * v)
1404 {
1405 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1406 }
1407
1408 void GLAPIENTRY
1409 _mesa_VertexAttrib4Nbv(GLuint index, const GLbyte * v)
1410 {
1411 ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
1412 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1413 }
1414
1415 void GLAPIENTRY
1416 _mesa_VertexAttrib4Nsv(GLuint index, const GLshort * v)
1417 {
1418 ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
1419 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1420 }
1421
1422 void GLAPIENTRY
1423 _mesa_VertexAttrib4Niv(GLuint index, const GLint * v)
1424 {
1425 ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
1426 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1427 }
1428
1429 void GLAPIENTRY
1430 _mesa_VertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1431 {
1432 ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1433 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1434 }
1435
1436 void GLAPIENTRY
1437 _mesa_VertexAttrib4Nubv(GLuint index, const GLubyte * v)
1438 {
1439 ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1440 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1441 }
1442
1443 void GLAPIENTRY
1444 _mesa_VertexAttrib4Nusv(GLuint index, const GLushort * v)
1445 {
1446 ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
1447 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1448 }
1449
1450 void GLAPIENTRY
1451 _mesa_VertexAttrib4Nuiv(GLuint index, const GLuint * v)
1452 {
1453 ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
1454 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1455 }
1456
1457
1458
1459 /**
1460 * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
1461 * Note that attribute indexes do NOT alias conventional attributes.
1462 */
1463
1464 void GLAPIENTRY
1465 _mesa_VertexAttribI1iv(GLuint index, const GLint *v)
1466 {
1467 ATTRIBI_1I(index, v[0]);
1468 }
1469
1470 void GLAPIENTRY
1471 _mesa_VertexAttribI1uiv(GLuint index, const GLuint *v)
1472 {
1473 ATTRIBI_1UI(index, v[0]);
1474 }
1475
1476 void GLAPIENTRY
1477 _mesa_VertexAttribI4bv(GLuint index, const GLbyte *v)
1478 {
1479 ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
1480 }
1481
1482 void GLAPIENTRY
1483 _mesa_VertexAttribI4sv(GLuint index, const GLshort *v)
1484 {
1485 ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
1486 }
1487
1488 void GLAPIENTRY
1489 _mesa_VertexAttribI4ubv(GLuint index, const GLubyte *v)
1490 {
1491 ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
1492 }
1493
1494 void GLAPIENTRY
1495 _mesa_VertexAttribI4usv(GLuint index, const GLushort *v)
1496 {
1497 ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
1498 }
1499
1500 void GLAPIENTRY
1501 _mesa_VertexAttribL1d(GLuint index, GLdouble x)
1502 {
1503 ATTRIB1_D(index, x);
1504 }
1505
1506 void GLAPIENTRY
1507 _mesa_VertexAttribL2d(GLuint index, GLdouble x, GLdouble y)
1508 {
1509 ATTRIB2_D(index, x, y);
1510 }
1511
1512 void GLAPIENTRY
1513 _mesa_VertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1514 {
1515 ATTRIB3_D(index, x, y, z);
1516 }
1517
1518 void GLAPIENTRY
1519 _mesa_VertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1520 {
1521 ATTRIB4_D(index, x, y, z, w);
1522 }
1523
1524 void GLAPIENTRY
1525 _mesa_VertexAttribL1dv(GLuint index, const GLdouble *v)
1526 {
1527 ATTRIB1_D(index, v[0]);
1528 }
1529
1530 void GLAPIENTRY
1531 _mesa_VertexAttribL2dv(GLuint index, const GLdouble *v)
1532 {
1533 ATTRIB2_D(index, v[0], v[1]);
1534 }
1535
1536 void GLAPIENTRY
1537 _mesa_VertexAttribL3dv(GLuint index, const GLdouble *v)
1538 {
1539 ATTRIB3_D(index, v[0], v[1], v[2]);
1540 }
1541
1542 void GLAPIENTRY
1543 _mesa_VertexAttribL4dv(GLuint index, const GLdouble *v)
1544 {
1545 ATTRIB4_D(index, v[0], v[1], v[2], v[3]);
1546 }
1547
1548 /*
1549 * This code never registers handlers for any of the entry points
1550 * listed in vtxfmt.h.
1551 */
1552 void
1553 _mesa_loopback_init_api_table(const struct gl_context *ctx,
1554 struct _glapi_table *dest)
1555 {
1556 if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
1557 SET_Color4ub(dest, _mesa_Color4ub);
1558 SET_Materialf(dest, _mesa_Materialf);
1559 }
1560 if (ctx->API == API_OPENGL_COMPAT) {
1561 SET_Color3b(dest, _mesa_Color3b);
1562 SET_Color3d(dest, _mesa_Color3d);
1563 SET_Color3i(dest, _mesa_Color3i);
1564 SET_Color3s(dest, _mesa_Color3s);
1565 SET_Color3ui(dest, _mesa_Color3ui);
1566 SET_Color3us(dest, _mesa_Color3us);
1567 SET_Color3ub(dest, _mesa_Color3ub);
1568 SET_Color4b(dest, _mesa_Color4b);
1569 SET_Color4d(dest, _mesa_Color4d);
1570 SET_Color4i(dest, _mesa_Color4i);
1571 SET_Color4s(dest, _mesa_Color4s);
1572 SET_Color4ui(dest, _mesa_Color4ui);
1573 SET_Color4us(dest, _mesa_Color4us);
1574 SET_Color3bv(dest, _mesa_Color3bv);
1575 SET_Color3dv(dest, _mesa_Color3dv);
1576 SET_Color3iv(dest, _mesa_Color3iv);
1577 SET_Color3sv(dest, _mesa_Color3sv);
1578 SET_Color3uiv(dest, _mesa_Color3uiv);
1579 SET_Color3usv(dest, _mesa_Color3usv);
1580 SET_Color3ubv(dest, _mesa_Color3ubv);
1581 SET_Color4bv(dest, _mesa_Color4bv);
1582 SET_Color4dv(dest, _mesa_Color4dv);
1583 SET_Color4iv(dest, _mesa_Color4iv);
1584 SET_Color4sv(dest, _mesa_Color4sv);
1585 SET_Color4uiv(dest, _mesa_Color4uiv);
1586 SET_Color4usv(dest, _mesa_Color4usv);
1587 SET_Color4ubv(dest, _mesa_Color4ubv);
1588
1589 SET_SecondaryColor3b(dest, _mesa_SecondaryColor3b);
1590 SET_SecondaryColor3d(dest, _mesa_SecondaryColor3d);
1591 SET_SecondaryColor3i(dest, _mesa_SecondaryColor3i);
1592 SET_SecondaryColor3s(dest, _mesa_SecondaryColor3s);
1593 SET_SecondaryColor3ui(dest, _mesa_SecondaryColor3ui);
1594 SET_SecondaryColor3us(dest, _mesa_SecondaryColor3us);
1595 SET_SecondaryColor3ub(dest, _mesa_SecondaryColor3ub);
1596 SET_SecondaryColor3bv(dest, _mesa_SecondaryColor3bv);
1597 SET_SecondaryColor3dv(dest, _mesa_SecondaryColor3dv);
1598 SET_SecondaryColor3iv(dest, _mesa_SecondaryColor3iv);
1599 SET_SecondaryColor3sv(dest, _mesa_SecondaryColor3sv);
1600 SET_SecondaryColor3uiv(dest, _mesa_SecondaryColor3uiv);
1601 SET_SecondaryColor3usv(dest, _mesa_SecondaryColor3usv);
1602 SET_SecondaryColor3ubv(dest, _mesa_SecondaryColor3ubv);
1603
1604 SET_EdgeFlagv(dest, _mesa_EdgeFlagv);
1605
1606 SET_Indexd(dest, _mesa_Indexd);
1607 SET_Indexi(dest, _mesa_Indexi);
1608 SET_Indexs(dest, _mesa_Indexs);
1609 SET_Indexub(dest, _mesa_Indexub);
1610 SET_Indexdv(dest, _mesa_Indexdv);
1611 SET_Indexiv(dest, _mesa_Indexiv);
1612 SET_Indexsv(dest, _mesa_Indexsv);
1613 SET_Indexubv(dest, _mesa_Indexubv);
1614 SET_Normal3b(dest, _mesa_Normal3b);
1615 SET_Normal3d(dest, _mesa_Normal3d);
1616 SET_Normal3i(dest, _mesa_Normal3i);
1617 SET_Normal3s(dest, _mesa_Normal3s);
1618 SET_Normal3bv(dest, _mesa_Normal3bv);
1619 SET_Normal3dv(dest, _mesa_Normal3dv);
1620 SET_Normal3iv(dest, _mesa_Normal3iv);
1621 SET_Normal3sv(dest, _mesa_Normal3sv);
1622 SET_TexCoord1d(dest, _mesa_TexCoord1d);
1623 SET_TexCoord1i(dest, _mesa_TexCoord1i);
1624 SET_TexCoord1s(dest, _mesa_TexCoord1s);
1625 SET_TexCoord2d(dest, _mesa_TexCoord2d);
1626 SET_TexCoord2s(dest, _mesa_TexCoord2s);
1627 SET_TexCoord2i(dest, _mesa_TexCoord2i);
1628 SET_TexCoord3d(dest, _mesa_TexCoord3d);
1629 SET_TexCoord3i(dest, _mesa_TexCoord3i);
1630 SET_TexCoord3s(dest, _mesa_TexCoord3s);
1631 SET_TexCoord4d(dest, _mesa_TexCoord4d);
1632 SET_TexCoord4i(dest, _mesa_TexCoord4i);
1633 SET_TexCoord4s(dest, _mesa_TexCoord4s);
1634 SET_TexCoord1dv(dest, _mesa_TexCoord1dv);
1635 SET_TexCoord1iv(dest, _mesa_TexCoord1iv);
1636 SET_TexCoord1sv(dest, _mesa_TexCoord1sv);
1637 SET_TexCoord2dv(dest, _mesa_TexCoord2dv);
1638 SET_TexCoord2iv(dest, _mesa_TexCoord2iv);
1639 SET_TexCoord2sv(dest, _mesa_TexCoord2sv);
1640 SET_TexCoord3dv(dest, _mesa_TexCoord3dv);
1641 SET_TexCoord3iv(dest, _mesa_TexCoord3iv);
1642 SET_TexCoord3sv(dest, _mesa_TexCoord3sv);
1643 SET_TexCoord4dv(dest, _mesa_TexCoord4dv);
1644 SET_TexCoord4iv(dest, _mesa_TexCoord4iv);
1645 SET_TexCoord4sv(dest, _mesa_TexCoord4sv);
1646 SET_Vertex2d(dest, _mesa_Vertex2d);
1647 SET_Vertex2i(dest, _mesa_Vertex2i);
1648 SET_Vertex2s(dest, _mesa_Vertex2s);
1649 SET_Vertex3d(dest, _mesa_Vertex3d);
1650 SET_Vertex3i(dest, _mesa_Vertex3i);
1651 SET_Vertex3s(dest, _mesa_Vertex3s);
1652 SET_Vertex4d(dest, _mesa_Vertex4d);
1653 SET_Vertex4i(dest, _mesa_Vertex4i);
1654 SET_Vertex4s(dest, _mesa_Vertex4s);
1655 SET_Vertex2dv(dest, _mesa_Vertex2dv);
1656 SET_Vertex2iv(dest, _mesa_Vertex2iv);
1657 SET_Vertex2sv(dest, _mesa_Vertex2sv);
1658 SET_Vertex3dv(dest, _mesa_Vertex3dv);
1659 SET_Vertex3iv(dest, _mesa_Vertex3iv);
1660 SET_Vertex3sv(dest, _mesa_Vertex3sv);
1661 SET_Vertex4dv(dest, _mesa_Vertex4dv);
1662 SET_Vertex4iv(dest, _mesa_Vertex4iv);
1663 SET_Vertex4sv(dest, _mesa_Vertex4sv);
1664 SET_MultiTexCoord1d(dest, _mesa_MultiTexCoord1d);
1665 SET_MultiTexCoord1dv(dest, _mesa_MultiTexCoord1dv);
1666 SET_MultiTexCoord1i(dest, _mesa_MultiTexCoord1i);
1667 SET_MultiTexCoord1iv(dest, _mesa_MultiTexCoord1iv);
1668 SET_MultiTexCoord1s(dest, _mesa_MultiTexCoord1s);
1669 SET_MultiTexCoord1sv(dest, _mesa_MultiTexCoord1sv);
1670 SET_MultiTexCoord2d(dest, _mesa_MultiTexCoord2d);
1671 SET_MultiTexCoord2dv(dest, _mesa_MultiTexCoord2dv);
1672 SET_MultiTexCoord2i(dest, _mesa_MultiTexCoord2i);
1673 SET_MultiTexCoord2iv(dest, _mesa_MultiTexCoord2iv);
1674 SET_MultiTexCoord2s(dest, _mesa_MultiTexCoord2s);
1675 SET_MultiTexCoord2sv(dest, _mesa_MultiTexCoord2sv);
1676 SET_MultiTexCoord3d(dest, _mesa_MultiTexCoord3d);
1677 SET_MultiTexCoord3dv(dest, _mesa_MultiTexCoord3dv);
1678 SET_MultiTexCoord3i(dest, _mesa_MultiTexCoord3i);
1679 SET_MultiTexCoord3iv(dest, _mesa_MultiTexCoord3iv);
1680 SET_MultiTexCoord3s(dest, _mesa_MultiTexCoord3s);
1681 SET_MultiTexCoord3sv(dest, _mesa_MultiTexCoord3sv);
1682 SET_MultiTexCoord4d(dest, _mesa_MultiTexCoord4d);
1683 SET_MultiTexCoord4dv(dest, _mesa_MultiTexCoord4dv);
1684 SET_MultiTexCoord4i(dest, _mesa_MultiTexCoord4i);
1685 SET_MultiTexCoord4iv(dest, _mesa_MultiTexCoord4iv);
1686 SET_MultiTexCoord4s(dest, _mesa_MultiTexCoord4s);
1687 SET_MultiTexCoord4sv(dest, _mesa_MultiTexCoord4sv);
1688 SET_EvalCoord2dv(dest, _mesa_EvalCoord2dv);
1689 SET_EvalCoord2fv(dest, _mesa_EvalCoord2fv);
1690 SET_EvalCoord2d(dest, _mesa_EvalCoord2d);
1691 SET_EvalCoord1dv(dest, _mesa_EvalCoord1dv);
1692 SET_EvalCoord1fv(dest, _mesa_EvalCoord1fv);
1693 SET_EvalCoord1d(dest, _mesa_EvalCoord1d);
1694 SET_Materiali(dest, _mesa_Materiali);
1695 SET_Materialiv(dest, _mesa_Materialiv);
1696 SET_Rectd(dest, _mesa_Rectd);
1697 SET_Rectdv(dest, _mesa_Rectdv);
1698 SET_Rectfv(dest, _mesa_Rectfv);
1699 SET_Recti(dest, _mesa_Recti);
1700 SET_Rectiv(dest, _mesa_Rectiv);
1701 SET_Rects(dest, _mesa_Rects);
1702 SET_Rectsv(dest, _mesa_Rectsv);
1703 SET_FogCoordd(dest, _mesa_FogCoordd);
1704 SET_FogCoorddv(dest, _mesa_FogCoorddv);
1705 }
1706
1707 if (ctx->API == API_OPENGL_COMPAT) {
1708 SET_VertexAttrib1sNV(dest, _mesa_VertexAttrib1sNV);
1709 SET_VertexAttrib1dNV(dest, _mesa_VertexAttrib1dNV);
1710 SET_VertexAttrib2sNV(dest, _mesa_VertexAttrib2sNV);
1711 SET_VertexAttrib2dNV(dest, _mesa_VertexAttrib2dNV);
1712 SET_VertexAttrib3sNV(dest, _mesa_VertexAttrib3sNV);
1713 SET_VertexAttrib3dNV(dest, _mesa_VertexAttrib3dNV);
1714 SET_VertexAttrib4sNV(dest, _mesa_VertexAttrib4sNV);
1715 SET_VertexAttrib4dNV(dest, _mesa_VertexAttrib4dNV);
1716 SET_VertexAttrib4ubNV(dest, _mesa_VertexAttrib4ubNV);
1717 SET_VertexAttrib1svNV(dest, _mesa_VertexAttrib1svNV);
1718 SET_VertexAttrib1dvNV(dest, _mesa_VertexAttrib1dvNV);
1719 SET_VertexAttrib2svNV(dest, _mesa_VertexAttrib2svNV);
1720 SET_VertexAttrib2dvNV(dest, _mesa_VertexAttrib2dvNV);
1721 SET_VertexAttrib3svNV(dest, _mesa_VertexAttrib3svNV);
1722 SET_VertexAttrib3dvNV(dest, _mesa_VertexAttrib3dvNV);
1723 SET_VertexAttrib4svNV(dest, _mesa_VertexAttrib4svNV);
1724 SET_VertexAttrib4dvNV(dest, _mesa_VertexAttrib4dvNV);
1725 SET_VertexAttrib4ubvNV(dest, _mesa_VertexAttrib4ubvNV);
1726 SET_VertexAttribs1svNV(dest, _mesa_VertexAttribs1svNV);
1727 SET_VertexAttribs1fvNV(dest, _mesa_VertexAttribs1fvNV);
1728 SET_VertexAttribs1dvNV(dest, _mesa_VertexAttribs1dvNV);
1729 SET_VertexAttribs2svNV(dest, _mesa_VertexAttribs2svNV);
1730 SET_VertexAttribs2fvNV(dest, _mesa_VertexAttribs2fvNV);
1731 SET_VertexAttribs2dvNV(dest, _mesa_VertexAttribs2dvNV);
1732 SET_VertexAttribs3svNV(dest, _mesa_VertexAttribs3svNV);
1733 SET_VertexAttribs3fvNV(dest, _mesa_VertexAttribs3fvNV);
1734 SET_VertexAttribs3dvNV(dest, _mesa_VertexAttribs3dvNV);
1735 SET_VertexAttribs4svNV(dest, _mesa_VertexAttribs4svNV);
1736 SET_VertexAttribs4fvNV(dest, _mesa_VertexAttribs4fvNV);
1737 SET_VertexAttribs4dvNV(dest, _mesa_VertexAttribs4dvNV);
1738 SET_VertexAttribs4ubvNV(dest, _mesa_VertexAttribs4ubvNV);
1739 }
1740
1741 if (_mesa_is_desktop_gl(ctx)) {
1742 SET_VertexAttrib1s(dest, _mesa_VertexAttrib1s);
1743 SET_VertexAttrib1d(dest, _mesa_VertexAttrib1d);
1744 SET_VertexAttrib2s(dest, _mesa_VertexAttrib2s);
1745 SET_VertexAttrib2d(dest, _mesa_VertexAttrib2d);
1746 SET_VertexAttrib3s(dest, _mesa_VertexAttrib3s);
1747 SET_VertexAttrib3d(dest, _mesa_VertexAttrib3d);
1748 SET_VertexAttrib4s(dest, _mesa_VertexAttrib4s);
1749 SET_VertexAttrib4d(dest, _mesa_VertexAttrib4d);
1750 SET_VertexAttrib1sv(dest, _mesa_VertexAttrib1sv);
1751 SET_VertexAttrib1dv(dest, _mesa_VertexAttrib1dv);
1752 SET_VertexAttrib2sv(dest, _mesa_VertexAttrib2sv);
1753 SET_VertexAttrib2dv(dest, _mesa_VertexAttrib2dv);
1754 SET_VertexAttrib3sv(dest, _mesa_VertexAttrib3sv);
1755 SET_VertexAttrib3dv(dest, _mesa_VertexAttrib3dv);
1756 SET_VertexAttrib4sv(dest, _mesa_VertexAttrib4sv);
1757 SET_VertexAttrib4dv(dest, _mesa_VertexAttrib4dv);
1758 SET_VertexAttrib4Nub(dest, _mesa_VertexAttrib4Nub);
1759 SET_VertexAttrib4Nubv(dest, _mesa_VertexAttrib4Nubv);
1760 SET_VertexAttrib4bv(dest, _mesa_VertexAttrib4bv);
1761 SET_VertexAttrib4iv(dest, _mesa_VertexAttrib4iv);
1762 SET_VertexAttrib4ubv(dest, _mesa_VertexAttrib4ubv);
1763 SET_VertexAttrib4usv(dest, _mesa_VertexAttrib4usv);
1764 SET_VertexAttrib4uiv(dest, _mesa_VertexAttrib4uiv);
1765 SET_VertexAttrib4Nbv(dest, _mesa_VertexAttrib4Nbv);
1766 SET_VertexAttrib4Nsv(dest, _mesa_VertexAttrib4Nsv);
1767 SET_VertexAttrib4Nusv(dest, _mesa_VertexAttrib4Nusv);
1768 SET_VertexAttrib4Niv(dest, _mesa_VertexAttrib4Niv);
1769 SET_VertexAttrib4Nuiv(dest, _mesa_VertexAttrib4Nuiv);
1770
1771 /* GL_EXT_gpu_shader4, GL 3.0 */
1772 SET_VertexAttribI1iv(dest, _mesa_VertexAttribI1iv);
1773 SET_VertexAttribI1uiv(dest, _mesa_VertexAttribI1uiv);
1774 SET_VertexAttribI4bv(dest, _mesa_VertexAttribI4bv);
1775 SET_VertexAttribI4sv(dest, _mesa_VertexAttribI4sv);
1776 SET_VertexAttribI4ubv(dest, _mesa_VertexAttribI4ubv);
1777 SET_VertexAttribI4usv(dest, _mesa_VertexAttribI4usv);
1778 }
1779
1780 if (ctx->API == API_OPENGL_CORE) {
1781 /* GL 4.1 / GL_ARB_vertex_attrib_64bit */
1782 SET_VertexAttribL1d(dest, _mesa_VertexAttribL1d);
1783 SET_VertexAttribL2d(dest, _mesa_VertexAttribL2d);
1784 SET_VertexAttribL3d(dest, _mesa_VertexAttribL3d);
1785 SET_VertexAttribL4d(dest, _mesa_VertexAttribL4d);
1786
1787 SET_VertexAttribL1dv(dest, _mesa_VertexAttribL1dv);
1788 SET_VertexAttribL2dv(dest, _mesa_VertexAttribL2dv);
1789 SET_VertexAttribL3dv(dest, _mesa_VertexAttribL3dv);
1790 SET_VertexAttribL4dv(dest, _mesa_VertexAttribL4dv);
1791 }
1792 }