blob: fd6a83e82f5253d90266296576a26aae0fb1088a [file] [log] [blame]
Keith Whitwellb0149862000-11-24 10:30:04 +00001#include "glheader.h"
2#include "glapitable.h"
3#include "macros.h"
4#include "colormac.h"
5#include "api_loopback.h"
6
7/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
8 * calls to a smaller set of driver-provided formats. Currently just
9 * go back to dispatch to find these (eg. call glNormal3f directly),
10 * hence 'loopback'.
11 *
12 * The driver must supply all of the remaining entry points, which are
13 * listed in vtxfmt.h. The easiest way for a driver to do this is to
14 * install the supplied software t&l module.
15 */
16#define DRIVER(x) gl##x
17#define COLORUBV(v) DRIVER(Color4ubv)(v)
18#define COLORF(r,g,b,a) DRIVER(Color4f)(r,g,b,a)
19#define FOGCOORDF(x) DRIVER(FogCoordfEXT)(x)
20#define VERTEX2(x,y) DRIVER(Vertex2f)(x,y)
21#define VERTEX3(x,y,z) DRIVER(Vertex3f)(x,y,z)
22#define VERTEX4(x,y,z,w) DRIVER(Vertex4f)(x,y,z,w)
23#define NORMAL(x,y,z) DRIVER(Normal3f)(x,y,z)
24#define TEXCOORD1(s) DRIVER(TexCoord1f)(s)
25#define TEXCOORD2(s,t) DRIVER(TexCoord2f)(s,t)
26#define TEXCOORD3(s,t,u) DRIVER(TexCoord3f)(s,t,u)
27#define TEXCOORD4(s,t,u,v) DRIVER(TexCoord4f)(s,t,u,v)
28#define INDEX(c) DRIVER(Indexub)(c)
29#define MULTI_TEXCOORD1(z,s) DRIVER(MultiTexCoord1fARB)(z,s)
30#define MULTI_TEXCOORD2(z,s,t) DRIVER(MultiTexCoord2fARB)(z,s,t)
31#define MULTI_TEXCOORD3(z,s,t,u) DRIVER(MultiTexCoord3fARB)(z,s,t,u)
32#define MULTI_TEXCOORD4(z,s,t,u,v) DRIVER(MultiTexCoord4fARB)(z,s,t,u,v)
33#define EVALCOORD1(x) DRIVER(EvalCoord1f)(x)
34#define EVALCOORD2(x,y) DRIVER(EvalCoord2f)(x,y)
35#define MATERIALFV(a,b,c) DRIVER(Materialfv)(a,b,c)
36#define RECTF(a,b,c,d) DRIVER(Rectf)(a,b,c,d)
37#define SECONDARYCOLORUB(a,b,c) DRIVER(SecondaryColor3ubEXT)(a,b,c)
38#define SECONDARYCOLORF(a,b,c) DRIVER(SecondaryColor3fEXT)(a,b,c)
39
40
41static void
42loopback_Color3b( GLbyte red, GLbyte green, GLbyte blue )
43{
44 GLubyte col[4];
45 col[0] = BYTE_TO_UBYTE(red);
46 col[1] = BYTE_TO_UBYTE(green);
47 col[2] = BYTE_TO_UBYTE(blue);
48 col[3] = 255;
49 COLORUBV(col);
50}
51
52static void
53loopback_Color3d( GLdouble red, GLdouble green, GLdouble blue )
54{
55 GLubyte col[4];
56 GLfloat r = red;
57 GLfloat g = green;
58 GLfloat b = blue;
59 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
60 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
61 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
62 col[3] = 255;
63 COLORUBV( col );
64}
65
66static void
67loopback_Color3i( GLint red, GLint green, GLint blue )
68{
69 GLubyte col[4];
70 col[0] = INT_TO_UBYTE(red);
71 col[1] = INT_TO_UBYTE(green);
72 col[2] = INT_TO_UBYTE(blue);
73 col[3] = 255;
74 COLORUBV(col);
75}
76
77static void
78loopback_Color3s( GLshort red, GLshort green, GLshort blue )
79{
80 GLubyte col[4];
81 col[0] = SHORT_TO_UBYTE(red);
82 col[1] = SHORT_TO_UBYTE(green);
83 col[2] = SHORT_TO_UBYTE(blue);
84 col[3] = 255;
85 COLORUBV(col);
86}
87
88static void
89loopback_Color3ui( GLuint red, GLuint green, GLuint blue )
90{
91 GLubyte col[4];
92 col[0] = UINT_TO_UBYTE(red);
93 col[1] = UINT_TO_UBYTE(green);
94 col[2] = UINT_TO_UBYTE(blue);
95 col[3] = 255;
96 COLORUBV(col);
97}
98
99static void
100loopback_Color3us( GLushort red, GLushort green, GLushort blue )
101{
102 GLubyte col[4];
103 col[0] = USHORT_TO_UBYTE(red);
104 col[1] = USHORT_TO_UBYTE(green);
105 col[2] = USHORT_TO_UBYTE(blue);
106 col[3] = 255;
107 COLORUBV(col);
108}
109
110static void
111loopback_Color4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )
112{
113 GLubyte col[4];
114 col[0] = BYTE_TO_UBYTE(red);
115 col[1] = BYTE_TO_UBYTE(green);
116 col[2] = BYTE_TO_UBYTE(blue);
117 col[3] = 255;
118 COLORUBV(col);
119}
120
121static void
122loopback_Color4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha )
123{
124 GLubyte col[4];
125 GLfloat r = red;
126 GLfloat g = green;
127 GLfloat b = blue;
128 GLfloat a = alpha;
129 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
130 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
131 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
132 FLOAT_COLOR_TO_UBYTE_COLOR(col[3], a);
133 COLORUBV( col );
134}
135
136static void
137loopback_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
138{
139 GLubyte col[4];
140 col[0] = INT_TO_UBYTE(red);
141 col[1] = INT_TO_UBYTE(green);
142 col[2] = INT_TO_UBYTE(blue);
143 col[3] = INT_TO_UBYTE(alpha);
144 COLORUBV(col);
145}
146
147static void
148loopback_Color4s( GLshort red, GLshort green, GLshort blue,
149 GLshort alpha )
150{
151 GLubyte col[4];
152 col[0] = SHORT_TO_UBYTE(red);
153 col[1] = SHORT_TO_UBYTE(green);
154 col[2] = SHORT_TO_UBYTE(blue);
155 col[3] = SHORT_TO_UBYTE(alpha);
156 COLORUBV(col);
157}
158
159static void
160loopback_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
161{
162 GLubyte col[4];
163 col[0] = UINT_TO_UBYTE(red);
164 col[1] = UINT_TO_UBYTE(green);
165 col[2] = UINT_TO_UBYTE(blue);
166 col[3] = UINT_TO_UBYTE(alpha);
167 COLORUBV(col);
168}
169
170static void
171loopback_Color4us( GLushort red, GLushort green, GLushort blue,
172 GLushort alpha )
173{
174 GLubyte col[4];
175 col[0] = USHORT_TO_UBYTE(red);
176 col[1] = USHORT_TO_UBYTE(green);
177 col[2] = USHORT_TO_UBYTE(blue);
178 col[3] = USHORT_TO_UBYTE(alpha);
179 COLORUBV(col);
180}
181
182static void
183loopback_Color3bv( const GLbyte *v )
184{
185 GLubyte col[4];
186 col[0] = BYTE_TO_UBYTE(v[0]);
187 col[1] = BYTE_TO_UBYTE(v[1]);
188 col[2] = BYTE_TO_UBYTE(v[2]);
189 col[3] = 255;
190 COLORUBV(col);
191}
192
193static void
194loopback_Color3dv( const GLdouble *v )
195{
196 GLubyte col[4];
197 GLfloat r = v[0];
198 GLfloat g = v[1];
199 GLfloat b = v[2];
200 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
201 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
202 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
203 col[3] = 255;
204 COLORUBV( col );
205}
206
207static void
208loopback_Color3iv( const GLint *v )
209{
210 GLubyte col[4];
211 col[0] = INT_TO_UBYTE(v[0]);
212 col[1] = INT_TO_UBYTE(v[1]);
213 col[2] = INT_TO_UBYTE(v[2]);
214 col[3] = 255;
215 COLORUBV(col);
216}
217
218static void
219loopback_Color3sv( const GLshort *v )
220{
221 GLubyte col[4];
222 col[0] = SHORT_TO_UBYTE(v[0]);
223 col[1] = SHORT_TO_UBYTE(v[1]);
224 col[2] = SHORT_TO_UBYTE(v[2]);
225 col[3] = 255;
226 COLORUBV(col);
227}
228
229static void
230loopback_Color3uiv( const GLuint *v )
231{
232 GLubyte col[4];
233 col[0] = UINT_TO_UBYTE(v[0]);
234 col[1] = UINT_TO_UBYTE(v[1]);
235 col[2] = UINT_TO_UBYTE(v[2]);
236 col[3] = 255;
237 COLORUBV(col);
238}
239
240static void
241loopback_Color3usv( const GLushort *v )
242{
243 GLubyte col[4];
244 col[0] = USHORT_TO_UBYTE(v[0]);
245 col[1] = USHORT_TO_UBYTE(v[1]);
246 col[2] = USHORT_TO_UBYTE(v[2]);
247 col[3] = 255;
248 COLORUBV(col);
249
250}
251
252static void
253loopback_Color4bv( const GLbyte *v )
254{
255 GLubyte col[4];
256 col[0] = BYTE_TO_UBYTE(v[0]);
257 col[1] = BYTE_TO_UBYTE(v[1]);
258 col[2] = BYTE_TO_UBYTE(v[2]);
259 col[3] = BYTE_TO_UBYTE(v[3]);
260 COLORUBV(col);
261}
262
263static void
264loopback_Color4dv( const GLdouble *v )
265{
266 GLubyte col[4];
267 GLfloat r = v[0];
268 GLfloat g = v[1];
269 GLfloat b = v[2];
270 GLfloat a = v[3];
271 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
272 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
273 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
274 FLOAT_COLOR_TO_UBYTE_COLOR(col[3], a);
275 COLORUBV( col );
276}
277
278static void
279loopback_Color4iv( const GLint *v )
280{
281 GLubyte col[4];
282 col[0] = INT_TO_UBYTE(v[0]);
283 col[1] = INT_TO_UBYTE(v[1]);
284 col[2] = INT_TO_UBYTE(v[2]);
285 col[3] = INT_TO_UBYTE(v[3]);
286 COLORUBV(col);
287}
288
289static void
290loopback_Color4sv( const GLshort *v)
291{
292 GLubyte col[4];
293 col[0] = SHORT_TO_UBYTE(v[0]);
294 col[1] = SHORT_TO_UBYTE(v[1]);
295 col[2] = SHORT_TO_UBYTE(v[2]);
296 col[3] = SHORT_TO_UBYTE(v[3]);
297 COLORUBV(col);
298}
299
300static void
301loopback_Color4uiv( const GLuint *v)
302{
303 GLubyte col[4];
304 col[0] = UINT_TO_UBYTE(v[0]);
305 col[1] = UINT_TO_UBYTE(v[1]);
306 col[2] = UINT_TO_UBYTE(v[2]);
307 col[3] = UINT_TO_UBYTE(v[3]);
308 COLORUBV(col);
309}
310
311static void
312loopback_Color4usv( const GLushort *v)
313{
314 GLubyte col[4];
315 col[0] = USHORT_TO_UBYTE(v[0]);
316 col[1] = USHORT_TO_UBYTE(v[1]);
317 col[2] = USHORT_TO_UBYTE(v[2]);
318 col[3] = USHORT_TO_UBYTE(v[3]);
319 COLORUBV(col);
320}
321
322static void
323loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
324{
325 COLORF( BYTE_TO_FLOAT(red),
326 BYTE_TO_FLOAT(green),
327 BYTE_TO_FLOAT(blue),
328 1.0 );
329}
330
331static void
332loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
333{
334 COLORF( red, green, blue, 1.0 );
335}
336
337static void
338loopback_Color3i_f( GLint red, GLint green, GLint blue )
339{
340 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
341 INT_TO_FLOAT(blue), 1.0);
342}
343
344static void
345loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
346{
347 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
348 SHORT_TO_FLOAT(blue), 1.0);
349}
350
351static void
352loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
353{
354 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
355 UINT_TO_FLOAT(blue), 1.0 );
356}
357
358static void
359loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
360{
361 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
362 USHORT_TO_FLOAT(blue), 1.0 );
363}
364
365
366static void
367loopback_Color3bv_f( const GLbyte *v )
368{
369 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
370 BYTE_TO_FLOAT(v[2]), 1.0 );
371}
372
373static void
374loopback_Color3dv_f( const GLdouble *v )
375{
376 COLORF( v[0], v[1], v[2], 1.0 );
377}
378
379static void
380loopback_Color3iv_f( const GLint *v )
381{
382 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
383 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
384}
385
386static void
387loopback_Color3sv_f( const GLshort *v )
388{
389 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
390 SHORT_TO_FLOAT(v[2]), 1.0 );
391}
392
393static void
394loopback_Color3uiv_f( const GLuint *v )
395{
396 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
397 UINT_TO_FLOAT(v[2]), 1.0 );
398}
399
400static void
401loopback_Color3usv_f( const GLushort *v )
402{
403 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
404 USHORT_TO_FLOAT(v[2]), 1.0 );
405}
406
407
408static void
409loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
410 GLbyte alpha )
411{
412 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
413 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
414}
415
416static void
417loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
418 GLdouble alpha )
419{
420 COLORF( red, green, blue, alpha );
421}
422
423static void
424loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
425{
426 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
427 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
428}
429
430static void
431loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
432 GLshort alpha )
433{
434 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
435 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
436}
437
438static void
439loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
440{
441 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
442 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
443}
444
445static void
446loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
447{
448 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
449 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
450}
451
452
453static void
454loopback_Color4iv_f( const GLint *v )
455{
456 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
457 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
458}
459
460
461static void
462loopback_Color4bv_f( const GLbyte *v )
463{
464 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
465 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
466}
467
468static void
469loopback_Color4dv_f( const GLdouble *v )
470{
471 COLORF( v[0], v[1], v[2], v[3] );
472}
473
474
475static void
476loopback_Color4sv_f( const GLshort *v)
477{
478 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
479 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
480}
481
482
483static void
484loopback_Color4uiv_f( const GLuint *v)
485{
486 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
487 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
488}
489
490static void
491loopback_Color4usv_f( const GLushort *v)
492{
493 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
494 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
495}
496
497static void
498loopback_FogCoorddEXT( GLdouble d )
499{
500 FOGCOORDF( d );
501}
502
503static void
504loopback_FogCoorddvEXT( const GLdouble *v )
505{
506 FOGCOORDF( *v );
507}
508
509
510static void
511loopback_Indexd( GLdouble c )
512{
513 INDEX( ( GLuint) (GLint) c );
514}
515
516static void
517loopback_Indexf( GLfloat c )
518{
519 INDEX( (GLuint) (GLint) c );
520}
521
522static void
523loopback_Indexi( GLint c )
524{
525 INDEX( (GLuint) c );
526}
527
528static void
529loopback_Indexs( GLshort c )
530{
531 INDEX( (GLuint) c );
532}
533
534static void
535loopback_Indexub( GLubyte c )
536{
537 INDEX( (GLuint) c );
538}
539
540static void
541loopback_Indexdv( const GLdouble *c )
542{
543 INDEX( (GLuint) (GLint) *c );
544}
545
546static void
547loopback_Indexfv( const GLfloat *c )
548{
549 INDEX( (GLuint) (GLint) *c );
550}
551
552static void
553loopback_Indexiv( const GLint *c )
554{
555 INDEX( *c );
556}
557
558static void
559loopback_Indexsv( const GLshort *c )
560{
561 INDEX( (GLuint) (GLint) *c );
562}
563
564static void
565loopback_Indexubv( const GLubyte *c )
566{
567 INDEX( (GLuint) *c );
568}
569
570static void
571loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
572{
573 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
574}
575
576static void
577loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
578{
579 NORMAL(nx, ny, nz);
580}
581
582static void
583loopback_Normal3i( GLint nx, GLint ny, GLint nz )
584{
585 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
586}
587
588static void
589loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
590{
591 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
592}
593
594static void
595loopback_Normal3bv( const GLbyte *v )
596{
597 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
598}
599
600static void
601loopback_Normal3dv( const GLdouble *v )
602{
603 NORMAL( v[0], v[1], v[2] );
604}
605
606static void
607loopback_Normal3iv( const GLint *v )
608{
609 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
610}
611
612static void
613loopback_Normal3sv( const GLshort *v )
614{
615 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
616}
617
618static void
619loopback_TexCoord1d( GLdouble s )
620{
621 TEXCOORD1(s);
622}
623
624static void
625loopback_TexCoord1i( GLint s )
626{
627 TEXCOORD1(s);
628}
629
630static void
631loopback_TexCoord1s( GLshort s )
632{
633 TEXCOORD1(s);
634}
635
636static void
637loopback_TexCoord2d( GLdouble s, GLdouble t )
638{
639 TEXCOORD2(s,t);
640}
641
642static void
643loopback_TexCoord2s( GLshort s, GLshort t )
644{
645 TEXCOORD2(s,t);
646}
647
648static void
649loopback_TexCoord2i( GLint s, GLint t )
650{
651 TEXCOORD2(s,t);
652}
653
654static void
655loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
656{
657 TEXCOORD3(s,t,r);
658}
659
660static void
661loopback_TexCoord3i( GLint s, GLint t, GLint r )
662{
663 TEXCOORD3(s,t,r);
664}
665
666static void
667loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
668{
669 TEXCOORD3(s,t,r);
670}
671
672static void
673loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
674{
675 TEXCOORD4(s,t,r,q);
676}
677
678static void
679loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
680{
681 TEXCOORD4(s,t,r,q);
682}
683
684static void
685loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
686{
687 TEXCOORD4(s,t,r,q);
688}
689
690static void
691loopback_TexCoord1dv( const GLdouble *v )
692{
693 TEXCOORD1(v[0]);
694}
695
696static void
697loopback_TexCoord1iv( const GLint *v )
698{
699 TEXCOORD1(v[0]);
700}
701
702static void
703loopback_TexCoord1sv( const GLshort *v )
704{
705 TEXCOORD1(v[0]);
706}
707
708static void
709loopback_TexCoord2dv( const GLdouble *v )
710{
711 TEXCOORD2(v[0],v[1]);
712}
713
714static void
715loopback_TexCoord2iv( const GLint *v )
716{
717 TEXCOORD2(v[0],v[1]);
718}
719
720static void
721loopback_TexCoord2sv( const GLshort *v )
722{
723 TEXCOORD2(v[0],v[1]);
724}
725
726static void
727loopback_TexCoord3dv( const GLdouble *v )
728{
729 TEXCOORD2(v[0],v[1]);
730}
731
732static void
733loopback_TexCoord3iv( const GLint *v )
734{
735 TEXCOORD3(v[0],v[1],v[2]);
736}
737
738static void
739loopback_TexCoord3sv( const GLshort *v )
740{
741 TEXCOORD3(v[0],v[1],v[2]);
742}
743
744static void
745loopback_TexCoord4dv( const GLdouble *v )
746{
747 TEXCOORD4(v[0],v[1],v[2],v[3]);
748}
749
750static void
751loopback_TexCoord4iv( const GLint *v )
752{
753 TEXCOORD4(v[0],v[1],v[2],v[3]);
754}
755
756static void
757loopback_TexCoord4sv( const GLshort *v )
758{
759 TEXCOORD4(v[0],v[1],v[2],v[3]);
760}
761
762static void
763loopback_Vertex2d( GLdouble x, GLdouble y )
764{
765 VERTEX2( (GLfloat) x, (GLfloat) y );
766}
767
768static void
769loopback_Vertex2i( GLint x, GLint y )
770{
771 VERTEX2( (GLfloat) x, (GLfloat) y );
772}
773
774static void
775loopback_Vertex2s( GLshort x, GLshort y )
776{
777 VERTEX2( (GLfloat) x, (GLfloat) y );
778}
779
780static void
781loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
782{
783 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
784}
785
786static void
787loopback_Vertex3i( GLint x, GLint y, GLint z )
788{
789 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
790}
791
792static void
793loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
794{
795 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
796}
797
798static void
799loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
800{
801 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
802}
803
804static void
805loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
806{
807 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
808}
809
810static void
811loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
812{
813 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
814}
815
816static void
817loopback_Vertex2dv( const GLdouble *v )
818{
819 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
820}
821
822static void
823loopback_Vertex2iv( const GLint *v )
824{
825 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
826}
827
828static void
829loopback_Vertex2sv( const GLshort *v )
830{
831 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
832}
833
834static void
835loopback_Vertex3dv( const GLdouble *v )
836{
837 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
838}
839
840static void
841loopback_Vertex3iv( const GLint *v )
842{
843 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
844}
845
846static void
847loopback_Vertex3sv( const GLshort *v )
848{
849 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
850}
851
852static void
853loopback_Vertex4dv( const GLdouble *v )
854{
855 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
856 (GLfloat) v[2], (GLfloat) v[3] );
857}
858
859static void
860loopback_Vertex4iv( const GLint *v )
861{
862 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
863 (GLfloat) v[2], (GLfloat) v[3] );
864}
865
866static void
867loopback_Vertex4sv( const GLshort *v )
868{
869 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
870 (GLfloat) v[2], (GLfloat) v[3] );
871}
872
873static void
874loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
875{
876 MULTI_TEXCOORD1( target, s );
877}
878
879static void
880loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
881{
882 MULTI_TEXCOORD1( target, v[0] );
883}
884
885static void
886loopback_MultiTexCoord1iARB(GLenum target, GLint s)
887{
888 MULTI_TEXCOORD1( target, s );
889}
890
891static void
892loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
893{
894 MULTI_TEXCOORD1( target, v[0] );
895}
896
897static void
898loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
899{
900 MULTI_TEXCOORD1( target, s );
901}
902
903static void
904loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
905{
906 MULTI_TEXCOORD1( target, v[0] );
907}
908
909static void
910loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
911{
912 MULTI_TEXCOORD2( target, s, t );
913}
914
915static void
916loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
917{
918 MULTI_TEXCOORD2( target, v[0], v[1] );
919}
920
921static void
922loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
923{
924 MULTI_TEXCOORD2( target, s, t );
925}
926
927static void
928loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
929{
930 MULTI_TEXCOORD2( target, v[0], v[1] );
931}
932
933static void
934loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
935{
936 MULTI_TEXCOORD2( target, s, t );
937}
938
939static void
940loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
941{
942 MULTI_TEXCOORD2( target, v[0], v[1] );
943}
944
945static void
946loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
947{
948 MULTI_TEXCOORD3( target, s, t, r );
949}
950
951static void
952loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
953{
954 MULTI_TEXCOORD3( target, v[0], v[1], v[2] );
955}
956
957static void
958loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
959{
960 MULTI_TEXCOORD3( target, s, t, r );
961}
962
963static void
964loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
965{
966 MULTI_TEXCOORD3( target, v[0], v[1], v[2] );
967}
968
969static void
970loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
971{
972 MULTI_TEXCOORD3( target, s, t, r );
973}
974
975static void
976loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
977{
978 MULTI_TEXCOORD3( target, v[0], v[1], v[2] );
979}
980
981static void
982loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
983{
984 MULTI_TEXCOORD4( target, s, t, r, q );
985}
986
987static void
988loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
989{
990 MULTI_TEXCOORD4( target, v[0], v[1], v[2], v[3] );
991}
992
993static void
994loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
995{
996 MULTI_TEXCOORD4( target, s, t, r, q );
997}
998
999static void
1000loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
1001{
1002 MULTI_TEXCOORD4( target, v[0], v[1], v[2], v[3] );
1003}
1004
1005static void
1006loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
1007{
1008 MULTI_TEXCOORD4( target, s, t, r, q );
1009}
1010
1011static void
1012loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
1013{
1014 MULTI_TEXCOORD4( target, v[0], v[1], v[2], v[3] );
1015}
1016
1017static void
1018loopback_EvalCoord2dv( const GLdouble *u )
1019{
1020 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
1021}
1022
1023static void
1024loopback_EvalCoord2fv( const GLfloat *u )
1025{
1026 EVALCOORD2( u[0], u[1] );
1027}
1028
1029static void
1030loopback_EvalCoord2d( GLdouble u, GLdouble v )
1031{
1032 EVALCOORD2( (GLfloat) u, (GLfloat) v );
1033}
1034
1035static void
1036loopback_EvalCoord1dv( const GLdouble *u )
1037{
1038 EVALCOORD1( (GLfloat) *u );
1039}
1040
1041static void
1042loopback_EvalCoord1fv( const GLfloat *u )
1043{
1044 EVALCOORD1( (GLfloat) *u );
1045}
1046
1047static void
1048loopback_EvalCoord1d( GLdouble u )
1049{
1050 EVALCOORD1( (GLfloat) u );
1051}
1052
1053static void
1054loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
1055{
1056 GLfloat fparam[4];
1057 fparam[0] = param;
1058 MATERIALFV( face, pname, fparam );
1059}
1060
1061static void
1062loopback_Materiali(GLenum face, GLenum pname, GLint param )
1063{
1064 GLfloat p = (GLfloat) param;
1065 MATERIALFV(face, pname, &p);
1066}
1067
1068static void
1069loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
1070{
1071 GLfloat fparam[4];
1072 switch (pname) {
1073 case GL_AMBIENT:
1074 case GL_DIFFUSE:
1075 case GL_SPECULAR:
1076 case GL_EMISSION:
1077 case GL_AMBIENT_AND_DIFFUSE:
1078 fparam[0] = INT_TO_FLOAT( params[0] );
1079 fparam[1] = INT_TO_FLOAT( params[1] );
1080 fparam[2] = INT_TO_FLOAT( params[2] );
1081 fparam[3] = INT_TO_FLOAT( params[3] );
1082 break;
1083 case GL_SHININESS:
1084 fparam[0] = (GLfloat) params[0];
1085 break;
1086 case GL_COLOR_INDEXES:
1087 fparam[0] = (GLfloat) params[0];
1088 fparam[1] = (GLfloat) params[1];
1089 fparam[2] = (GLfloat) params[2];
1090 break;
1091 default:
1092 ;
1093 }
1094 MATERIALFV(face, pname, fparam);
1095}
1096
1097
1098static void
1099loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
1100{
1101 RECTF(x1, y1, x2, y2);
1102}
1103
1104static void
1105loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
1106{
1107 RECTF(v1[0], v1[1], v2[0], v2[1]);
1108}
1109
1110static void
1111loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
1112{
1113 RECTF(v1[0], v1[1], v2[0], v2[1]);
1114}
1115
1116static void
1117loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
1118{
1119 RECTF(x1, y1, x2, y2);
1120}
1121
1122static void
1123loopback_Rectiv(const GLint *v1, const GLint *v2)
1124{
1125 RECTF(v1[0], v1[1], v2[0], v2[1]);
1126}
1127
1128static void
1129loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
1130{
1131 RECTF(x1, y1, x2, y2);
1132}
1133
1134static void
1135loopback_Rectsv(const GLshort *v1, const GLshort *v2)
1136{
1137 RECTF(v1[0], v1[1], v2[0], v2[1]);
1138}
1139
1140static void
1141loopback_SecondaryColor3bEXT( GLbyte red, GLbyte green, GLbyte blue )
1142{
1143 SECONDARYCOLORUB( BYTE_TO_UBYTE(red),
1144 BYTE_TO_UBYTE(green),
1145 BYTE_TO_UBYTE(blue) );
1146}
1147
1148static void
1149loopback_SecondaryColor3dEXT( GLdouble red, GLdouble green, GLdouble blue )
1150{
1151 GLubyte col[3];
1152 GLfloat r = red;
1153 GLfloat g = green;
1154 GLfloat b = blue;
1155 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
1156 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
1157 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
1158 SECONDARYCOLORUB( col[0], col[1], col[2] );
1159}
1160
1161static void
1162loopback_SecondaryColor3iEXT( GLint red, GLint green, GLint blue )
1163{
1164 SECONDARYCOLORUB( INT_TO_UBYTE(red),
1165 INT_TO_UBYTE(green),
1166 INT_TO_UBYTE(blue));
1167}
1168
1169static void
1170loopback_SecondaryColor3sEXT( GLshort red, GLshort green, GLshort blue )
1171{
1172 SECONDARYCOLORUB(SHORT_TO_UBYTE(red),
1173 SHORT_TO_UBYTE(green),
1174 SHORT_TO_UBYTE(blue));
1175}
1176
1177static void
1178loopback_SecondaryColor3uiEXT( GLuint red, GLuint green, GLuint blue )
1179{
1180 SECONDARYCOLORUB(UINT_TO_UBYTE(red),
1181 UINT_TO_UBYTE(green),
1182 UINT_TO_UBYTE(blue));
1183}
1184
1185static void
1186loopback_SecondaryColor3usEXT( GLushort red, GLushort green, GLushort blue )
1187{
1188 SECONDARYCOLORUB(USHORT_TO_UBYTE(red),
1189 USHORT_TO_UBYTE(green),
1190 USHORT_TO_UBYTE(blue));
1191}
1192
1193static void
1194loopback_SecondaryColor3bvEXT( const GLbyte *v )
1195{
1196 SECONDARYCOLORUB(BYTE_TO_UBYTE(v[0]),
1197 BYTE_TO_UBYTE(v[1]),
1198 BYTE_TO_UBYTE(v[2]));
1199}
1200
1201static void
1202loopback_SecondaryColor3dvEXT( const GLdouble *v )
1203{
1204 GLubyte col[3];
1205 GLfloat r = v[0];
1206 GLfloat g = v[1];
1207 GLfloat b = v[2];
1208 FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
1209 FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
1210 FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
1211 SECONDARYCOLORUB( col[0], col[1], col[2] );
1212}
1213
1214static void
1215loopback_SecondaryColor3ivEXT( const GLint *v )
1216{
1217 SECONDARYCOLORUB(INT_TO_UBYTE(v[0]),
1218 INT_TO_UBYTE(v[1]),
1219 INT_TO_UBYTE(v[2]));
1220}
1221
1222static void
1223loopback_SecondaryColor3svEXT( const GLshort *v )
1224{
1225 SECONDARYCOLORUB(SHORT_TO_UBYTE(v[0]),
1226 SHORT_TO_UBYTE(v[1]),
1227 SHORT_TO_UBYTE(v[2]));
1228}
1229
1230static void
1231loopback_SecondaryColor3uivEXT( const GLuint *v )
1232{
1233 SECONDARYCOLORUB(UINT_TO_UBYTE(v[0]),
1234 UINT_TO_UBYTE(v[1]),
1235 UINT_TO_UBYTE(v[2]));
1236}
1237
1238static void
1239loopback_SecondaryColor3usvEXT( const GLushort *v )
1240{
1241 SECONDARYCOLORUB(USHORT_TO_UBYTE(v[0]),
1242 USHORT_TO_UBYTE(v[1]),
1243 USHORT_TO_UBYTE(v[2]));
1244}
1245
1246
1247static void
1248loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
1249{
1250 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
1251 BYTE_TO_FLOAT(green),
1252 BYTE_TO_FLOAT(blue) );
1253}
1254
1255static void
1256loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
1257{
1258 SECONDARYCOLORF( red, green, blue );
1259}
1260
1261static void
1262loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
1263{
1264 SECONDARYCOLORF( INT_TO_FLOAT(red),
1265 INT_TO_FLOAT(green),
1266 INT_TO_FLOAT(blue));
1267}
1268
1269static void
1270loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
1271{
1272 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
1273 SHORT_TO_FLOAT(green),
1274 SHORT_TO_FLOAT(blue));
1275}
1276
1277static void
1278loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
1279{
1280 SECONDARYCOLORF(UINT_TO_FLOAT(red),
1281 UINT_TO_FLOAT(green),
1282 UINT_TO_FLOAT(blue));
1283}
1284
1285static void
1286loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
1287{
1288 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
1289 USHORT_TO_FLOAT(green),
1290 USHORT_TO_FLOAT(blue));
1291}
1292
1293static void
1294loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
1295{
1296 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1297 BYTE_TO_FLOAT(v[1]),
1298 BYTE_TO_FLOAT(v[2]));
1299}
1300
1301static void
1302loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
1303{
1304 SECONDARYCOLORF( v[0], v[1], v[2] );
1305}
1306static void
1307loopback_SecondaryColor3ivEXT_f( const GLint *v )
1308{
1309 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1310 INT_TO_FLOAT(v[1]),
1311 INT_TO_FLOAT(v[2]));
1312}
1313
1314static void
1315loopback_SecondaryColor3svEXT_f( const GLshort *v )
1316{
1317 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1318 SHORT_TO_FLOAT(v[1]),
1319 SHORT_TO_FLOAT(v[2]));
1320}
1321
1322static void
1323loopback_SecondaryColor3uivEXT_f( const GLuint *v )
1324{
1325 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1326 UINT_TO_FLOAT(v[1]),
1327 UINT_TO_FLOAT(v[2]));
1328}
1329
1330static void
1331loopback_SecondaryColor3usvEXT_f( const GLushort *v )
1332{
1333 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1334 USHORT_TO_FLOAT(v[1]),
1335 USHORT_TO_FLOAT(v[2]));
1336}
1337
1338
1339void
1340_mesa_loopback_prefer_float( struct _glapi_table *dest,
1341 GLboolean prefer_float_colors )
1342{
1343 if (!prefer_float_colors) {
1344 dest->Color3b = loopback_Color3b;
1345 dest->Color3d = loopback_Color3d;
1346 dest->Color3i = loopback_Color3i;
1347 dest->Color3s = loopback_Color3s;
1348 dest->Color3ui = loopback_Color3ui;
1349 dest->Color3us = loopback_Color3us;
1350 dest->Color4b = loopback_Color4b;
1351 dest->Color4d = loopback_Color4d;
1352 dest->Color4i = loopback_Color4i;
1353 dest->Color4s = loopback_Color4s;
1354 dest->Color4ui = loopback_Color4ui;
1355 dest->Color4us = loopback_Color4us;
1356 dest->Color3bv = loopback_Color3bv;
1357 dest->Color3dv = loopback_Color3dv;
1358 dest->Color3iv = loopback_Color3iv;
1359 dest->Color3sv = loopback_Color3sv;
1360 dest->Color3uiv = loopback_Color3uiv;
1361 dest->Color3usv = loopback_Color3usv;
1362 dest->Color4bv = loopback_Color4bv;
1363 dest->Color4dv = loopback_Color4dv;
1364 dest->Color4iv = loopback_Color4iv;
1365 dest->Color4sv = loopback_Color4sv;
1366 dest->Color4uiv = loopback_Color4uiv;
1367 dest->Color4usv = loopback_Color4usv;
1368 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT;
1369 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT;
1370 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT;
1371 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT;
1372 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT;
1373 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT;
1374 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT;
1375 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT;
1376 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT;
1377 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT;
1378 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT;
1379 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT;
1380 }
1381 else {
1382 dest->Color3b = loopback_Color3b_f;
1383 dest->Color3d = loopback_Color3d_f;
1384 dest->Color3i = loopback_Color3i_f;
1385 dest->Color3s = loopback_Color3s_f;
1386 dest->Color3ui = loopback_Color3ui_f;
1387 dest->Color3us = loopback_Color3us_f;
1388 dest->Color4b = loopback_Color4b_f;
1389 dest->Color4d = loopback_Color4d_f;
1390 dest->Color4i = loopback_Color4i_f;
1391 dest->Color4s = loopback_Color4s_f;
1392 dest->Color4ui = loopback_Color4ui_f;
1393 dest->Color4us = loopback_Color4us_f;
1394 dest->Color3bv = loopback_Color3bv_f;
1395 dest->Color3dv = loopback_Color3dv_f;
1396 dest->Color3iv = loopback_Color3iv_f;
1397 dest->Color3sv = loopback_Color3sv_f;
1398 dest->Color3uiv = loopback_Color3uiv_f;
1399 dest->Color3usv = loopback_Color3usv_f;
1400 dest->Color4bv = loopback_Color4bv_f;
1401 dest->Color4dv = loopback_Color4dv_f;
1402 dest->Color4iv = loopback_Color4iv_f;
1403 dest->Color4sv = loopback_Color4sv_f;
1404 dest->Color4uiv = loopback_Color4uiv_f;
1405 dest->Color4usv = loopback_Color4usv_f;
1406 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f;
1407 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f;
1408 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f;
1409 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f;
1410 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f;
1411 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f;
1412 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f;
1413 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f;
1414 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f;
1415 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f;
1416 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f;
1417 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f;
1418 }
1419}
1420
1421/* Passing prefer_f_colors as true will mean that all colors
1422 * *except* Color{34}ub{v} are passed as floats. Setting it false will
1423 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1424 *
1425 * This code never registers handlers for any of the entry points
1426 * listed in vtxfmt.h.
1427 */
1428void
1429_mesa_loopback_init_api_table( struct _glapi_table *dest,
1430 GLboolean prefer_float_colors )
1431{
1432 _mesa_loopback_prefer_float( dest, prefer_float_colors );
1433
1434 dest->Indexd = loopback_Indexd;
1435 dest->Indexf = loopback_Indexf;
1436 dest->Indexi = loopback_Indexi;
1437 dest->Indexs = loopback_Indexs;
1438 dest->Indexub = loopback_Indexub;
1439 dest->Indexdv = loopback_Indexdv;
1440 dest->Indexfv = loopback_Indexfv;
1441 dest->Indexiv = loopback_Indexiv;
1442 dest->Indexsv = loopback_Indexsv;
1443 dest->Indexubv = loopback_Indexubv;
1444 dest->Normal3b = loopback_Normal3b;
1445 dest->Normal3d = loopback_Normal3d;
1446 dest->Normal3i = loopback_Normal3i;
1447 dest->Normal3s = loopback_Normal3s;
1448 dest->Normal3bv = loopback_Normal3bv;
1449 dest->Normal3dv = loopback_Normal3dv;
1450 dest->Normal3iv = loopback_Normal3iv;
1451 dest->Normal3sv = loopback_Normal3sv;
1452 dest->TexCoord1d = loopback_TexCoord1d;
1453 dest->TexCoord1i = loopback_TexCoord1i;
1454 dest->TexCoord1s = loopback_TexCoord1s;
1455 dest->TexCoord2d = loopback_TexCoord2d;
1456 dest->TexCoord2s = loopback_TexCoord2s;
1457 dest->TexCoord2i = loopback_TexCoord2i;
1458 dest->TexCoord3d = loopback_TexCoord3d;
1459 dest->TexCoord3i = loopback_TexCoord3i;
1460 dest->TexCoord3s = loopback_TexCoord3s;
1461 dest->TexCoord4d = loopback_TexCoord4d;
1462 dest->TexCoord4i = loopback_TexCoord4i;
1463 dest->TexCoord4s = loopback_TexCoord4s;
1464 dest->TexCoord1dv = loopback_TexCoord1dv;
1465 dest->TexCoord1iv = loopback_TexCoord1iv;
1466 dest->TexCoord1sv = loopback_TexCoord1sv;
1467 dest->TexCoord2dv = loopback_TexCoord2dv;
1468 dest->TexCoord2iv = loopback_TexCoord2iv;
1469 dest->TexCoord2sv = loopback_TexCoord2sv;
1470 dest->TexCoord3dv = loopback_TexCoord3dv;
1471 dest->TexCoord3iv = loopback_TexCoord3iv;
1472 dest->TexCoord3sv = loopback_TexCoord3sv;
1473 dest->TexCoord4dv = loopback_TexCoord4dv;
1474 dest->TexCoord4iv = loopback_TexCoord4iv;
1475 dest->TexCoord4sv = loopback_TexCoord4sv;
1476 dest->Vertex2d = loopback_Vertex2d;
1477 dest->Vertex2i = loopback_Vertex2i;
1478 dest->Vertex2s = loopback_Vertex2s;
1479 dest->Vertex3d = loopback_Vertex3d;
1480 dest->Vertex3i = loopback_Vertex3i;
1481 dest->Vertex3s = loopback_Vertex3s;
1482 dest->Vertex4d = loopback_Vertex4d;
1483 dest->Vertex4i = loopback_Vertex4i;
1484 dest->Vertex4s = loopback_Vertex4s;
1485 dest->Vertex2dv = loopback_Vertex2dv;
1486 dest->Vertex2iv = loopback_Vertex2iv;
1487 dest->Vertex2sv = loopback_Vertex2sv;
1488 dest->Vertex3dv = loopback_Vertex3dv;
1489 dest->Vertex3iv = loopback_Vertex3iv;
1490 dest->Vertex3sv = loopback_Vertex3sv;
1491 dest->Vertex4dv = loopback_Vertex4dv;
1492 dest->Vertex4iv = loopback_Vertex4iv;
1493 dest->Vertex4sv = loopback_Vertex4sv;
1494 dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB;
1495 dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB;
1496 dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB;
1497 dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB;
1498 dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB;
1499 dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB;
1500 dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB;
1501 dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB;
1502 dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB;
1503 dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB;
1504 dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB;
1505 dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB;
1506 dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB;
1507 dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB;
1508 dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB;
1509 dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB;
1510 dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB;
1511 dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB;
1512 dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB;
1513 dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB;
1514 dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB;
1515 dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB;
1516 dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB;
1517 dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB;
1518 dest->EvalCoord2dv = loopback_EvalCoord2dv;
1519 dest->EvalCoord2fv = loopback_EvalCoord2fv;
1520 dest->EvalCoord2d = loopback_EvalCoord2d;
1521 dest->EvalCoord1dv = loopback_EvalCoord1dv;
1522 dest->EvalCoord1fv = loopback_EvalCoord1fv;
1523 dest->EvalCoord1d = loopback_EvalCoord1d;
1524 dest->Materialf = loopback_Materialf;
1525 dest->Materiali = loopback_Materiali;
1526 dest->Materialiv = loopback_Materialiv;
1527 dest->Rectd = loopback_Rectd;
1528 dest->Rectdv = loopback_Rectdv;
1529 dest->Rectfv = loopback_Rectfv;
1530 dest->Recti = loopback_Recti;
1531 dest->Rectiv = loopback_Rectiv;
1532 dest->Rects = loopback_Rects;
1533 dest->Rectsv = loopback_Rectsv;
1534 dest->FogCoorddEXT = loopback_FogCoorddEXT;
1535 dest->FogCoorddvEXT = loopback_FogCoorddvEXT;
1536}