blob: 7795935c0b576944cea68f064026cf6df649bcb9 [file] [log] [blame]
Keith Whitwellfc00cbe2001-12-20 15:30:45 +00001/* $Id: api_loopback.c,v 1.13 2001/12/20 15:30:45 keithw Exp $ */
Brian Paul50478de2000-11-27 18:17:09 +00002
3/*
4 * Mesa 3-D graphics library
5 * Version: 3.5
Gareth Hughes22144ab2001-03-12 00:48:37 +00006 *
7 * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
8 *
Brian Paul50478de2000-11-27 18:17:09 +00009 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
Gareth Hughes22144ab2001-03-12 00:48:37 +000015 *
Brian Paul50478de2000-11-27 18:17:09 +000016 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
Gareth Hughes22144ab2001-03-12 00:48:37 +000018 *
Brian Paul50478de2000-11-27 18:17:09 +000019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Gareth Hughes22144ab2001-03-12 00:48:37 +000025 *
Brian Paul50478de2000-11-27 18:17:09 +000026 * Authors:
Gareth Hughes22144ab2001-03-12 00:48:37 +000027 * Keith Whitwell <keithw@valinux.com>
Brian Paul50478de2000-11-27 18:17:09 +000028 */
29
30
Keith Whitwellb0149862000-11-24 10:30:04 +000031#include "glheader.h"
32#include "glapitable.h"
33#include "macros.h"
34#include "colormac.h"
Keith Whitwellfc00cbe2001-12-20 15:30:45 +000035#include "api_compat.h"
Keith Whitwellb0149862000-11-24 10:30:04 +000036#include "api_loopback.h"
37
38/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
39 * calls to a smaller set of driver-provided formats. Currently just
40 * go back to dispatch to find these (eg. call glNormal3f directly),
41 * hence 'loopback'.
42 *
43 * The driver must supply all of the remaining entry points, which are
Keith Whitwell9aff6cf2000-11-24 15:21:59 +000044 * listed in dd.h. The easiest way for a driver to do this is to
Keith Whitwellb0149862000-11-24 10:30:04 +000045 * install the supplied software t&l module.
46 */
Keith Whitwellfc00cbe2001-12-20 15:30:45 +000047#define COLORUBV(v) glColor4ubv(v)
48#define COLORF(r,g,b,a) glColor4f(r,g,b,a)
49#define VERTEX2(x,y) glVertex2f(x,y)
50#define VERTEX3(x,y,z) glVertex3f(x,y,z)
51#define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w)
52#define NORMAL(x,y,z) glNormal3f(x,y,z)
53#define TEXCOORD1(s) glTexCoord1f(s)
54#define TEXCOORD2(s,t) glTexCoord2f(s,t)
55#define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u)
56#define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v)
57#define INDEX(c) glIndexi(c)
58#define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s)
59#define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t)
60#define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u)
61#define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v)
62#define EVALCOORD1(x) glEvalCoord1f(x)
63#define EVALCOORD2(x,y) glEvalCoord2f(x,y)
64#define MATERIALFV(a,b,c) glMaterialfv(a,b,c)
65#define RECTF(a,b,c,d) glRectf(a,b,c,d)
66
67
68
69#define FOGCOORDF(x) _compat_FogCoordfEXT(x)
70#define SECONDARYCOLORUB(a,b,c) _compat_SecondaryColor3ubEXT(a,b,c)
71#define SECONDARYCOLORF(a,b,c) _compat_SecondaryColor3fEXT(a,b,c)
Keith Whitwellb0149862000-11-24 10:30:04 +000072
73
74static void
75loopback_Color3b( GLbyte red, GLbyte green, GLbyte blue )
76{
77 GLubyte col[4];
78 col[0] = BYTE_TO_UBYTE(red);
79 col[1] = BYTE_TO_UBYTE(green);
80 col[2] = BYTE_TO_UBYTE(blue);
81 col[3] = 255;
82 COLORUBV(col);
83}
84
85static void
86loopback_Color3d( GLdouble red, GLdouble green, GLdouble blue )
87{
88 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +000089 GLfloat r = (GLfloat) red;
90 GLfloat g = (GLfloat) green;
91 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +000092 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
93 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
94 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +000095 col[3] = 255;
96 COLORUBV( col );
97}
98
99static void
100loopback_Color3i( GLint red, GLint green, GLint blue )
101{
102 GLubyte col[4];
103 col[0] = INT_TO_UBYTE(red);
104 col[1] = INT_TO_UBYTE(green);
105 col[2] = INT_TO_UBYTE(blue);
106 col[3] = 255;
107 COLORUBV(col);
108}
109
110static void
111loopback_Color3s( GLshort red, GLshort green, GLshort blue )
112{
113 GLubyte col[4];
114 col[0] = SHORT_TO_UBYTE(red);
115 col[1] = SHORT_TO_UBYTE(green);
116 col[2] = SHORT_TO_UBYTE(blue);
117 col[3] = 255;
118 COLORUBV(col);
119}
120
121static void
122loopback_Color3ui( GLuint red, GLuint green, GLuint blue )
123{
124 GLubyte col[4];
125 col[0] = UINT_TO_UBYTE(red);
126 col[1] = UINT_TO_UBYTE(green);
127 col[2] = UINT_TO_UBYTE(blue);
128 col[3] = 255;
129 COLORUBV(col);
130}
131
132static void
133loopback_Color3us( GLushort red, GLushort green, GLushort blue )
134{
135 GLubyte col[4];
136 col[0] = USHORT_TO_UBYTE(red);
137 col[1] = USHORT_TO_UBYTE(green);
138 col[2] = USHORT_TO_UBYTE(blue);
139 col[3] = 255;
140 COLORUBV(col);
141}
142
143static void
144loopback_Color4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )
145{
146 GLubyte col[4];
147 col[0] = BYTE_TO_UBYTE(red);
148 col[1] = BYTE_TO_UBYTE(green);
149 col[2] = BYTE_TO_UBYTE(blue);
150 col[3] = 255;
151 COLORUBV(col);
152}
153
154static void
155loopback_Color4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha )
156{
157 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000158 GLfloat r = (GLfloat) red;
159 GLfloat g = (GLfloat) green;
160 GLfloat b = (GLfloat) blue;
161 GLfloat a = (GLfloat) alpha;
Brian Paul3041d052001-01-02 22:02:51 +0000162 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
163 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
164 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
165 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000166 COLORUBV( col );
167}
168
169static void
170loopback_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
171{
172 GLubyte col[4];
173 col[0] = INT_TO_UBYTE(red);
174 col[1] = INT_TO_UBYTE(green);
175 col[2] = INT_TO_UBYTE(blue);
176 col[3] = INT_TO_UBYTE(alpha);
177 COLORUBV(col);
178}
179
180static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000181loopback_Color4s( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000182 GLshort alpha )
183{
184 GLubyte col[4];
185 col[0] = SHORT_TO_UBYTE(red);
186 col[1] = SHORT_TO_UBYTE(green);
187 col[2] = SHORT_TO_UBYTE(blue);
188 col[3] = SHORT_TO_UBYTE(alpha);
189 COLORUBV(col);
190}
191
192static void
193loopback_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
194{
195 GLubyte col[4];
196 col[0] = UINT_TO_UBYTE(red);
197 col[1] = UINT_TO_UBYTE(green);
198 col[2] = UINT_TO_UBYTE(blue);
199 col[3] = UINT_TO_UBYTE(alpha);
200 COLORUBV(col);
201}
202
203static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000204loopback_Color4us( GLushort red, GLushort green, GLushort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000205 GLushort alpha )
206{
207 GLubyte col[4];
208 col[0] = USHORT_TO_UBYTE(red);
209 col[1] = USHORT_TO_UBYTE(green);
210 col[2] = USHORT_TO_UBYTE(blue);
211 col[3] = USHORT_TO_UBYTE(alpha);
212 COLORUBV(col);
213}
214
215static void
216loopback_Color3bv( const GLbyte *v )
217{
218 GLubyte col[4];
219 col[0] = BYTE_TO_UBYTE(v[0]);
220 col[1] = BYTE_TO_UBYTE(v[1]);
221 col[2] = BYTE_TO_UBYTE(v[2]);
222 col[3] = 255;
223 COLORUBV(col);
224}
225
226static void
227loopback_Color3dv( const GLdouble *v )
228{
229 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000230 GLfloat r = (GLfloat) v[0];
231 GLfloat g = (GLfloat) v[1];
232 GLfloat b = (GLfloat) v[2];
Brian Paula580e1a2001-01-02 22:05:55 +0000233 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
234 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
235 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +0000236 col[3] = 255;
237 COLORUBV( col );
238}
239
240static void
241loopback_Color3iv( const GLint *v )
242{
243 GLubyte col[4];
244 col[0] = INT_TO_UBYTE(v[0]);
245 col[1] = INT_TO_UBYTE(v[1]);
246 col[2] = INT_TO_UBYTE(v[2]);
247 col[3] = 255;
248 COLORUBV(col);
249}
250
251static void
252loopback_Color3sv( const GLshort *v )
Gareth Hughes22144ab2001-03-12 00:48:37 +0000253{
Keith Whitwellb0149862000-11-24 10:30:04 +0000254 GLubyte col[4];
255 col[0] = SHORT_TO_UBYTE(v[0]);
256 col[1] = SHORT_TO_UBYTE(v[1]);
257 col[2] = SHORT_TO_UBYTE(v[2]);
258 col[3] = 255;
259 COLORUBV(col);
260}
261
262static void
263loopback_Color3uiv( const GLuint *v )
264{
265 GLubyte col[4];
266 col[0] = UINT_TO_UBYTE(v[0]);
267 col[1] = UINT_TO_UBYTE(v[1]);
268 col[2] = UINT_TO_UBYTE(v[2]);
269 col[3] = 255;
270 COLORUBV(col);
271}
272
273static void
274loopback_Color3usv( const GLushort *v )
275{
276 GLubyte col[4];
277 col[0] = USHORT_TO_UBYTE(v[0]);
278 col[1] = USHORT_TO_UBYTE(v[1]);
279 col[2] = USHORT_TO_UBYTE(v[2]);
280 col[3] = 255;
281 COLORUBV(col);
282
283}
284
285static void
286loopback_Color4bv( const GLbyte *v )
287{
288 GLubyte col[4];
289 col[0] = BYTE_TO_UBYTE(v[0]);
290 col[1] = BYTE_TO_UBYTE(v[1]);
291 col[2] = BYTE_TO_UBYTE(v[2]);
292 col[3] = BYTE_TO_UBYTE(v[3]);
293 COLORUBV(col);
294}
295
296static void
297loopback_Color4dv( const GLdouble *v )
298{
299 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000300 GLfloat r = (GLfloat) v[0];
301 GLfloat g = (GLfloat) v[1];
302 GLfloat b = (GLfloat) v[2];
303 GLfloat a = (GLfloat) v[3];
Brian Paula580e1a2001-01-02 22:05:55 +0000304 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
305 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
306 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
307 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000308 COLORUBV( col );
309}
310
311static void
312loopback_Color4iv( const GLint *v )
313{
314 GLubyte col[4];
315 col[0] = INT_TO_UBYTE(v[0]);
316 col[1] = INT_TO_UBYTE(v[1]);
317 col[2] = INT_TO_UBYTE(v[2]);
318 col[3] = INT_TO_UBYTE(v[3]);
319 COLORUBV(col);
320}
321
322static void
323loopback_Color4sv( const GLshort *v)
324{
325 GLubyte col[4];
326 col[0] = SHORT_TO_UBYTE(v[0]);
327 col[1] = SHORT_TO_UBYTE(v[1]);
328 col[2] = SHORT_TO_UBYTE(v[2]);
329 col[3] = SHORT_TO_UBYTE(v[3]);
330 COLORUBV(col);
331}
332
333static void
334loopback_Color4uiv( const GLuint *v)
335{
336 GLubyte col[4];
337 col[0] = UINT_TO_UBYTE(v[0]);
338 col[1] = UINT_TO_UBYTE(v[1]);
339 col[2] = UINT_TO_UBYTE(v[2]);
340 col[3] = UINT_TO_UBYTE(v[3]);
341 COLORUBV(col);
342}
343
344static void
345loopback_Color4usv( const GLushort *v)
346{
347 GLubyte col[4];
348 col[0] = USHORT_TO_UBYTE(v[0]);
349 col[1] = USHORT_TO_UBYTE(v[1]);
350 col[2] = USHORT_TO_UBYTE(v[2]);
351 col[3] = USHORT_TO_UBYTE(v[3]);
352 COLORUBV(col);
353}
354
355static void
356loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
357{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000358 COLORF( BYTE_TO_FLOAT(red),
Keith Whitwellb0149862000-11-24 10:30:04 +0000359 BYTE_TO_FLOAT(green),
Gareth Hughes22144ab2001-03-12 00:48:37 +0000360 BYTE_TO_FLOAT(blue),
Keith Whitwellb0149862000-11-24 10:30:04 +0000361 1.0 );
362}
363
364static void
365loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
366{
Brian Paul7c276322001-09-14 21:36:43 +0000367 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000368}
369
370static void
371loopback_Color3i_f( GLint red, GLint green, GLint blue )
372{
373 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
374 INT_TO_FLOAT(blue), 1.0);
375}
376
377static void
378loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
379{
380 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
381 SHORT_TO_FLOAT(blue), 1.0);
382}
383
384static void
385loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
386{
387 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
388 UINT_TO_FLOAT(blue), 1.0 );
389}
390
391static void
392loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
393{
394 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
395 USHORT_TO_FLOAT(blue), 1.0 );
396}
397
398
399static void
400loopback_Color3bv_f( const GLbyte *v )
401{
402 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
403 BYTE_TO_FLOAT(v[2]), 1.0 );
404}
405
406static void
407loopback_Color3dv_f( const GLdouble *v )
408{
Brian Paul7c276322001-09-14 21:36:43 +0000409 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000410}
411
412static void
413loopback_Color3iv_f( const GLint *v )
414{
415 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
416 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
417}
418
419static void
420loopback_Color3sv_f( const GLshort *v )
421{
422 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
423 SHORT_TO_FLOAT(v[2]), 1.0 );
424}
425
426static void
427loopback_Color3uiv_f( const GLuint *v )
428{
429 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
430 UINT_TO_FLOAT(v[2]), 1.0 );
431}
432
433static void
434loopback_Color3usv_f( const GLushort *v )
435{
436 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
437 USHORT_TO_FLOAT(v[2]), 1.0 );
438}
439
440
441static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000442loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000443 GLbyte alpha )
444{
445 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
446 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
447}
448
449static void
450loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
451 GLdouble alpha )
452{
Brian Paul7c276322001-09-14 21:36:43 +0000453 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
Keith Whitwellb0149862000-11-24 10:30:04 +0000454}
455
456static void
457loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
458{
459 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
460 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
461}
462
463static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000464loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000465 GLshort alpha )
466{
467 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
468 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
469}
470
471static void
472loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
473{
474 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
475 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
476}
477
478static void
479loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
480{
481 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
482 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
483}
484
485
486static void
487loopback_Color4iv_f( const GLint *v )
488{
489 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
490 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
491}
492
493
494static void
495loopback_Color4bv_f( const GLbyte *v )
496{
497 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
498 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
499}
500
501static void
502loopback_Color4dv_f( const GLdouble *v )
503{
Brian Paul7c276322001-09-14 21:36:43 +0000504 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000505}
506
507
508static void
509loopback_Color4sv_f( const GLshort *v)
510{
511 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
512 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
513}
514
515
516static void
517loopback_Color4uiv_f( const GLuint *v)
518{
519 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
520 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
521}
522
523static void
524loopback_Color4usv_f( const GLushort *v)
525{
526 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
527 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
528}
529
530static void
531loopback_FogCoorddEXT( GLdouble d )
532{
Brian Paul7c276322001-09-14 21:36:43 +0000533 FOGCOORDF( (GLfloat) d );
Keith Whitwellb0149862000-11-24 10:30:04 +0000534}
535
536static void
537loopback_FogCoorddvEXT( const GLdouble *v )
538{
Brian Paul7c276322001-09-14 21:36:43 +0000539 FOGCOORDF( (GLfloat) *v );
Keith Whitwellb0149862000-11-24 10:30:04 +0000540}
541
542
543static void
544loopback_Indexd( GLdouble c )
545{
Brian Paul50478de2000-11-27 18:17:09 +0000546 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000547}
548
549static void
550loopback_Indexf( GLfloat c )
551{
Keith Whitwellcab974c2000-12-26 05:09:27 +0000552 INDEX( (GLuint) (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000553}
554
555static void
556loopback_Indexs( GLshort c )
557{
Brian Paul50478de2000-11-27 18:17:09 +0000558 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000559}
560
561static void
562loopback_Indexub( GLubyte c )
563{
Brian Paul50478de2000-11-27 18:17:09 +0000564 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000565}
566
567static void
568loopback_Indexdv( const GLdouble *c )
569{
Brian Paul50478de2000-11-27 18:17:09 +0000570 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000571}
572
573static void
574loopback_Indexfv( const GLfloat *c )
575{
Brian Paul50478de2000-11-27 18:17:09 +0000576 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000577}
578
579static void
580loopback_Indexiv( const GLint *c )
581{
582 INDEX( *c );
583}
584
585static void
586loopback_Indexsv( const GLshort *c )
587{
Brian Paul50478de2000-11-27 18:17:09 +0000588 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000589}
590
591static void
592loopback_Indexubv( const GLubyte *c )
593{
Brian Paul50478de2000-11-27 18:17:09 +0000594 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000595}
596
597static void
598loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
599{
600 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
601}
602
603static void
604loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
605{
Brian Paul7c276322001-09-14 21:36:43 +0000606 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
Keith Whitwellb0149862000-11-24 10:30:04 +0000607}
608
609static void
610loopback_Normal3i( GLint nx, GLint ny, GLint nz )
611{
612 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
613}
614
615static void
616loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
617{
618 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
619}
620
621static void
622loopback_Normal3bv( const GLbyte *v )
623{
624 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
625}
626
627static void
628loopback_Normal3dv( const GLdouble *v )
629{
Brian Paul7c276322001-09-14 21:36:43 +0000630 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000631}
632
633static void
634loopback_Normal3iv( const GLint *v )
635{
636 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
637}
638
639static void
640loopback_Normal3sv( const GLshort *v )
641{
642 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
643}
644
645static void
646loopback_TexCoord1d( GLdouble s )
647{
Brian Paul7c276322001-09-14 21:36:43 +0000648 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000649}
650
651static void
652loopback_TexCoord1i( GLint s )
653{
Brian Paul7c276322001-09-14 21:36:43 +0000654 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000655}
656
657static void
658loopback_TexCoord1s( GLshort s )
659{
Brian Paul7c276322001-09-14 21:36:43 +0000660 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000661}
662
663static void
664loopback_TexCoord2d( GLdouble s, GLdouble t )
665{
Brian Paul7c276322001-09-14 21:36:43 +0000666 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000667}
668
669static void
670loopback_TexCoord2s( GLshort s, GLshort t )
671{
Brian Paul7c276322001-09-14 21:36:43 +0000672 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000673}
674
675static void
676loopback_TexCoord2i( GLint s, GLint t )
677{
Brian Paul7c276322001-09-14 21:36:43 +0000678 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000679}
680
681static void
682loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
683{
Brian Paul7c276322001-09-14 21:36:43 +0000684 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000685}
686
687static void
688loopback_TexCoord3i( GLint s, GLint t, GLint r )
689{
Brian Paul7c276322001-09-14 21:36:43 +0000690 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000691}
692
693static void
694loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
695{
Brian Paul7c276322001-09-14 21:36:43 +0000696 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000697}
698
699static void
700loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
701{
Brian Paul7c276322001-09-14 21:36:43 +0000702 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000703}
704
705static void
706loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
707{
Brian Paul7c276322001-09-14 21:36:43 +0000708 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000709}
710
711static void
712loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
713{
Brian Paul7c276322001-09-14 21:36:43 +0000714 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000715}
716
717static void
718loopback_TexCoord1dv( const GLdouble *v )
719{
Brian Paul7c276322001-09-14 21:36:43 +0000720 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000721}
722
723static void
724loopback_TexCoord1iv( const GLint *v )
725{
Brian Paul7c276322001-09-14 21:36:43 +0000726 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000727}
728
729static void
730loopback_TexCoord1sv( const GLshort *v )
731{
Brian Paul7c276322001-09-14 21:36:43 +0000732 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000733}
734
735static void
736loopback_TexCoord2dv( const GLdouble *v )
737{
Brian Paul7c276322001-09-14 21:36:43 +0000738 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000739}
740
741static void
742loopback_TexCoord2iv( const GLint *v )
743{
Brian Paul7c276322001-09-14 21:36:43 +0000744 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000745}
746
747static void
748loopback_TexCoord2sv( const GLshort *v )
749{
Brian Paul7c276322001-09-14 21:36:43 +0000750 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000751}
752
753static void
754loopback_TexCoord3dv( const GLdouble *v )
755{
Brian Paul7c276322001-09-14 21:36:43 +0000756 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000757}
758
759static void
760loopback_TexCoord3iv( const GLint *v )
761{
Brian Paul7c276322001-09-14 21:36:43 +0000762 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000763}
764
765static void
766loopback_TexCoord3sv( const GLshort *v )
767{
Brian Paul7c276322001-09-14 21:36:43 +0000768 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000769}
770
771static void
772loopback_TexCoord4dv( const GLdouble *v )
773{
Brian Paul7c276322001-09-14 21:36:43 +0000774 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000775}
776
777static void
778loopback_TexCoord4iv( const GLint *v )
779{
Brian Paul7c276322001-09-14 21:36:43 +0000780 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000781}
782
783static void
784loopback_TexCoord4sv( const GLshort *v )
785{
Brian Paul7c276322001-09-14 21:36:43 +0000786 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000787}
788
789static void
790loopback_Vertex2d( GLdouble x, GLdouble y )
791{
792 VERTEX2( (GLfloat) x, (GLfloat) y );
793}
794
795static void
796loopback_Vertex2i( GLint x, GLint y )
797{
798 VERTEX2( (GLfloat) x, (GLfloat) y );
799}
800
801static void
802loopback_Vertex2s( GLshort x, GLshort y )
803{
804 VERTEX2( (GLfloat) x, (GLfloat) y );
805}
806
807static void
808loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
809{
810 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
811}
812
813static void
814loopback_Vertex3i( GLint x, GLint y, GLint z )
815{
816 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
817}
818
819static void
820loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
821{
822 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
823}
824
825static void
826loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
827{
828 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
829}
830
831static void
832loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
833{
834 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
835}
836
837static void
838loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
839{
840 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
841}
842
843static void
844loopback_Vertex2dv( const GLdouble *v )
845{
846 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
847}
848
849static void
850loopback_Vertex2iv( const GLint *v )
851{
852 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
853}
854
855static void
856loopback_Vertex2sv( const GLshort *v )
857{
858 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
859}
860
861static void
862loopback_Vertex3dv( const GLdouble *v )
863{
864 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
865}
866
867static void
868loopback_Vertex3iv( const GLint *v )
869{
870 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
871}
872
873static void
874loopback_Vertex3sv( const GLshort *v )
875{
876 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
877}
878
879static void
880loopback_Vertex4dv( const GLdouble *v )
881{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000882 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000883 (GLfloat) v[2], (GLfloat) v[3] );
884}
885
886static void
887loopback_Vertex4iv( const GLint *v )
888{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000889 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000890 (GLfloat) v[2], (GLfloat) v[3] );
891}
892
893static void
894loopback_Vertex4sv( const GLshort *v )
895{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000896 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000897 (GLfloat) v[2], (GLfloat) v[3] );
898}
899
900static void
901loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
902{
Brian Paul7c276322001-09-14 21:36:43 +0000903 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000904}
905
906static void
907loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
908{
Brian Paul7c276322001-09-14 21:36:43 +0000909 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000910}
911
912static void
913loopback_MultiTexCoord1iARB(GLenum target, GLint s)
914{
Brian Paul7c276322001-09-14 21:36:43 +0000915 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000916}
917
918static void
919loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
920{
Brian Paul7c276322001-09-14 21:36:43 +0000921 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000922}
923
924static void
925loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
926{
Brian Paul7c276322001-09-14 21:36:43 +0000927 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000928}
929
930static void
931loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
932{
Brian Paul7c276322001-09-14 21:36:43 +0000933 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000934}
935
936static void
937loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
938{
Brian Paul7c276322001-09-14 21:36:43 +0000939 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000940}
941
942static void
943loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
944{
Brian Paul7c276322001-09-14 21:36:43 +0000945 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000946}
947
948static void
949loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
950{
Brian Paul7c276322001-09-14 21:36:43 +0000951 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000952}
953
954static void
955loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
956{
Brian Paul7c276322001-09-14 21:36:43 +0000957 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000958}
959
960static void
961loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
962{
Brian Paul7c276322001-09-14 21:36:43 +0000963 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000964}
965
966static void
967loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
968{
Brian Paul7c276322001-09-14 21:36:43 +0000969 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000970}
971
972static void
973loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
974{
Brian Paul7c276322001-09-14 21:36:43 +0000975 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000976}
977
978static void
979loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
980{
Brian Paul7c276322001-09-14 21:36:43 +0000981 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000982}
983
984static void
985loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
986{
Brian Paul7c276322001-09-14 21:36:43 +0000987 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000988}
989
990static void
991loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
992{
Brian Paul7c276322001-09-14 21:36:43 +0000993 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000994}
995
996static void
997loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
998{
Brian Paul7c276322001-09-14 21:36:43 +0000999 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +00001000}
1001
1002static void
1003loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
1004{
Brian Paul7c276322001-09-14 21:36:43 +00001005 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001006}
1007
1008static void
1009loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
1010{
Brian Paul7c276322001-09-14 21:36:43 +00001011 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1012 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001013}
1014
1015static void
1016loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
1017{
Brian Paul7c276322001-09-14 21:36:43 +00001018 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1019 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001020}
1021
1022static void
1023loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
1024{
Brian Paul7c276322001-09-14 21:36:43 +00001025 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1026 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001027}
1028
1029static void
1030loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
1031{
Brian Paul7c276322001-09-14 21:36:43 +00001032 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1033 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001034}
1035
1036static void
1037loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
1038{
Brian Paul7c276322001-09-14 21:36:43 +00001039 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1040 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001041}
1042
1043static void
1044loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
1045{
Brian Paul7c276322001-09-14 21:36:43 +00001046 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1047 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001048}
1049
1050static void
1051loopback_EvalCoord2dv( const GLdouble *u )
1052{
1053 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
1054}
1055
1056static void
1057loopback_EvalCoord2fv( const GLfloat *u )
1058{
1059 EVALCOORD2( u[0], u[1] );
1060}
1061
1062static void
1063loopback_EvalCoord2d( GLdouble u, GLdouble v )
1064{
1065 EVALCOORD2( (GLfloat) u, (GLfloat) v );
1066}
1067
1068static void
1069loopback_EvalCoord1dv( const GLdouble *u )
1070{
1071 EVALCOORD1( (GLfloat) *u );
1072}
1073
1074static void
1075loopback_EvalCoord1fv( const GLfloat *u )
1076{
1077 EVALCOORD1( (GLfloat) *u );
1078}
1079
1080static void
1081loopback_EvalCoord1d( GLdouble u )
1082{
1083 EVALCOORD1( (GLfloat) u );
1084}
1085
1086static void
1087loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
1088{
1089 GLfloat fparam[4];
1090 fparam[0] = param;
1091 MATERIALFV( face, pname, fparam );
1092}
1093
1094static void
1095loopback_Materiali(GLenum face, GLenum pname, GLint param )
1096{
1097 GLfloat p = (GLfloat) param;
1098 MATERIALFV(face, pname, &p);
1099}
1100
1101static void
1102loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
1103{
1104 GLfloat fparam[4];
1105 switch (pname) {
1106 case GL_AMBIENT:
1107 case GL_DIFFUSE:
1108 case GL_SPECULAR:
1109 case GL_EMISSION:
1110 case GL_AMBIENT_AND_DIFFUSE:
1111 fparam[0] = INT_TO_FLOAT( params[0] );
1112 fparam[1] = INT_TO_FLOAT( params[1] );
1113 fparam[2] = INT_TO_FLOAT( params[2] );
1114 fparam[3] = INT_TO_FLOAT( params[3] );
1115 break;
1116 case GL_SHININESS:
1117 fparam[0] = (GLfloat) params[0];
1118 break;
1119 case GL_COLOR_INDEXES:
1120 fparam[0] = (GLfloat) params[0];
1121 fparam[1] = (GLfloat) params[1];
1122 fparam[2] = (GLfloat) params[2];
1123 break;
1124 default:
1125 ;
1126 }
1127 MATERIALFV(face, pname, fparam);
1128}
1129
1130
1131static void
1132loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
1133{
Brian Paul7c276322001-09-14 21:36:43 +00001134 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001135}
1136
1137static void
1138loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
1139{
Brian Paul7c276322001-09-14 21:36:43 +00001140 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001141}
1142
1143static void
1144loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
1145{
1146 RECTF(v1[0], v1[1], v2[0], v2[1]);
1147}
1148
1149static void
1150loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
1151{
Brian Paul7c276322001-09-14 21:36:43 +00001152 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001153}
1154
1155static void
1156loopback_Rectiv(const GLint *v1, const GLint *v2)
1157{
Brian Paul7c276322001-09-14 21:36:43 +00001158 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001159}
1160
1161static void
1162loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
1163{
Brian Paul7c276322001-09-14 21:36:43 +00001164 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001165}
1166
1167static void
1168loopback_Rectsv(const GLshort *v1, const GLshort *v2)
1169{
Brian Paul7c276322001-09-14 21:36:43 +00001170 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001171}
1172
1173static void
1174loopback_SecondaryColor3bEXT( GLbyte red, GLbyte green, GLbyte blue )
1175{
1176 SECONDARYCOLORUB( BYTE_TO_UBYTE(red),
1177 BYTE_TO_UBYTE(green),
1178 BYTE_TO_UBYTE(blue) );
1179}
1180
1181static void
1182loopback_SecondaryColor3dEXT( GLdouble red, GLdouble green, GLdouble blue )
1183{
1184 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001185 GLfloat r = (GLfloat) red;
1186 GLfloat g = (GLfloat) green;
1187 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +00001188 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1189 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1190 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001191 SECONDARYCOLORUB( col[0], col[1], col[2] );
1192}
1193
1194static void
1195loopback_SecondaryColor3iEXT( GLint red, GLint green, GLint blue )
1196{
1197 SECONDARYCOLORUB( INT_TO_UBYTE(red),
1198 INT_TO_UBYTE(green),
1199 INT_TO_UBYTE(blue));
1200}
1201
1202static void
1203loopback_SecondaryColor3sEXT( GLshort red, GLshort green, GLshort blue )
1204{
1205 SECONDARYCOLORUB(SHORT_TO_UBYTE(red),
1206 SHORT_TO_UBYTE(green),
1207 SHORT_TO_UBYTE(blue));
1208}
1209
1210static void
1211loopback_SecondaryColor3uiEXT( GLuint red, GLuint green, GLuint blue )
1212{
1213 SECONDARYCOLORUB(UINT_TO_UBYTE(red),
1214 UINT_TO_UBYTE(green),
1215 UINT_TO_UBYTE(blue));
1216}
1217
1218static void
1219loopback_SecondaryColor3usEXT( GLushort red, GLushort green, GLushort blue )
1220{
1221 SECONDARYCOLORUB(USHORT_TO_UBYTE(red),
1222 USHORT_TO_UBYTE(green),
1223 USHORT_TO_UBYTE(blue));
1224}
1225
1226static void
1227loopback_SecondaryColor3bvEXT( const GLbyte *v )
1228{
Keith Whitwellfc00cbe2001-12-20 15:30:45 +00001229 const GLfloat a = BYTE_TO_FLOAT(v[0]);
1230 const GLfloat b = BYTE_TO_FLOAT(v[1]);
1231 const GLfloat c = BYTE_TO_FLOAT(v[2]);
1232 SECONDARYCOLORF(a,b,c);
Keith Whitwellb0149862000-11-24 10:30:04 +00001233}
1234
1235static void
1236loopback_SecondaryColor3dvEXT( const GLdouble *v )
1237{
1238 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001239 GLfloat r = (GLfloat) v[0];
1240 GLfloat g = (GLfloat) v[1];
1241 GLfloat b = (GLfloat) v[2];
Brian Paul3041d052001-01-02 22:02:51 +00001242 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1243 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1244 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001245 SECONDARYCOLORUB( col[0], col[1], col[2] );
1246}
1247
1248static void
1249loopback_SecondaryColor3ivEXT( const GLint *v )
1250{
1251 SECONDARYCOLORUB(INT_TO_UBYTE(v[0]),
1252 INT_TO_UBYTE(v[1]),
1253 INT_TO_UBYTE(v[2]));
1254}
1255
1256static void
1257loopback_SecondaryColor3svEXT( const GLshort *v )
1258{
1259 SECONDARYCOLORUB(SHORT_TO_UBYTE(v[0]),
1260 SHORT_TO_UBYTE(v[1]),
1261 SHORT_TO_UBYTE(v[2]));
1262}
1263
1264static void
1265loopback_SecondaryColor3uivEXT( const GLuint *v )
1266{
1267 SECONDARYCOLORUB(UINT_TO_UBYTE(v[0]),
1268 UINT_TO_UBYTE(v[1]),
1269 UINT_TO_UBYTE(v[2]));
1270}
1271
1272static void
1273loopback_SecondaryColor3usvEXT( const GLushort *v )
1274{
1275 SECONDARYCOLORUB(USHORT_TO_UBYTE(v[0]),
1276 USHORT_TO_UBYTE(v[1]),
1277 USHORT_TO_UBYTE(v[2]));
1278}
1279
1280
1281static void
1282loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
1283{
1284 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
1285 BYTE_TO_FLOAT(green),
1286 BYTE_TO_FLOAT(blue) );
1287}
1288
1289static void
1290loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
1291{
Brian Paul7c276322001-09-14 21:36:43 +00001292 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
Keith Whitwellb0149862000-11-24 10:30:04 +00001293}
1294
1295static void
1296loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
1297{
1298 SECONDARYCOLORF( INT_TO_FLOAT(red),
1299 INT_TO_FLOAT(green),
1300 INT_TO_FLOAT(blue));
1301}
1302
1303static void
1304loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
1305{
1306 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
1307 SHORT_TO_FLOAT(green),
1308 SHORT_TO_FLOAT(blue));
1309}
1310
1311static void
1312loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
1313{
1314 SECONDARYCOLORF(UINT_TO_FLOAT(red),
1315 UINT_TO_FLOAT(green),
1316 UINT_TO_FLOAT(blue));
1317}
1318
1319static void
1320loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
1321{
1322 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
1323 USHORT_TO_FLOAT(green),
1324 USHORT_TO_FLOAT(blue));
1325}
1326
1327static void
1328loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
1329{
1330 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1331 BYTE_TO_FLOAT(v[1]),
1332 BYTE_TO_FLOAT(v[2]));
1333}
1334
1335static void
1336loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
1337{
Brian Paul7c276322001-09-14 21:36:43 +00001338 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001339}
1340static void
1341loopback_SecondaryColor3ivEXT_f( const GLint *v )
1342{
1343 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1344 INT_TO_FLOAT(v[1]),
1345 INT_TO_FLOAT(v[2]));
1346}
1347
1348static void
1349loopback_SecondaryColor3svEXT_f( const GLshort *v )
1350{
1351 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1352 SHORT_TO_FLOAT(v[1]),
1353 SHORT_TO_FLOAT(v[2]));
1354}
1355
1356static void
1357loopback_SecondaryColor3uivEXT_f( const GLuint *v )
1358{
1359 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1360 UINT_TO_FLOAT(v[1]),
1361 UINT_TO_FLOAT(v[2]));
1362}
1363
1364static void
1365loopback_SecondaryColor3usvEXT_f( const GLushort *v )
1366{
1367 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1368 USHORT_TO_FLOAT(v[1]),
1369 USHORT_TO_FLOAT(v[2]));
1370}
1371
1372
Brian Paul86b84272001-12-14 02:50:01 +00001373/*
1374 * GL_NV_vertex_program
1375 */
1376
1377static void
1378loopback_VertexAttrib1sNV(GLuint index, GLshort x)
1379{
1380 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1381}
1382
1383static void
1384loopback_VertexAttrib1fNV(GLuint index, GLfloat x)
1385{
1386 ATTRIB(index, x, 0.0F, 0.0F, 1.0F);
1387}
1388
1389static void
1390loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
1391{
1392 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1393}
1394
1395static void
1396loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1397{
1398 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1399}
1400
1401static void
1402loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
1403{
1404 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1405}
1406
1407static void
1408loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1409{
1410 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1411}
1412
1413static void
1414loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1415{
1416 ATTRIB(index, (GLfloat) x, y, z, 1.0F);
1417}
1418
1419static void
1420loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
1421{
1422 ATTRIB(index, x, y, z, 1.0F);
1423}
1424
1425static void
1426loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1427{
1428 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1429}
1430
1431static void
1432loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1433{
1434 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1435}
1436
1437static void
1438loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1439{
1440 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1441}
1442
1443static void
1444loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1445{
1446 ATTRIB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1447 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1448}
1449
1450static void
1451loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
1452{
1453 ATTRIB(index, (GLfloat) v[0], 0.0F, 0.0F, 1.0F);
1454}
1455
1456static void
1457loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v)
1458{
1459 ATTRIB(index, v[0], 0.0F, 0.0F, 1.0F);
1460}
1461
1462static void
1463loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1464{
1465 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1466}
1467
1468static void
1469loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
1470{
1471 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1472}
1473
1474static void
1475loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v)
1476{
1477 ATTRIB(index, v[0], v[1], 0.0F, 1.0F);
1478}
1479
1480static void
1481loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1482{
1483 ATTRIB(index, (GLfloat) v[0], (GLdouble) v[1], 0.0F, 1.0F);
1484}
1485
1486static void
1487loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
1488{
1489 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1490}
1491
1492static void
1493loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v)
1494{
1495 ATTRIB(index, v[0], v[1], v[2], 1.0F);
1496}
1497
1498static void
1499loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1500{
1501 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1502}
1503
1504static void
1505loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
1506{
1507 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1508}
1509
1510static void
1511loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v)
1512{
1513 ATTRIB(index, v[0], v[1], v[2], v[3]);
1514}
1515
1516static void
1517loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1518{
1519 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1520}
1521
1522static void
1523loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1524{
1525 ATTRIB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1526 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1527}
1528
1529
1530static void
1531loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1532{
1533 GLint i;
1534 for (i = n - 1; i >= 0; i--)
1535 loopback_VertexAttrib1svNV(index + i, v + i);
1536}
1537
1538static void
1539loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1540{
1541 GLint i;
1542 for (i = n - 1; i >= 0; i--)
1543 loopback_VertexAttrib1fvNV(index + i, v + i);
1544}
1545
1546static void
1547loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1548{
1549 GLint i;
1550 for (i = n - 1; i >= 0; i--)
1551 loopback_VertexAttrib1dvNV(index + i, v + i);
1552}
1553
1554static void
1555loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1556{
1557 GLint i;
1558 for (i = n - 1; i >= 0; i--)
1559 loopback_VertexAttrib2svNV(index + i, v + 2 * i);
1560}
1561
1562static void
1563loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1564{
1565 GLint i;
1566 for (i = n - 1; i >= 0; i--)
1567 loopback_VertexAttrib2fvNV(index + i, v + 2 * i);
1568}
1569
1570static void
1571loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1572{
1573 GLint i;
1574 for (i = n - 1; i >= 0; i--)
1575 loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
1576}
1577
1578static void
1579loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1580{
1581 GLint i;
1582 for (i = n - 1; i >= 0; i--)
1583 loopback_VertexAttrib3svNV(index + i, v + 3 * i);
1584}
1585
1586static void
1587loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1588{
1589 GLint i;
1590 for (i = n - 1; i >= 0; i--)
1591 loopback_VertexAttrib3fvNV(index + i, v + 3 * i);
1592}
1593
1594static void
1595loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1596{
1597 GLint i;
1598 for (i = n - 1; i >= 0; i--)
1599 loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
1600}
1601
1602static void
1603loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1604{
1605 GLint i;
1606 for (i = n - 1; i >= 0; i--)
1607 loopback_VertexAttrib4svNV(index + i, v + 4 * i);
1608}
1609
1610static void
1611loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1612{
1613 GLint i;
1614 for (i = n - 1; i >= 0; i--)
1615 loopback_VertexAttrib4fvNV(index + i, v + 4 * i);
1616}
1617
1618static void
1619loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1620{
1621 GLint i;
1622 for (i = n - 1; i >= 0; i--)
1623 loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
1624}
1625
1626static void
1627loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1628{
1629 GLint i;
1630 for (i = n - 1; i >= 0; i--)
1631 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
1632}
1633
Keith Whitwellcab974c2000-12-26 05:09:27 +00001634
Keith Whitwellb0149862000-11-24 10:30:04 +00001635void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001636_mesa_loopback_prefer_float( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001637 GLboolean prefer_float_colors )
1638{
1639 if (!prefer_float_colors) {
1640 dest->Color3b = loopback_Color3b;
1641 dest->Color3d = loopback_Color3d;
1642 dest->Color3i = loopback_Color3i;
1643 dest->Color3s = loopback_Color3s;
1644 dest->Color3ui = loopback_Color3ui;
1645 dest->Color3us = loopback_Color3us;
1646 dest->Color4b = loopback_Color4b;
1647 dest->Color4d = loopback_Color4d;
1648 dest->Color4i = loopback_Color4i;
1649 dest->Color4s = loopback_Color4s;
1650 dest->Color4ui = loopback_Color4ui;
1651 dest->Color4us = loopback_Color4us;
1652 dest->Color3bv = loopback_Color3bv;
1653 dest->Color3dv = loopback_Color3dv;
1654 dest->Color3iv = loopback_Color3iv;
1655 dest->Color3sv = loopback_Color3sv;
1656 dest->Color3uiv = loopback_Color3uiv;
1657 dest->Color3usv = loopback_Color3usv;
1658 dest->Color4bv = loopback_Color4bv;
1659 dest->Color4dv = loopback_Color4dv;
1660 dest->Color4iv = loopback_Color4iv;
1661 dest->Color4sv = loopback_Color4sv;
1662 dest->Color4uiv = loopback_Color4uiv;
1663 dest->Color4usv = loopback_Color4usv;
1664 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT;
1665 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT;
1666 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT;
1667 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT;
1668 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT;
1669 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT;
1670 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT;
1671 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT;
1672 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT;
1673 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT;
1674 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT;
1675 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT;
Gareth Hughes22144ab2001-03-12 00:48:37 +00001676 }
Keith Whitwellb0149862000-11-24 10:30:04 +00001677 else {
1678 dest->Color3b = loopback_Color3b_f;
1679 dest->Color3d = loopback_Color3d_f;
1680 dest->Color3i = loopback_Color3i_f;
1681 dest->Color3s = loopback_Color3s_f;
1682 dest->Color3ui = loopback_Color3ui_f;
1683 dest->Color3us = loopback_Color3us_f;
1684 dest->Color4b = loopback_Color4b_f;
1685 dest->Color4d = loopback_Color4d_f;
1686 dest->Color4i = loopback_Color4i_f;
1687 dest->Color4s = loopback_Color4s_f;
1688 dest->Color4ui = loopback_Color4ui_f;
1689 dest->Color4us = loopback_Color4us_f;
1690 dest->Color3bv = loopback_Color3bv_f;
1691 dest->Color3dv = loopback_Color3dv_f;
1692 dest->Color3iv = loopback_Color3iv_f;
1693 dest->Color3sv = loopback_Color3sv_f;
1694 dest->Color3uiv = loopback_Color3uiv_f;
1695 dest->Color3usv = loopback_Color3usv_f;
1696 dest->Color4bv = loopback_Color4bv_f;
1697 dest->Color4dv = loopback_Color4dv_f;
1698 dest->Color4iv = loopback_Color4iv_f;
1699 dest->Color4sv = loopback_Color4sv_f;
1700 dest->Color4uiv = loopback_Color4uiv_f;
1701 dest->Color4usv = loopback_Color4usv_f;
1702 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f;
1703 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f;
1704 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f;
1705 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f;
1706 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f;
1707 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f;
1708 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f;
1709 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f;
1710 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f;
1711 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f;
1712 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f;
1713 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f;
1714 }
1715}
1716
Keith Whitwell8b6a91a2001-05-10 15:42:42 +00001717/* Passing prefer_float_colors as true will mean that all colors
Keith Whitwellb0149862000-11-24 10:30:04 +00001718 * *except* Color{34}ub{v} are passed as floats. Setting it false will
Gareth Hughes22144ab2001-03-12 00:48:37 +00001719 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1720 *
Keith Whitwellb0149862000-11-24 10:30:04 +00001721 * This code never registers handlers for any of the entry points
Gareth Hughes22144ab2001-03-12 00:48:37 +00001722 * listed in vtxfmt.h.
Keith Whitwellb0149862000-11-24 10:30:04 +00001723 */
1724void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001725_mesa_loopback_init_api_table( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001726 GLboolean prefer_float_colors )
1727{
1728 _mesa_loopback_prefer_float( dest, prefer_float_colors );
1729
1730 dest->Indexd = loopback_Indexd;
1731 dest->Indexf = loopback_Indexf;
Keith Whitwellb0149862000-11-24 10:30:04 +00001732 dest->Indexs = loopback_Indexs;
1733 dest->Indexub = loopback_Indexub;
1734 dest->Indexdv = loopback_Indexdv;
1735 dest->Indexfv = loopback_Indexfv;
1736 dest->Indexiv = loopback_Indexiv;
1737 dest->Indexsv = loopback_Indexsv;
1738 dest->Indexubv = loopback_Indexubv;
1739 dest->Normal3b = loopback_Normal3b;
1740 dest->Normal3d = loopback_Normal3d;
1741 dest->Normal3i = loopback_Normal3i;
1742 dest->Normal3s = loopback_Normal3s;
1743 dest->Normal3bv = loopback_Normal3bv;
1744 dest->Normal3dv = loopback_Normal3dv;
1745 dest->Normal3iv = loopback_Normal3iv;
1746 dest->Normal3sv = loopback_Normal3sv;
1747 dest->TexCoord1d = loopback_TexCoord1d;
1748 dest->TexCoord1i = loopback_TexCoord1i;
1749 dest->TexCoord1s = loopback_TexCoord1s;
1750 dest->TexCoord2d = loopback_TexCoord2d;
1751 dest->TexCoord2s = loopback_TexCoord2s;
1752 dest->TexCoord2i = loopback_TexCoord2i;
1753 dest->TexCoord3d = loopback_TexCoord3d;
1754 dest->TexCoord3i = loopback_TexCoord3i;
1755 dest->TexCoord3s = loopback_TexCoord3s;
1756 dest->TexCoord4d = loopback_TexCoord4d;
1757 dest->TexCoord4i = loopback_TexCoord4i;
1758 dest->TexCoord4s = loopback_TexCoord4s;
1759 dest->TexCoord1dv = loopback_TexCoord1dv;
1760 dest->TexCoord1iv = loopback_TexCoord1iv;
1761 dest->TexCoord1sv = loopback_TexCoord1sv;
1762 dest->TexCoord2dv = loopback_TexCoord2dv;
1763 dest->TexCoord2iv = loopback_TexCoord2iv;
1764 dest->TexCoord2sv = loopback_TexCoord2sv;
1765 dest->TexCoord3dv = loopback_TexCoord3dv;
1766 dest->TexCoord3iv = loopback_TexCoord3iv;
1767 dest->TexCoord3sv = loopback_TexCoord3sv;
1768 dest->TexCoord4dv = loopback_TexCoord4dv;
1769 dest->TexCoord4iv = loopback_TexCoord4iv;
1770 dest->TexCoord4sv = loopback_TexCoord4sv;
1771 dest->Vertex2d = loopback_Vertex2d;
1772 dest->Vertex2i = loopback_Vertex2i;
1773 dest->Vertex2s = loopback_Vertex2s;
1774 dest->Vertex3d = loopback_Vertex3d;
1775 dest->Vertex3i = loopback_Vertex3i;
1776 dest->Vertex3s = loopback_Vertex3s;
1777 dest->Vertex4d = loopback_Vertex4d;
1778 dest->Vertex4i = loopback_Vertex4i;
1779 dest->Vertex4s = loopback_Vertex4s;
1780 dest->Vertex2dv = loopback_Vertex2dv;
1781 dest->Vertex2iv = loopback_Vertex2iv;
1782 dest->Vertex2sv = loopback_Vertex2sv;
1783 dest->Vertex3dv = loopback_Vertex3dv;
1784 dest->Vertex3iv = loopback_Vertex3iv;
1785 dest->Vertex3sv = loopback_Vertex3sv;
1786 dest->Vertex4dv = loopback_Vertex4dv;
1787 dest->Vertex4iv = loopback_Vertex4iv;
1788 dest->Vertex4sv = loopback_Vertex4sv;
Brian Paul471a7742001-12-04 23:43:31 +00001789 dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB;
1790 dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB;
1791 dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB;
1792 dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB;
1793 dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB;
1794 dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB;
1795 dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB;
1796 dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB;
1797 dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB;
1798 dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB;
1799 dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB;
1800 dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB;
1801 dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB;
1802 dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB;
1803 dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB;
1804 dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB;
1805 dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB;
1806 dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB;
1807 dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB;
1808 dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB;
1809 dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB;
1810 dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB;
1811 dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB;
1812 dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB;
Keith Whitwellb0149862000-11-24 10:30:04 +00001813 dest->EvalCoord2dv = loopback_EvalCoord2dv;
1814 dest->EvalCoord2fv = loopback_EvalCoord2fv;
1815 dest->EvalCoord2d = loopback_EvalCoord2d;
1816 dest->EvalCoord1dv = loopback_EvalCoord1dv;
1817 dest->EvalCoord1fv = loopback_EvalCoord1fv;
1818 dest->EvalCoord1d = loopback_EvalCoord1d;
1819 dest->Materialf = loopback_Materialf;
1820 dest->Materiali = loopback_Materiali;
1821 dest->Materialiv = loopback_Materialiv;
1822 dest->Rectd = loopback_Rectd;
1823 dest->Rectdv = loopback_Rectdv;
1824 dest->Rectfv = loopback_Rectfv;
1825 dest->Recti = loopback_Recti;
1826 dest->Rectiv = loopback_Rectiv;
1827 dest->Rects = loopback_Rects;
1828 dest->Rectsv = loopback_Rectsv;
1829 dest->FogCoorddEXT = loopback_FogCoorddEXT;
1830 dest->FogCoorddvEXT = loopback_FogCoorddvEXT;
Brian Paul86b84272001-12-14 02:50:01 +00001831
1832 dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV;
1833 dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV;
1834 dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV;
1835 dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV;
1836 dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV;
1837 dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV;
1838 dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV;
1839 dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV;
1840 dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV;
1841 dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV;
1842 dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV;
1843 dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV;
1844
1845 dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV;
1846 dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV;
1847 dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV;
1848 dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV;
1849 dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV;
1850 dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV;
1851 dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV;
1852 dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV;
1853 dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV;
1854 dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV;
1855 dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV;
1856 dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV;
1857 dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV;
1858
1859 dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV;
1860 dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV;
1861 dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV;
1862 dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV;
1863 dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV;
1864 dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV;
1865 dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV;
1866 dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV;
1867 dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV;
1868 dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV;
1869 dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV;
1870 dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV;
1871 dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV;
Keith Whitwellb0149862000-11-24 10:30:04 +00001872}