blob: 0addf1ef55df03e1d68a6895c5edf506ac9d81a8 [file] [log] [blame]
Karl Schultz798d83c2002-10-17 22:26:06 +00001/* $Id: api_loopback.c,v 1.16 2002/10/17 22:26:06 kschultz Exp $ */
Brian Paul50478de2000-11-27 18:17:09 +00002
3/*
4 * Mesa 3-D graphics library
Brian Paul03c0c2e2002-01-14 16:06:35 +00005 * Version: 4.1
Gareth Hughes22144ab2001-03-12 00:48:37 +00006 *
Brian Paul03c0c2e2002-01-14 16:06:35 +00007 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
Gareth Hughes22144ab2001-03-12 00:48:37 +00008 *
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"
Brian Paul03c0c2e2002-01-14 16:06:35 +000032#include "glapi.h"
Keith Whitwellb0149862000-11-24 10:30:04 +000033#include "glapitable.h"
34#include "macros.h"
35#include "colormac.h"
36#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
Brian Paul03c0c2e2002-01-14 16:06:35 +000067#define ATTRIB(index, x, y, z, w) _glapi_Dispatch->VertexAttrib4fNV(index, x, y, z, w)
Keith Whitwellfc00cbe2001-12-20 15:30:45 +000068
69
Brian Paul03c0c2e2002-01-14 16:06:35 +000070#define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x)
71#define SECONDARYCOLORUB(a,b,c) _glapi_Dispatch->SecondaryColor3ubEXT(a,b,c)
72#define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c)
Keith Whitwellb0149862000-11-24 10:30:04 +000073
74
75static void
76loopback_Color3b( GLbyte red, GLbyte green, GLbyte blue )
77{
78 GLubyte col[4];
79 col[0] = BYTE_TO_UBYTE(red);
80 col[1] = BYTE_TO_UBYTE(green);
81 col[2] = BYTE_TO_UBYTE(blue);
82 col[3] = 255;
83 COLORUBV(col);
84}
85
86static void
87loopback_Color3d( GLdouble red, GLdouble green, GLdouble blue )
88{
89 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +000090 GLfloat r = (GLfloat) red;
91 GLfloat g = (GLfloat) green;
92 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +000093 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
94 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
95 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +000096 col[3] = 255;
97 COLORUBV( col );
98}
99
100static void
101loopback_Color3i( GLint red, GLint green, GLint blue )
102{
103 GLubyte col[4];
104 col[0] = INT_TO_UBYTE(red);
105 col[1] = INT_TO_UBYTE(green);
106 col[2] = INT_TO_UBYTE(blue);
107 col[3] = 255;
108 COLORUBV(col);
109}
110
111static void
112loopback_Color3s( GLshort red, GLshort green, GLshort blue )
113{
114 GLubyte col[4];
115 col[0] = SHORT_TO_UBYTE(red);
116 col[1] = SHORT_TO_UBYTE(green);
117 col[2] = SHORT_TO_UBYTE(blue);
118 col[3] = 255;
119 COLORUBV(col);
120}
121
122static void
123loopback_Color3ui( GLuint red, GLuint green, GLuint blue )
124{
125 GLubyte col[4];
126 col[0] = UINT_TO_UBYTE(red);
127 col[1] = UINT_TO_UBYTE(green);
128 col[2] = UINT_TO_UBYTE(blue);
129 col[3] = 255;
130 COLORUBV(col);
131}
132
133static void
134loopback_Color3us( GLushort red, GLushort green, GLushort blue )
135{
136 GLubyte col[4];
137 col[0] = USHORT_TO_UBYTE(red);
138 col[1] = USHORT_TO_UBYTE(green);
139 col[2] = USHORT_TO_UBYTE(blue);
140 col[3] = 255;
141 COLORUBV(col);
142}
143
144static void
145loopback_Color4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )
146{
147 GLubyte col[4];
148 col[0] = BYTE_TO_UBYTE(red);
149 col[1] = BYTE_TO_UBYTE(green);
150 col[2] = BYTE_TO_UBYTE(blue);
151 col[3] = 255;
152 COLORUBV(col);
153}
154
155static void
156loopback_Color4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha )
157{
158 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000159 GLfloat r = (GLfloat) red;
160 GLfloat g = (GLfloat) green;
161 GLfloat b = (GLfloat) blue;
162 GLfloat a = (GLfloat) alpha;
Brian Paul3041d052001-01-02 22:02:51 +0000163 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
164 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
165 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
166 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000167 COLORUBV( col );
168}
169
170static void
171loopback_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
172{
173 GLubyte col[4];
174 col[0] = INT_TO_UBYTE(red);
175 col[1] = INT_TO_UBYTE(green);
176 col[2] = INT_TO_UBYTE(blue);
177 col[3] = INT_TO_UBYTE(alpha);
178 COLORUBV(col);
179}
180
181static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000182loopback_Color4s( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000183 GLshort alpha )
184{
185 GLubyte col[4];
186 col[0] = SHORT_TO_UBYTE(red);
187 col[1] = SHORT_TO_UBYTE(green);
188 col[2] = SHORT_TO_UBYTE(blue);
189 col[3] = SHORT_TO_UBYTE(alpha);
190 COLORUBV(col);
191}
192
193static void
194loopback_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
195{
196 GLubyte col[4];
197 col[0] = UINT_TO_UBYTE(red);
198 col[1] = UINT_TO_UBYTE(green);
199 col[2] = UINT_TO_UBYTE(blue);
200 col[3] = UINT_TO_UBYTE(alpha);
201 COLORUBV(col);
202}
203
204static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000205loopback_Color4us( GLushort red, GLushort green, GLushort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000206 GLushort alpha )
207{
208 GLubyte col[4];
209 col[0] = USHORT_TO_UBYTE(red);
210 col[1] = USHORT_TO_UBYTE(green);
211 col[2] = USHORT_TO_UBYTE(blue);
212 col[3] = USHORT_TO_UBYTE(alpha);
213 COLORUBV(col);
214}
215
216static void
217loopback_Color3bv( const GLbyte *v )
218{
219 GLubyte col[4];
220 col[0] = BYTE_TO_UBYTE(v[0]);
221 col[1] = BYTE_TO_UBYTE(v[1]);
222 col[2] = BYTE_TO_UBYTE(v[2]);
223 col[3] = 255;
224 COLORUBV(col);
225}
226
227static void
228loopback_Color3dv( const GLdouble *v )
229{
230 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000231 GLfloat r = (GLfloat) v[0];
232 GLfloat g = (GLfloat) v[1];
233 GLfloat b = (GLfloat) v[2];
Brian Paula580e1a2001-01-02 22:05:55 +0000234 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
235 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
236 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +0000237 col[3] = 255;
238 COLORUBV( col );
239}
240
241static void
242loopback_Color3iv( const GLint *v )
243{
244 GLubyte col[4];
245 col[0] = INT_TO_UBYTE(v[0]);
246 col[1] = INT_TO_UBYTE(v[1]);
247 col[2] = INT_TO_UBYTE(v[2]);
248 col[3] = 255;
249 COLORUBV(col);
250}
251
252static void
253loopback_Color3sv( const GLshort *v )
Gareth Hughes22144ab2001-03-12 00:48:37 +0000254{
Keith Whitwellb0149862000-11-24 10:30:04 +0000255 GLubyte col[4];
256 col[0] = SHORT_TO_UBYTE(v[0]);
257 col[1] = SHORT_TO_UBYTE(v[1]);
258 col[2] = SHORT_TO_UBYTE(v[2]);
259 col[3] = 255;
260 COLORUBV(col);
261}
262
263static void
264loopback_Color3uiv( const GLuint *v )
265{
266 GLubyte col[4];
267 col[0] = UINT_TO_UBYTE(v[0]);
268 col[1] = UINT_TO_UBYTE(v[1]);
269 col[2] = UINT_TO_UBYTE(v[2]);
270 col[3] = 255;
271 COLORUBV(col);
272}
273
274static void
275loopback_Color3usv( const GLushort *v )
276{
277 GLubyte col[4];
278 col[0] = USHORT_TO_UBYTE(v[0]);
279 col[1] = USHORT_TO_UBYTE(v[1]);
280 col[2] = USHORT_TO_UBYTE(v[2]);
281 col[3] = 255;
282 COLORUBV(col);
283
284}
285
286static void
287loopback_Color4bv( const GLbyte *v )
288{
289 GLubyte col[4];
290 col[0] = BYTE_TO_UBYTE(v[0]);
291 col[1] = BYTE_TO_UBYTE(v[1]);
292 col[2] = BYTE_TO_UBYTE(v[2]);
293 col[3] = BYTE_TO_UBYTE(v[3]);
294 COLORUBV(col);
295}
296
297static void
298loopback_Color4dv( const GLdouble *v )
299{
300 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000301 GLfloat r = (GLfloat) v[0];
302 GLfloat g = (GLfloat) v[1];
303 GLfloat b = (GLfloat) v[2];
304 GLfloat a = (GLfloat) v[3];
Brian Paula580e1a2001-01-02 22:05:55 +0000305 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
306 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
307 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
308 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000309 COLORUBV( col );
310}
311
312static void
313loopback_Color4iv( const GLint *v )
314{
315 GLubyte col[4];
316 col[0] = INT_TO_UBYTE(v[0]);
317 col[1] = INT_TO_UBYTE(v[1]);
318 col[2] = INT_TO_UBYTE(v[2]);
319 col[3] = INT_TO_UBYTE(v[3]);
320 COLORUBV(col);
321}
322
323static void
324loopback_Color4sv( const GLshort *v)
325{
326 GLubyte col[4];
327 col[0] = SHORT_TO_UBYTE(v[0]);
328 col[1] = SHORT_TO_UBYTE(v[1]);
329 col[2] = SHORT_TO_UBYTE(v[2]);
330 col[3] = SHORT_TO_UBYTE(v[3]);
331 COLORUBV(col);
332}
333
334static void
335loopback_Color4uiv( const GLuint *v)
336{
337 GLubyte col[4];
338 col[0] = UINT_TO_UBYTE(v[0]);
339 col[1] = UINT_TO_UBYTE(v[1]);
340 col[2] = UINT_TO_UBYTE(v[2]);
341 col[3] = UINT_TO_UBYTE(v[3]);
342 COLORUBV(col);
343}
344
345static void
346loopback_Color4usv( const GLushort *v)
347{
348 GLubyte col[4];
349 col[0] = USHORT_TO_UBYTE(v[0]);
350 col[1] = USHORT_TO_UBYTE(v[1]);
351 col[2] = USHORT_TO_UBYTE(v[2]);
352 col[3] = USHORT_TO_UBYTE(v[3]);
353 COLORUBV(col);
354}
355
356static void
357loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
358{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000359 COLORF( BYTE_TO_FLOAT(red),
Keith Whitwellb0149862000-11-24 10:30:04 +0000360 BYTE_TO_FLOAT(green),
Gareth Hughes22144ab2001-03-12 00:48:37 +0000361 BYTE_TO_FLOAT(blue),
Keith Whitwellb0149862000-11-24 10:30:04 +0000362 1.0 );
363}
364
365static void
366loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
367{
Brian Paul7c276322001-09-14 21:36:43 +0000368 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000369}
370
371static void
372loopback_Color3i_f( GLint red, GLint green, GLint blue )
373{
374 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
375 INT_TO_FLOAT(blue), 1.0);
376}
377
378static void
379loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
380{
381 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
382 SHORT_TO_FLOAT(blue), 1.0);
383}
384
385static void
386loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
387{
388 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
389 UINT_TO_FLOAT(blue), 1.0 );
390}
391
392static void
393loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
394{
395 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
396 USHORT_TO_FLOAT(blue), 1.0 );
397}
398
399
400static void
401loopback_Color3bv_f( const GLbyte *v )
402{
403 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
404 BYTE_TO_FLOAT(v[2]), 1.0 );
405}
406
407static void
408loopback_Color3dv_f( const GLdouble *v )
409{
Brian Paul7c276322001-09-14 21:36:43 +0000410 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000411}
412
413static void
414loopback_Color3iv_f( const GLint *v )
415{
416 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
417 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
418}
419
420static void
421loopback_Color3sv_f( const GLshort *v )
422{
423 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
424 SHORT_TO_FLOAT(v[2]), 1.0 );
425}
426
427static void
428loopback_Color3uiv_f( const GLuint *v )
429{
430 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
431 UINT_TO_FLOAT(v[2]), 1.0 );
432}
433
434static void
435loopback_Color3usv_f( const GLushort *v )
436{
437 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
438 USHORT_TO_FLOAT(v[2]), 1.0 );
439}
440
441
442static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000443loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000444 GLbyte alpha )
445{
446 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
447 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
448}
449
450static void
451loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
452 GLdouble alpha )
453{
Brian Paul7c276322001-09-14 21:36:43 +0000454 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
Keith Whitwellb0149862000-11-24 10:30:04 +0000455}
456
457static void
458loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
459{
460 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
461 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
462}
463
464static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000465loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000466 GLshort alpha )
467{
468 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
469 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
470}
471
472static void
473loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
474{
475 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
476 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
477}
478
479static void
480loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
481{
482 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
483 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
484}
485
486
487static void
488loopback_Color4iv_f( const GLint *v )
489{
490 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
491 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
492}
493
494
495static void
496loopback_Color4bv_f( const GLbyte *v )
497{
498 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
499 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
500}
501
502static void
503loopback_Color4dv_f( const GLdouble *v )
504{
Brian Paul7c276322001-09-14 21:36:43 +0000505 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000506}
507
508
509static void
510loopback_Color4sv_f( const GLshort *v)
511{
512 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
513 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
514}
515
516
517static void
518loopback_Color4uiv_f( const GLuint *v)
519{
520 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
521 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
522}
523
524static void
525loopback_Color4usv_f( const GLushort *v)
526{
527 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
528 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
529}
530
531static void
532loopback_FogCoorddEXT( GLdouble d )
533{
Brian Paul7c276322001-09-14 21:36:43 +0000534 FOGCOORDF( (GLfloat) d );
Keith Whitwellb0149862000-11-24 10:30:04 +0000535}
536
537static void
538loopback_FogCoorddvEXT( const GLdouble *v )
539{
Brian Paul7c276322001-09-14 21:36:43 +0000540 FOGCOORDF( (GLfloat) *v );
Keith Whitwellb0149862000-11-24 10:30:04 +0000541}
542
543
544static void
545loopback_Indexd( GLdouble c )
546{
Brian Paul50478de2000-11-27 18:17:09 +0000547 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000548}
549
550static void
551loopback_Indexf( GLfloat c )
552{
Keith Whitwellcab974c2000-12-26 05:09:27 +0000553 INDEX( (GLuint) (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000554}
555
556static void
557loopback_Indexs( GLshort c )
558{
Brian Paul50478de2000-11-27 18:17:09 +0000559 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000560}
561
562static void
563loopback_Indexub( GLubyte c )
564{
Brian Paul50478de2000-11-27 18:17:09 +0000565 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000566}
567
568static void
569loopback_Indexdv( const GLdouble *c )
570{
Brian Paul50478de2000-11-27 18:17:09 +0000571 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000572}
573
574static void
575loopback_Indexfv( const GLfloat *c )
576{
Brian Paul50478de2000-11-27 18:17:09 +0000577 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000578}
579
580static void
581loopback_Indexiv( const GLint *c )
582{
583 INDEX( *c );
584}
585
586static void
587loopback_Indexsv( const GLshort *c )
588{
Brian Paul50478de2000-11-27 18:17:09 +0000589 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000590}
591
592static void
593loopback_Indexubv( const GLubyte *c )
594{
Brian Paul50478de2000-11-27 18:17:09 +0000595 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000596}
597
598static void
599loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
600{
601 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
602}
603
604static void
605loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
606{
Brian Paul7c276322001-09-14 21:36:43 +0000607 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
Keith Whitwellb0149862000-11-24 10:30:04 +0000608}
609
610static void
611loopback_Normal3i( GLint nx, GLint ny, GLint nz )
612{
613 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
614}
615
616static void
617loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
618{
619 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
620}
621
622static void
623loopback_Normal3bv( const GLbyte *v )
624{
625 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
626}
627
628static void
629loopback_Normal3dv( const GLdouble *v )
630{
Brian Paul7c276322001-09-14 21:36:43 +0000631 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000632}
633
634static void
635loopback_Normal3iv( const GLint *v )
636{
637 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
638}
639
640static void
641loopback_Normal3sv( const GLshort *v )
642{
643 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
644}
645
646static void
647loopback_TexCoord1d( GLdouble s )
648{
Brian Paul7c276322001-09-14 21:36:43 +0000649 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000650}
651
652static void
653loopback_TexCoord1i( GLint s )
654{
Brian Paul7c276322001-09-14 21:36:43 +0000655 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000656}
657
658static void
659loopback_TexCoord1s( GLshort s )
660{
Brian Paul7c276322001-09-14 21:36:43 +0000661 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000662}
663
664static void
665loopback_TexCoord2d( GLdouble s, GLdouble t )
666{
Brian Paul7c276322001-09-14 21:36:43 +0000667 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000668}
669
670static void
671loopback_TexCoord2s( GLshort s, GLshort t )
672{
Brian Paul7c276322001-09-14 21:36:43 +0000673 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000674}
675
676static void
677loopback_TexCoord2i( GLint s, GLint t )
678{
Brian Paul7c276322001-09-14 21:36:43 +0000679 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000680}
681
682static void
683loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
684{
Brian Paul7c276322001-09-14 21:36:43 +0000685 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000686}
687
688static void
689loopback_TexCoord3i( GLint s, GLint t, GLint r )
690{
Brian Paul7c276322001-09-14 21:36:43 +0000691 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000692}
693
694static void
695loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
696{
Brian Paul7c276322001-09-14 21:36:43 +0000697 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000698}
699
700static void
701loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
702{
Brian Paul7c276322001-09-14 21:36:43 +0000703 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000704}
705
706static void
707loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
708{
Brian Paul7c276322001-09-14 21:36:43 +0000709 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000710}
711
712static void
713loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
714{
Brian Paul7c276322001-09-14 21:36:43 +0000715 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000716}
717
718static void
719loopback_TexCoord1dv( const GLdouble *v )
720{
Brian Paul7c276322001-09-14 21:36:43 +0000721 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000722}
723
724static void
725loopback_TexCoord1iv( const GLint *v )
726{
Brian Paul7c276322001-09-14 21:36:43 +0000727 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000728}
729
730static void
731loopback_TexCoord1sv( const GLshort *v )
732{
Brian Paul7c276322001-09-14 21:36:43 +0000733 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000734}
735
736static void
737loopback_TexCoord2dv( const GLdouble *v )
738{
Brian Paul7c276322001-09-14 21:36:43 +0000739 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000740}
741
742static void
743loopback_TexCoord2iv( const GLint *v )
744{
Brian Paul7c276322001-09-14 21:36:43 +0000745 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000746}
747
748static void
749loopback_TexCoord2sv( const GLshort *v )
750{
Brian Paul7c276322001-09-14 21:36:43 +0000751 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000752}
753
754static void
755loopback_TexCoord3dv( const GLdouble *v )
756{
Brian Paul7c276322001-09-14 21:36:43 +0000757 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000758}
759
760static void
761loopback_TexCoord3iv( const GLint *v )
762{
Brian Paul7c276322001-09-14 21:36:43 +0000763 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000764}
765
766static void
767loopback_TexCoord3sv( const GLshort *v )
768{
Brian Paul7c276322001-09-14 21:36:43 +0000769 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000770}
771
772static void
773loopback_TexCoord4dv( const GLdouble *v )
774{
Brian Paul7c276322001-09-14 21:36:43 +0000775 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000776}
777
778static void
779loopback_TexCoord4iv( const GLint *v )
780{
Brian Paul7c276322001-09-14 21:36:43 +0000781 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000782}
783
784static void
785loopback_TexCoord4sv( const GLshort *v )
786{
Brian Paul7c276322001-09-14 21:36:43 +0000787 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000788}
789
790static void
791loopback_Vertex2d( GLdouble x, GLdouble y )
792{
793 VERTEX2( (GLfloat) x, (GLfloat) y );
794}
795
796static void
797loopback_Vertex2i( GLint x, GLint y )
798{
799 VERTEX2( (GLfloat) x, (GLfloat) y );
800}
801
802static void
803loopback_Vertex2s( GLshort x, GLshort y )
804{
805 VERTEX2( (GLfloat) x, (GLfloat) y );
806}
807
808static void
809loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
810{
811 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
812}
813
814static void
815loopback_Vertex3i( GLint x, GLint y, GLint z )
816{
817 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
818}
819
820static void
821loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
822{
823 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
824}
825
826static void
827loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
828{
829 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
830}
831
832static void
833loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
834{
835 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
836}
837
838static void
839loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
840{
841 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
842}
843
844static void
845loopback_Vertex2dv( const GLdouble *v )
846{
847 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
848}
849
850static void
851loopback_Vertex2iv( const GLint *v )
852{
853 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
854}
855
856static void
857loopback_Vertex2sv( const GLshort *v )
858{
859 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
860}
861
862static void
863loopback_Vertex3dv( const GLdouble *v )
864{
865 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
866}
867
868static void
869loopback_Vertex3iv( const GLint *v )
870{
871 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
872}
873
874static void
875loopback_Vertex3sv( const GLshort *v )
876{
877 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
878}
879
880static void
881loopback_Vertex4dv( const GLdouble *v )
882{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000883 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000884 (GLfloat) v[2], (GLfloat) v[3] );
885}
886
887static void
888loopback_Vertex4iv( const GLint *v )
889{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000890 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000891 (GLfloat) v[2], (GLfloat) v[3] );
892}
893
894static void
895loopback_Vertex4sv( const GLshort *v )
896{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000897 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000898 (GLfloat) v[2], (GLfloat) v[3] );
899}
900
901static void
902loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
903{
Brian Paul7c276322001-09-14 21:36:43 +0000904 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000905}
906
907static void
908loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
909{
Brian Paul7c276322001-09-14 21:36:43 +0000910 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000911}
912
913static void
914loopback_MultiTexCoord1iARB(GLenum target, GLint s)
915{
Brian Paul7c276322001-09-14 21:36:43 +0000916 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000917}
918
919static void
920loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
921{
Brian Paul7c276322001-09-14 21:36:43 +0000922 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000923}
924
925static void
926loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
927{
Brian Paul7c276322001-09-14 21:36:43 +0000928 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000929}
930
931static void
932loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
933{
Brian Paul7c276322001-09-14 21:36:43 +0000934 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000935}
936
937static void
938loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
939{
Brian Paul7c276322001-09-14 21:36:43 +0000940 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000941}
942
943static void
944loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
945{
Brian Paul7c276322001-09-14 21:36:43 +0000946 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000947}
948
949static void
950loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
951{
Brian Paul7c276322001-09-14 21:36:43 +0000952 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000953}
954
955static void
956loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
957{
Brian Paul7c276322001-09-14 21:36:43 +0000958 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000959}
960
961static void
962loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
963{
Brian Paul7c276322001-09-14 21:36:43 +0000964 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000965}
966
967static void
968loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
969{
Brian Paul7c276322001-09-14 21:36:43 +0000970 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000971}
972
973static void
974loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
975{
Brian Paul7c276322001-09-14 21:36:43 +0000976 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000977}
978
979static void
980loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
981{
Brian Paul7c276322001-09-14 21:36:43 +0000982 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000983}
984
985static void
986loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
987{
Brian Paul7c276322001-09-14 21:36:43 +0000988 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000989}
990
991static void
992loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
993{
Brian Paul7c276322001-09-14 21:36:43 +0000994 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000995}
996
997static void
998loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
999{
Brian Paul7c276322001-09-14 21:36:43 +00001000 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +00001001}
1002
1003static void
1004loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
1005{
Brian Paul7c276322001-09-14 21:36:43 +00001006 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001007}
1008
1009static void
1010loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
1011{
Brian Paul7c276322001-09-14 21:36:43 +00001012 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1013 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001014}
1015
1016static void
1017loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
1018{
Brian Paul7c276322001-09-14 21:36:43 +00001019 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1020 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001021}
1022
1023static void
1024loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
1025{
Brian Paul7c276322001-09-14 21:36:43 +00001026 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1027 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001028}
1029
1030static void
1031loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
1032{
Brian Paul7c276322001-09-14 21:36:43 +00001033 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1034 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001035}
1036
1037static void
1038loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
1039{
Brian Paul7c276322001-09-14 21:36:43 +00001040 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1041 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001042}
1043
1044static void
1045loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
1046{
Brian Paul7c276322001-09-14 21:36:43 +00001047 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1048 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001049}
1050
1051static void
1052loopback_EvalCoord2dv( const GLdouble *u )
1053{
1054 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
1055}
1056
1057static void
1058loopback_EvalCoord2fv( const GLfloat *u )
1059{
1060 EVALCOORD2( u[0], u[1] );
1061}
1062
1063static void
1064loopback_EvalCoord2d( GLdouble u, GLdouble v )
1065{
1066 EVALCOORD2( (GLfloat) u, (GLfloat) v );
1067}
1068
1069static void
1070loopback_EvalCoord1dv( const GLdouble *u )
1071{
1072 EVALCOORD1( (GLfloat) *u );
1073}
1074
1075static void
1076loopback_EvalCoord1fv( const GLfloat *u )
1077{
1078 EVALCOORD1( (GLfloat) *u );
1079}
1080
1081static void
1082loopback_EvalCoord1d( GLdouble u )
1083{
1084 EVALCOORD1( (GLfloat) u );
1085}
1086
1087static void
1088loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
1089{
1090 GLfloat fparam[4];
1091 fparam[0] = param;
1092 MATERIALFV( face, pname, fparam );
1093}
1094
1095static void
1096loopback_Materiali(GLenum face, GLenum pname, GLint param )
1097{
1098 GLfloat p = (GLfloat) param;
1099 MATERIALFV(face, pname, &p);
1100}
1101
1102static void
1103loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
1104{
1105 GLfloat fparam[4];
1106 switch (pname) {
1107 case GL_AMBIENT:
1108 case GL_DIFFUSE:
1109 case GL_SPECULAR:
1110 case GL_EMISSION:
1111 case GL_AMBIENT_AND_DIFFUSE:
1112 fparam[0] = INT_TO_FLOAT( params[0] );
1113 fparam[1] = INT_TO_FLOAT( params[1] );
1114 fparam[2] = INT_TO_FLOAT( params[2] );
1115 fparam[3] = INT_TO_FLOAT( params[3] );
1116 break;
1117 case GL_SHININESS:
1118 fparam[0] = (GLfloat) params[0];
1119 break;
1120 case GL_COLOR_INDEXES:
1121 fparam[0] = (GLfloat) params[0];
1122 fparam[1] = (GLfloat) params[1];
1123 fparam[2] = (GLfloat) params[2];
1124 break;
1125 default:
1126 ;
1127 }
1128 MATERIALFV(face, pname, fparam);
1129}
1130
1131
1132static void
1133loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
1134{
Brian Paul7c276322001-09-14 21:36:43 +00001135 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001136}
1137
1138static void
1139loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
1140{
Brian Paul7c276322001-09-14 21:36:43 +00001141 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001142}
1143
1144static void
1145loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
1146{
1147 RECTF(v1[0], v1[1], v2[0], v2[1]);
1148}
1149
1150static void
1151loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
1152{
Brian Paul7c276322001-09-14 21:36:43 +00001153 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001154}
1155
1156static void
1157loopback_Rectiv(const GLint *v1, const GLint *v2)
1158{
Brian Paul7c276322001-09-14 21:36:43 +00001159 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001160}
1161
1162static void
1163loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
1164{
Brian Paul7c276322001-09-14 21:36:43 +00001165 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001166}
1167
1168static void
1169loopback_Rectsv(const GLshort *v1, const GLshort *v2)
1170{
Brian Paul7c276322001-09-14 21:36:43 +00001171 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001172}
1173
1174static void
1175loopback_SecondaryColor3bEXT( GLbyte red, GLbyte green, GLbyte blue )
1176{
1177 SECONDARYCOLORUB( BYTE_TO_UBYTE(red),
1178 BYTE_TO_UBYTE(green),
1179 BYTE_TO_UBYTE(blue) );
1180}
1181
1182static void
1183loopback_SecondaryColor3dEXT( GLdouble red, GLdouble green, GLdouble blue )
1184{
1185 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001186 GLfloat r = (GLfloat) red;
1187 GLfloat g = (GLfloat) green;
1188 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +00001189 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1190 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1191 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001192 SECONDARYCOLORUB( col[0], col[1], col[2] );
1193}
1194
1195static void
1196loopback_SecondaryColor3iEXT( GLint red, GLint green, GLint blue )
1197{
1198 SECONDARYCOLORUB( INT_TO_UBYTE(red),
1199 INT_TO_UBYTE(green),
1200 INT_TO_UBYTE(blue));
1201}
1202
1203static void
1204loopback_SecondaryColor3sEXT( GLshort red, GLshort green, GLshort blue )
1205{
1206 SECONDARYCOLORUB(SHORT_TO_UBYTE(red),
1207 SHORT_TO_UBYTE(green),
1208 SHORT_TO_UBYTE(blue));
1209}
1210
1211static void
1212loopback_SecondaryColor3uiEXT( GLuint red, GLuint green, GLuint blue )
1213{
1214 SECONDARYCOLORUB(UINT_TO_UBYTE(red),
1215 UINT_TO_UBYTE(green),
1216 UINT_TO_UBYTE(blue));
1217}
1218
1219static void
1220loopback_SecondaryColor3usEXT( GLushort red, GLushort green, GLushort blue )
1221{
1222 SECONDARYCOLORUB(USHORT_TO_UBYTE(red),
1223 USHORT_TO_UBYTE(green),
1224 USHORT_TO_UBYTE(blue));
1225}
1226
1227static void
1228loopback_SecondaryColor3bvEXT( const GLbyte *v )
1229{
Keith Whitwellfc00cbe2001-12-20 15:30:45 +00001230 const GLfloat a = BYTE_TO_FLOAT(v[0]);
1231 const GLfloat b = BYTE_TO_FLOAT(v[1]);
1232 const GLfloat c = BYTE_TO_FLOAT(v[2]);
1233 SECONDARYCOLORF(a,b,c);
Keith Whitwellb0149862000-11-24 10:30:04 +00001234}
1235
1236static void
1237loopback_SecondaryColor3dvEXT( const GLdouble *v )
1238{
1239 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001240 GLfloat r = (GLfloat) v[0];
1241 GLfloat g = (GLfloat) v[1];
1242 GLfloat b = (GLfloat) v[2];
Brian Paul3041d052001-01-02 22:02:51 +00001243 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1244 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1245 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001246 SECONDARYCOLORUB( col[0], col[1], col[2] );
1247}
1248
1249static void
1250loopback_SecondaryColor3ivEXT( const GLint *v )
1251{
1252 SECONDARYCOLORUB(INT_TO_UBYTE(v[0]),
1253 INT_TO_UBYTE(v[1]),
1254 INT_TO_UBYTE(v[2]));
1255}
1256
1257static void
1258loopback_SecondaryColor3svEXT( const GLshort *v )
1259{
1260 SECONDARYCOLORUB(SHORT_TO_UBYTE(v[0]),
1261 SHORT_TO_UBYTE(v[1]),
1262 SHORT_TO_UBYTE(v[2]));
1263}
1264
1265static void
1266loopback_SecondaryColor3uivEXT( const GLuint *v )
1267{
1268 SECONDARYCOLORUB(UINT_TO_UBYTE(v[0]),
1269 UINT_TO_UBYTE(v[1]),
1270 UINT_TO_UBYTE(v[2]));
1271}
1272
1273static void
1274loopback_SecondaryColor3usvEXT( const GLushort *v )
1275{
1276 SECONDARYCOLORUB(USHORT_TO_UBYTE(v[0]),
1277 USHORT_TO_UBYTE(v[1]),
1278 USHORT_TO_UBYTE(v[2]));
1279}
1280
1281
1282static void
1283loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
1284{
1285 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
1286 BYTE_TO_FLOAT(green),
1287 BYTE_TO_FLOAT(blue) );
1288}
1289
1290static void
1291loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
1292{
Brian Paul7c276322001-09-14 21:36:43 +00001293 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
Keith Whitwellb0149862000-11-24 10:30:04 +00001294}
1295
1296static void
1297loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
1298{
1299 SECONDARYCOLORF( INT_TO_FLOAT(red),
1300 INT_TO_FLOAT(green),
1301 INT_TO_FLOAT(blue));
1302}
1303
1304static void
1305loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
1306{
1307 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
1308 SHORT_TO_FLOAT(green),
1309 SHORT_TO_FLOAT(blue));
1310}
1311
1312static void
1313loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
1314{
1315 SECONDARYCOLORF(UINT_TO_FLOAT(red),
1316 UINT_TO_FLOAT(green),
1317 UINT_TO_FLOAT(blue));
1318}
1319
1320static void
1321loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
1322{
1323 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
1324 USHORT_TO_FLOAT(green),
1325 USHORT_TO_FLOAT(blue));
1326}
1327
1328static void
1329loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
1330{
1331 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1332 BYTE_TO_FLOAT(v[1]),
1333 BYTE_TO_FLOAT(v[2]));
1334}
1335
1336static void
1337loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
1338{
Brian Paul7c276322001-09-14 21:36:43 +00001339 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001340}
1341static void
1342loopback_SecondaryColor3ivEXT_f( const GLint *v )
1343{
1344 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1345 INT_TO_FLOAT(v[1]),
1346 INT_TO_FLOAT(v[2]));
1347}
1348
1349static void
1350loopback_SecondaryColor3svEXT_f( const GLshort *v )
1351{
1352 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1353 SHORT_TO_FLOAT(v[1]),
1354 SHORT_TO_FLOAT(v[2]));
1355}
1356
1357static void
1358loopback_SecondaryColor3uivEXT_f( const GLuint *v )
1359{
1360 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1361 UINT_TO_FLOAT(v[1]),
1362 UINT_TO_FLOAT(v[2]));
1363}
1364
1365static void
1366loopback_SecondaryColor3usvEXT_f( const GLushort *v )
1367{
1368 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1369 USHORT_TO_FLOAT(v[1]),
1370 USHORT_TO_FLOAT(v[2]));
1371}
1372
1373
Brian Paul86b84272001-12-14 02:50:01 +00001374/*
1375 * GL_NV_vertex_program
1376 */
1377
1378static void
1379loopback_VertexAttrib1sNV(GLuint index, GLshort x)
1380{
1381 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1382}
1383
1384static void
1385loopback_VertexAttrib1fNV(GLuint index, GLfloat x)
1386{
1387 ATTRIB(index, x, 0.0F, 0.0F, 1.0F);
1388}
1389
1390static void
1391loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
1392{
1393 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1394}
1395
1396static void
1397loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1398{
1399 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1400}
1401
1402static void
1403loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
1404{
1405 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1406}
1407
1408static void
1409loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1410{
Karl Schultz798d83c2002-10-17 22:26:06 +00001411 ATTRIB(index, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
Brian Paul86b84272001-12-14 02:50:01 +00001412}
1413
1414static void
1415loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1416{
1417 ATTRIB(index, (GLfloat) x, y, z, 1.0F);
1418}
1419
1420static void
1421loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
1422{
1423 ATTRIB(index, x, y, z, 1.0F);
1424}
1425
1426static void
1427loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1428{
1429 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1430}
1431
1432static void
1433loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1434{
1435 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1436}
1437
1438static void
1439loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1440{
1441 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1442}
1443
1444static void
1445loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1446{
1447 ATTRIB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1448 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1449}
1450
1451static void
1452loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
1453{
1454 ATTRIB(index, (GLfloat) v[0], 0.0F, 0.0F, 1.0F);
1455}
1456
1457static void
1458loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v)
1459{
1460 ATTRIB(index, v[0], 0.0F, 0.0F, 1.0F);
1461}
1462
1463static void
1464loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1465{
1466 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1467}
1468
1469static void
1470loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
1471{
1472 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1473}
1474
1475static void
1476loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v)
1477{
1478 ATTRIB(index, v[0], v[1], 0.0F, 1.0F);
1479}
1480
1481static void
1482loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1483{
Karl Schultz798d83c2002-10-17 22:26:06 +00001484 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
Brian Paul86b84272001-12-14 02:50:01 +00001485}
1486
1487static void
1488loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
1489{
1490 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1491}
1492
1493static void
1494loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v)
1495{
1496 ATTRIB(index, v[0], v[1], v[2], 1.0F);
1497}
1498
1499static void
1500loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1501{
1502 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1503}
1504
1505static void
1506loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
1507{
1508 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1509}
1510
1511static void
1512loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v)
1513{
1514 ATTRIB(index, v[0], v[1], v[2], v[3]);
1515}
1516
1517static void
1518loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1519{
1520 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1521}
1522
1523static void
1524loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1525{
1526 ATTRIB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1527 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1528}
1529
1530
1531static void
1532loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1533{
1534 GLint i;
1535 for (i = n - 1; i >= 0; i--)
1536 loopback_VertexAttrib1svNV(index + i, v + i);
1537}
1538
1539static void
1540loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1541{
1542 GLint i;
1543 for (i = n - 1; i >= 0; i--)
1544 loopback_VertexAttrib1fvNV(index + i, v + i);
1545}
1546
1547static void
1548loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1549{
1550 GLint i;
1551 for (i = n - 1; i >= 0; i--)
1552 loopback_VertexAttrib1dvNV(index + i, v + i);
1553}
1554
1555static void
1556loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1557{
1558 GLint i;
1559 for (i = n - 1; i >= 0; i--)
1560 loopback_VertexAttrib2svNV(index + i, v + 2 * i);
1561}
1562
1563static void
1564loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1565{
1566 GLint i;
1567 for (i = n - 1; i >= 0; i--)
1568 loopback_VertexAttrib2fvNV(index + i, v + 2 * i);
1569}
1570
1571static void
1572loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1573{
1574 GLint i;
1575 for (i = n - 1; i >= 0; i--)
1576 loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
1577}
1578
1579static void
1580loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1581{
1582 GLint i;
1583 for (i = n - 1; i >= 0; i--)
1584 loopback_VertexAttrib3svNV(index + i, v + 3 * i);
1585}
1586
1587static void
1588loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1589{
1590 GLint i;
1591 for (i = n - 1; i >= 0; i--)
1592 loopback_VertexAttrib3fvNV(index + i, v + 3 * i);
1593}
1594
1595static void
1596loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1597{
1598 GLint i;
1599 for (i = n - 1; i >= 0; i--)
1600 loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
1601}
1602
1603static void
1604loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1605{
1606 GLint i;
1607 for (i = n - 1; i >= 0; i--)
1608 loopback_VertexAttrib4svNV(index + i, v + 4 * i);
1609}
1610
1611static void
1612loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1613{
1614 GLint i;
1615 for (i = n - 1; i >= 0; i--)
1616 loopback_VertexAttrib4fvNV(index + i, v + 4 * i);
1617}
1618
1619static void
1620loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1621{
1622 GLint i;
1623 for (i = n - 1; i >= 0; i--)
1624 loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
1625}
1626
1627static void
1628loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1629{
1630 GLint i;
1631 for (i = n - 1; i >= 0; i--)
1632 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
1633}
1634
Keith Whitwellcab974c2000-12-26 05:09:27 +00001635
Brian Paul03c0c2e2002-01-14 16:06:35 +00001636
Keith Whitwellb0149862000-11-24 10:30:04 +00001637void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001638_mesa_loopback_prefer_float( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001639 GLboolean prefer_float_colors )
1640{
1641 if (!prefer_float_colors) {
1642 dest->Color3b = loopback_Color3b;
1643 dest->Color3d = loopback_Color3d;
1644 dest->Color3i = loopback_Color3i;
1645 dest->Color3s = loopback_Color3s;
1646 dest->Color3ui = loopback_Color3ui;
1647 dest->Color3us = loopback_Color3us;
1648 dest->Color4b = loopback_Color4b;
1649 dest->Color4d = loopback_Color4d;
1650 dest->Color4i = loopback_Color4i;
1651 dest->Color4s = loopback_Color4s;
1652 dest->Color4ui = loopback_Color4ui;
1653 dest->Color4us = loopback_Color4us;
1654 dest->Color3bv = loopback_Color3bv;
1655 dest->Color3dv = loopback_Color3dv;
1656 dest->Color3iv = loopback_Color3iv;
1657 dest->Color3sv = loopback_Color3sv;
1658 dest->Color3uiv = loopback_Color3uiv;
1659 dest->Color3usv = loopback_Color3usv;
1660 dest->Color4bv = loopback_Color4bv;
1661 dest->Color4dv = loopback_Color4dv;
1662 dest->Color4iv = loopback_Color4iv;
1663 dest->Color4sv = loopback_Color4sv;
1664 dest->Color4uiv = loopback_Color4uiv;
1665 dest->Color4usv = loopback_Color4usv;
1666 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT;
1667 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT;
1668 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT;
1669 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT;
1670 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT;
1671 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT;
1672 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT;
1673 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT;
1674 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT;
1675 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT;
1676 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT;
1677 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT;
Gareth Hughes22144ab2001-03-12 00:48:37 +00001678 }
Keith Whitwellb0149862000-11-24 10:30:04 +00001679 else {
1680 dest->Color3b = loopback_Color3b_f;
1681 dest->Color3d = loopback_Color3d_f;
1682 dest->Color3i = loopback_Color3i_f;
1683 dest->Color3s = loopback_Color3s_f;
1684 dest->Color3ui = loopback_Color3ui_f;
1685 dest->Color3us = loopback_Color3us_f;
1686 dest->Color4b = loopback_Color4b_f;
1687 dest->Color4d = loopback_Color4d_f;
1688 dest->Color4i = loopback_Color4i_f;
1689 dest->Color4s = loopback_Color4s_f;
1690 dest->Color4ui = loopback_Color4ui_f;
1691 dest->Color4us = loopback_Color4us_f;
1692 dest->Color3bv = loopback_Color3bv_f;
1693 dest->Color3dv = loopback_Color3dv_f;
1694 dest->Color3iv = loopback_Color3iv_f;
1695 dest->Color3sv = loopback_Color3sv_f;
1696 dest->Color3uiv = loopback_Color3uiv_f;
1697 dest->Color3usv = loopback_Color3usv_f;
1698 dest->Color4bv = loopback_Color4bv_f;
1699 dest->Color4dv = loopback_Color4dv_f;
1700 dest->Color4iv = loopback_Color4iv_f;
1701 dest->Color4sv = loopback_Color4sv_f;
1702 dest->Color4uiv = loopback_Color4uiv_f;
1703 dest->Color4usv = loopback_Color4usv_f;
1704 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f;
1705 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f;
1706 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f;
1707 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f;
1708 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f;
1709 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f;
1710 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f;
1711 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f;
1712 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f;
1713 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f;
1714 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f;
1715 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f;
1716 }
1717}
1718
Keith Whitwell8b6a91a2001-05-10 15:42:42 +00001719/* Passing prefer_float_colors as true will mean that all colors
Keith Whitwellb0149862000-11-24 10:30:04 +00001720 * *except* Color{34}ub{v} are passed as floats. Setting it false will
Gareth Hughes22144ab2001-03-12 00:48:37 +00001721 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1722 *
Keith Whitwellb0149862000-11-24 10:30:04 +00001723 * This code never registers handlers for any of the entry points
Gareth Hughes22144ab2001-03-12 00:48:37 +00001724 * listed in vtxfmt.h.
Keith Whitwellb0149862000-11-24 10:30:04 +00001725 */
1726void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001727_mesa_loopback_init_api_table( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001728 GLboolean prefer_float_colors )
1729{
1730 _mesa_loopback_prefer_float( dest, prefer_float_colors );
1731
1732 dest->Indexd = loopback_Indexd;
1733 dest->Indexf = loopback_Indexf;
Keith Whitwellb0149862000-11-24 10:30:04 +00001734 dest->Indexs = loopback_Indexs;
1735 dest->Indexub = loopback_Indexub;
1736 dest->Indexdv = loopback_Indexdv;
1737 dest->Indexfv = loopback_Indexfv;
1738 dest->Indexiv = loopback_Indexiv;
1739 dest->Indexsv = loopback_Indexsv;
1740 dest->Indexubv = loopback_Indexubv;
1741 dest->Normal3b = loopback_Normal3b;
1742 dest->Normal3d = loopback_Normal3d;
1743 dest->Normal3i = loopback_Normal3i;
1744 dest->Normal3s = loopback_Normal3s;
1745 dest->Normal3bv = loopback_Normal3bv;
1746 dest->Normal3dv = loopback_Normal3dv;
1747 dest->Normal3iv = loopback_Normal3iv;
1748 dest->Normal3sv = loopback_Normal3sv;
1749 dest->TexCoord1d = loopback_TexCoord1d;
1750 dest->TexCoord1i = loopback_TexCoord1i;
1751 dest->TexCoord1s = loopback_TexCoord1s;
1752 dest->TexCoord2d = loopback_TexCoord2d;
1753 dest->TexCoord2s = loopback_TexCoord2s;
1754 dest->TexCoord2i = loopback_TexCoord2i;
1755 dest->TexCoord3d = loopback_TexCoord3d;
1756 dest->TexCoord3i = loopback_TexCoord3i;
1757 dest->TexCoord3s = loopback_TexCoord3s;
1758 dest->TexCoord4d = loopback_TexCoord4d;
1759 dest->TexCoord4i = loopback_TexCoord4i;
1760 dest->TexCoord4s = loopback_TexCoord4s;
1761 dest->TexCoord1dv = loopback_TexCoord1dv;
1762 dest->TexCoord1iv = loopback_TexCoord1iv;
1763 dest->TexCoord1sv = loopback_TexCoord1sv;
1764 dest->TexCoord2dv = loopback_TexCoord2dv;
1765 dest->TexCoord2iv = loopback_TexCoord2iv;
1766 dest->TexCoord2sv = loopback_TexCoord2sv;
1767 dest->TexCoord3dv = loopback_TexCoord3dv;
1768 dest->TexCoord3iv = loopback_TexCoord3iv;
1769 dest->TexCoord3sv = loopback_TexCoord3sv;
1770 dest->TexCoord4dv = loopback_TexCoord4dv;
1771 dest->TexCoord4iv = loopback_TexCoord4iv;
1772 dest->TexCoord4sv = loopback_TexCoord4sv;
1773 dest->Vertex2d = loopback_Vertex2d;
1774 dest->Vertex2i = loopback_Vertex2i;
1775 dest->Vertex2s = loopback_Vertex2s;
1776 dest->Vertex3d = loopback_Vertex3d;
1777 dest->Vertex3i = loopback_Vertex3i;
1778 dest->Vertex3s = loopback_Vertex3s;
1779 dest->Vertex4d = loopback_Vertex4d;
1780 dest->Vertex4i = loopback_Vertex4i;
1781 dest->Vertex4s = loopback_Vertex4s;
1782 dest->Vertex2dv = loopback_Vertex2dv;
1783 dest->Vertex2iv = loopback_Vertex2iv;
1784 dest->Vertex2sv = loopback_Vertex2sv;
1785 dest->Vertex3dv = loopback_Vertex3dv;
1786 dest->Vertex3iv = loopback_Vertex3iv;
1787 dest->Vertex3sv = loopback_Vertex3sv;
1788 dest->Vertex4dv = loopback_Vertex4dv;
1789 dest->Vertex4iv = loopback_Vertex4iv;
1790 dest->Vertex4sv = loopback_Vertex4sv;
Brian Paul471a7742001-12-04 23:43:31 +00001791 dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB;
1792 dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB;
1793 dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB;
1794 dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB;
1795 dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB;
1796 dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB;
1797 dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB;
1798 dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB;
1799 dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB;
1800 dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB;
1801 dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB;
1802 dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB;
1803 dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB;
1804 dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB;
1805 dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB;
1806 dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB;
1807 dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB;
1808 dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB;
1809 dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB;
1810 dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB;
1811 dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB;
1812 dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB;
1813 dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB;
1814 dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB;
Keith Whitwellb0149862000-11-24 10:30:04 +00001815 dest->EvalCoord2dv = loopback_EvalCoord2dv;
1816 dest->EvalCoord2fv = loopback_EvalCoord2fv;
1817 dest->EvalCoord2d = loopback_EvalCoord2d;
1818 dest->EvalCoord1dv = loopback_EvalCoord1dv;
1819 dest->EvalCoord1fv = loopback_EvalCoord1fv;
1820 dest->EvalCoord1d = loopback_EvalCoord1d;
1821 dest->Materialf = loopback_Materialf;
1822 dest->Materiali = loopback_Materiali;
1823 dest->Materialiv = loopback_Materialiv;
1824 dest->Rectd = loopback_Rectd;
1825 dest->Rectdv = loopback_Rectdv;
1826 dest->Rectfv = loopback_Rectfv;
1827 dest->Recti = loopback_Recti;
1828 dest->Rectiv = loopback_Rectiv;
1829 dest->Rects = loopback_Rects;
1830 dest->Rectsv = loopback_Rectsv;
1831 dest->FogCoorddEXT = loopback_FogCoorddEXT;
1832 dest->FogCoorddvEXT = loopback_FogCoorddvEXT;
Brian Paul86b84272001-12-14 02:50:01 +00001833
1834 dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV;
1835 dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV;
1836 dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV;
1837 dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV;
1838 dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV;
1839 dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV;
1840 dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV;
1841 dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV;
1842 dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV;
1843 dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV;
1844 dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV;
1845 dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV;
1846
1847 dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV;
1848 dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV;
1849 dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV;
1850 dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV;
1851 dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV;
1852 dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV;
1853 dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV;
1854 dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV;
1855 dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV;
1856 dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV;
1857 dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV;
1858 dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV;
1859 dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV;
1860
1861 dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV;
1862 dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV;
1863 dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV;
1864 dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV;
1865 dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV;
1866 dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV;
1867 dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV;
1868 dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV;
1869 dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV;
1870 dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV;
1871 dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV;
1872 dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV;
1873 dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV;
Brian Paul03c0c2e2002-01-14 16:06:35 +00001874
Keith Whitwellb0149862000-11-24 10:30:04 +00001875}