blob: cf38a549013dddcec6f82b18103735c9f981d609 [file] [log] [blame]
Brian Paul86b84272001-12-14 02:50:01 +00001/* $Id: api_loopback.c,v 1.12 2001/12/14 02:50:01 brianp 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"
35#include "api_loopback.h"
36
37/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
38 * calls to a smaller set of driver-provided formats. Currently just
39 * go back to dispatch to find these (eg. call glNormal3f directly),
40 * hence 'loopback'.
41 *
42 * The driver must supply all of the remaining entry points, which are
Keith Whitwell9aff6cf2000-11-24 15:21:59 +000043 * listed in dd.h. The easiest way for a driver to do this is to
Keith Whitwellb0149862000-11-24 10:30:04 +000044 * install the supplied software t&l module.
45 */
46#define DRIVER(x) gl##x
47#define COLORUBV(v) DRIVER(Color4ubv)(v)
48#define COLORF(r,g,b,a) DRIVER(Color4f)(r,g,b,a)
49#define FOGCOORDF(x) DRIVER(FogCoordfEXT)(x)
50#define VERTEX2(x,y) DRIVER(Vertex2f)(x,y)
51#define VERTEX3(x,y,z) DRIVER(Vertex3f)(x,y,z)
52#define VERTEX4(x,y,z,w) DRIVER(Vertex4f)(x,y,z,w)
53#define NORMAL(x,y,z) DRIVER(Normal3f)(x,y,z)
54#define TEXCOORD1(s) DRIVER(TexCoord1f)(s)
55#define TEXCOORD2(s,t) DRIVER(TexCoord2f)(s,t)
56#define TEXCOORD3(s,t,u) DRIVER(TexCoord3f)(s,t,u)
57#define TEXCOORD4(s,t,u,v) DRIVER(TexCoord4f)(s,t,u,v)
Gareth Hughes22144ab2001-03-12 00:48:37 +000058#define INDEX(c) DRIVER(Indexi)(c)
59#define MULTI_TEXCOORD1(z,s) DRIVER(MultiTexCoord1fARB)(z,s)
Keith Whitwellb0149862000-11-24 10:30:04 +000060#define MULTI_TEXCOORD2(z,s,t) DRIVER(MultiTexCoord2fARB)(z,s,t)
Gareth Hughes22144ab2001-03-12 00:48:37 +000061#define MULTI_TEXCOORD3(z,s,t,u) DRIVER(MultiTexCoord3fARB)(z,s,t,u)
Keith Whitwellb0149862000-11-24 10:30:04 +000062#define MULTI_TEXCOORD4(z,s,t,u,v) DRIVER(MultiTexCoord4fARB)(z,s,t,u,v)
63#define EVALCOORD1(x) DRIVER(EvalCoord1f)(x)
64#define EVALCOORD2(x,y) DRIVER(EvalCoord2f)(x,y)
65#define MATERIALFV(a,b,c) DRIVER(Materialfv)(a,b,c)
66#define RECTF(a,b,c,d) DRIVER(Rectf)(a,b,c,d)
67#define SECONDARYCOLORUB(a,b,c) DRIVER(SecondaryColor3ubEXT)(a,b,c)
68#define SECONDARYCOLORF(a,b,c) DRIVER(SecondaryColor3fEXT)(a,b,c)
Brian Paul86b84272001-12-14 02:50:01 +000069#define ATTRIB(index, x, y, z, w) DRIVER(VertexAttrib4fNV)(index, x, y, z, w)
Keith Whitwellb0149862000-11-24 10:30:04 +000070
71
72static void
73loopback_Color3b( GLbyte red, GLbyte green, GLbyte blue )
74{
75 GLubyte col[4];
76 col[0] = BYTE_TO_UBYTE(red);
77 col[1] = BYTE_TO_UBYTE(green);
78 col[2] = BYTE_TO_UBYTE(blue);
79 col[3] = 255;
80 COLORUBV(col);
81}
82
83static void
84loopback_Color3d( GLdouble red, GLdouble green, GLdouble blue )
85{
86 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +000087 GLfloat r = (GLfloat) red;
88 GLfloat g = (GLfloat) green;
89 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +000090 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
91 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
92 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +000093 col[3] = 255;
94 COLORUBV( col );
95}
96
97static void
98loopback_Color3i( GLint red, GLint green, GLint blue )
99{
100 GLubyte col[4];
101 col[0] = INT_TO_UBYTE(red);
102 col[1] = INT_TO_UBYTE(green);
103 col[2] = INT_TO_UBYTE(blue);
104 col[3] = 255;
105 COLORUBV(col);
106}
107
108static void
109loopback_Color3s( GLshort red, GLshort green, GLshort blue )
110{
111 GLubyte col[4];
112 col[0] = SHORT_TO_UBYTE(red);
113 col[1] = SHORT_TO_UBYTE(green);
114 col[2] = SHORT_TO_UBYTE(blue);
115 col[3] = 255;
116 COLORUBV(col);
117}
118
119static void
120loopback_Color3ui( GLuint red, GLuint green, GLuint blue )
121{
122 GLubyte col[4];
123 col[0] = UINT_TO_UBYTE(red);
124 col[1] = UINT_TO_UBYTE(green);
125 col[2] = UINT_TO_UBYTE(blue);
126 col[3] = 255;
127 COLORUBV(col);
128}
129
130static void
131loopback_Color3us( GLushort red, GLushort green, GLushort blue )
132{
133 GLubyte col[4];
134 col[0] = USHORT_TO_UBYTE(red);
135 col[1] = USHORT_TO_UBYTE(green);
136 col[2] = USHORT_TO_UBYTE(blue);
137 col[3] = 255;
138 COLORUBV(col);
139}
140
141static void
142loopback_Color4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )
143{
144 GLubyte col[4];
145 col[0] = BYTE_TO_UBYTE(red);
146 col[1] = BYTE_TO_UBYTE(green);
147 col[2] = BYTE_TO_UBYTE(blue);
148 col[3] = 255;
149 COLORUBV(col);
150}
151
152static void
153loopback_Color4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha )
154{
155 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000156 GLfloat r = (GLfloat) red;
157 GLfloat g = (GLfloat) green;
158 GLfloat b = (GLfloat) blue;
159 GLfloat a = (GLfloat) alpha;
Brian Paul3041d052001-01-02 22:02:51 +0000160 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
161 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
162 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
163 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000164 COLORUBV( col );
165}
166
167static void
168loopback_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
169{
170 GLubyte col[4];
171 col[0] = INT_TO_UBYTE(red);
172 col[1] = INT_TO_UBYTE(green);
173 col[2] = INT_TO_UBYTE(blue);
174 col[3] = INT_TO_UBYTE(alpha);
175 COLORUBV(col);
176}
177
178static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000179loopback_Color4s( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000180 GLshort alpha )
181{
182 GLubyte col[4];
183 col[0] = SHORT_TO_UBYTE(red);
184 col[1] = SHORT_TO_UBYTE(green);
185 col[2] = SHORT_TO_UBYTE(blue);
186 col[3] = SHORT_TO_UBYTE(alpha);
187 COLORUBV(col);
188}
189
190static void
191loopback_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
192{
193 GLubyte col[4];
194 col[0] = UINT_TO_UBYTE(red);
195 col[1] = UINT_TO_UBYTE(green);
196 col[2] = UINT_TO_UBYTE(blue);
197 col[3] = UINT_TO_UBYTE(alpha);
198 COLORUBV(col);
199}
200
201static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000202loopback_Color4us( GLushort red, GLushort green, GLushort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000203 GLushort alpha )
204{
205 GLubyte col[4];
206 col[0] = USHORT_TO_UBYTE(red);
207 col[1] = USHORT_TO_UBYTE(green);
208 col[2] = USHORT_TO_UBYTE(blue);
209 col[3] = USHORT_TO_UBYTE(alpha);
210 COLORUBV(col);
211}
212
213static void
214loopback_Color3bv( const GLbyte *v )
215{
216 GLubyte col[4];
217 col[0] = BYTE_TO_UBYTE(v[0]);
218 col[1] = BYTE_TO_UBYTE(v[1]);
219 col[2] = BYTE_TO_UBYTE(v[2]);
220 col[3] = 255;
221 COLORUBV(col);
222}
223
224static void
225loopback_Color3dv( const GLdouble *v )
226{
227 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000228 GLfloat r = (GLfloat) v[0];
229 GLfloat g = (GLfloat) v[1];
230 GLfloat b = (GLfloat) v[2];
Brian Paula580e1a2001-01-02 22:05:55 +0000231 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
232 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
233 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +0000234 col[3] = 255;
235 COLORUBV( col );
236}
237
238static void
239loopback_Color3iv( const GLint *v )
240{
241 GLubyte col[4];
242 col[0] = INT_TO_UBYTE(v[0]);
243 col[1] = INT_TO_UBYTE(v[1]);
244 col[2] = INT_TO_UBYTE(v[2]);
245 col[3] = 255;
246 COLORUBV(col);
247}
248
249static void
250loopback_Color3sv( const GLshort *v )
Gareth Hughes22144ab2001-03-12 00:48:37 +0000251{
Keith Whitwellb0149862000-11-24 10:30:04 +0000252 GLubyte col[4];
253 col[0] = SHORT_TO_UBYTE(v[0]);
254 col[1] = SHORT_TO_UBYTE(v[1]);
255 col[2] = SHORT_TO_UBYTE(v[2]);
256 col[3] = 255;
257 COLORUBV(col);
258}
259
260static void
261loopback_Color3uiv( const GLuint *v )
262{
263 GLubyte col[4];
264 col[0] = UINT_TO_UBYTE(v[0]);
265 col[1] = UINT_TO_UBYTE(v[1]);
266 col[2] = UINT_TO_UBYTE(v[2]);
267 col[3] = 255;
268 COLORUBV(col);
269}
270
271static void
272loopback_Color3usv( const GLushort *v )
273{
274 GLubyte col[4];
275 col[0] = USHORT_TO_UBYTE(v[0]);
276 col[1] = USHORT_TO_UBYTE(v[1]);
277 col[2] = USHORT_TO_UBYTE(v[2]);
278 col[3] = 255;
279 COLORUBV(col);
280
281}
282
283static void
284loopback_Color4bv( const GLbyte *v )
285{
286 GLubyte col[4];
287 col[0] = BYTE_TO_UBYTE(v[0]);
288 col[1] = BYTE_TO_UBYTE(v[1]);
289 col[2] = BYTE_TO_UBYTE(v[2]);
290 col[3] = BYTE_TO_UBYTE(v[3]);
291 COLORUBV(col);
292}
293
294static void
295loopback_Color4dv( const GLdouble *v )
296{
297 GLubyte col[4];
Brian Paul7c276322001-09-14 21:36:43 +0000298 GLfloat r = (GLfloat) v[0];
299 GLfloat g = (GLfloat) v[1];
300 GLfloat b = (GLfloat) v[2];
301 GLfloat a = (GLfloat) v[3];
Brian Paula580e1a2001-01-02 22:05:55 +0000302 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
303 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
304 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
305 UNCLAMPED_FLOAT_TO_UBYTE(col[3], a);
Keith Whitwellb0149862000-11-24 10:30:04 +0000306 COLORUBV( col );
307}
308
309static void
310loopback_Color4iv( const GLint *v )
311{
312 GLubyte col[4];
313 col[0] = INT_TO_UBYTE(v[0]);
314 col[1] = INT_TO_UBYTE(v[1]);
315 col[2] = INT_TO_UBYTE(v[2]);
316 col[3] = INT_TO_UBYTE(v[3]);
317 COLORUBV(col);
318}
319
320static void
321loopback_Color4sv( const GLshort *v)
322{
323 GLubyte col[4];
324 col[0] = SHORT_TO_UBYTE(v[0]);
325 col[1] = SHORT_TO_UBYTE(v[1]);
326 col[2] = SHORT_TO_UBYTE(v[2]);
327 col[3] = SHORT_TO_UBYTE(v[3]);
328 COLORUBV(col);
329}
330
331static void
332loopback_Color4uiv( const GLuint *v)
333{
334 GLubyte col[4];
335 col[0] = UINT_TO_UBYTE(v[0]);
336 col[1] = UINT_TO_UBYTE(v[1]);
337 col[2] = UINT_TO_UBYTE(v[2]);
338 col[3] = UINT_TO_UBYTE(v[3]);
339 COLORUBV(col);
340}
341
342static void
343loopback_Color4usv( const GLushort *v)
344{
345 GLubyte col[4];
346 col[0] = USHORT_TO_UBYTE(v[0]);
347 col[1] = USHORT_TO_UBYTE(v[1]);
348 col[2] = USHORT_TO_UBYTE(v[2]);
349 col[3] = USHORT_TO_UBYTE(v[3]);
350 COLORUBV(col);
351}
352
353static void
354loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
355{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000356 COLORF( BYTE_TO_FLOAT(red),
Keith Whitwellb0149862000-11-24 10:30:04 +0000357 BYTE_TO_FLOAT(green),
Gareth Hughes22144ab2001-03-12 00:48:37 +0000358 BYTE_TO_FLOAT(blue),
Keith Whitwellb0149862000-11-24 10:30:04 +0000359 1.0 );
360}
361
362static void
363loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
364{
Brian Paul7c276322001-09-14 21:36:43 +0000365 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000366}
367
368static void
369loopback_Color3i_f( GLint red, GLint green, GLint blue )
370{
371 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
372 INT_TO_FLOAT(blue), 1.0);
373}
374
375static void
376loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
377{
378 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
379 SHORT_TO_FLOAT(blue), 1.0);
380}
381
382static void
383loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
384{
385 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
386 UINT_TO_FLOAT(blue), 1.0 );
387}
388
389static void
390loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
391{
392 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
393 USHORT_TO_FLOAT(blue), 1.0 );
394}
395
396
397static void
398loopback_Color3bv_f( const GLbyte *v )
399{
400 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
401 BYTE_TO_FLOAT(v[2]), 1.0 );
402}
403
404static void
405loopback_Color3dv_f( const GLdouble *v )
406{
Brian Paul7c276322001-09-14 21:36:43 +0000407 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
Keith Whitwellb0149862000-11-24 10:30:04 +0000408}
409
410static void
411loopback_Color3iv_f( const GLint *v )
412{
413 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
414 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
415}
416
417static void
418loopback_Color3sv_f( const GLshort *v )
419{
420 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
421 SHORT_TO_FLOAT(v[2]), 1.0 );
422}
423
424static void
425loopback_Color3uiv_f( const GLuint *v )
426{
427 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
428 UINT_TO_FLOAT(v[2]), 1.0 );
429}
430
431static void
432loopback_Color3usv_f( const GLushort *v )
433{
434 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
435 USHORT_TO_FLOAT(v[2]), 1.0 );
436}
437
438
439static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000440loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000441 GLbyte alpha )
442{
443 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
444 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
445}
446
447static void
448loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
449 GLdouble alpha )
450{
Brian Paul7c276322001-09-14 21:36:43 +0000451 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
Keith Whitwellb0149862000-11-24 10:30:04 +0000452}
453
454static void
455loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
456{
457 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
458 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
459}
460
461static void
Gareth Hughes22144ab2001-03-12 00:48:37 +0000462loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
Keith Whitwellb0149862000-11-24 10:30:04 +0000463 GLshort alpha )
464{
465 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
466 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
467}
468
469static void
470loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
471{
472 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
473 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
474}
475
476static void
477loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
478{
479 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
480 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
481}
482
483
484static void
485loopback_Color4iv_f( const GLint *v )
486{
487 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
488 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
489}
490
491
492static void
493loopback_Color4bv_f( const GLbyte *v )
494{
495 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
496 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
497}
498
499static void
500loopback_Color4dv_f( const GLdouble *v )
501{
Brian Paul7c276322001-09-14 21:36:43 +0000502 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000503}
504
505
506static void
507loopback_Color4sv_f( const GLshort *v)
508{
509 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
510 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
511}
512
513
514static void
515loopback_Color4uiv_f( const GLuint *v)
516{
517 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
518 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
519}
520
521static void
522loopback_Color4usv_f( const GLushort *v)
523{
524 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
525 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
526}
527
528static void
529loopback_FogCoorddEXT( GLdouble d )
530{
Brian Paul7c276322001-09-14 21:36:43 +0000531 FOGCOORDF( (GLfloat) d );
Keith Whitwellb0149862000-11-24 10:30:04 +0000532}
533
534static void
535loopback_FogCoorddvEXT( const GLdouble *v )
536{
Brian Paul7c276322001-09-14 21:36:43 +0000537 FOGCOORDF( (GLfloat) *v );
Keith Whitwellb0149862000-11-24 10:30:04 +0000538}
539
540
541static void
542loopback_Indexd( GLdouble c )
543{
Brian Paul50478de2000-11-27 18:17:09 +0000544 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000545}
546
547static void
548loopback_Indexf( GLfloat c )
549{
Keith Whitwellcab974c2000-12-26 05:09:27 +0000550 INDEX( (GLuint) (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000551}
552
553static void
554loopback_Indexs( GLshort c )
555{
Brian Paul50478de2000-11-27 18:17:09 +0000556 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000557}
558
559static void
560loopback_Indexub( GLubyte c )
561{
Brian Paul50478de2000-11-27 18:17:09 +0000562 INDEX( (GLint) c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000563}
564
565static void
566loopback_Indexdv( const GLdouble *c )
567{
Brian Paul50478de2000-11-27 18:17:09 +0000568 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000569}
570
571static void
572loopback_Indexfv( const GLfloat *c )
573{
Brian Paul50478de2000-11-27 18:17:09 +0000574 INDEX( (GLint) (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000575}
576
577static void
578loopback_Indexiv( const GLint *c )
579{
580 INDEX( *c );
581}
582
583static void
584loopback_Indexsv( const GLshort *c )
585{
Brian Paul50478de2000-11-27 18:17:09 +0000586 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000587}
588
589static void
590loopback_Indexubv( const GLubyte *c )
591{
Brian Paul50478de2000-11-27 18:17:09 +0000592 INDEX( (GLint) *c );
Keith Whitwellb0149862000-11-24 10:30:04 +0000593}
594
595static void
596loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
597{
598 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
599}
600
601static void
602loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
603{
Brian Paul7c276322001-09-14 21:36:43 +0000604 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
Keith Whitwellb0149862000-11-24 10:30:04 +0000605}
606
607static void
608loopback_Normal3i( GLint nx, GLint ny, GLint nz )
609{
610 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
611}
612
613static void
614loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
615{
616 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
617}
618
619static void
620loopback_Normal3bv( const GLbyte *v )
621{
622 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
623}
624
625static void
626loopback_Normal3dv( const GLdouble *v )
627{
Brian Paul7c276322001-09-14 21:36:43 +0000628 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000629}
630
631static void
632loopback_Normal3iv( const GLint *v )
633{
634 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
635}
636
637static void
638loopback_Normal3sv( const GLshort *v )
639{
640 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
641}
642
643static void
644loopback_TexCoord1d( GLdouble s )
645{
Brian Paul7c276322001-09-14 21:36:43 +0000646 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000647}
648
649static void
650loopback_TexCoord1i( GLint s )
651{
Brian Paul7c276322001-09-14 21:36:43 +0000652 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000653}
654
655static void
656loopback_TexCoord1s( GLshort s )
657{
Brian Paul7c276322001-09-14 21:36:43 +0000658 TEXCOORD1((GLfloat) s);
Keith Whitwellb0149862000-11-24 10:30:04 +0000659}
660
661static void
662loopback_TexCoord2d( GLdouble s, GLdouble t )
663{
Brian Paul7c276322001-09-14 21:36:43 +0000664 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000665}
666
667static void
668loopback_TexCoord2s( GLshort s, GLshort t )
669{
Brian Paul7c276322001-09-14 21:36:43 +0000670 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000671}
672
673static void
674loopback_TexCoord2i( GLint s, GLint t )
675{
Brian Paul7c276322001-09-14 21:36:43 +0000676 TEXCOORD2((GLfloat) s,(GLfloat) t);
Keith Whitwellb0149862000-11-24 10:30:04 +0000677}
678
679static void
680loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
681{
Brian Paul7c276322001-09-14 21:36:43 +0000682 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000683}
684
685static void
686loopback_TexCoord3i( GLint s, GLint t, GLint r )
687{
Brian Paul7c276322001-09-14 21:36:43 +0000688 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000689}
690
691static void
692loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
693{
Brian Paul7c276322001-09-14 21:36:43 +0000694 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
Keith Whitwellb0149862000-11-24 10:30:04 +0000695}
696
697static void
698loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
699{
Brian Paul7c276322001-09-14 21:36:43 +0000700 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000701}
702
703static void
704loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
705{
Brian Paul7c276322001-09-14 21:36:43 +0000706 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000707}
708
709static void
710loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
711{
Brian Paul7c276322001-09-14 21:36:43 +0000712 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
Keith Whitwellb0149862000-11-24 10:30:04 +0000713}
714
715static void
716loopback_TexCoord1dv( const GLdouble *v )
717{
Brian Paul7c276322001-09-14 21:36:43 +0000718 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000719}
720
721static void
722loopback_TexCoord1iv( const GLint *v )
723{
Brian Paul7c276322001-09-14 21:36:43 +0000724 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000725}
726
727static void
728loopback_TexCoord1sv( const GLshort *v )
729{
Brian Paul7c276322001-09-14 21:36:43 +0000730 TEXCOORD1((GLfloat) v[0]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000731}
732
733static void
734loopback_TexCoord2dv( const GLdouble *v )
735{
Brian Paul7c276322001-09-14 21:36:43 +0000736 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000737}
738
739static void
740loopback_TexCoord2iv( const GLint *v )
741{
Brian Paul7c276322001-09-14 21:36:43 +0000742 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000743}
744
745static void
746loopback_TexCoord2sv( const GLshort *v )
747{
Brian Paul7c276322001-09-14 21:36:43 +0000748 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000749}
750
751static void
752loopback_TexCoord3dv( const GLdouble *v )
753{
Brian Paul7c276322001-09-14 21:36:43 +0000754 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000755}
756
757static void
758loopback_TexCoord3iv( const GLint *v )
759{
Brian Paul7c276322001-09-14 21:36:43 +0000760 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000761}
762
763static void
764loopback_TexCoord3sv( const GLshort *v )
765{
Brian Paul7c276322001-09-14 21:36:43 +0000766 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000767}
768
769static void
770loopback_TexCoord4dv( const GLdouble *v )
771{
Brian Paul7c276322001-09-14 21:36:43 +0000772 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000773}
774
775static void
776loopback_TexCoord4iv( const GLint *v )
777{
Brian Paul7c276322001-09-14 21:36:43 +0000778 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000779}
780
781static void
782loopback_TexCoord4sv( const GLshort *v )
783{
Brian Paul7c276322001-09-14 21:36:43 +0000784 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
Keith Whitwellb0149862000-11-24 10:30:04 +0000785}
786
787static void
788loopback_Vertex2d( GLdouble x, GLdouble y )
789{
790 VERTEX2( (GLfloat) x, (GLfloat) y );
791}
792
793static void
794loopback_Vertex2i( GLint x, GLint y )
795{
796 VERTEX2( (GLfloat) x, (GLfloat) y );
797}
798
799static void
800loopback_Vertex2s( GLshort x, GLshort y )
801{
802 VERTEX2( (GLfloat) x, (GLfloat) y );
803}
804
805static void
806loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
807{
808 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
809}
810
811static void
812loopback_Vertex3i( GLint x, GLint y, GLint z )
813{
814 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
815}
816
817static void
818loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
819{
820 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
821}
822
823static void
824loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
825{
826 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
827}
828
829static void
830loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
831{
832 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
833}
834
835static void
836loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
837{
838 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
839}
840
841static void
842loopback_Vertex2dv( const GLdouble *v )
843{
844 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
845}
846
847static void
848loopback_Vertex2iv( const GLint *v )
849{
850 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
851}
852
853static void
854loopback_Vertex2sv( const GLshort *v )
855{
856 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
857}
858
859static void
860loopback_Vertex3dv( const GLdouble *v )
861{
862 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
863}
864
865static void
866loopback_Vertex3iv( const GLint *v )
867{
868 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
869}
870
871static void
872loopback_Vertex3sv( const GLshort *v )
873{
874 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
875}
876
877static void
878loopback_Vertex4dv( const GLdouble *v )
879{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000880 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000881 (GLfloat) v[2], (GLfloat) v[3] );
882}
883
884static void
885loopback_Vertex4iv( const GLint *v )
886{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000887 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000888 (GLfloat) v[2], (GLfloat) v[3] );
889}
890
891static void
892loopback_Vertex4sv( const GLshort *v )
893{
Gareth Hughes22144ab2001-03-12 00:48:37 +0000894 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
Keith Whitwellb0149862000-11-24 10:30:04 +0000895 (GLfloat) v[2], (GLfloat) v[3] );
896}
897
898static void
899loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
900{
Brian Paul7c276322001-09-14 21:36:43 +0000901 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000902}
903
904static void
905loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
906{
Brian Paul7c276322001-09-14 21:36:43 +0000907 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000908}
909
910static void
911loopback_MultiTexCoord1iARB(GLenum target, GLint s)
912{
Brian Paul7c276322001-09-14 21:36:43 +0000913 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000914}
915
916static void
917loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
918{
Brian Paul7c276322001-09-14 21:36:43 +0000919 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000920}
921
922static void
923loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
924{
Brian Paul7c276322001-09-14 21:36:43 +0000925 MULTI_TEXCOORD1( target, (GLfloat) s );
Keith Whitwellb0149862000-11-24 10:30:04 +0000926}
927
928static void
929loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
930{
Brian Paul7c276322001-09-14 21:36:43 +0000931 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000932}
933
934static void
935loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
936{
Brian Paul7c276322001-09-14 21:36:43 +0000937 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000938}
939
940static void
941loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
942{
Brian Paul7c276322001-09-14 21:36:43 +0000943 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000944}
945
946static void
947loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
948{
Brian Paul7c276322001-09-14 21:36:43 +0000949 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000950}
951
952static void
953loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
954{
Brian Paul7c276322001-09-14 21:36:43 +0000955 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000956}
957
958static void
959loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
960{
Brian Paul7c276322001-09-14 21:36:43 +0000961 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
Keith Whitwellb0149862000-11-24 10:30:04 +0000962}
963
964static void
965loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
966{
Brian Paul7c276322001-09-14 21:36:43 +0000967 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000968}
969
970static void
971loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
972{
Brian Paul7c276322001-09-14 21:36:43 +0000973 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000974}
975
976static void
977loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
978{
Brian Paul7c276322001-09-14 21:36:43 +0000979 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000980}
981
982static void
983loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
984{
Brian Paul7c276322001-09-14 21:36:43 +0000985 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000986}
987
988static void
989loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
990{
Brian Paul7c276322001-09-14 21:36:43 +0000991 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +0000992}
993
994static void
995loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
996{
Brian Paul7c276322001-09-14 21:36:43 +0000997 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
Keith Whitwellb0149862000-11-24 10:30:04 +0000998}
999
1000static void
1001loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
1002{
Brian Paul7c276322001-09-14 21:36:43 +00001003 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001004}
1005
1006static void
1007loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
1008{
Brian Paul7c276322001-09-14 21:36:43 +00001009 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1010 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001011}
1012
1013static void
1014loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
1015{
Brian Paul7c276322001-09-14 21:36:43 +00001016 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1017 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001018}
1019
1020static void
1021loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
1022{
Brian Paul7c276322001-09-14 21:36:43 +00001023 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1024 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001025}
1026
1027static void
1028loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
1029{
Brian Paul7c276322001-09-14 21:36:43 +00001030 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1031 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001032}
1033
1034static void
1035loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
1036{
Brian Paul7c276322001-09-14 21:36:43 +00001037 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
1038 (GLfloat) r, (GLfloat) q );
Keith Whitwellb0149862000-11-24 10:30:04 +00001039}
1040
1041static void
1042loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
1043{
Brian Paul7c276322001-09-14 21:36:43 +00001044 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
1045 (GLfloat) v[2], (GLfloat) v[3] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001046}
1047
1048static void
1049loopback_EvalCoord2dv( const GLdouble *u )
1050{
1051 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
1052}
1053
1054static void
1055loopback_EvalCoord2fv( const GLfloat *u )
1056{
1057 EVALCOORD2( u[0], u[1] );
1058}
1059
1060static void
1061loopback_EvalCoord2d( GLdouble u, GLdouble v )
1062{
1063 EVALCOORD2( (GLfloat) u, (GLfloat) v );
1064}
1065
1066static void
1067loopback_EvalCoord1dv( const GLdouble *u )
1068{
1069 EVALCOORD1( (GLfloat) *u );
1070}
1071
1072static void
1073loopback_EvalCoord1fv( const GLfloat *u )
1074{
1075 EVALCOORD1( (GLfloat) *u );
1076}
1077
1078static void
1079loopback_EvalCoord1d( GLdouble u )
1080{
1081 EVALCOORD1( (GLfloat) u );
1082}
1083
1084static void
1085loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
1086{
1087 GLfloat fparam[4];
1088 fparam[0] = param;
1089 MATERIALFV( face, pname, fparam );
1090}
1091
1092static void
1093loopback_Materiali(GLenum face, GLenum pname, GLint param )
1094{
1095 GLfloat p = (GLfloat) param;
1096 MATERIALFV(face, pname, &p);
1097}
1098
1099static void
1100loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
1101{
1102 GLfloat fparam[4];
1103 switch (pname) {
1104 case GL_AMBIENT:
1105 case GL_DIFFUSE:
1106 case GL_SPECULAR:
1107 case GL_EMISSION:
1108 case GL_AMBIENT_AND_DIFFUSE:
1109 fparam[0] = INT_TO_FLOAT( params[0] );
1110 fparam[1] = INT_TO_FLOAT( params[1] );
1111 fparam[2] = INT_TO_FLOAT( params[2] );
1112 fparam[3] = INT_TO_FLOAT( params[3] );
1113 break;
1114 case GL_SHININESS:
1115 fparam[0] = (GLfloat) params[0];
1116 break;
1117 case GL_COLOR_INDEXES:
1118 fparam[0] = (GLfloat) params[0];
1119 fparam[1] = (GLfloat) params[1];
1120 fparam[2] = (GLfloat) params[2];
1121 break;
1122 default:
1123 ;
1124 }
1125 MATERIALFV(face, pname, fparam);
1126}
1127
1128
1129static void
1130loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
1131{
Brian Paul7c276322001-09-14 21:36:43 +00001132 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001133}
1134
1135static void
1136loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
1137{
Brian Paul7c276322001-09-14 21:36:43 +00001138 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001139}
1140
1141static void
1142loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
1143{
1144 RECTF(v1[0], v1[1], v2[0], v2[1]);
1145}
1146
1147static void
1148loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
1149{
Brian Paul7c276322001-09-14 21:36:43 +00001150 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001151}
1152
1153static void
1154loopback_Rectiv(const GLint *v1, const GLint *v2)
1155{
Brian Paul7c276322001-09-14 21:36:43 +00001156 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001157}
1158
1159static void
1160loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
1161{
Brian Paul7c276322001-09-14 21:36:43 +00001162 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
Keith Whitwellb0149862000-11-24 10:30:04 +00001163}
1164
1165static void
1166loopback_Rectsv(const GLshort *v1, const GLshort *v2)
1167{
Brian Paul7c276322001-09-14 21:36:43 +00001168 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
Keith Whitwellb0149862000-11-24 10:30:04 +00001169}
1170
1171static void
1172loopback_SecondaryColor3bEXT( GLbyte red, GLbyte green, GLbyte blue )
1173{
1174 SECONDARYCOLORUB( BYTE_TO_UBYTE(red),
1175 BYTE_TO_UBYTE(green),
1176 BYTE_TO_UBYTE(blue) );
1177}
1178
1179static void
1180loopback_SecondaryColor3dEXT( GLdouble red, GLdouble green, GLdouble blue )
1181{
1182 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001183 GLfloat r = (GLfloat) red;
1184 GLfloat g = (GLfloat) green;
1185 GLfloat b = (GLfloat) blue;
Brian Paul3041d052001-01-02 22:02:51 +00001186 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1187 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1188 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001189 SECONDARYCOLORUB( col[0], col[1], col[2] );
1190}
1191
1192static void
1193loopback_SecondaryColor3iEXT( GLint red, GLint green, GLint blue )
1194{
1195 SECONDARYCOLORUB( INT_TO_UBYTE(red),
1196 INT_TO_UBYTE(green),
1197 INT_TO_UBYTE(blue));
1198}
1199
1200static void
1201loopback_SecondaryColor3sEXT( GLshort red, GLshort green, GLshort blue )
1202{
1203 SECONDARYCOLORUB(SHORT_TO_UBYTE(red),
1204 SHORT_TO_UBYTE(green),
1205 SHORT_TO_UBYTE(blue));
1206}
1207
1208static void
1209loopback_SecondaryColor3uiEXT( GLuint red, GLuint green, GLuint blue )
1210{
1211 SECONDARYCOLORUB(UINT_TO_UBYTE(red),
1212 UINT_TO_UBYTE(green),
1213 UINT_TO_UBYTE(blue));
1214}
1215
1216static void
1217loopback_SecondaryColor3usEXT( GLushort red, GLushort green, GLushort blue )
1218{
1219 SECONDARYCOLORUB(USHORT_TO_UBYTE(red),
1220 USHORT_TO_UBYTE(green),
1221 USHORT_TO_UBYTE(blue));
1222}
1223
1224static void
1225loopback_SecondaryColor3bvEXT( const GLbyte *v )
1226{
Brian Paul3041d052001-01-02 22:02:51 +00001227 const GLfloat r = BYTE_TO_FLOAT(v[0]);
1228 const GLfloat g = BYTE_TO_FLOAT(v[1]);
1229 const GLfloat b = BYTE_TO_FLOAT(v[2]);
1230 SECONDARYCOLORF(r, g, b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001231}
1232
1233static void
1234loopback_SecondaryColor3dvEXT( const GLdouble *v )
1235{
1236 GLubyte col[3];
Brian Paul7c276322001-09-14 21:36:43 +00001237 GLfloat r = (GLfloat) v[0];
1238 GLfloat g = (GLfloat) v[1];
1239 GLfloat b = (GLfloat) v[2];
Brian Paul3041d052001-01-02 22:02:51 +00001240 UNCLAMPED_FLOAT_TO_UBYTE(col[0], r);
1241 UNCLAMPED_FLOAT_TO_UBYTE(col[1], g);
1242 UNCLAMPED_FLOAT_TO_UBYTE(col[2], b);
Keith Whitwellb0149862000-11-24 10:30:04 +00001243 SECONDARYCOLORUB( col[0], col[1], col[2] );
1244}
1245
1246static void
1247loopback_SecondaryColor3ivEXT( const GLint *v )
1248{
1249 SECONDARYCOLORUB(INT_TO_UBYTE(v[0]),
1250 INT_TO_UBYTE(v[1]),
1251 INT_TO_UBYTE(v[2]));
1252}
1253
1254static void
1255loopback_SecondaryColor3svEXT( const GLshort *v )
1256{
1257 SECONDARYCOLORUB(SHORT_TO_UBYTE(v[0]),
1258 SHORT_TO_UBYTE(v[1]),
1259 SHORT_TO_UBYTE(v[2]));
1260}
1261
1262static void
1263loopback_SecondaryColor3uivEXT( const GLuint *v )
1264{
1265 SECONDARYCOLORUB(UINT_TO_UBYTE(v[0]),
1266 UINT_TO_UBYTE(v[1]),
1267 UINT_TO_UBYTE(v[2]));
1268}
1269
1270static void
1271loopback_SecondaryColor3usvEXT( const GLushort *v )
1272{
1273 SECONDARYCOLORUB(USHORT_TO_UBYTE(v[0]),
1274 USHORT_TO_UBYTE(v[1]),
1275 USHORT_TO_UBYTE(v[2]));
1276}
1277
1278
1279static void
1280loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
1281{
1282 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
1283 BYTE_TO_FLOAT(green),
1284 BYTE_TO_FLOAT(blue) );
1285}
1286
1287static void
1288loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
1289{
Brian Paul7c276322001-09-14 21:36:43 +00001290 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
Keith Whitwellb0149862000-11-24 10:30:04 +00001291}
1292
1293static void
1294loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
1295{
1296 SECONDARYCOLORF( INT_TO_FLOAT(red),
1297 INT_TO_FLOAT(green),
1298 INT_TO_FLOAT(blue));
1299}
1300
1301static void
1302loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
1303{
1304 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
1305 SHORT_TO_FLOAT(green),
1306 SHORT_TO_FLOAT(blue));
1307}
1308
1309static void
1310loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
1311{
1312 SECONDARYCOLORF(UINT_TO_FLOAT(red),
1313 UINT_TO_FLOAT(green),
1314 UINT_TO_FLOAT(blue));
1315}
1316
1317static void
1318loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
1319{
1320 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
1321 USHORT_TO_FLOAT(green),
1322 USHORT_TO_FLOAT(blue));
1323}
1324
1325static void
1326loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
1327{
1328 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1329 BYTE_TO_FLOAT(v[1]),
1330 BYTE_TO_FLOAT(v[2]));
1331}
1332
1333static void
1334loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
1335{
Brian Paul7c276322001-09-14 21:36:43 +00001336 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
Keith Whitwellb0149862000-11-24 10:30:04 +00001337}
1338static void
1339loopback_SecondaryColor3ivEXT_f( const GLint *v )
1340{
1341 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1342 INT_TO_FLOAT(v[1]),
1343 INT_TO_FLOAT(v[2]));
1344}
1345
1346static void
1347loopback_SecondaryColor3svEXT_f( const GLshort *v )
1348{
1349 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1350 SHORT_TO_FLOAT(v[1]),
1351 SHORT_TO_FLOAT(v[2]));
1352}
1353
1354static void
1355loopback_SecondaryColor3uivEXT_f( const GLuint *v )
1356{
1357 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1358 UINT_TO_FLOAT(v[1]),
1359 UINT_TO_FLOAT(v[2]));
1360}
1361
1362static void
1363loopback_SecondaryColor3usvEXT_f( const GLushort *v )
1364{
1365 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1366 USHORT_TO_FLOAT(v[1]),
1367 USHORT_TO_FLOAT(v[2]));
1368}
1369
1370
Brian Paul86b84272001-12-14 02:50:01 +00001371/*
1372 * GL_NV_vertex_program
1373 */
1374
1375static void
1376loopback_VertexAttrib1sNV(GLuint index, GLshort x)
1377{
1378 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1379}
1380
1381static void
1382loopback_VertexAttrib1fNV(GLuint index, GLfloat x)
1383{
1384 ATTRIB(index, x, 0.0F, 0.0F, 1.0F);
1385}
1386
1387static void
1388loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
1389{
1390 ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
1391}
1392
1393static void
1394loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1395{
1396 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1397}
1398
1399static void
1400loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
1401{
1402 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1403}
1404
1405static void
1406loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1407{
1408 ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
1409}
1410
1411static void
1412loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1413{
1414 ATTRIB(index, (GLfloat) x, y, z, 1.0F);
1415}
1416
1417static void
1418loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
1419{
1420 ATTRIB(index, x, y, z, 1.0F);
1421}
1422
1423static void
1424loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1425{
1426 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1427}
1428
1429static void
1430loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1431{
1432 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1433}
1434
1435static void
1436loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1437{
1438 ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1439}
1440
1441static void
1442loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1443{
1444 ATTRIB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1445 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1446}
1447
1448static void
1449loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
1450{
1451 ATTRIB(index, (GLfloat) v[0], 0.0F, 0.0F, 1.0F);
1452}
1453
1454static void
1455loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v)
1456{
1457 ATTRIB(index, v[0], 0.0F, 0.0F, 1.0F);
1458}
1459
1460static void
1461loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1462{
1463 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1464}
1465
1466static void
1467loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
1468{
1469 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
1470}
1471
1472static void
1473loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v)
1474{
1475 ATTRIB(index, v[0], v[1], 0.0F, 1.0F);
1476}
1477
1478static void
1479loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1480{
1481 ATTRIB(index, (GLfloat) v[0], (GLdouble) v[1], 0.0F, 1.0F);
1482}
1483
1484static void
1485loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
1486{
1487 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1488}
1489
1490static void
1491loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v)
1492{
1493 ATTRIB(index, v[0], v[1], v[2], 1.0F);
1494}
1495
1496static void
1497loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1498{
1499 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1500}
1501
1502static void
1503loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
1504{
1505 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
1506}
1507
1508static void
1509loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v)
1510{
1511 ATTRIB(index, v[0], v[1], v[2], v[3]);
1512}
1513
1514static void
1515loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1516{
1517 ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1518}
1519
1520static void
1521loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1522{
1523 ATTRIB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1524 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1525}
1526
1527
1528static void
1529loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1530{
1531 GLint i;
1532 for (i = n - 1; i >= 0; i--)
1533 loopback_VertexAttrib1svNV(index + i, v + i);
1534}
1535
1536static void
1537loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1538{
1539 GLint i;
1540 for (i = n - 1; i >= 0; i--)
1541 loopback_VertexAttrib1fvNV(index + i, v + i);
1542}
1543
1544static void
1545loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1546{
1547 GLint i;
1548 for (i = n - 1; i >= 0; i--)
1549 loopback_VertexAttrib1dvNV(index + i, v + i);
1550}
1551
1552static void
1553loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1554{
1555 GLint i;
1556 for (i = n - 1; i >= 0; i--)
1557 loopback_VertexAttrib2svNV(index + i, v + 2 * i);
1558}
1559
1560static void
1561loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1562{
1563 GLint i;
1564 for (i = n - 1; i >= 0; i--)
1565 loopback_VertexAttrib2fvNV(index + i, v + 2 * i);
1566}
1567
1568static void
1569loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1570{
1571 GLint i;
1572 for (i = n - 1; i >= 0; i--)
1573 loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
1574}
1575
1576static void
1577loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1578{
1579 GLint i;
1580 for (i = n - 1; i >= 0; i--)
1581 loopback_VertexAttrib3svNV(index + i, v + 3 * i);
1582}
1583
1584static void
1585loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1586{
1587 GLint i;
1588 for (i = n - 1; i >= 0; i--)
1589 loopback_VertexAttrib3fvNV(index + i, v + 3 * i);
1590}
1591
1592static void
1593loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1594{
1595 GLint i;
1596 for (i = n - 1; i >= 0; i--)
1597 loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
1598}
1599
1600static void
1601loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1602{
1603 GLint i;
1604 for (i = n - 1; i >= 0; i--)
1605 loopback_VertexAttrib4svNV(index + i, v + 4 * i);
1606}
1607
1608static void
1609loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1610{
1611 GLint i;
1612 for (i = n - 1; i >= 0; i--)
1613 loopback_VertexAttrib4fvNV(index + i, v + 4 * i);
1614}
1615
1616static void
1617loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1618{
1619 GLint i;
1620 for (i = n - 1; i >= 0; i--)
1621 loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
1622}
1623
1624static void
1625loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1626{
1627 GLint i;
1628 for (i = n - 1; i >= 0; i--)
1629 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
1630}
1631
Keith Whitwellcab974c2000-12-26 05:09:27 +00001632
Keith Whitwellb0149862000-11-24 10:30:04 +00001633void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001634_mesa_loopback_prefer_float( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001635 GLboolean prefer_float_colors )
1636{
1637 if (!prefer_float_colors) {
1638 dest->Color3b = loopback_Color3b;
1639 dest->Color3d = loopback_Color3d;
1640 dest->Color3i = loopback_Color3i;
1641 dest->Color3s = loopback_Color3s;
1642 dest->Color3ui = loopback_Color3ui;
1643 dest->Color3us = loopback_Color3us;
1644 dest->Color4b = loopback_Color4b;
1645 dest->Color4d = loopback_Color4d;
1646 dest->Color4i = loopback_Color4i;
1647 dest->Color4s = loopback_Color4s;
1648 dest->Color4ui = loopback_Color4ui;
1649 dest->Color4us = loopback_Color4us;
1650 dest->Color3bv = loopback_Color3bv;
1651 dest->Color3dv = loopback_Color3dv;
1652 dest->Color3iv = loopback_Color3iv;
1653 dest->Color3sv = loopback_Color3sv;
1654 dest->Color3uiv = loopback_Color3uiv;
1655 dest->Color3usv = loopback_Color3usv;
1656 dest->Color4bv = loopback_Color4bv;
1657 dest->Color4dv = loopback_Color4dv;
1658 dest->Color4iv = loopback_Color4iv;
1659 dest->Color4sv = loopback_Color4sv;
1660 dest->Color4uiv = loopback_Color4uiv;
1661 dest->Color4usv = loopback_Color4usv;
1662 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT;
1663 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT;
1664 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT;
1665 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT;
1666 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT;
1667 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT;
1668 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT;
1669 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT;
1670 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT;
1671 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT;
1672 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT;
1673 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT;
Gareth Hughes22144ab2001-03-12 00:48:37 +00001674 }
Keith Whitwellb0149862000-11-24 10:30:04 +00001675 else {
1676 dest->Color3b = loopback_Color3b_f;
1677 dest->Color3d = loopback_Color3d_f;
1678 dest->Color3i = loopback_Color3i_f;
1679 dest->Color3s = loopback_Color3s_f;
1680 dest->Color3ui = loopback_Color3ui_f;
1681 dest->Color3us = loopback_Color3us_f;
1682 dest->Color4b = loopback_Color4b_f;
1683 dest->Color4d = loopback_Color4d_f;
1684 dest->Color4i = loopback_Color4i_f;
1685 dest->Color4s = loopback_Color4s_f;
1686 dest->Color4ui = loopback_Color4ui_f;
1687 dest->Color4us = loopback_Color4us_f;
1688 dest->Color3bv = loopback_Color3bv_f;
1689 dest->Color3dv = loopback_Color3dv_f;
1690 dest->Color3iv = loopback_Color3iv_f;
1691 dest->Color3sv = loopback_Color3sv_f;
1692 dest->Color3uiv = loopback_Color3uiv_f;
1693 dest->Color3usv = loopback_Color3usv_f;
1694 dest->Color4bv = loopback_Color4bv_f;
1695 dest->Color4dv = loopback_Color4dv_f;
1696 dest->Color4iv = loopback_Color4iv_f;
1697 dest->Color4sv = loopback_Color4sv_f;
1698 dest->Color4uiv = loopback_Color4uiv_f;
1699 dest->Color4usv = loopback_Color4usv_f;
1700 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f;
1701 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f;
1702 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f;
1703 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f;
1704 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f;
1705 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f;
1706 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f;
1707 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f;
1708 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f;
1709 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f;
1710 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f;
1711 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f;
1712 }
1713}
1714
Keith Whitwell8b6a91a2001-05-10 15:42:42 +00001715/* Passing prefer_float_colors as true will mean that all colors
Keith Whitwellb0149862000-11-24 10:30:04 +00001716 * *except* Color{34}ub{v} are passed as floats. Setting it false will
Gareth Hughes22144ab2001-03-12 00:48:37 +00001717 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1718 *
Keith Whitwellb0149862000-11-24 10:30:04 +00001719 * This code never registers handlers for any of the entry points
Gareth Hughes22144ab2001-03-12 00:48:37 +00001720 * listed in vtxfmt.h.
Keith Whitwellb0149862000-11-24 10:30:04 +00001721 */
1722void
Gareth Hughes22144ab2001-03-12 00:48:37 +00001723_mesa_loopback_init_api_table( struct _glapi_table *dest,
Keith Whitwellb0149862000-11-24 10:30:04 +00001724 GLboolean prefer_float_colors )
1725{
1726 _mesa_loopback_prefer_float( dest, prefer_float_colors );
1727
1728 dest->Indexd = loopback_Indexd;
1729 dest->Indexf = loopback_Indexf;
Keith Whitwellb0149862000-11-24 10:30:04 +00001730 dest->Indexs = loopback_Indexs;
1731 dest->Indexub = loopback_Indexub;
1732 dest->Indexdv = loopback_Indexdv;
1733 dest->Indexfv = loopback_Indexfv;
1734 dest->Indexiv = loopback_Indexiv;
1735 dest->Indexsv = loopback_Indexsv;
1736 dest->Indexubv = loopback_Indexubv;
1737 dest->Normal3b = loopback_Normal3b;
1738 dest->Normal3d = loopback_Normal3d;
1739 dest->Normal3i = loopback_Normal3i;
1740 dest->Normal3s = loopback_Normal3s;
1741 dest->Normal3bv = loopback_Normal3bv;
1742 dest->Normal3dv = loopback_Normal3dv;
1743 dest->Normal3iv = loopback_Normal3iv;
1744 dest->Normal3sv = loopback_Normal3sv;
1745 dest->TexCoord1d = loopback_TexCoord1d;
1746 dest->TexCoord1i = loopback_TexCoord1i;
1747 dest->TexCoord1s = loopback_TexCoord1s;
1748 dest->TexCoord2d = loopback_TexCoord2d;
1749 dest->TexCoord2s = loopback_TexCoord2s;
1750 dest->TexCoord2i = loopback_TexCoord2i;
1751 dest->TexCoord3d = loopback_TexCoord3d;
1752 dest->TexCoord3i = loopback_TexCoord3i;
1753 dest->TexCoord3s = loopback_TexCoord3s;
1754 dest->TexCoord4d = loopback_TexCoord4d;
1755 dest->TexCoord4i = loopback_TexCoord4i;
1756 dest->TexCoord4s = loopback_TexCoord4s;
1757 dest->TexCoord1dv = loopback_TexCoord1dv;
1758 dest->TexCoord1iv = loopback_TexCoord1iv;
1759 dest->TexCoord1sv = loopback_TexCoord1sv;
1760 dest->TexCoord2dv = loopback_TexCoord2dv;
1761 dest->TexCoord2iv = loopback_TexCoord2iv;
1762 dest->TexCoord2sv = loopback_TexCoord2sv;
1763 dest->TexCoord3dv = loopback_TexCoord3dv;
1764 dest->TexCoord3iv = loopback_TexCoord3iv;
1765 dest->TexCoord3sv = loopback_TexCoord3sv;
1766 dest->TexCoord4dv = loopback_TexCoord4dv;
1767 dest->TexCoord4iv = loopback_TexCoord4iv;
1768 dest->TexCoord4sv = loopback_TexCoord4sv;
1769 dest->Vertex2d = loopback_Vertex2d;
1770 dest->Vertex2i = loopback_Vertex2i;
1771 dest->Vertex2s = loopback_Vertex2s;
1772 dest->Vertex3d = loopback_Vertex3d;
1773 dest->Vertex3i = loopback_Vertex3i;
1774 dest->Vertex3s = loopback_Vertex3s;
1775 dest->Vertex4d = loopback_Vertex4d;
1776 dest->Vertex4i = loopback_Vertex4i;
1777 dest->Vertex4s = loopback_Vertex4s;
1778 dest->Vertex2dv = loopback_Vertex2dv;
1779 dest->Vertex2iv = loopback_Vertex2iv;
1780 dest->Vertex2sv = loopback_Vertex2sv;
1781 dest->Vertex3dv = loopback_Vertex3dv;
1782 dest->Vertex3iv = loopback_Vertex3iv;
1783 dest->Vertex3sv = loopback_Vertex3sv;
1784 dest->Vertex4dv = loopback_Vertex4dv;
1785 dest->Vertex4iv = loopback_Vertex4iv;
1786 dest->Vertex4sv = loopback_Vertex4sv;
Brian Paul471a7742001-12-04 23:43:31 +00001787 dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB;
1788 dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB;
1789 dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB;
1790 dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB;
1791 dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB;
1792 dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB;
1793 dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB;
1794 dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB;
1795 dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB;
1796 dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB;
1797 dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB;
1798 dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB;
1799 dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB;
1800 dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB;
1801 dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB;
1802 dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB;
1803 dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB;
1804 dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB;
1805 dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB;
1806 dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB;
1807 dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB;
1808 dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB;
1809 dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB;
1810 dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB;
Keith Whitwellb0149862000-11-24 10:30:04 +00001811 dest->EvalCoord2dv = loopback_EvalCoord2dv;
1812 dest->EvalCoord2fv = loopback_EvalCoord2fv;
1813 dest->EvalCoord2d = loopback_EvalCoord2d;
1814 dest->EvalCoord1dv = loopback_EvalCoord1dv;
1815 dest->EvalCoord1fv = loopback_EvalCoord1fv;
1816 dest->EvalCoord1d = loopback_EvalCoord1d;
1817 dest->Materialf = loopback_Materialf;
1818 dest->Materiali = loopback_Materiali;
1819 dest->Materialiv = loopback_Materialiv;
1820 dest->Rectd = loopback_Rectd;
1821 dest->Rectdv = loopback_Rectdv;
1822 dest->Rectfv = loopback_Rectfv;
1823 dest->Recti = loopback_Recti;
1824 dest->Rectiv = loopback_Rectiv;
1825 dest->Rects = loopback_Rects;
1826 dest->Rectsv = loopback_Rectsv;
1827 dest->FogCoorddEXT = loopback_FogCoorddEXT;
1828 dest->FogCoorddvEXT = loopback_FogCoorddvEXT;
Brian Paul86b84272001-12-14 02:50:01 +00001829
1830 dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV;
1831 dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV;
1832 dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV;
1833 dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV;
1834 dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV;
1835 dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV;
1836 dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV;
1837 dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV;
1838 dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV;
1839 dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV;
1840 dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV;
1841 dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV;
1842
1843 dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV;
1844 dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV;
1845 dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV;
1846 dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV;
1847 dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV;
1848 dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV;
1849 dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV;
1850 dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV;
1851 dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV;
1852 dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV;
1853 dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV;
1854 dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV;
1855 dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV;
1856
1857 dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV;
1858 dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV;
1859 dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV;
1860 dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV;
1861 dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV;
1862 dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV;
1863 dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV;
1864 dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV;
1865 dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV;
1866 dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV;
1867 dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV;
1868 dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV;
1869 dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV;
Keith Whitwellb0149862000-11-24 10:30:04 +00001870}