mesa: Remove unnecessary glapitable.h includes.
[mesa.git] / src / mesa / main / api_loopback.c
1 /**
2 * \file api_loopback.c
3 *
4 * \author Keith Whitwell <keith@tungstengraphics.com>
5 */
6
7 /*
8 * Mesa 3-D graphics library
9 * Version: 6.3
10 *
11 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice shall be included
21 * in all copies or substantial portions of the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
27 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR 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 "glapi/glthread.h"
38 #include "main/dispatch.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 ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
69 #define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
70 #define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
71 #define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
72 #define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
73 #define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
74 #define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
75 #define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
76 #define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
77 #define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
78
79
80 #if FEATURE_beginend
81
82
83 static void GLAPIENTRY
84 loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
85 {
86 COLORF( BYTE_TO_FLOAT(red),
87 BYTE_TO_FLOAT(green),
88 BYTE_TO_FLOAT(blue),
89 1.0 );
90 }
91
92 static void GLAPIENTRY
93 loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
94 {
95 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
96 }
97
98 static void GLAPIENTRY
99 loopback_Color3i_f( GLint red, GLint green, GLint blue )
100 {
101 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
102 INT_TO_FLOAT(blue), 1.0);
103 }
104
105 static void GLAPIENTRY
106 loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
107 {
108 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
109 SHORT_TO_FLOAT(blue), 1.0);
110 }
111
112 static void GLAPIENTRY
113 loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
114 {
115 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
116 UINT_TO_FLOAT(blue), 1.0 );
117 }
118
119 static void GLAPIENTRY
120 loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
121 {
122 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
123 USHORT_TO_FLOAT(blue), 1.0 );
124 }
125
126 static void GLAPIENTRY
127 loopback_Color3ub_f( GLubyte red, GLubyte green, GLubyte blue )
128 {
129 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
130 UBYTE_TO_FLOAT(blue), 1.0 );
131 }
132
133
134 static void GLAPIENTRY
135 loopback_Color3bv_f( const GLbyte *v )
136 {
137 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
138 BYTE_TO_FLOAT(v[2]), 1.0 );
139 }
140
141 static void GLAPIENTRY
142 loopback_Color3dv_f( const GLdouble *v )
143 {
144 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
145 }
146
147 static void GLAPIENTRY
148 loopback_Color3iv_f( const GLint *v )
149 {
150 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
151 INT_TO_FLOAT(v[2]), 1.0 );
152 }
153
154 static void GLAPIENTRY
155 loopback_Color3sv_f( const GLshort *v )
156 {
157 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
158 SHORT_TO_FLOAT(v[2]), 1.0 );
159 }
160
161 static void GLAPIENTRY
162 loopback_Color3uiv_f( const GLuint *v )
163 {
164 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
165 UINT_TO_FLOAT(v[2]), 1.0 );
166 }
167
168 static void GLAPIENTRY
169 loopback_Color3usv_f( const GLushort *v )
170 {
171 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
172 USHORT_TO_FLOAT(v[2]), 1.0 );
173 }
174
175 static void GLAPIENTRY
176 loopback_Color3ubv_f( const GLubyte *v )
177 {
178 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
179 UBYTE_TO_FLOAT(v[2]), 1.0 );
180 }
181
182
183 static void GLAPIENTRY
184 loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
185 GLbyte alpha )
186 {
187 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
188 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
189 }
190
191 static void GLAPIENTRY
192 loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
193 GLdouble alpha )
194 {
195 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
196 }
197
198 static void GLAPIENTRY
199 loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
200 {
201 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
202 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
203 }
204
205 static void GLAPIENTRY
206 loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
207 GLshort alpha )
208 {
209 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
210 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
211 }
212
213 static void GLAPIENTRY
214 loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
215 {
216 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
217 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
218 }
219
220 static void GLAPIENTRY
221 loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
222 {
223 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
224 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
225 }
226
227 static void GLAPIENTRY
228 loopback_Color4ub_f( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
229 {
230 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
231 UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) );
232 }
233
234
235 static void GLAPIENTRY
236 loopback_Color4iv_f( const GLint *v )
237 {
238 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
239 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
240 }
241
242
243 static void GLAPIENTRY
244 loopback_Color4bv_f( const GLbyte *v )
245 {
246 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
247 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
248 }
249
250 static void GLAPIENTRY
251 loopback_Color4dv_f( const GLdouble *v )
252 {
253 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
254 }
255
256
257 static void GLAPIENTRY
258 loopback_Color4sv_f( const GLshort *v)
259 {
260 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
261 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
262 }
263
264
265 static void GLAPIENTRY
266 loopback_Color4uiv_f( const GLuint *v)
267 {
268 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
269 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
270 }
271
272 static void GLAPIENTRY
273 loopback_Color4usv_f( const GLushort *v)
274 {
275 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
276 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
277 }
278
279 static void GLAPIENTRY
280 loopback_Color4ubv_f( const GLubyte *v)
281 {
282 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
283 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) );
284 }
285
286
287 static void GLAPIENTRY
288 loopback_FogCoorddEXT( GLdouble d )
289 {
290 FOGCOORDF( (GLfloat) d );
291 }
292
293 static void GLAPIENTRY
294 loopback_FogCoorddvEXT( const GLdouble *v )
295 {
296 FOGCOORDF( (GLfloat) *v );
297 }
298
299
300 static void GLAPIENTRY
301 loopback_Indexd( GLdouble c )
302 {
303 INDEX( (GLfloat) c );
304 }
305
306 static void GLAPIENTRY
307 loopback_Indexi( GLint c )
308 {
309 INDEX( (GLfloat) c );
310 }
311
312 static void GLAPIENTRY
313 loopback_Indexs( GLshort c )
314 {
315 INDEX( (GLfloat) c );
316 }
317
318 static void GLAPIENTRY
319 loopback_Indexub( GLubyte c )
320 {
321 INDEX( (GLfloat) c );
322 }
323
324 static void GLAPIENTRY
325 loopback_Indexdv( const GLdouble *c )
326 {
327 INDEX( (GLfloat) *c );
328 }
329
330 static void GLAPIENTRY
331 loopback_Indexiv( const GLint *c )
332 {
333 INDEX( (GLfloat) *c );
334 }
335
336 static void GLAPIENTRY
337 loopback_Indexsv( const GLshort *c )
338 {
339 INDEX( (GLfloat) *c );
340 }
341
342 static void GLAPIENTRY
343 loopback_Indexubv( const GLubyte *c )
344 {
345 INDEX( (GLfloat) *c );
346 }
347
348
349 static void GLAPIENTRY
350 loopback_EdgeFlagv(const GLboolean *flag)
351 {
352 CALL_EdgeFlag(GET_DISPATCH(), (*flag));
353 }
354
355
356 static void GLAPIENTRY
357 loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
358 {
359 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
360 }
361
362 static void GLAPIENTRY
363 loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
364 {
365 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
366 }
367
368 static void GLAPIENTRY
369 loopback_Normal3i( GLint nx, GLint ny, GLint nz )
370 {
371 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
372 }
373
374 static void GLAPIENTRY
375 loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
376 {
377 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
378 }
379
380 static void GLAPIENTRY
381 loopback_Normal3bv( const GLbyte *v )
382 {
383 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
384 }
385
386 static void GLAPIENTRY
387 loopback_Normal3dv( const GLdouble *v )
388 {
389 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
390 }
391
392 static void GLAPIENTRY
393 loopback_Normal3iv( const GLint *v )
394 {
395 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
396 }
397
398 static void GLAPIENTRY
399 loopback_Normal3sv( const GLshort *v )
400 {
401 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
402 }
403
404 static void GLAPIENTRY
405 loopback_TexCoord1d( GLdouble s )
406 {
407 TEXCOORD1((GLfloat) s);
408 }
409
410 static void GLAPIENTRY
411 loopback_TexCoord1i( GLint s )
412 {
413 TEXCOORD1((GLfloat) s);
414 }
415
416 static void GLAPIENTRY
417 loopback_TexCoord1s( GLshort s )
418 {
419 TEXCOORD1((GLfloat) s);
420 }
421
422 static void GLAPIENTRY
423 loopback_TexCoord2d( GLdouble s, GLdouble t )
424 {
425 TEXCOORD2((GLfloat) s,(GLfloat) t);
426 }
427
428 static void GLAPIENTRY
429 loopback_TexCoord2s( GLshort s, GLshort t )
430 {
431 TEXCOORD2((GLfloat) s,(GLfloat) t);
432 }
433
434 static void GLAPIENTRY
435 loopback_TexCoord2i( GLint s, GLint t )
436 {
437 TEXCOORD2((GLfloat) s,(GLfloat) t);
438 }
439
440 static void GLAPIENTRY
441 loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
442 {
443 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
444 }
445
446 static void GLAPIENTRY
447 loopback_TexCoord3i( GLint s, GLint t, GLint r )
448 {
449 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
450 }
451
452 static void GLAPIENTRY
453 loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
454 {
455 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
456 }
457
458 static void GLAPIENTRY
459 loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
460 {
461 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
462 }
463
464 static void GLAPIENTRY
465 loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
466 {
467 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
468 }
469
470 static void GLAPIENTRY
471 loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
472 {
473 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
474 }
475
476 static void GLAPIENTRY
477 loopback_TexCoord1dv( const GLdouble *v )
478 {
479 TEXCOORD1((GLfloat) v[0]);
480 }
481
482 static void GLAPIENTRY
483 loopback_TexCoord1iv( const GLint *v )
484 {
485 TEXCOORD1((GLfloat) v[0]);
486 }
487
488 static void GLAPIENTRY
489 loopback_TexCoord1sv( const GLshort *v )
490 {
491 TEXCOORD1((GLfloat) v[0]);
492 }
493
494 static void GLAPIENTRY
495 loopback_TexCoord2dv( const GLdouble *v )
496 {
497 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
498 }
499
500 static void GLAPIENTRY
501 loopback_TexCoord2iv( const GLint *v )
502 {
503 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
504 }
505
506 static void GLAPIENTRY
507 loopback_TexCoord2sv( const GLshort *v )
508 {
509 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
510 }
511
512 static void GLAPIENTRY
513 loopback_TexCoord3dv( const GLdouble *v )
514 {
515 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
516 }
517
518 static void GLAPIENTRY
519 loopback_TexCoord3iv( const GLint *v )
520 {
521 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
522 }
523
524 static void GLAPIENTRY
525 loopback_TexCoord3sv( const GLshort *v )
526 {
527 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
528 }
529
530 static void GLAPIENTRY
531 loopback_TexCoord4dv( const GLdouble *v )
532 {
533 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
534 }
535
536 static void GLAPIENTRY
537 loopback_TexCoord4iv( const GLint *v )
538 {
539 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
540 }
541
542 static void GLAPIENTRY
543 loopback_TexCoord4sv( const GLshort *v )
544 {
545 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
546 }
547
548 static void GLAPIENTRY
549 loopback_Vertex2d( GLdouble x, GLdouble y )
550 {
551 VERTEX2( (GLfloat) x, (GLfloat) y );
552 }
553
554 static void GLAPIENTRY
555 loopback_Vertex2i( GLint x, GLint y )
556 {
557 VERTEX2( (GLfloat) x, (GLfloat) y );
558 }
559
560 static void GLAPIENTRY
561 loopback_Vertex2s( GLshort x, GLshort y )
562 {
563 VERTEX2( (GLfloat) x, (GLfloat) y );
564 }
565
566 static void GLAPIENTRY
567 loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
568 {
569 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
570 }
571
572 static void GLAPIENTRY
573 loopback_Vertex3i( GLint x, GLint y, GLint z )
574 {
575 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
576 }
577
578 static void GLAPIENTRY
579 loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
580 {
581 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
582 }
583
584 static void GLAPIENTRY
585 loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
586 {
587 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
588 }
589
590 static void GLAPIENTRY
591 loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
592 {
593 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
594 }
595
596 static void GLAPIENTRY
597 loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
598 {
599 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
600 }
601
602 static void GLAPIENTRY
603 loopback_Vertex2dv( const GLdouble *v )
604 {
605 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
606 }
607
608 static void GLAPIENTRY
609 loopback_Vertex2iv( const GLint *v )
610 {
611 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
612 }
613
614 static void GLAPIENTRY
615 loopback_Vertex2sv( const GLshort *v )
616 {
617 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
618 }
619
620 static void GLAPIENTRY
621 loopback_Vertex3dv( const GLdouble *v )
622 {
623 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
624 }
625
626 static void GLAPIENTRY
627 loopback_Vertex3iv( const GLint *v )
628 {
629 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
630 }
631
632 static void GLAPIENTRY
633 loopback_Vertex3sv( const GLshort *v )
634 {
635 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
636 }
637
638 static void GLAPIENTRY
639 loopback_Vertex4dv( const GLdouble *v )
640 {
641 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
642 (GLfloat) v[2], (GLfloat) v[3] );
643 }
644
645 static void GLAPIENTRY
646 loopback_Vertex4iv( const GLint *v )
647 {
648 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
649 (GLfloat) v[2], (GLfloat) v[3] );
650 }
651
652 static void GLAPIENTRY
653 loopback_Vertex4sv( const GLshort *v )
654 {
655 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
656 (GLfloat) v[2], (GLfloat) v[3] );
657 }
658
659 static void GLAPIENTRY
660 loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
661 {
662 MULTI_TEXCOORD1( target, (GLfloat) s );
663 }
664
665 static void GLAPIENTRY
666 loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
667 {
668 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
669 }
670
671 static void GLAPIENTRY
672 loopback_MultiTexCoord1iARB(GLenum target, GLint s)
673 {
674 MULTI_TEXCOORD1( target, (GLfloat) s );
675 }
676
677 static void GLAPIENTRY
678 loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
679 {
680 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
681 }
682
683 static void GLAPIENTRY
684 loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
685 {
686 MULTI_TEXCOORD1( target, (GLfloat) s );
687 }
688
689 static void GLAPIENTRY
690 loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
691 {
692 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
693 }
694
695 static void GLAPIENTRY
696 loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
697 {
698 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
699 }
700
701 static void GLAPIENTRY
702 loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
703 {
704 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
705 }
706
707 static void GLAPIENTRY
708 loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
709 {
710 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
711 }
712
713 static void GLAPIENTRY
714 loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
715 {
716 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
717 }
718
719 static void GLAPIENTRY
720 loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
721 {
722 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
723 }
724
725 static void GLAPIENTRY
726 loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
727 {
728 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
729 }
730
731 static void GLAPIENTRY
732 loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
733 {
734 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
735 }
736
737 static void GLAPIENTRY
738 loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
739 {
740 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
741 }
742
743 static void GLAPIENTRY
744 loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
745 {
746 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
747 }
748
749 static void GLAPIENTRY
750 loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
751 {
752 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
753 }
754
755 static void GLAPIENTRY
756 loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
757 {
758 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
759 }
760
761 static void GLAPIENTRY
762 loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
763 {
764 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
765 }
766
767 static void GLAPIENTRY
768 loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
769 {
770 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
771 (GLfloat) r, (GLfloat) q );
772 }
773
774 static void GLAPIENTRY
775 loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
776 {
777 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
778 (GLfloat) v[2], (GLfloat) v[3] );
779 }
780
781 static void GLAPIENTRY
782 loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
783 {
784 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
785 (GLfloat) r, (GLfloat) q );
786 }
787
788 static void GLAPIENTRY
789 loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
790 {
791 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
792 (GLfloat) v[2], (GLfloat) v[3] );
793 }
794
795 static void GLAPIENTRY
796 loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
797 {
798 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
799 (GLfloat) r, (GLfloat) q );
800 }
801
802 static void GLAPIENTRY
803 loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
804 {
805 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
806 (GLfloat) v[2], (GLfloat) v[3] );
807 }
808
809 static void GLAPIENTRY
810 loopback_EvalCoord2dv( const GLdouble *u )
811 {
812 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
813 }
814
815 static void GLAPIENTRY
816 loopback_EvalCoord2fv( const GLfloat *u )
817 {
818 EVALCOORD2( u[0], u[1] );
819 }
820
821 static void GLAPIENTRY
822 loopback_EvalCoord2d( GLdouble u, GLdouble v )
823 {
824 EVALCOORD2( (GLfloat) u, (GLfloat) v );
825 }
826
827 static void GLAPIENTRY
828 loopback_EvalCoord1dv( const GLdouble *u )
829 {
830 EVALCOORD1( (GLfloat) *u );
831 }
832
833 static void GLAPIENTRY
834 loopback_EvalCoord1fv( const GLfloat *u )
835 {
836 EVALCOORD1( (GLfloat) *u );
837 }
838
839 static void GLAPIENTRY
840 loopback_EvalCoord1d( GLdouble u )
841 {
842 EVALCOORD1( (GLfloat) u );
843 }
844
845 static void GLAPIENTRY
846 loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
847 {
848 GLfloat fparam[4];
849 fparam[0] = param;
850 MATERIALFV( face, pname, fparam );
851 }
852
853 static void GLAPIENTRY
854 loopback_Materiali(GLenum face, GLenum pname, GLint param )
855 {
856 GLfloat p = (GLfloat) param;
857 MATERIALFV(face, pname, &p);
858 }
859
860 static void GLAPIENTRY
861 loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
862 {
863 GLfloat fparam[4];
864 switch (pname) {
865 case GL_AMBIENT:
866 case GL_DIFFUSE:
867 case GL_SPECULAR:
868 case GL_EMISSION:
869 case GL_AMBIENT_AND_DIFFUSE:
870 fparam[0] = INT_TO_FLOAT( params[0] );
871 fparam[1] = INT_TO_FLOAT( params[1] );
872 fparam[2] = INT_TO_FLOAT( params[2] );
873 fparam[3] = INT_TO_FLOAT( params[3] );
874 break;
875 case GL_SHININESS:
876 fparam[0] = (GLfloat) params[0];
877 break;
878 case GL_COLOR_INDEXES:
879 fparam[0] = (GLfloat) params[0];
880 fparam[1] = (GLfloat) params[1];
881 fparam[2] = (GLfloat) params[2];
882 break;
883 default:
884 ;
885 }
886 MATERIALFV(face, pname, fparam);
887 }
888
889
890 static void GLAPIENTRY
891 loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
892 {
893 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
894 }
895
896 static void GLAPIENTRY
897 loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
898 {
899 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
900 }
901
902 static void GLAPIENTRY
903 loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
904 {
905 RECTF(v1[0], v1[1], v2[0], v2[1]);
906 }
907
908 static void GLAPIENTRY
909 loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
910 {
911 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
912 }
913
914 static void GLAPIENTRY
915 loopback_Rectiv(const GLint *v1, const GLint *v2)
916 {
917 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
918 }
919
920 static void GLAPIENTRY
921 loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
922 {
923 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
924 }
925
926 static void GLAPIENTRY
927 loopback_Rectsv(const GLshort *v1, const GLshort *v2)
928 {
929 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
930 }
931
932 static void GLAPIENTRY
933 loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
934 {
935 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
936 BYTE_TO_FLOAT(green),
937 BYTE_TO_FLOAT(blue) );
938 }
939
940 static void GLAPIENTRY
941 loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
942 {
943 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
944 }
945
946 static void GLAPIENTRY
947 loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
948 {
949 SECONDARYCOLORF( INT_TO_FLOAT(red),
950 INT_TO_FLOAT(green),
951 INT_TO_FLOAT(blue));
952 }
953
954 static void GLAPIENTRY
955 loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
956 {
957 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
958 SHORT_TO_FLOAT(green),
959 SHORT_TO_FLOAT(blue));
960 }
961
962 static void GLAPIENTRY
963 loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
964 {
965 SECONDARYCOLORF(UINT_TO_FLOAT(red),
966 UINT_TO_FLOAT(green),
967 UINT_TO_FLOAT(blue));
968 }
969
970 static void GLAPIENTRY
971 loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
972 {
973 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
974 USHORT_TO_FLOAT(green),
975 USHORT_TO_FLOAT(blue));
976 }
977
978 static void GLAPIENTRY
979 loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue )
980 {
981 SECONDARYCOLORF(UBYTE_TO_FLOAT(red),
982 UBYTE_TO_FLOAT(green),
983 UBYTE_TO_FLOAT(blue));
984 }
985
986 static void GLAPIENTRY
987 loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
988 {
989 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
990 BYTE_TO_FLOAT(v[1]),
991 BYTE_TO_FLOAT(v[2]));
992 }
993
994 static void GLAPIENTRY
995 loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
996 {
997 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
998 }
999 static void GLAPIENTRY
1000 loopback_SecondaryColor3ivEXT_f( const GLint *v )
1001 {
1002 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1003 INT_TO_FLOAT(v[1]),
1004 INT_TO_FLOAT(v[2]));
1005 }
1006
1007 static void GLAPIENTRY
1008 loopback_SecondaryColor3svEXT_f( const GLshort *v )
1009 {
1010 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1011 SHORT_TO_FLOAT(v[1]),
1012 SHORT_TO_FLOAT(v[2]));
1013 }
1014
1015 static void GLAPIENTRY
1016 loopback_SecondaryColor3uivEXT_f( const GLuint *v )
1017 {
1018 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1019 UINT_TO_FLOAT(v[1]),
1020 UINT_TO_FLOAT(v[2]));
1021 }
1022
1023 static void GLAPIENTRY
1024 loopback_SecondaryColor3usvEXT_f( const GLushort *v )
1025 {
1026 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1027 USHORT_TO_FLOAT(v[1]),
1028 USHORT_TO_FLOAT(v[2]));
1029 }
1030
1031 static void GLAPIENTRY
1032 loopback_SecondaryColor3ubvEXT_f( const GLubyte *v )
1033 {
1034 SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]),
1035 UBYTE_TO_FLOAT(v[1]),
1036 UBYTE_TO_FLOAT(v[2]));
1037 }
1038
1039
1040 /*
1041 * GL_NV_vertex_program:
1042 * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
1043 */
1044
1045 static void GLAPIENTRY
1046 loopback_VertexAttrib1sNV(GLuint index, GLshort x)
1047 {
1048 ATTRIB1NV(index, (GLfloat) x);
1049 }
1050
1051 static void GLAPIENTRY
1052 loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
1053 {
1054 ATTRIB1NV(index, (GLfloat) x);
1055 }
1056
1057 static void GLAPIENTRY
1058 loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1059 {
1060 ATTRIB2NV(index, (GLfloat) x, y);
1061 }
1062
1063 static void GLAPIENTRY
1064 loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1065 {
1066 ATTRIB2NV(index, (GLfloat) x, (GLfloat) y);
1067 }
1068
1069 static void GLAPIENTRY
1070 loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1071 {
1072 ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1073 }
1074
1075 static void GLAPIENTRY
1076 loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1077 {
1078 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1079 }
1080
1081 static void GLAPIENTRY
1082 loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1083 {
1084 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1085 }
1086
1087 static void GLAPIENTRY
1088 loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1089 {
1090 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1091 }
1092
1093 static void GLAPIENTRY
1094 loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1095 {
1096 ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1097 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1098 }
1099
1100 static void GLAPIENTRY
1101 loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
1102 {
1103 ATTRIB1NV(index, (GLfloat) v[0]);
1104 }
1105
1106 static void GLAPIENTRY
1107 loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1108 {
1109 ATTRIB1NV(index, (GLfloat) v[0]);
1110 }
1111
1112 static void GLAPIENTRY
1113 loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
1114 {
1115 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1116 }
1117
1118 static void GLAPIENTRY
1119 loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1120 {
1121 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1122 }
1123
1124 static void GLAPIENTRY
1125 loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
1126 {
1127 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1128 }
1129
1130 static void GLAPIENTRY
1131 loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1132 {
1133 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1134 }
1135
1136 static void GLAPIENTRY
1137 loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
1138 {
1139 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1140 (GLfloat)v[3]);
1141 }
1142
1143 static void GLAPIENTRY
1144 loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1145 {
1146 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1147 }
1148
1149 static void GLAPIENTRY
1150 loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1151 {
1152 ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1153 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1154 }
1155
1156
1157 static void GLAPIENTRY
1158 loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1159 {
1160 GLint i;
1161 for (i = n - 1; i >= 0; i--)
1162 loopback_VertexAttrib1svNV(index + i, v + i);
1163 }
1164
1165 static void GLAPIENTRY
1166 loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1167 {
1168 GLint i;
1169 for (i = n - 1; i >= 0; i--)
1170 ATTRIB1NV(index + i, v[i]);
1171 }
1172
1173 static void GLAPIENTRY
1174 loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1175 {
1176 GLint i;
1177 for (i = n - 1; i >= 0; i--)
1178 loopback_VertexAttrib1dvNV(index + i, v + i);
1179 }
1180
1181 static void GLAPIENTRY
1182 loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1183 {
1184 GLint i;
1185 for (i = n - 1; i >= 0; i--)
1186 loopback_VertexAttrib2svNV(index + i, v + 2 * i);
1187 }
1188
1189 static void GLAPIENTRY
1190 loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1191 {
1192 GLint i;
1193 for (i = n - 1; i >= 0; i--)
1194 ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]);
1195 }
1196
1197 static void GLAPIENTRY
1198 loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1199 {
1200 GLint i;
1201 for (i = n - 1; i >= 0; i--)
1202 loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
1203 }
1204
1205 static void GLAPIENTRY
1206 loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1207 {
1208 GLint i;
1209 for (i = n - 1; i >= 0; i--)
1210 loopback_VertexAttrib3svNV(index + i, v + 3 * i);
1211 }
1212
1213 static void GLAPIENTRY
1214 loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1215 {
1216 GLint i;
1217 for (i = n - 1; i >= 0; i--)
1218 ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1219 }
1220
1221 static void GLAPIENTRY
1222 loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1223 {
1224 GLint i;
1225 for (i = n - 1; i >= 0; i--)
1226 loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
1227 }
1228
1229 static void GLAPIENTRY
1230 loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1231 {
1232 GLint i;
1233 for (i = n - 1; i >= 0; i--)
1234 loopback_VertexAttrib4svNV(index + i, v + 4 * i);
1235 }
1236
1237 static void GLAPIENTRY
1238 loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1239 {
1240 GLint i;
1241 for (i = n - 1; i >= 0; i--)
1242 ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1243 }
1244
1245 static void GLAPIENTRY
1246 loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1247 {
1248 GLint i;
1249 for (i = n - 1; i >= 0; i--)
1250 loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
1251 }
1252
1253 static void GLAPIENTRY
1254 loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1255 {
1256 GLint i;
1257 for (i = n - 1; i >= 0; i--)
1258 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
1259 }
1260
1261
1262 /*
1263 * GL_ARB_vertex_program
1264 * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
1265 */
1266
1267 static void GLAPIENTRY
1268 loopback_VertexAttrib1sARB(GLuint index, GLshort x)
1269 {
1270 ATTRIB1ARB(index, (GLfloat) x);
1271 }
1272
1273 static void GLAPIENTRY
1274 loopback_VertexAttrib1dARB(GLuint index, GLdouble x)
1275 {
1276 ATTRIB1ARB(index, (GLfloat) x);
1277 }
1278
1279 static void GLAPIENTRY
1280 loopback_VertexAttrib2sARB(GLuint index, GLshort x, GLshort y)
1281 {
1282 ATTRIB2ARB(index, (GLfloat) x, y);
1283 }
1284
1285 static void GLAPIENTRY
1286 loopback_VertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)
1287 {
1288 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
1289 }
1290
1291 static void GLAPIENTRY
1292 loopback_VertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)
1293 {
1294 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1295 }
1296
1297 static void GLAPIENTRY
1298 loopback_VertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1299 {
1300 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1301 }
1302
1303 static void GLAPIENTRY
1304 loopback_VertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1305 {
1306 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1307 }
1308
1309 static void GLAPIENTRY
1310 loopback_VertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1311 {
1312 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1313 }
1314
1315 static void GLAPIENTRY
1316 loopback_VertexAttrib1svARB(GLuint index, const GLshort *v)
1317 {
1318 ATTRIB1ARB(index, (GLfloat) v[0]);
1319 }
1320
1321 static void GLAPIENTRY
1322 loopback_VertexAttrib1dvARB(GLuint index, const GLdouble *v)
1323 {
1324 ATTRIB1ARB(index, (GLfloat) v[0]);
1325 }
1326
1327 static void GLAPIENTRY
1328 loopback_VertexAttrib2svARB(GLuint index, const GLshort *v)
1329 {
1330 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1331 }
1332
1333 static void GLAPIENTRY
1334 loopback_VertexAttrib2dvARB(GLuint index, const GLdouble *v)
1335 {
1336 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1337 }
1338
1339 static void GLAPIENTRY
1340 loopback_VertexAttrib3svARB(GLuint index, const GLshort *v)
1341 {
1342 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1343 }
1344
1345 static void GLAPIENTRY
1346 loopback_VertexAttrib3dvARB(GLuint index, const GLdouble *v)
1347 {
1348 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1349 }
1350
1351 static void GLAPIENTRY
1352 loopback_VertexAttrib4svARB(GLuint index, const GLshort *v)
1353 {
1354 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1355 (GLfloat)v[3]);
1356 }
1357
1358 static void GLAPIENTRY
1359 loopback_VertexAttrib4dvARB(GLuint index, const GLdouble *v)
1360 {
1361 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1362 }
1363
1364 static void GLAPIENTRY
1365 loopback_VertexAttrib4bvARB(GLuint index, const GLbyte * v)
1366 {
1367 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1368 }
1369
1370 static void GLAPIENTRY
1371 loopback_VertexAttrib4ivARB(GLuint index, const GLint * v)
1372 {
1373 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1374 }
1375
1376 static void GLAPIENTRY
1377 loopback_VertexAttrib4ubvARB(GLuint index, const GLubyte * v)
1378 {
1379 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1380 }
1381
1382 static void GLAPIENTRY
1383 loopback_VertexAttrib4usvARB(GLuint index, const GLushort * v)
1384 {
1385 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1386 }
1387
1388 static void GLAPIENTRY
1389 loopback_VertexAttrib4uivARB(GLuint index, const GLuint * v)
1390 {
1391 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1392 }
1393
1394 static void GLAPIENTRY
1395 loopback_VertexAttrib4NbvARB(GLuint index, const GLbyte * v)
1396 {
1397 ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
1398 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1399 }
1400
1401 static void GLAPIENTRY
1402 loopback_VertexAttrib4NsvARB(GLuint index, const GLshort * v)
1403 {
1404 ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
1405 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1406 }
1407
1408 static void GLAPIENTRY
1409 loopback_VertexAttrib4NivARB(GLuint index, const GLint * v)
1410 {
1411 ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
1412 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1413 }
1414
1415 static void GLAPIENTRY
1416 loopback_VertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1417 {
1418 ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1419 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1420 }
1421
1422 static void GLAPIENTRY
1423 loopback_VertexAttrib4NubvARB(GLuint index, const GLubyte * v)
1424 {
1425 ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1426 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1427 }
1428
1429 static void GLAPIENTRY
1430 loopback_VertexAttrib4NusvARB(GLuint index, const GLushort * v)
1431 {
1432 ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
1433 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1434 }
1435
1436 static void GLAPIENTRY
1437 loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v)
1438 {
1439 ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
1440 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1441 }
1442
1443
1444
1445 /** GL 3.0 Integer-valued attributes **/
1446
1447 static void GLAPIENTRY
1448 loopback_VertexAttribI1i(GLuint index, GLint x)
1449 {
1450 ATTRIB1ARB(index, (GLfloat) x);
1451 }
1452
1453 static void GLAPIENTRY
1454 loopback_VertexAttribI2i(GLuint index, GLint x, GLint y)
1455 {
1456 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
1457 }
1458
1459 static void GLAPIENTRY
1460 loopback_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z)
1461 {
1462 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1463 }
1464
1465 static void GLAPIENTRY
1466 loopback_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
1467 {
1468 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1469 }
1470
1471 static void GLAPIENTRY
1472 loopback_VertexAttribI1ui(GLuint index, GLuint x)
1473 {
1474 ATTRIB1ARB(index, (GLfloat) x);
1475 }
1476
1477 static void GLAPIENTRY
1478 loopback_VertexAttribI2ui(GLuint index, GLuint x, GLuint y)
1479 {
1480 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
1481 }
1482
1483 static void GLAPIENTRY
1484 loopback_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z)
1485 {
1486 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1487 }
1488
1489 static void GLAPIENTRY
1490 loopback_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1491 {
1492 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1493 }
1494
1495 static void GLAPIENTRY
1496 loopback_VertexAttribI1iv(GLuint index, const GLint *v)
1497 {
1498 ATTRIB1ARB(index, (GLfloat) v[0]);
1499 }
1500
1501 static void GLAPIENTRY
1502 loopback_VertexAttribI2iv (GLuint index, const GLint *v)
1503 {
1504 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1505 }
1506
1507 static void GLAPIENTRY
1508 loopback_VertexAttribI3iv(GLuint index, const GLint *v)
1509 {
1510 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1511 }
1512
1513 static void GLAPIENTRY
1514 loopback_VertexAttribI4iv(GLuint index, const GLint *v)
1515 {
1516 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1517 (GLfloat) v[2], (GLfloat) v[3]);
1518 }
1519
1520 static void GLAPIENTRY
1521 loopback_VertexAttribI1uiv(GLuint index, const GLuint *v)
1522 {
1523 ATTRIB1ARB(index, (GLfloat) v[0]);
1524 }
1525
1526 static void GLAPIENTRY
1527 loopback_VertexAttribI2uiv(GLuint index, const GLuint *v)
1528 {
1529 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1530 }
1531
1532 static void GLAPIENTRY
1533 loopback_VertexAttribI3uiv(GLuint index, const GLuint *v)
1534 {
1535 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1536 }
1537
1538 static void GLAPIENTRY
1539 loopback_VertexAttribI4uiv(GLuint index, const GLuint *v)
1540 {
1541 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1542 (GLfloat) v[2], (GLfloat) v[3]);
1543 }
1544
1545 static void GLAPIENTRY
1546 loopback_VertexAttribI4bv(GLuint index, const GLbyte *v)
1547 {
1548 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1549 (GLfloat) v[2], (GLfloat) v[3]);
1550 }
1551
1552 static void GLAPIENTRY
1553 loopback_VertexAttribI4sv(GLuint index, const GLshort *v)
1554 {
1555 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1556 (GLfloat) v[2], (GLfloat) v[3]);
1557 }
1558
1559 static void GLAPIENTRY
1560 loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v)
1561 {
1562 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1563 (GLfloat) v[2], (GLfloat) v[3]);
1564 }
1565
1566 static void GLAPIENTRY
1567 loopback_VertexAttribI4usv(GLuint index, const GLushort *v)
1568 {
1569 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1],
1570 (GLfloat) v[2], (GLfloat) v[3]);
1571 }
1572
1573
1574
1575 /*
1576 * This code never registers handlers for any of the entry points
1577 * listed in vtxfmt.h.
1578 */
1579 void
1580 _mesa_loopback_init_api_table( struct _glapi_table *dest )
1581 {
1582 SET_Color3b(dest, loopback_Color3b_f);
1583 SET_Color3d(dest, loopback_Color3d_f);
1584 SET_Color3i(dest, loopback_Color3i_f);
1585 SET_Color3s(dest, loopback_Color3s_f);
1586 SET_Color3ui(dest, loopback_Color3ui_f);
1587 SET_Color3us(dest, loopback_Color3us_f);
1588 SET_Color3ub(dest, loopback_Color3ub_f);
1589 SET_Color4b(dest, loopback_Color4b_f);
1590 SET_Color4d(dest, loopback_Color4d_f);
1591 SET_Color4i(dest, loopback_Color4i_f);
1592 SET_Color4s(dest, loopback_Color4s_f);
1593 SET_Color4ui(dest, loopback_Color4ui_f);
1594 SET_Color4us(dest, loopback_Color4us_f);
1595 SET_Color4ub(dest, loopback_Color4ub_f);
1596 SET_Color3bv(dest, loopback_Color3bv_f);
1597 SET_Color3dv(dest, loopback_Color3dv_f);
1598 SET_Color3iv(dest, loopback_Color3iv_f);
1599 SET_Color3sv(dest, loopback_Color3sv_f);
1600 SET_Color3uiv(dest, loopback_Color3uiv_f);
1601 SET_Color3usv(dest, loopback_Color3usv_f);
1602 SET_Color3ubv(dest, loopback_Color3ubv_f);
1603 SET_Color4bv(dest, loopback_Color4bv_f);
1604 SET_Color4dv(dest, loopback_Color4dv_f);
1605 SET_Color4iv(dest, loopback_Color4iv_f);
1606 SET_Color4sv(dest, loopback_Color4sv_f);
1607 SET_Color4uiv(dest, loopback_Color4uiv_f);
1608 SET_Color4usv(dest, loopback_Color4usv_f);
1609 SET_Color4ubv(dest, loopback_Color4ubv_f);
1610
1611 SET_SecondaryColor3bEXT(dest, loopback_SecondaryColor3bEXT_f);
1612 SET_SecondaryColor3dEXT(dest, loopback_SecondaryColor3dEXT_f);
1613 SET_SecondaryColor3iEXT(dest, loopback_SecondaryColor3iEXT_f);
1614 SET_SecondaryColor3sEXT(dest, loopback_SecondaryColor3sEXT_f);
1615 SET_SecondaryColor3uiEXT(dest, loopback_SecondaryColor3uiEXT_f);
1616 SET_SecondaryColor3usEXT(dest, loopback_SecondaryColor3usEXT_f);
1617 SET_SecondaryColor3ubEXT(dest, loopback_SecondaryColor3ubEXT_f);
1618 SET_SecondaryColor3bvEXT(dest, loopback_SecondaryColor3bvEXT_f);
1619 SET_SecondaryColor3dvEXT(dest, loopback_SecondaryColor3dvEXT_f);
1620 SET_SecondaryColor3ivEXT(dest, loopback_SecondaryColor3ivEXT_f);
1621 SET_SecondaryColor3svEXT(dest, loopback_SecondaryColor3svEXT_f);
1622 SET_SecondaryColor3uivEXT(dest, loopback_SecondaryColor3uivEXT_f);
1623 SET_SecondaryColor3usvEXT(dest, loopback_SecondaryColor3usvEXT_f);
1624 SET_SecondaryColor3ubvEXT(dest, loopback_SecondaryColor3ubvEXT_f);
1625
1626 SET_EdgeFlagv(dest, loopback_EdgeFlagv);
1627
1628 SET_Indexd(dest, loopback_Indexd);
1629 SET_Indexi(dest, loopback_Indexi);
1630 SET_Indexs(dest, loopback_Indexs);
1631 SET_Indexub(dest, loopback_Indexub);
1632 SET_Indexdv(dest, loopback_Indexdv);
1633 SET_Indexiv(dest, loopback_Indexiv);
1634 SET_Indexsv(dest, loopback_Indexsv);
1635 SET_Indexubv(dest, loopback_Indexubv);
1636 SET_Normal3b(dest, loopback_Normal3b);
1637 SET_Normal3d(dest, loopback_Normal3d);
1638 SET_Normal3i(dest, loopback_Normal3i);
1639 SET_Normal3s(dest, loopback_Normal3s);
1640 SET_Normal3bv(dest, loopback_Normal3bv);
1641 SET_Normal3dv(dest, loopback_Normal3dv);
1642 SET_Normal3iv(dest, loopback_Normal3iv);
1643 SET_Normal3sv(dest, loopback_Normal3sv);
1644 SET_TexCoord1d(dest, loopback_TexCoord1d);
1645 SET_TexCoord1i(dest, loopback_TexCoord1i);
1646 SET_TexCoord1s(dest, loopback_TexCoord1s);
1647 SET_TexCoord2d(dest, loopback_TexCoord2d);
1648 SET_TexCoord2s(dest, loopback_TexCoord2s);
1649 SET_TexCoord2i(dest, loopback_TexCoord2i);
1650 SET_TexCoord3d(dest, loopback_TexCoord3d);
1651 SET_TexCoord3i(dest, loopback_TexCoord3i);
1652 SET_TexCoord3s(dest, loopback_TexCoord3s);
1653 SET_TexCoord4d(dest, loopback_TexCoord4d);
1654 SET_TexCoord4i(dest, loopback_TexCoord4i);
1655 SET_TexCoord4s(dest, loopback_TexCoord4s);
1656 SET_TexCoord1dv(dest, loopback_TexCoord1dv);
1657 SET_TexCoord1iv(dest, loopback_TexCoord1iv);
1658 SET_TexCoord1sv(dest, loopback_TexCoord1sv);
1659 SET_TexCoord2dv(dest, loopback_TexCoord2dv);
1660 SET_TexCoord2iv(dest, loopback_TexCoord2iv);
1661 SET_TexCoord2sv(dest, loopback_TexCoord2sv);
1662 SET_TexCoord3dv(dest, loopback_TexCoord3dv);
1663 SET_TexCoord3iv(dest, loopback_TexCoord3iv);
1664 SET_TexCoord3sv(dest, loopback_TexCoord3sv);
1665 SET_TexCoord4dv(dest, loopback_TexCoord4dv);
1666 SET_TexCoord4iv(dest, loopback_TexCoord4iv);
1667 SET_TexCoord4sv(dest, loopback_TexCoord4sv);
1668 SET_Vertex2d(dest, loopback_Vertex2d);
1669 SET_Vertex2i(dest, loopback_Vertex2i);
1670 SET_Vertex2s(dest, loopback_Vertex2s);
1671 SET_Vertex3d(dest, loopback_Vertex3d);
1672 SET_Vertex3i(dest, loopback_Vertex3i);
1673 SET_Vertex3s(dest, loopback_Vertex3s);
1674 SET_Vertex4d(dest, loopback_Vertex4d);
1675 SET_Vertex4i(dest, loopback_Vertex4i);
1676 SET_Vertex4s(dest, loopback_Vertex4s);
1677 SET_Vertex2dv(dest, loopback_Vertex2dv);
1678 SET_Vertex2iv(dest, loopback_Vertex2iv);
1679 SET_Vertex2sv(dest, loopback_Vertex2sv);
1680 SET_Vertex3dv(dest, loopback_Vertex3dv);
1681 SET_Vertex3iv(dest, loopback_Vertex3iv);
1682 SET_Vertex3sv(dest, loopback_Vertex3sv);
1683 SET_Vertex4dv(dest, loopback_Vertex4dv);
1684 SET_Vertex4iv(dest, loopback_Vertex4iv);
1685 SET_Vertex4sv(dest, loopback_Vertex4sv);
1686 SET_MultiTexCoord1dARB(dest, loopback_MultiTexCoord1dARB);
1687 SET_MultiTexCoord1dvARB(dest, loopback_MultiTexCoord1dvARB);
1688 SET_MultiTexCoord1iARB(dest, loopback_MultiTexCoord1iARB);
1689 SET_MultiTexCoord1ivARB(dest, loopback_MultiTexCoord1ivARB);
1690 SET_MultiTexCoord1sARB(dest, loopback_MultiTexCoord1sARB);
1691 SET_MultiTexCoord1svARB(dest, loopback_MultiTexCoord1svARB);
1692 SET_MultiTexCoord2dARB(dest, loopback_MultiTexCoord2dARB);
1693 SET_MultiTexCoord2dvARB(dest, loopback_MultiTexCoord2dvARB);
1694 SET_MultiTexCoord2iARB(dest, loopback_MultiTexCoord2iARB);
1695 SET_MultiTexCoord2ivARB(dest, loopback_MultiTexCoord2ivARB);
1696 SET_MultiTexCoord2sARB(dest, loopback_MultiTexCoord2sARB);
1697 SET_MultiTexCoord2svARB(dest, loopback_MultiTexCoord2svARB);
1698 SET_MultiTexCoord3dARB(dest, loopback_MultiTexCoord3dARB);
1699 SET_MultiTexCoord3dvARB(dest, loopback_MultiTexCoord3dvARB);
1700 SET_MultiTexCoord3iARB(dest, loopback_MultiTexCoord3iARB);
1701 SET_MultiTexCoord3ivARB(dest, loopback_MultiTexCoord3ivARB);
1702 SET_MultiTexCoord3sARB(dest, loopback_MultiTexCoord3sARB);
1703 SET_MultiTexCoord3svARB(dest, loopback_MultiTexCoord3svARB);
1704 SET_MultiTexCoord4dARB(dest, loopback_MultiTexCoord4dARB);
1705 SET_MultiTexCoord4dvARB(dest, loopback_MultiTexCoord4dvARB);
1706 SET_MultiTexCoord4iARB(dest, loopback_MultiTexCoord4iARB);
1707 SET_MultiTexCoord4ivARB(dest, loopback_MultiTexCoord4ivARB);
1708 SET_MultiTexCoord4sARB(dest, loopback_MultiTexCoord4sARB);
1709 SET_MultiTexCoord4svARB(dest, loopback_MultiTexCoord4svARB);
1710 SET_EvalCoord2dv(dest, loopback_EvalCoord2dv);
1711 SET_EvalCoord2fv(dest, loopback_EvalCoord2fv);
1712 SET_EvalCoord2d(dest, loopback_EvalCoord2d);
1713 SET_EvalCoord1dv(dest, loopback_EvalCoord1dv);
1714 SET_EvalCoord1fv(dest, loopback_EvalCoord1fv);
1715 SET_EvalCoord1d(dest, loopback_EvalCoord1d);
1716 SET_Materialf(dest, loopback_Materialf);
1717 SET_Materiali(dest, loopback_Materiali);
1718 SET_Materialiv(dest, loopback_Materialiv);
1719 SET_Rectd(dest, loopback_Rectd);
1720 SET_Rectdv(dest, loopback_Rectdv);
1721 SET_Rectfv(dest, loopback_Rectfv);
1722 SET_Recti(dest, loopback_Recti);
1723 SET_Rectiv(dest, loopback_Rectiv);
1724 SET_Rects(dest, loopback_Rects);
1725 SET_Rectsv(dest, loopback_Rectsv);
1726 SET_FogCoorddEXT(dest, loopback_FogCoorddEXT);
1727 SET_FogCoorddvEXT(dest, loopback_FogCoorddvEXT);
1728
1729 SET_VertexAttrib1sNV(dest, loopback_VertexAttrib1sNV);
1730 SET_VertexAttrib1dNV(dest, loopback_VertexAttrib1dNV);
1731 SET_VertexAttrib2sNV(dest, loopback_VertexAttrib2sNV);
1732 SET_VertexAttrib2dNV(dest, loopback_VertexAttrib2dNV);
1733 SET_VertexAttrib3sNV(dest, loopback_VertexAttrib3sNV);
1734 SET_VertexAttrib3dNV(dest, loopback_VertexAttrib3dNV);
1735 SET_VertexAttrib4sNV(dest, loopback_VertexAttrib4sNV);
1736 SET_VertexAttrib4dNV(dest, loopback_VertexAttrib4dNV);
1737 SET_VertexAttrib4ubNV(dest, loopback_VertexAttrib4ubNV);
1738 SET_VertexAttrib1svNV(dest, loopback_VertexAttrib1svNV);
1739 SET_VertexAttrib1dvNV(dest, loopback_VertexAttrib1dvNV);
1740 SET_VertexAttrib2svNV(dest, loopback_VertexAttrib2svNV);
1741 SET_VertexAttrib2dvNV(dest, loopback_VertexAttrib2dvNV);
1742 SET_VertexAttrib3svNV(dest, loopback_VertexAttrib3svNV);
1743 SET_VertexAttrib3dvNV(dest, loopback_VertexAttrib3dvNV);
1744 SET_VertexAttrib4svNV(dest, loopback_VertexAttrib4svNV);
1745 SET_VertexAttrib4dvNV(dest, loopback_VertexAttrib4dvNV);
1746 SET_VertexAttrib4ubvNV(dest, loopback_VertexAttrib4ubvNV);
1747 SET_VertexAttribs1svNV(dest, loopback_VertexAttribs1svNV);
1748 SET_VertexAttribs1fvNV(dest, loopback_VertexAttribs1fvNV);
1749 SET_VertexAttribs1dvNV(dest, loopback_VertexAttribs1dvNV);
1750 SET_VertexAttribs2svNV(dest, loopback_VertexAttribs2svNV);
1751 SET_VertexAttribs2fvNV(dest, loopback_VertexAttribs2fvNV);
1752 SET_VertexAttribs2dvNV(dest, loopback_VertexAttribs2dvNV);
1753 SET_VertexAttribs3svNV(dest, loopback_VertexAttribs3svNV);
1754 SET_VertexAttribs3fvNV(dest, loopback_VertexAttribs3fvNV);
1755 SET_VertexAttribs3dvNV(dest, loopback_VertexAttribs3dvNV);
1756 SET_VertexAttribs4svNV(dest, loopback_VertexAttribs4svNV);
1757 SET_VertexAttribs4fvNV(dest, loopback_VertexAttribs4fvNV);
1758 SET_VertexAttribs4dvNV(dest, loopback_VertexAttribs4dvNV);
1759 SET_VertexAttribs4ubvNV(dest, loopback_VertexAttribs4ubvNV);
1760
1761 SET_VertexAttrib1sARB(dest, loopback_VertexAttrib1sARB);
1762 SET_VertexAttrib1dARB(dest, loopback_VertexAttrib1dARB);
1763 SET_VertexAttrib2sARB(dest, loopback_VertexAttrib2sARB);
1764 SET_VertexAttrib2dARB(dest, loopback_VertexAttrib2dARB);
1765 SET_VertexAttrib3sARB(dest, loopback_VertexAttrib3sARB);
1766 SET_VertexAttrib3dARB(dest, loopback_VertexAttrib3dARB);
1767 SET_VertexAttrib4sARB(dest, loopback_VertexAttrib4sARB);
1768 SET_VertexAttrib4dARB(dest, loopback_VertexAttrib4dARB);
1769 SET_VertexAttrib1svARB(dest, loopback_VertexAttrib1svARB);
1770 SET_VertexAttrib1dvARB(dest, loopback_VertexAttrib1dvARB);
1771 SET_VertexAttrib2svARB(dest, loopback_VertexAttrib2svARB);
1772 SET_VertexAttrib2dvARB(dest, loopback_VertexAttrib2dvARB);
1773 SET_VertexAttrib3svARB(dest, loopback_VertexAttrib3svARB);
1774 SET_VertexAttrib3dvARB(dest, loopback_VertexAttrib3dvARB);
1775 SET_VertexAttrib4svARB(dest, loopback_VertexAttrib4svARB);
1776 SET_VertexAttrib4dvARB(dest, loopback_VertexAttrib4dvARB);
1777 SET_VertexAttrib4NubARB(dest, loopback_VertexAttrib4NubARB);
1778 SET_VertexAttrib4NubvARB(dest, loopback_VertexAttrib4NubvARB);
1779 SET_VertexAttrib4bvARB(dest, loopback_VertexAttrib4bvARB);
1780 SET_VertexAttrib4ivARB(dest, loopback_VertexAttrib4ivARB);
1781 SET_VertexAttrib4ubvARB(dest, loopback_VertexAttrib4ubvARB);
1782 SET_VertexAttrib4usvARB(dest, loopback_VertexAttrib4usvARB);
1783 SET_VertexAttrib4uivARB(dest, loopback_VertexAttrib4uivARB);
1784 SET_VertexAttrib4NbvARB(dest, loopback_VertexAttrib4NbvARB);
1785 SET_VertexAttrib4NsvARB(dest, loopback_VertexAttrib4NsvARB);
1786 SET_VertexAttrib4NivARB(dest, loopback_VertexAttrib4NivARB);
1787 SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB);
1788 SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB);
1789
1790 /* GL 3.0 */
1791 #if 0
1792 SET_VertexAttribI1i(dest, loopback_VertexAttribI1i);
1793 SET_VertexAttribI2i(dest, loopback_VertexAttribI2i);
1794 SET_VertexAttribI3i(dest, loopback_VertexAttribI3i);
1795 SET_VertexAttribI4i(dest, loopback_VertexAttribI4i);
1796 SET_VertexAttribI1ui(dest, loopback_VertexAttribI1ui);
1797 SET_VertexAttribI2ui(dest, loopback_VertexAttribI2ui);
1798 SET_VertexAttribI3ui(dest, loopback_VertexAttribI3ui);
1799 SET_VertexAttribI4ui(dest, loopback_VertexAttribI4ui);
1800 SET_VertexAttribI1iv(dest, loopback_VertexAttribI1iv);
1801 SET_VertexAttribI2iv(dest, loopback_VertexAttribI2iv);
1802 SET_VertexAttribI3iv(dest, loopback_VertexAttribI3iv);
1803 SET_VertexAttribI4iv(dest, loopback_VertexAttribI4iv);
1804 SET_VertexAttribI1uiv(dest, loopback_VertexAttribI1uiv);
1805 SET_VertexAttribI2uiv(dest, loopback_VertexAttribI2uiv);
1806 SET_VertexAttribI3uiv(dest, loopback_VertexAttribI3uiv);
1807 SET_VertexAttribI4uiv(dest, loopback_VertexAttribI4uiv);
1808 SET_VertexAttribI4bv(dest, loopback_VertexAttribI4bv);
1809 SET_VertexAttribI4sv(dest, loopback_VertexAttribI4sv);
1810 SET_VertexAttribI4ubv(dest, loopback_VertexAttribI4ubv);
1811 SET_VertexAttribI4usv(dest, loopback_VertexAttribI4usv);
1812 #else
1813 (void) loopback_VertexAttribI1i;
1814 (void) loopback_VertexAttribI2i;
1815 (void) loopback_VertexAttribI3i;
1816 (void) loopback_VertexAttribI4i;
1817 (void) loopback_VertexAttribI1ui;
1818 (void) loopback_VertexAttribI2ui;
1819 (void) loopback_VertexAttribI3ui;
1820 (void) loopback_VertexAttribI4ui;
1821 (void) loopback_VertexAttribI1iv;
1822 (void) loopback_VertexAttribI2iv;
1823 (void) loopback_VertexAttribI3iv;
1824 (void) loopback_VertexAttribI4iv;
1825 (void) loopback_VertexAttribI1uiv;
1826 (void) loopback_VertexAttribI2uiv;
1827 (void) loopback_VertexAttribI3uiv;
1828 (void) loopback_VertexAttribI4uiv;
1829 (void) loopback_VertexAttribI4bv;
1830 (void) loopback_VertexAttribI4sv;
1831 (void) loopback_VertexAttribI4ubv;
1832 (void) loopback_VertexAttribI4usv;
1833 #endif
1834 }
1835
1836
1837 #endif /* FEATURE_beginend */