4 * \author Keith Whitwell <keith@tungstengraphics.com>
8 * Mesa 3-D graphics library
11 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
20 * The above copyright notice and this permission notice shall be included
21 * in all copies or substantial portions of the Software.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
27 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 #include "glapitable.h"
37 #include "api_loopback.h"
40 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
41 * calls to a smaller set of driver-provided formats. Currently just
42 * go back to dispatch to find these (eg. call glNormal3f directly),
45 * The driver must supply all of the remaining entry points, which are
46 * listed in dd.h. The easiest way for a driver to do this is to
47 * install the supplied software t&l module.
49 #define COLORF(r,g,b,a) GL_CALL(Color4f)(r,g,b,a)
50 #define VERTEX2(x,y) GL_CALL(Vertex2f)(x,y)
51 #define VERTEX3(x,y,z) GL_CALL(Vertex3f)(x,y,z)
52 #define VERTEX4(x,y,z,w) GL_CALL(Vertex4f)(x,y,z,w)
53 #define NORMAL(x,y,z) GL_CALL(Normal3f)(x,y,z)
54 #define TEXCOORD1(s) GL_CALL(TexCoord1f)(s)
55 #define TEXCOORD2(s,t) GL_CALL(TexCoord2f)(s,t)
56 #define TEXCOORD3(s,t,u) GL_CALL(TexCoord3f)(s,t,u)
57 #define TEXCOORD4(s,t,u,v) GL_CALL(TexCoord4f)(s,t,u,v)
58 #define INDEX(c) GL_CALL(Indexf)(c)
59 #define MULTI_TEXCOORD1(z,s) GL_CALL(MultiTexCoord1fARB)(z,s)
60 #define MULTI_TEXCOORD2(z,s,t) GL_CALL(MultiTexCoord2fARB)(z,s,t)
61 #define MULTI_TEXCOORD3(z,s,t,u) GL_CALL(MultiTexCoord3fARB)(z,s,t,u)
62 #define MULTI_TEXCOORD4(z,s,t,u,v) GL_CALL(MultiTexCoord4fARB)(z,s,t,u,v)
63 #define EVALCOORD1(x) GL_CALL(EvalCoord1f)(x)
64 #define EVALCOORD2(x,y) GL_CALL(EvalCoord2f)(x,y)
65 #define MATERIALFV(a,b,c) GL_CALL(Materialfv)(a,b,c)
66 #define RECTF(a,b,c,d) GL_CALL(Rectf)(a,b,c,d)
68 /* Extension functions must be dereferenced through _glapi_Dispatch as
69 * not all libGL.so's will have all the uptodate entrypoints.
71 #define ATTRIB1(index,x) GL_CALL(VertexAttrib1fNV)(index,x)
72 #define ATTRIB2(index,x,y) GL_CALL(VertexAttrib2fNV)(index,x,y)
73 #define ATTRIB3(index,x,y,z) GL_CALL(VertexAttrib3fNV)(index,x,y,z)
74 #define ATTRIB4(index,x,y,z,w) GL_CALL(VertexAttrib4fNV)(index,x,y,z,w)
75 #define FOGCOORDF(x) GL_CALL(FogCoordfEXT)(x)
76 #define SECONDARYCOLORF(a,b,c) GL_CALL(SecondaryColor3fEXT)(a,b,c)
78 static void GLAPIENTRY
79 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
81 COLORF( BYTE_TO_FLOAT(red
),
87 static void GLAPIENTRY
88 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
90 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
93 static void GLAPIENTRY
94 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
96 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
97 INT_TO_FLOAT(blue
), 1.0);
100 static void GLAPIENTRY
101 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
103 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
104 SHORT_TO_FLOAT(blue
), 1.0);
107 static void GLAPIENTRY
108 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
110 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
111 UINT_TO_FLOAT(blue
), 1.0 );
114 static void GLAPIENTRY
115 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
117 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
118 USHORT_TO_FLOAT(blue
), 1.0 );
121 static void GLAPIENTRY
122 loopback_Color3ub_f( GLubyte red
, GLubyte green
, GLubyte blue
)
124 COLORF( UBYTE_TO_FLOAT(red
), UBYTE_TO_FLOAT(green
),
125 UBYTE_TO_FLOAT(blue
), 1.0 );
129 static void GLAPIENTRY
130 loopback_Color3bv_f( const GLbyte
*v
)
132 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
133 BYTE_TO_FLOAT(v
[2]), 1.0 );
136 static void GLAPIENTRY
137 loopback_Color3dv_f( const GLdouble
*v
)
139 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
142 static void GLAPIENTRY
143 loopback_Color3iv_f( const GLint
*v
)
145 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
146 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
149 static void GLAPIENTRY
150 loopback_Color3sv_f( const GLshort
*v
)
152 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
153 SHORT_TO_FLOAT(v
[2]), 1.0 );
156 static void GLAPIENTRY
157 loopback_Color3uiv_f( const GLuint
*v
)
159 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
160 UINT_TO_FLOAT(v
[2]), 1.0 );
163 static void GLAPIENTRY
164 loopback_Color3usv_f( const GLushort
*v
)
166 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
167 USHORT_TO_FLOAT(v
[2]), 1.0 );
170 static void GLAPIENTRY
171 loopback_Color3ubv_f( const GLubyte
*v
)
173 COLORF( UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
174 UBYTE_TO_FLOAT(v
[2]), 1.0 );
178 static void GLAPIENTRY
179 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
182 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
183 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
186 static void GLAPIENTRY
187 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
190 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
193 static void GLAPIENTRY
194 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
196 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
197 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
200 static void GLAPIENTRY
201 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
204 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
205 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
208 static void GLAPIENTRY
209 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
211 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
212 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
215 static void GLAPIENTRY
216 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
218 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
219 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
222 static void GLAPIENTRY
223 loopback_Color4ub_f( GLubyte red
, GLubyte green
, GLubyte blue
, GLubyte alpha
)
225 COLORF( UBYTE_TO_FLOAT(red
), UBYTE_TO_FLOAT(green
),
226 UBYTE_TO_FLOAT(blue
), UBYTE_TO_FLOAT(alpha
) );
230 static void GLAPIENTRY
231 loopback_Color4iv_f( const GLint
*v
)
233 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
234 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
238 static void GLAPIENTRY
239 loopback_Color4bv_f( const GLbyte
*v
)
241 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
242 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
245 static void GLAPIENTRY
246 loopback_Color4dv_f( const GLdouble
*v
)
248 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
252 static void GLAPIENTRY
253 loopback_Color4sv_f( const GLshort
*v
)
255 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
256 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
260 static void GLAPIENTRY
261 loopback_Color4uiv_f( const GLuint
*v
)
263 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
264 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
267 static void GLAPIENTRY
268 loopback_Color4usv_f( const GLushort
*v
)
270 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
271 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
274 static void GLAPIENTRY
275 loopback_Color4ubv_f( const GLubyte
*v
)
277 COLORF( UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
278 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]) );
281 static void GLAPIENTRY
282 loopback_FogCoorddEXT( GLdouble d
)
284 FOGCOORDF( (GLfloat
) d
);
287 static void GLAPIENTRY
288 loopback_FogCoorddvEXT( const GLdouble
*v
)
290 FOGCOORDF( (GLfloat
) *v
);
294 static void GLAPIENTRY
295 loopback_Indexd( GLdouble c
)
297 INDEX( (GLfloat
) c
);
300 static void GLAPIENTRY
301 loopback_Indexi( GLint c
)
303 INDEX( (GLfloat
) c
);
306 static void GLAPIENTRY
307 loopback_Indexs( GLshort c
)
309 INDEX( (GLfloat
) c
);
312 static void GLAPIENTRY
313 loopback_Indexub( GLubyte c
)
315 INDEX( (GLfloat
) c
);
318 static void GLAPIENTRY
319 loopback_Indexdv( const GLdouble
*c
)
321 INDEX( (GLfloat
) *c
);
324 static void GLAPIENTRY
325 loopback_Indexiv( const GLint
*c
)
327 INDEX( (GLfloat
) *c
);
330 static void GLAPIENTRY
331 loopback_Indexsv( const GLshort
*c
)
333 INDEX( (GLfloat
) *c
);
336 static void GLAPIENTRY
337 loopback_Indexubv( const GLubyte
*c
)
339 INDEX( (GLfloat
) *c
);
342 static void GLAPIENTRY
343 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
345 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
348 static void GLAPIENTRY
349 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
351 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
354 static void GLAPIENTRY
355 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
357 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
360 static void GLAPIENTRY
361 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
363 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
366 static void GLAPIENTRY
367 loopback_Normal3bv( const GLbyte
*v
)
369 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
372 static void GLAPIENTRY
373 loopback_Normal3dv( const GLdouble
*v
)
375 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
378 static void GLAPIENTRY
379 loopback_Normal3iv( const GLint
*v
)
381 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
384 static void GLAPIENTRY
385 loopback_Normal3sv( const GLshort
*v
)
387 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
390 static void GLAPIENTRY
391 loopback_TexCoord1d( GLdouble s
)
393 TEXCOORD1((GLfloat
) s
);
396 static void GLAPIENTRY
397 loopback_TexCoord1i( GLint s
)
399 TEXCOORD1((GLfloat
) s
);
402 static void GLAPIENTRY
403 loopback_TexCoord1s( GLshort s
)
405 TEXCOORD1((GLfloat
) s
);
408 static void GLAPIENTRY
409 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
411 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
414 static void GLAPIENTRY
415 loopback_TexCoord2s( GLshort s
, GLshort t
)
417 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
420 static void GLAPIENTRY
421 loopback_TexCoord2i( GLint s
, GLint t
)
423 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
426 static void GLAPIENTRY
427 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
429 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
432 static void GLAPIENTRY
433 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
435 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
438 static void GLAPIENTRY
439 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
441 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
444 static void GLAPIENTRY
445 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
447 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
450 static void GLAPIENTRY
451 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
453 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
456 static void GLAPIENTRY
457 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
459 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
462 static void GLAPIENTRY
463 loopback_TexCoord1dv( const GLdouble
*v
)
465 TEXCOORD1((GLfloat
) v
[0]);
468 static void GLAPIENTRY
469 loopback_TexCoord1iv( const GLint
*v
)
471 TEXCOORD1((GLfloat
) v
[0]);
474 static void GLAPIENTRY
475 loopback_TexCoord1sv( const GLshort
*v
)
477 TEXCOORD1((GLfloat
) v
[0]);
480 static void GLAPIENTRY
481 loopback_TexCoord2dv( const GLdouble
*v
)
483 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
486 static void GLAPIENTRY
487 loopback_TexCoord2iv( const GLint
*v
)
489 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
492 static void GLAPIENTRY
493 loopback_TexCoord2sv( const GLshort
*v
)
495 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
498 static void GLAPIENTRY
499 loopback_TexCoord3dv( const GLdouble
*v
)
501 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
504 static void GLAPIENTRY
505 loopback_TexCoord3iv( const GLint
*v
)
507 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
510 static void GLAPIENTRY
511 loopback_TexCoord3sv( const GLshort
*v
)
513 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
516 static void GLAPIENTRY
517 loopback_TexCoord4dv( const GLdouble
*v
)
519 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
522 static void GLAPIENTRY
523 loopback_TexCoord4iv( const GLint
*v
)
525 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
528 static void GLAPIENTRY
529 loopback_TexCoord4sv( const GLshort
*v
)
531 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
534 static void GLAPIENTRY
535 loopback_Vertex2d( GLdouble x
, GLdouble y
)
537 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
540 static void GLAPIENTRY
541 loopback_Vertex2i( GLint x
, GLint y
)
543 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
546 static void GLAPIENTRY
547 loopback_Vertex2s( GLshort x
, GLshort y
)
549 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
552 static void GLAPIENTRY
553 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
555 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
558 static void GLAPIENTRY
559 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
561 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
564 static void GLAPIENTRY
565 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
567 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
570 static void GLAPIENTRY
571 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
573 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
576 static void GLAPIENTRY
577 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
579 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
582 static void GLAPIENTRY
583 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
585 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
588 static void GLAPIENTRY
589 loopback_Vertex2dv( const GLdouble
*v
)
591 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
594 static void GLAPIENTRY
595 loopback_Vertex2iv( const GLint
*v
)
597 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
600 static void GLAPIENTRY
601 loopback_Vertex2sv( const GLshort
*v
)
603 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
606 static void GLAPIENTRY
607 loopback_Vertex3dv( const GLdouble
*v
)
609 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
612 static void GLAPIENTRY
613 loopback_Vertex3iv( const GLint
*v
)
615 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
618 static void GLAPIENTRY
619 loopback_Vertex3sv( const GLshort
*v
)
621 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
624 static void GLAPIENTRY
625 loopback_Vertex4dv( const GLdouble
*v
)
627 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
628 (GLfloat
) v
[2], (GLfloat
) v
[3] );
631 static void GLAPIENTRY
632 loopback_Vertex4iv( const GLint
*v
)
634 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
635 (GLfloat
) v
[2], (GLfloat
) v
[3] );
638 static void GLAPIENTRY
639 loopback_Vertex4sv( const GLshort
*v
)
641 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
642 (GLfloat
) v
[2], (GLfloat
) v
[3] );
645 static void GLAPIENTRY
646 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
648 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
651 static void GLAPIENTRY
652 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
654 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
657 static void GLAPIENTRY
658 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
660 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
663 static void GLAPIENTRY
664 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
666 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
669 static void GLAPIENTRY
670 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
672 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
675 static void GLAPIENTRY
676 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
678 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
681 static void GLAPIENTRY
682 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
684 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
687 static void GLAPIENTRY
688 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
690 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
693 static void GLAPIENTRY
694 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
696 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
699 static void GLAPIENTRY
700 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
702 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
705 static void GLAPIENTRY
706 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
708 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
711 static void GLAPIENTRY
712 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
714 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
717 static void GLAPIENTRY
718 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
720 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
723 static void GLAPIENTRY
724 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
726 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
729 static void GLAPIENTRY
730 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
732 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
735 static void GLAPIENTRY
736 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
738 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
741 static void GLAPIENTRY
742 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
744 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
747 static void GLAPIENTRY
748 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
750 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
753 static void GLAPIENTRY
754 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
756 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
757 (GLfloat
) r
, (GLfloat
) q
);
760 static void GLAPIENTRY
761 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
763 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
764 (GLfloat
) v
[2], (GLfloat
) v
[3] );
767 static void GLAPIENTRY
768 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
770 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
771 (GLfloat
) r
, (GLfloat
) q
);
774 static void GLAPIENTRY
775 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
777 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
778 (GLfloat
) v
[2], (GLfloat
) v
[3] );
781 static void GLAPIENTRY
782 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
784 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
785 (GLfloat
) r
, (GLfloat
) q
);
788 static void GLAPIENTRY
789 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
791 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
792 (GLfloat
) v
[2], (GLfloat
) v
[3] );
795 static void GLAPIENTRY
796 loopback_EvalCoord2dv( const GLdouble
*u
)
798 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
801 static void GLAPIENTRY
802 loopback_EvalCoord2fv( const GLfloat
*u
)
804 EVALCOORD2( u
[0], u
[1] );
807 static void GLAPIENTRY
808 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
810 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
813 static void GLAPIENTRY
814 loopback_EvalCoord1dv( const GLdouble
*u
)
816 EVALCOORD1( (GLfloat
) *u
);
819 static void GLAPIENTRY
820 loopback_EvalCoord1fv( const GLfloat
*u
)
822 EVALCOORD1( (GLfloat
) *u
);
825 static void GLAPIENTRY
826 loopback_EvalCoord1d( GLdouble u
)
828 EVALCOORD1( (GLfloat
) u
);
831 static void GLAPIENTRY
832 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
836 MATERIALFV( face
, pname
, fparam
);
839 static void GLAPIENTRY
840 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
842 GLfloat p
= (GLfloat
) param
;
843 MATERIALFV(face
, pname
, &p
);
846 static void GLAPIENTRY
847 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
855 case GL_AMBIENT_AND_DIFFUSE
:
856 fparam
[0] = INT_TO_FLOAT( params
[0] );
857 fparam
[1] = INT_TO_FLOAT( params
[1] );
858 fparam
[2] = INT_TO_FLOAT( params
[2] );
859 fparam
[3] = INT_TO_FLOAT( params
[3] );
862 fparam
[0] = (GLfloat
) params
[0];
864 case GL_COLOR_INDEXES
:
865 fparam
[0] = (GLfloat
) params
[0];
866 fparam
[1] = (GLfloat
) params
[1];
867 fparam
[2] = (GLfloat
) params
[2];
872 MATERIALFV(face
, pname
, fparam
);
876 static void GLAPIENTRY
877 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
879 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
882 static void GLAPIENTRY
883 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
885 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
888 static void GLAPIENTRY
889 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
891 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
894 static void GLAPIENTRY
895 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
897 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
900 static void GLAPIENTRY
901 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
903 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
906 static void GLAPIENTRY
907 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
909 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
912 static void GLAPIENTRY
913 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
915 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
918 static void GLAPIENTRY
919 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
921 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
922 BYTE_TO_FLOAT(green
),
923 BYTE_TO_FLOAT(blue
) );
926 static void GLAPIENTRY
927 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
929 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
932 static void GLAPIENTRY
933 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
935 SECONDARYCOLORF( INT_TO_FLOAT(red
),
940 static void GLAPIENTRY
941 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
943 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
944 SHORT_TO_FLOAT(green
),
945 SHORT_TO_FLOAT(blue
));
948 static void GLAPIENTRY
949 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
951 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
952 UINT_TO_FLOAT(green
),
953 UINT_TO_FLOAT(blue
));
956 static void GLAPIENTRY
957 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
959 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
960 USHORT_TO_FLOAT(green
),
961 USHORT_TO_FLOAT(blue
));
964 static void GLAPIENTRY
965 loopback_SecondaryColor3ubEXT_f( GLubyte red
, GLubyte green
, GLubyte blue
)
967 SECONDARYCOLORF(UBYTE_TO_FLOAT(red
),
968 UBYTE_TO_FLOAT(green
),
969 UBYTE_TO_FLOAT(blue
));
972 static void GLAPIENTRY
973 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
975 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
977 BYTE_TO_FLOAT(v
[2]));
980 static void GLAPIENTRY
981 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
983 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
985 static void GLAPIENTRY
986 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
988 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
993 static void GLAPIENTRY
994 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
996 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
997 SHORT_TO_FLOAT(v
[1]),
998 SHORT_TO_FLOAT(v
[2]));
1001 static void GLAPIENTRY
1002 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1004 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1005 UINT_TO_FLOAT(v
[1]),
1006 UINT_TO_FLOAT(v
[2]));
1009 static void GLAPIENTRY
1010 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1012 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1013 USHORT_TO_FLOAT(v
[1]),
1014 USHORT_TO_FLOAT(v
[2]));
1017 static void GLAPIENTRY
1018 loopback_SecondaryColor3ubvEXT_f( const GLubyte
*v
)
1020 SECONDARYCOLORF(UBYTE_TO_FLOAT(v
[0]),
1021 UBYTE_TO_FLOAT(v
[1]),
1022 UBYTE_TO_FLOAT(v
[2]));
1027 * GL_NV_vertex_program
1030 static void GLAPIENTRY
1031 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1033 ATTRIB1(index
, (GLfloat
) x
);
1036 static void GLAPIENTRY
1037 loopback_VertexAttrib1fNV(GLuint index
, GLfloat x
)
1042 static void GLAPIENTRY
1043 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1045 ATTRIB1(index
, (GLfloat
) x
);
1048 static void GLAPIENTRY
1049 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1051 ATTRIB2(index
, (GLfloat
) x
, y
);
1054 static void GLAPIENTRY
1055 loopback_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
1057 ATTRIB2(index
, (GLfloat
) x
, y
);
1060 static void GLAPIENTRY
1061 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1063 ATTRIB2(index
, (GLfloat
) x
, (GLfloat
) y
);
1066 static void GLAPIENTRY
1067 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1069 ATTRIB3(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
1072 static void GLAPIENTRY
1073 loopback_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
1075 ATTRIB3(index
, x
, y
, z
);
1078 static void GLAPIENTRY
1079 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1081 ATTRIB4(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1084 static void GLAPIENTRY
1085 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1087 ATTRIB4(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1090 static void GLAPIENTRY
1091 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1093 ATTRIB4(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1096 static void GLAPIENTRY
1097 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1099 ATTRIB4(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1100 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1103 static void GLAPIENTRY
1104 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1106 ATTRIB1(index
, (GLfloat
) v
[0]);
1109 static void GLAPIENTRY
1110 loopback_VertexAttrib1fvNV(GLuint index
, const GLfloat
*v
)
1112 ATTRIB1(index
, v
[0]);
1115 static void GLAPIENTRY
1116 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1118 ATTRIB1(index
, (GLfloat
) v
[0]);
1121 static void GLAPIENTRY
1122 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1124 ATTRIB2(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1127 static void GLAPIENTRY
1128 loopback_VertexAttrib2fvNV(GLuint index
, const GLfloat
*v
)
1130 ATTRIB2(index
, v
[0], v
[1]);
1133 static void GLAPIENTRY
1134 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1136 ATTRIB2(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1139 static void GLAPIENTRY
1140 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1142 ATTRIB3(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1145 static void GLAPIENTRY
1146 loopback_VertexAttrib3fvNV(GLuint index
, const GLfloat
*v
)
1148 ATTRIB3(index
, v
[0], v
[1], v
[2]);
1151 static void GLAPIENTRY
1152 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1154 ATTRIB3(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1157 static void GLAPIENTRY
1158 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1160 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2],
1164 static void GLAPIENTRY
1165 loopback_VertexAttrib4fvNV(GLuint index
, const GLfloat
*v
)
1167 ATTRIB4(index
, v
[0], v
[1], v
[2], v
[3]);
1170 static void GLAPIENTRY
1171 loopback_VertexAttrib4dvNV(GLuint index
, const GLdouble
*v
)
1173 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1176 static void GLAPIENTRY
1177 loopback_VertexAttrib4ubvNV(GLuint index
, const GLubyte
*v
)
1179 ATTRIB4(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1180 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1184 static void GLAPIENTRY
1185 loopback_VertexAttribs1svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1188 for (i
= n
- 1; i
>= 0; i
--)
1189 loopback_VertexAttrib1svNV(index
+ i
, v
+ i
);
1192 static void GLAPIENTRY
1193 loopback_VertexAttribs1fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1196 for (i
= n
- 1; i
>= 0; i
--)
1197 loopback_VertexAttrib1fvNV(index
+ i
, v
+ i
);
1200 static void GLAPIENTRY
1201 loopback_VertexAttribs1dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1204 for (i
= n
- 1; i
>= 0; i
--)
1205 loopback_VertexAttrib1dvNV(index
+ i
, v
+ i
);
1208 static void GLAPIENTRY
1209 loopback_VertexAttribs2svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1212 for (i
= n
- 1; i
>= 0; i
--)
1213 loopback_VertexAttrib2svNV(index
+ i
, v
+ 2 * i
);
1216 static void GLAPIENTRY
1217 loopback_VertexAttribs2fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1220 for (i
= n
- 1; i
>= 0; i
--)
1221 loopback_VertexAttrib2fvNV(index
+ i
, v
+ 2 * i
);
1224 static void GLAPIENTRY
1225 loopback_VertexAttribs2dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1228 for (i
= n
- 1; i
>= 0; i
--)
1229 loopback_VertexAttrib2dvNV(index
+ i
, v
+ 2 * i
);
1232 static void GLAPIENTRY
1233 loopback_VertexAttribs3svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1236 for (i
= n
- 1; i
>= 0; i
--)
1237 loopback_VertexAttrib3svNV(index
+ i
, v
+ 3 * i
);
1240 static void GLAPIENTRY
1241 loopback_VertexAttribs3fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1244 for (i
= n
- 1; i
>= 0; i
--)
1245 loopback_VertexAttrib3fvNV(index
+ i
, v
+ 3 * i
);
1248 static void GLAPIENTRY
1249 loopback_VertexAttribs3dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1252 for (i
= n
- 1; i
>= 0; i
--)
1253 loopback_VertexAttrib3dvNV(index
+ i
, v
+ 3 * i
);
1256 static void GLAPIENTRY
1257 loopback_VertexAttribs4svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1260 for (i
= n
- 1; i
>= 0; i
--)
1261 loopback_VertexAttrib4svNV(index
+ i
, v
+ 4 * i
);
1264 static void GLAPIENTRY
1265 loopback_VertexAttribs4fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1268 for (i
= n
- 1; i
>= 0; i
--)
1269 loopback_VertexAttrib4fvNV(index
+ i
, v
+ 4 * i
);
1272 static void GLAPIENTRY
1273 loopback_VertexAttribs4dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1276 for (i
= n
- 1; i
>= 0; i
--)
1277 loopback_VertexAttrib4dvNV(index
+ i
, v
+ 4 * i
);
1280 static void GLAPIENTRY
1281 loopback_VertexAttribs4ubvNV(GLuint index
, GLsizei n
, const GLubyte
*v
)
1284 for (i
= n
- 1; i
>= 0; i
--)
1285 loopback_VertexAttrib4ubvNV(index
+ i
, v
+ 4 * i
);
1290 * GL_ARB_vertex_program
1293 static void GLAPIENTRY
1294 loopback_VertexAttrib4bvARB(GLuint index
, const GLbyte
* v
)
1296 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1299 static void GLAPIENTRY
1300 loopback_VertexAttrib4ivARB(GLuint index
, const GLint
* v
)
1302 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1305 static void GLAPIENTRY
1306 loopback_VertexAttrib4ubvARB(GLuint index
, const GLubyte
* v
)
1308 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1311 static void GLAPIENTRY
1312 loopback_VertexAttrib4usvARB(GLuint index
, const GLushort
* v
)
1314 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1317 static void GLAPIENTRY
1318 loopback_VertexAttrib4uivARB(GLuint index
, const GLuint
* v
)
1320 ATTRIB4(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1323 static void GLAPIENTRY
1324 loopback_VertexAttrib4NbvARB(GLuint index
, const GLbyte
* v
)
1326 ATTRIB4(index
, BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
1327 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]));
1330 static void GLAPIENTRY
1331 loopback_VertexAttrib4NsvARB(GLuint index
, const GLshort
* v
)
1333 ATTRIB4(index
, SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
1334 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]));
1337 static void GLAPIENTRY
1338 loopback_VertexAttrib4NivARB(GLuint index
, const GLint
* v
)
1340 ATTRIB4(index
, INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
1341 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]));
1344 static void GLAPIENTRY
1345 loopback_VertexAttrib4NusvARB(GLuint index
, const GLushort
* v
)
1347 ATTRIB4(index
, USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
1348 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]));
1351 static void GLAPIENTRY
1352 loopback_VertexAttrib4NuivARB(GLuint index
, const GLuint
* v
)
1354 ATTRIB4(index
, UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
1355 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]));
1362 * This code never registers handlers for any of the entry points
1363 * listed in vtxfmt.h.
1366 _mesa_loopback_init_api_table( struct _glapi_table
*dest
)
1368 dest
->Color3b
= loopback_Color3b_f
;
1369 dest
->Color3d
= loopback_Color3d_f
;
1370 dest
->Color3i
= loopback_Color3i_f
;
1371 dest
->Color3s
= loopback_Color3s_f
;
1372 dest
->Color3ui
= loopback_Color3ui_f
;
1373 dest
->Color3us
= loopback_Color3us_f
;
1374 dest
->Color3ub
= loopback_Color3ub_f
;
1375 dest
->Color4b
= loopback_Color4b_f
;
1376 dest
->Color4d
= loopback_Color4d_f
;
1377 dest
->Color4i
= loopback_Color4i_f
;
1378 dest
->Color4s
= loopback_Color4s_f
;
1379 dest
->Color4ui
= loopback_Color4ui_f
;
1380 dest
->Color4us
= loopback_Color4us_f
;
1381 dest
->Color4ub
= loopback_Color4ub_f
;
1382 dest
->Color3bv
= loopback_Color3bv_f
;
1383 dest
->Color3dv
= loopback_Color3dv_f
;
1384 dest
->Color3iv
= loopback_Color3iv_f
;
1385 dest
->Color3sv
= loopback_Color3sv_f
;
1386 dest
->Color3uiv
= loopback_Color3uiv_f
;
1387 dest
->Color3usv
= loopback_Color3usv_f
;
1388 dest
->Color3ubv
= loopback_Color3ubv_f
;
1389 dest
->Color4bv
= loopback_Color4bv_f
;
1390 dest
->Color4dv
= loopback_Color4dv_f
;
1391 dest
->Color4iv
= loopback_Color4iv_f
;
1392 dest
->Color4sv
= loopback_Color4sv_f
;
1393 dest
->Color4uiv
= loopback_Color4uiv_f
;
1394 dest
->Color4usv
= loopback_Color4usv_f
;
1395 dest
->Color4ubv
= loopback_Color4ubv_f
;
1397 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1398 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1399 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1400 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1401 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1402 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1403 dest
->SecondaryColor3ubEXT
= loopback_SecondaryColor3ubEXT_f
;
1404 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1405 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1406 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1407 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1408 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1409 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1410 dest
->SecondaryColor3ubvEXT
= loopback_SecondaryColor3ubvEXT_f
;
1412 dest
->Indexd
= loopback_Indexd
;
1413 dest
->Indexi
= loopback_Indexi
;
1414 dest
->Indexs
= loopback_Indexs
;
1415 dest
->Indexub
= loopback_Indexub
;
1416 dest
->Indexdv
= loopback_Indexdv
;
1417 dest
->Indexiv
= loopback_Indexiv
;
1418 dest
->Indexsv
= loopback_Indexsv
;
1419 dest
->Indexubv
= loopback_Indexubv
;
1420 dest
->Normal3b
= loopback_Normal3b
;
1421 dest
->Normal3d
= loopback_Normal3d
;
1422 dest
->Normal3i
= loopback_Normal3i
;
1423 dest
->Normal3s
= loopback_Normal3s
;
1424 dest
->Normal3bv
= loopback_Normal3bv
;
1425 dest
->Normal3dv
= loopback_Normal3dv
;
1426 dest
->Normal3iv
= loopback_Normal3iv
;
1427 dest
->Normal3sv
= loopback_Normal3sv
;
1428 dest
->TexCoord1d
= loopback_TexCoord1d
;
1429 dest
->TexCoord1i
= loopback_TexCoord1i
;
1430 dest
->TexCoord1s
= loopback_TexCoord1s
;
1431 dest
->TexCoord2d
= loopback_TexCoord2d
;
1432 dest
->TexCoord2s
= loopback_TexCoord2s
;
1433 dest
->TexCoord2i
= loopback_TexCoord2i
;
1434 dest
->TexCoord3d
= loopback_TexCoord3d
;
1435 dest
->TexCoord3i
= loopback_TexCoord3i
;
1436 dest
->TexCoord3s
= loopback_TexCoord3s
;
1437 dest
->TexCoord4d
= loopback_TexCoord4d
;
1438 dest
->TexCoord4i
= loopback_TexCoord4i
;
1439 dest
->TexCoord4s
= loopback_TexCoord4s
;
1440 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1441 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1442 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1443 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1444 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1445 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1446 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1447 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1448 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1449 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1450 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1451 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1452 dest
->Vertex2d
= loopback_Vertex2d
;
1453 dest
->Vertex2i
= loopback_Vertex2i
;
1454 dest
->Vertex2s
= loopback_Vertex2s
;
1455 dest
->Vertex3d
= loopback_Vertex3d
;
1456 dest
->Vertex3i
= loopback_Vertex3i
;
1457 dest
->Vertex3s
= loopback_Vertex3s
;
1458 dest
->Vertex4d
= loopback_Vertex4d
;
1459 dest
->Vertex4i
= loopback_Vertex4i
;
1460 dest
->Vertex4s
= loopback_Vertex4s
;
1461 dest
->Vertex2dv
= loopback_Vertex2dv
;
1462 dest
->Vertex2iv
= loopback_Vertex2iv
;
1463 dest
->Vertex2sv
= loopback_Vertex2sv
;
1464 dest
->Vertex3dv
= loopback_Vertex3dv
;
1465 dest
->Vertex3iv
= loopback_Vertex3iv
;
1466 dest
->Vertex3sv
= loopback_Vertex3sv
;
1467 dest
->Vertex4dv
= loopback_Vertex4dv
;
1468 dest
->Vertex4iv
= loopback_Vertex4iv
;
1469 dest
->Vertex4sv
= loopback_Vertex4sv
;
1470 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1471 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1472 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1473 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1474 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1475 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1476 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1477 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1478 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1479 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1480 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1481 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1482 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1483 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1484 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1485 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1486 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1487 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1488 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1489 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1490 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1491 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1492 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1493 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1494 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1495 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1496 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1497 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1498 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1499 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1500 dest
->Materialf
= loopback_Materialf
;
1501 dest
->Materiali
= loopback_Materiali
;
1502 dest
->Materialiv
= loopback_Materialiv
;
1503 dest
->Rectd
= loopback_Rectd
;
1504 dest
->Rectdv
= loopback_Rectdv
;
1505 dest
->Rectfv
= loopback_Rectfv
;
1506 dest
->Recti
= loopback_Recti
;
1507 dest
->Rectiv
= loopback_Rectiv
;
1508 dest
->Rects
= loopback_Rects
;
1509 dest
->Rectsv
= loopback_Rectsv
;
1510 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1511 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1513 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1514 dest
->VertexAttrib1fNV
= loopback_VertexAttrib1fNV
;
1515 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1516 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1517 dest
->VertexAttrib2fNV
= loopback_VertexAttrib2fNV
;
1518 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1519 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1520 dest
->VertexAttrib3fNV
= loopback_VertexAttrib3fNV
;
1521 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1522 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1523 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1524 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1526 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1527 dest
->VertexAttrib1fvNV
= loopback_VertexAttrib1fvNV
;
1528 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1529 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1530 dest
->VertexAttrib2fvNV
= loopback_VertexAttrib2fvNV
;
1531 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1532 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1533 dest
->VertexAttrib3fvNV
= loopback_VertexAttrib3fvNV
;
1534 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1535 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1536 dest
->VertexAttrib4fvNV
= loopback_VertexAttrib4fvNV
;
1537 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1538 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1540 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1541 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1542 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1543 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1544 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1545 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1546 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1547 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1548 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1549 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1550 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1551 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1552 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;
1554 dest
->VertexAttrib4bvARB
= loopback_VertexAttrib4bvARB
;
1555 dest
->VertexAttrib4ivARB
= loopback_VertexAttrib4ivARB
;
1556 dest
->VertexAttrib4ubvARB
= loopback_VertexAttrib4ubvARB
;
1557 dest
->VertexAttrib4usvARB
= loopback_VertexAttrib4usvARB
;
1558 dest
->VertexAttrib4uivARB
= loopback_VertexAttrib4uivARB
;
1559 dest
->VertexAttrib4NbvARB
= loopback_VertexAttrib4NbvARB
;
1560 dest
->VertexAttrib4NsvARB
= loopback_VertexAttrib4NsvARB
;
1561 dest
->VertexAttrib4NivARB
= loopback_VertexAttrib4NivARB
;
1562 dest
->VertexAttrib4NusvARB
= loopback_VertexAttrib4NusvARB
;
1563 dest
->VertexAttrib4NuivARB
= loopback_VertexAttrib4NuivARB
;