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 #define ATTRIB1NV(index,x) GL_CALL(VertexAttrib1fNV)(index,x)
69 #define ATTRIB2NV(index,x,y) GL_CALL(VertexAttrib2fNV)(index,x,y)
70 #define ATTRIB3NV(index,x,y,z) GL_CALL(VertexAttrib3fNV)(index,x,y,z)
71 #define ATTRIB4NV(index,x,y,z,w) GL_CALL(VertexAttrib4fNV)(index,x,y,z,w)
72 #define ATTRIB1ARB(index,x) GL_CALL(VertexAttrib1fARB)(index,x)
73 #define ATTRIB2ARB(index,x,y) GL_CALL(VertexAttrib2fARB)(index,x,y)
74 #define ATTRIB3ARB(index,x,y,z) GL_CALL(VertexAttrib3fARB)(index,x,y,z)
75 #define ATTRIB4ARB(index,x,y,z,w) GL_CALL(VertexAttrib4fARB)(index,x,y,z,w)
76 #define FOGCOORDF(x) GL_CALL(FogCoordfEXT)(x)
77 #define SECONDARYCOLORF(a,b,c) GL_CALL(SecondaryColor3fEXT)(a,b,c)
79 static void GLAPIENTRY
80 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
82 COLORF( BYTE_TO_FLOAT(red
),
88 static void GLAPIENTRY
89 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
91 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
94 static void GLAPIENTRY
95 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
97 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
98 INT_TO_FLOAT(blue
), 1.0);
101 static void GLAPIENTRY
102 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
104 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
105 SHORT_TO_FLOAT(blue
), 1.0);
108 static void GLAPIENTRY
109 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
111 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
112 UINT_TO_FLOAT(blue
), 1.0 );
115 static void GLAPIENTRY
116 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
118 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
119 USHORT_TO_FLOAT(blue
), 1.0 );
122 static void GLAPIENTRY
123 loopback_Color3ub_f( GLubyte red
, GLubyte green
, GLubyte blue
)
125 COLORF( UBYTE_TO_FLOAT(red
), UBYTE_TO_FLOAT(green
),
126 UBYTE_TO_FLOAT(blue
), 1.0 );
130 static void GLAPIENTRY
131 loopback_Color3bv_f( const GLbyte
*v
)
133 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
134 BYTE_TO_FLOAT(v
[2]), 1.0 );
137 static void GLAPIENTRY
138 loopback_Color3dv_f( const GLdouble
*v
)
140 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
143 static void GLAPIENTRY
144 loopback_Color3iv_f( const GLint
*v
)
146 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
147 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
150 static void GLAPIENTRY
151 loopback_Color3sv_f( const GLshort
*v
)
153 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
154 SHORT_TO_FLOAT(v
[2]), 1.0 );
157 static void GLAPIENTRY
158 loopback_Color3uiv_f( const GLuint
*v
)
160 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
161 UINT_TO_FLOAT(v
[2]), 1.0 );
164 static void GLAPIENTRY
165 loopback_Color3usv_f( const GLushort
*v
)
167 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
168 USHORT_TO_FLOAT(v
[2]), 1.0 );
171 static void GLAPIENTRY
172 loopback_Color3ubv_f( const GLubyte
*v
)
174 COLORF( UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
175 UBYTE_TO_FLOAT(v
[2]), 1.0 );
179 static void GLAPIENTRY
180 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
183 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
184 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
187 static void GLAPIENTRY
188 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
191 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
194 static void GLAPIENTRY
195 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
197 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
198 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
201 static void GLAPIENTRY
202 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
205 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
206 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
209 static void GLAPIENTRY
210 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
212 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
213 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
216 static void GLAPIENTRY
217 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
219 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
220 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
223 static void GLAPIENTRY
224 loopback_Color4ub_f( GLubyte red
, GLubyte green
, GLubyte blue
, GLubyte alpha
)
226 COLORF( UBYTE_TO_FLOAT(red
), UBYTE_TO_FLOAT(green
),
227 UBYTE_TO_FLOAT(blue
), UBYTE_TO_FLOAT(alpha
) );
231 static void GLAPIENTRY
232 loopback_Color4iv_f( const GLint
*v
)
234 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
235 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
239 static void GLAPIENTRY
240 loopback_Color4bv_f( const GLbyte
*v
)
242 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
243 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
246 static void GLAPIENTRY
247 loopback_Color4dv_f( const GLdouble
*v
)
249 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
253 static void GLAPIENTRY
254 loopback_Color4sv_f( const GLshort
*v
)
256 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
257 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
261 static void GLAPIENTRY
262 loopback_Color4uiv_f( const GLuint
*v
)
264 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
265 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
268 static void GLAPIENTRY
269 loopback_Color4usv_f( const GLushort
*v
)
271 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
272 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
275 static void GLAPIENTRY
276 loopback_Color4ubv_f( const GLubyte
*v
)
278 COLORF( UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
279 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]) );
282 static void GLAPIENTRY
283 loopback_FogCoorddEXT( GLdouble d
)
285 FOGCOORDF( (GLfloat
) d
);
288 static void GLAPIENTRY
289 loopback_FogCoorddvEXT( const GLdouble
*v
)
291 FOGCOORDF( (GLfloat
) *v
);
295 static void GLAPIENTRY
296 loopback_Indexd( GLdouble c
)
298 INDEX( (GLfloat
) c
);
301 static void GLAPIENTRY
302 loopback_Indexi( GLint c
)
304 INDEX( (GLfloat
) c
);
307 static void GLAPIENTRY
308 loopback_Indexs( GLshort c
)
310 INDEX( (GLfloat
) c
);
313 static void GLAPIENTRY
314 loopback_Indexub( GLubyte c
)
316 INDEX( (GLfloat
) c
);
319 static void GLAPIENTRY
320 loopback_Indexdv( const GLdouble
*c
)
322 INDEX( (GLfloat
) *c
);
325 static void GLAPIENTRY
326 loopback_Indexiv( const GLint
*c
)
328 INDEX( (GLfloat
) *c
);
331 static void GLAPIENTRY
332 loopback_Indexsv( const GLshort
*c
)
334 INDEX( (GLfloat
) *c
);
337 static void GLAPIENTRY
338 loopback_Indexubv( const GLubyte
*c
)
340 INDEX( (GLfloat
) *c
);
343 static void GLAPIENTRY
344 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
346 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
349 static void GLAPIENTRY
350 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
352 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
355 static void GLAPIENTRY
356 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
358 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
361 static void GLAPIENTRY
362 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
364 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
367 static void GLAPIENTRY
368 loopback_Normal3bv( const GLbyte
*v
)
370 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
373 static void GLAPIENTRY
374 loopback_Normal3dv( const GLdouble
*v
)
376 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
379 static void GLAPIENTRY
380 loopback_Normal3iv( const GLint
*v
)
382 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
385 static void GLAPIENTRY
386 loopback_Normal3sv( const GLshort
*v
)
388 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
391 static void GLAPIENTRY
392 loopback_TexCoord1d( GLdouble s
)
394 TEXCOORD1((GLfloat
) s
);
397 static void GLAPIENTRY
398 loopback_TexCoord1i( GLint s
)
400 TEXCOORD1((GLfloat
) s
);
403 static void GLAPIENTRY
404 loopback_TexCoord1s( GLshort s
)
406 TEXCOORD1((GLfloat
) s
);
409 static void GLAPIENTRY
410 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
412 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
415 static void GLAPIENTRY
416 loopback_TexCoord2s( GLshort s
, GLshort t
)
418 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
421 static void GLAPIENTRY
422 loopback_TexCoord2i( GLint s
, GLint t
)
424 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
427 static void GLAPIENTRY
428 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
430 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
433 static void GLAPIENTRY
434 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
436 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
439 static void GLAPIENTRY
440 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
442 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
445 static void GLAPIENTRY
446 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
448 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
451 static void GLAPIENTRY
452 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
454 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
457 static void GLAPIENTRY
458 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
460 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
463 static void GLAPIENTRY
464 loopback_TexCoord1dv( const GLdouble
*v
)
466 TEXCOORD1((GLfloat
) v
[0]);
469 static void GLAPIENTRY
470 loopback_TexCoord1iv( const GLint
*v
)
472 TEXCOORD1((GLfloat
) v
[0]);
475 static void GLAPIENTRY
476 loopback_TexCoord1sv( const GLshort
*v
)
478 TEXCOORD1((GLfloat
) v
[0]);
481 static void GLAPIENTRY
482 loopback_TexCoord2dv( const GLdouble
*v
)
484 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
487 static void GLAPIENTRY
488 loopback_TexCoord2iv( const GLint
*v
)
490 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
493 static void GLAPIENTRY
494 loopback_TexCoord2sv( const GLshort
*v
)
496 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
499 static void GLAPIENTRY
500 loopback_TexCoord3dv( const GLdouble
*v
)
502 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
505 static void GLAPIENTRY
506 loopback_TexCoord3iv( const GLint
*v
)
508 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
511 static void GLAPIENTRY
512 loopback_TexCoord3sv( const GLshort
*v
)
514 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
517 static void GLAPIENTRY
518 loopback_TexCoord4dv( const GLdouble
*v
)
520 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
523 static void GLAPIENTRY
524 loopback_TexCoord4iv( const GLint
*v
)
526 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
529 static void GLAPIENTRY
530 loopback_TexCoord4sv( const GLshort
*v
)
532 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
535 static void GLAPIENTRY
536 loopback_Vertex2d( GLdouble x
, GLdouble y
)
538 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
541 static void GLAPIENTRY
542 loopback_Vertex2i( GLint x
, GLint y
)
544 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
547 static void GLAPIENTRY
548 loopback_Vertex2s( GLshort x
, GLshort y
)
550 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
553 static void GLAPIENTRY
554 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
556 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
559 static void GLAPIENTRY
560 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
562 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
565 static void GLAPIENTRY
566 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
568 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
571 static void GLAPIENTRY
572 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
574 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
577 static void GLAPIENTRY
578 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
580 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
583 static void GLAPIENTRY
584 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
586 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
589 static void GLAPIENTRY
590 loopback_Vertex2dv( const GLdouble
*v
)
592 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
595 static void GLAPIENTRY
596 loopback_Vertex2iv( const GLint
*v
)
598 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
601 static void GLAPIENTRY
602 loopback_Vertex2sv( const GLshort
*v
)
604 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
607 static void GLAPIENTRY
608 loopback_Vertex3dv( const GLdouble
*v
)
610 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
613 static void GLAPIENTRY
614 loopback_Vertex3iv( const GLint
*v
)
616 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
619 static void GLAPIENTRY
620 loopback_Vertex3sv( const GLshort
*v
)
622 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
625 static void GLAPIENTRY
626 loopback_Vertex4dv( const GLdouble
*v
)
628 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
629 (GLfloat
) v
[2], (GLfloat
) v
[3] );
632 static void GLAPIENTRY
633 loopback_Vertex4iv( const GLint
*v
)
635 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
636 (GLfloat
) v
[2], (GLfloat
) v
[3] );
639 static void GLAPIENTRY
640 loopback_Vertex4sv( const GLshort
*v
)
642 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
643 (GLfloat
) v
[2], (GLfloat
) v
[3] );
646 static void GLAPIENTRY
647 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
649 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
652 static void GLAPIENTRY
653 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
655 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
658 static void GLAPIENTRY
659 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
661 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
664 static void GLAPIENTRY
665 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
667 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
670 static void GLAPIENTRY
671 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
673 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
676 static void GLAPIENTRY
677 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
679 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
682 static void GLAPIENTRY
683 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
685 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
688 static void GLAPIENTRY
689 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
691 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
694 static void GLAPIENTRY
695 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
697 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
700 static void GLAPIENTRY
701 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
703 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
706 static void GLAPIENTRY
707 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
709 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
712 static void GLAPIENTRY
713 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
715 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
718 static void GLAPIENTRY
719 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
721 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
724 static void GLAPIENTRY
725 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
727 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
730 static void GLAPIENTRY
731 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
733 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
736 static void GLAPIENTRY
737 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
739 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
742 static void GLAPIENTRY
743 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
745 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
748 static void GLAPIENTRY
749 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
751 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
754 static void GLAPIENTRY
755 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
757 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
758 (GLfloat
) r
, (GLfloat
) q
);
761 static void GLAPIENTRY
762 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
764 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
765 (GLfloat
) v
[2], (GLfloat
) v
[3] );
768 static void GLAPIENTRY
769 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
771 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
772 (GLfloat
) r
, (GLfloat
) q
);
775 static void GLAPIENTRY
776 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
778 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
779 (GLfloat
) v
[2], (GLfloat
) v
[3] );
782 static void GLAPIENTRY
783 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
785 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
786 (GLfloat
) r
, (GLfloat
) q
);
789 static void GLAPIENTRY
790 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
792 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
793 (GLfloat
) v
[2], (GLfloat
) v
[3] );
796 static void GLAPIENTRY
797 loopback_EvalCoord2dv( const GLdouble
*u
)
799 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
802 static void GLAPIENTRY
803 loopback_EvalCoord2fv( const GLfloat
*u
)
805 EVALCOORD2( u
[0], u
[1] );
808 static void GLAPIENTRY
809 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
811 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
814 static void GLAPIENTRY
815 loopback_EvalCoord1dv( const GLdouble
*u
)
817 EVALCOORD1( (GLfloat
) *u
);
820 static void GLAPIENTRY
821 loopback_EvalCoord1fv( const GLfloat
*u
)
823 EVALCOORD1( (GLfloat
) *u
);
826 static void GLAPIENTRY
827 loopback_EvalCoord1d( GLdouble u
)
829 EVALCOORD1( (GLfloat
) u
);
832 static void GLAPIENTRY
833 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
837 MATERIALFV( face
, pname
, fparam
);
840 static void GLAPIENTRY
841 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
843 GLfloat p
= (GLfloat
) param
;
844 MATERIALFV(face
, pname
, &p
);
847 static void GLAPIENTRY
848 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
856 case GL_AMBIENT_AND_DIFFUSE
:
857 fparam
[0] = INT_TO_FLOAT( params
[0] );
858 fparam
[1] = INT_TO_FLOAT( params
[1] );
859 fparam
[2] = INT_TO_FLOAT( params
[2] );
860 fparam
[3] = INT_TO_FLOAT( params
[3] );
863 fparam
[0] = (GLfloat
) params
[0];
865 case GL_COLOR_INDEXES
:
866 fparam
[0] = (GLfloat
) params
[0];
867 fparam
[1] = (GLfloat
) params
[1];
868 fparam
[2] = (GLfloat
) params
[2];
873 MATERIALFV(face
, pname
, fparam
);
877 static void GLAPIENTRY
878 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
880 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
883 static void GLAPIENTRY
884 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
886 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
889 static void GLAPIENTRY
890 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
892 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
895 static void GLAPIENTRY
896 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
898 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
901 static void GLAPIENTRY
902 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
904 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
907 static void GLAPIENTRY
908 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
910 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
913 static void GLAPIENTRY
914 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
916 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
919 static void GLAPIENTRY
920 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
922 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
923 BYTE_TO_FLOAT(green
),
924 BYTE_TO_FLOAT(blue
) );
927 static void GLAPIENTRY
928 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
930 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
933 static void GLAPIENTRY
934 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
936 SECONDARYCOLORF( INT_TO_FLOAT(red
),
941 static void GLAPIENTRY
942 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
944 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
945 SHORT_TO_FLOAT(green
),
946 SHORT_TO_FLOAT(blue
));
949 static void GLAPIENTRY
950 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
952 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
953 UINT_TO_FLOAT(green
),
954 UINT_TO_FLOAT(blue
));
957 static void GLAPIENTRY
958 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
960 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
961 USHORT_TO_FLOAT(green
),
962 USHORT_TO_FLOAT(blue
));
965 static void GLAPIENTRY
966 loopback_SecondaryColor3ubEXT_f( GLubyte red
, GLubyte green
, GLubyte blue
)
968 SECONDARYCOLORF(UBYTE_TO_FLOAT(red
),
969 UBYTE_TO_FLOAT(green
),
970 UBYTE_TO_FLOAT(blue
));
973 static void GLAPIENTRY
974 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
976 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
978 BYTE_TO_FLOAT(v
[2]));
981 static void GLAPIENTRY
982 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
984 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
986 static void GLAPIENTRY
987 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
989 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
994 static void GLAPIENTRY
995 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
997 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
998 SHORT_TO_FLOAT(v
[1]),
999 SHORT_TO_FLOAT(v
[2]));
1002 static void GLAPIENTRY
1003 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1005 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1006 UINT_TO_FLOAT(v
[1]),
1007 UINT_TO_FLOAT(v
[2]));
1010 static void GLAPIENTRY
1011 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1013 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1014 USHORT_TO_FLOAT(v
[1]),
1015 USHORT_TO_FLOAT(v
[2]));
1018 static void GLAPIENTRY
1019 loopback_SecondaryColor3ubvEXT_f( const GLubyte
*v
)
1021 SECONDARYCOLORF(UBYTE_TO_FLOAT(v
[0]),
1022 UBYTE_TO_FLOAT(v
[1]),
1023 UBYTE_TO_FLOAT(v
[2]));
1028 * GL_NV_vertex_program:
1029 * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
1032 static void GLAPIENTRY
1033 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1035 ATTRIB1NV(index
, (GLfloat
) x
);
1038 static void GLAPIENTRY
1039 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1041 ATTRIB1NV(index
, (GLfloat
) x
);
1044 static void GLAPIENTRY
1045 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1047 ATTRIB2NV(index
, (GLfloat
) x
, y
);
1050 static void GLAPIENTRY
1051 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1053 ATTRIB2NV(index
, (GLfloat
) x
, (GLfloat
) y
);
1056 static void GLAPIENTRY
1057 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1059 ATTRIB3NV(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
1062 static void GLAPIENTRY
1063 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1065 ATTRIB4NV(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1068 static void GLAPIENTRY
1069 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1071 ATTRIB4NV(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1074 static void GLAPIENTRY
1075 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1077 ATTRIB4NV(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1080 static void GLAPIENTRY
1081 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1083 ATTRIB4NV(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1084 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1087 static void GLAPIENTRY
1088 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1090 ATTRIB1NV(index
, (GLfloat
) v
[0]);
1093 static void GLAPIENTRY
1094 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1096 ATTRIB1NV(index
, (GLfloat
) v
[0]);
1099 static void GLAPIENTRY
1100 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1102 ATTRIB2NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1105 static void GLAPIENTRY
1106 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1108 ATTRIB2NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1111 static void GLAPIENTRY
1112 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1114 ATTRIB3NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1117 static void GLAPIENTRY
1118 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1120 ATTRIB3NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1123 static void GLAPIENTRY
1124 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1126 ATTRIB4NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2],
1130 static void GLAPIENTRY
1131 loopback_VertexAttrib4dvNV(GLuint index
, const GLdouble
*v
)
1133 ATTRIB4NV(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1136 static void GLAPIENTRY
1137 loopback_VertexAttrib4ubvNV(GLuint index
, const GLubyte
*v
)
1139 ATTRIB4NV(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1140 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1144 static void GLAPIENTRY
1145 loopback_VertexAttribs1svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1148 for (i
= n
- 1; i
>= 0; i
--)
1149 loopback_VertexAttrib1svNV(index
+ i
, v
+ i
);
1152 static void GLAPIENTRY
1153 loopback_VertexAttribs1fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1156 for (i
= n
- 1; i
>= 0; i
--)
1157 ATTRIB1NV(index
+ i
, v
[i
]);
1160 static void GLAPIENTRY
1161 loopback_VertexAttribs1dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1164 for (i
= n
- 1; i
>= 0; i
--)
1165 loopback_VertexAttrib1dvNV(index
+ i
, v
+ i
);
1168 static void GLAPIENTRY
1169 loopback_VertexAttribs2svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1172 for (i
= n
- 1; i
>= 0; i
--)
1173 loopback_VertexAttrib2svNV(index
+ i
, v
+ 2 * i
);
1176 static void GLAPIENTRY
1177 loopback_VertexAttribs2fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1180 for (i
= n
- 1; i
>= 0; i
--)
1181 ATTRIB2NV(index
+ i
, v
[2 * i
], v
[2 * i
+ 1]);
1184 static void GLAPIENTRY
1185 loopback_VertexAttribs2dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1188 for (i
= n
- 1; i
>= 0; i
--)
1189 loopback_VertexAttrib2dvNV(index
+ i
, v
+ 2 * i
);
1192 static void GLAPIENTRY
1193 loopback_VertexAttribs3svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1196 for (i
= n
- 1; i
>= 0; i
--)
1197 loopback_VertexAttrib3svNV(index
+ i
, v
+ 3 * i
);
1200 static void GLAPIENTRY
1201 loopback_VertexAttribs3fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1204 for (i
= n
- 1; i
>= 0; i
--)
1205 ATTRIB3NV(index
+ i
, v
[3 * i
], v
[3 * i
+ 1], v
[3 * i
+ 2]);
1208 static void GLAPIENTRY
1209 loopback_VertexAttribs3dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1212 for (i
= n
- 1; i
>= 0; i
--)
1213 loopback_VertexAttrib3dvNV(index
+ i
, v
+ 3 * i
);
1216 static void GLAPIENTRY
1217 loopback_VertexAttribs4svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1220 for (i
= n
- 1; i
>= 0; i
--)
1221 loopback_VertexAttrib4svNV(index
+ i
, v
+ 4 * i
);
1224 static void GLAPIENTRY
1225 loopback_VertexAttribs4fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1228 for (i
= n
- 1; i
>= 0; i
--)
1229 ATTRIB4NV(index
+ i
, v
[4 * i
], v
[4 * i
+ 1], v
[4 * i
+ 2], v
[4 * i
+ 3]);
1232 static void GLAPIENTRY
1233 loopback_VertexAttribs4dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1236 for (i
= n
- 1; i
>= 0; i
--)
1237 loopback_VertexAttrib4dvNV(index
+ i
, v
+ 4 * i
);
1240 static void GLAPIENTRY
1241 loopback_VertexAttribs4ubvNV(GLuint index
, GLsizei n
, const GLubyte
*v
)
1244 for (i
= n
- 1; i
>= 0; i
--)
1245 loopback_VertexAttrib4ubvNV(index
+ i
, v
+ 4 * i
);
1250 * GL_ARB_vertex_program
1251 * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
1254 static void GLAPIENTRY
1255 loopback_VertexAttrib1sARB(GLuint index
, GLshort x
)
1257 ATTRIB1ARB(index
, (GLfloat
) x
);
1260 static void GLAPIENTRY
1261 loopback_VertexAttrib1dARB(GLuint index
, GLdouble x
)
1263 ATTRIB1ARB(index
, (GLfloat
) x
);
1266 static void GLAPIENTRY
1267 loopback_VertexAttrib2sARB(GLuint index
, GLshort x
, GLshort y
)
1269 ATTRIB2ARB(index
, (GLfloat
) x
, y
);
1272 static void GLAPIENTRY
1273 loopback_VertexAttrib2dARB(GLuint index
, GLdouble x
, GLdouble y
)
1275 ATTRIB2ARB(index
, (GLfloat
) x
, (GLfloat
) y
);
1278 static void GLAPIENTRY
1279 loopback_VertexAttrib3sARB(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1281 ATTRIB3ARB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
1284 static void GLAPIENTRY
1285 loopback_VertexAttrib3dARB(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1287 ATTRIB4ARB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1290 static void GLAPIENTRY
1291 loopback_VertexAttrib4sARB(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1293 ATTRIB4ARB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1296 static void GLAPIENTRY
1297 loopback_VertexAttrib4dARB(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1299 ATTRIB4ARB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1302 static void GLAPIENTRY
1303 loopback_VertexAttrib1svARB(GLuint index
, const GLshort
*v
)
1305 ATTRIB1ARB(index
, (GLfloat
) v
[0]);
1308 static void GLAPIENTRY
1309 loopback_VertexAttrib1dvARB(GLuint index
, const GLdouble
*v
)
1311 ATTRIB1ARB(index
, (GLfloat
) v
[0]);
1314 static void GLAPIENTRY
1315 loopback_VertexAttrib2svARB(GLuint index
, const GLshort
*v
)
1317 ATTRIB2ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1320 static void GLAPIENTRY
1321 loopback_VertexAttrib2dvARB(GLuint index
, const GLdouble
*v
)
1323 ATTRIB2ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1]);
1326 static void GLAPIENTRY
1327 loopback_VertexAttrib3svARB(GLuint index
, const GLshort
*v
)
1329 ATTRIB3ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1332 static void GLAPIENTRY
1333 loopback_VertexAttrib3dvARB(GLuint index
, const GLdouble
*v
)
1335 ATTRIB3ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2]);
1338 static void GLAPIENTRY
1339 loopback_VertexAttrib4svARB(GLuint index
, const GLshort
*v
)
1341 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2],
1345 static void GLAPIENTRY
1346 loopback_VertexAttrib4dvARB(GLuint index
, const GLdouble
*v
)
1348 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1351 static void GLAPIENTRY
1352 loopback_VertexAttrib4bvARB(GLuint index
, const GLbyte
* v
)
1354 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1357 static void GLAPIENTRY
1358 loopback_VertexAttrib4ivARB(GLuint index
, const GLint
* v
)
1360 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1363 static void GLAPIENTRY
1364 loopback_VertexAttrib4ubvARB(GLuint index
, const GLubyte
* v
)
1366 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1369 static void GLAPIENTRY
1370 loopback_VertexAttrib4usvARB(GLuint index
, const GLushort
* v
)
1372 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1375 static void GLAPIENTRY
1376 loopback_VertexAttrib4uivARB(GLuint index
, const GLuint
* v
)
1378 ATTRIB4ARB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1381 static void GLAPIENTRY
1382 loopback_VertexAttrib4NbvARB(GLuint index
, const GLbyte
* v
)
1384 ATTRIB4ARB(index
, BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
1385 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]));
1388 static void GLAPIENTRY
1389 loopback_VertexAttrib4NsvARB(GLuint index
, const GLshort
* v
)
1391 ATTRIB4ARB(index
, SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
1392 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]));
1395 static void GLAPIENTRY
1396 loopback_VertexAttrib4NivARB(GLuint index
, const GLint
* v
)
1398 ATTRIB4ARB(index
, INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
1399 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]));
1402 static void GLAPIENTRY
1403 loopback_VertexAttrib4NubARB(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1405 ATTRIB4ARB(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1406 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1409 static void GLAPIENTRY
1410 loopback_VertexAttrib4NubvARB(GLuint index
, const GLubyte
* v
)
1412 ATTRIB4ARB(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1413 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1416 static void GLAPIENTRY
1417 loopback_VertexAttrib4NusvARB(GLuint index
, const GLushort
* v
)
1419 ATTRIB4ARB(index
, USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
1420 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]));
1423 static void GLAPIENTRY
1424 loopback_VertexAttrib4NuivARB(GLuint index
, const GLuint
* v
)
1426 ATTRIB4ARB(index
, UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
1427 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]));
1434 * This code never registers handlers for any of the entry points
1435 * listed in vtxfmt.h.
1438 _mesa_loopback_init_api_table( struct _glapi_table
*dest
)
1440 dest
->Color3b
= loopback_Color3b_f
;
1441 dest
->Color3d
= loopback_Color3d_f
;
1442 dest
->Color3i
= loopback_Color3i_f
;
1443 dest
->Color3s
= loopback_Color3s_f
;
1444 dest
->Color3ui
= loopback_Color3ui_f
;
1445 dest
->Color3us
= loopback_Color3us_f
;
1446 dest
->Color3ub
= loopback_Color3ub_f
;
1447 dest
->Color4b
= loopback_Color4b_f
;
1448 dest
->Color4d
= loopback_Color4d_f
;
1449 dest
->Color4i
= loopback_Color4i_f
;
1450 dest
->Color4s
= loopback_Color4s_f
;
1451 dest
->Color4ui
= loopback_Color4ui_f
;
1452 dest
->Color4us
= loopback_Color4us_f
;
1453 dest
->Color4ub
= loopback_Color4ub_f
;
1454 dest
->Color3bv
= loopback_Color3bv_f
;
1455 dest
->Color3dv
= loopback_Color3dv_f
;
1456 dest
->Color3iv
= loopback_Color3iv_f
;
1457 dest
->Color3sv
= loopback_Color3sv_f
;
1458 dest
->Color3uiv
= loopback_Color3uiv_f
;
1459 dest
->Color3usv
= loopback_Color3usv_f
;
1460 dest
->Color3ubv
= loopback_Color3ubv_f
;
1461 dest
->Color4bv
= loopback_Color4bv_f
;
1462 dest
->Color4dv
= loopback_Color4dv_f
;
1463 dest
->Color4iv
= loopback_Color4iv_f
;
1464 dest
->Color4sv
= loopback_Color4sv_f
;
1465 dest
->Color4uiv
= loopback_Color4uiv_f
;
1466 dest
->Color4usv
= loopback_Color4usv_f
;
1467 dest
->Color4ubv
= loopback_Color4ubv_f
;
1469 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1470 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1471 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1472 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1473 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1474 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1475 dest
->SecondaryColor3ubEXT
= loopback_SecondaryColor3ubEXT_f
;
1476 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1477 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1478 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1479 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1480 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1481 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1482 dest
->SecondaryColor3ubvEXT
= loopback_SecondaryColor3ubvEXT_f
;
1484 dest
->Indexd
= loopback_Indexd
;
1485 dest
->Indexi
= loopback_Indexi
;
1486 dest
->Indexs
= loopback_Indexs
;
1487 dest
->Indexub
= loopback_Indexub
;
1488 dest
->Indexdv
= loopback_Indexdv
;
1489 dest
->Indexiv
= loopback_Indexiv
;
1490 dest
->Indexsv
= loopback_Indexsv
;
1491 dest
->Indexubv
= loopback_Indexubv
;
1492 dest
->Normal3b
= loopback_Normal3b
;
1493 dest
->Normal3d
= loopback_Normal3d
;
1494 dest
->Normal3i
= loopback_Normal3i
;
1495 dest
->Normal3s
= loopback_Normal3s
;
1496 dest
->Normal3bv
= loopback_Normal3bv
;
1497 dest
->Normal3dv
= loopback_Normal3dv
;
1498 dest
->Normal3iv
= loopback_Normal3iv
;
1499 dest
->Normal3sv
= loopback_Normal3sv
;
1500 dest
->TexCoord1d
= loopback_TexCoord1d
;
1501 dest
->TexCoord1i
= loopback_TexCoord1i
;
1502 dest
->TexCoord1s
= loopback_TexCoord1s
;
1503 dest
->TexCoord2d
= loopback_TexCoord2d
;
1504 dest
->TexCoord2s
= loopback_TexCoord2s
;
1505 dest
->TexCoord2i
= loopback_TexCoord2i
;
1506 dest
->TexCoord3d
= loopback_TexCoord3d
;
1507 dest
->TexCoord3i
= loopback_TexCoord3i
;
1508 dest
->TexCoord3s
= loopback_TexCoord3s
;
1509 dest
->TexCoord4d
= loopback_TexCoord4d
;
1510 dest
->TexCoord4i
= loopback_TexCoord4i
;
1511 dest
->TexCoord4s
= loopback_TexCoord4s
;
1512 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1513 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1514 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1515 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1516 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1517 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1518 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1519 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1520 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1521 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1522 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1523 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1524 dest
->Vertex2d
= loopback_Vertex2d
;
1525 dest
->Vertex2i
= loopback_Vertex2i
;
1526 dest
->Vertex2s
= loopback_Vertex2s
;
1527 dest
->Vertex3d
= loopback_Vertex3d
;
1528 dest
->Vertex3i
= loopback_Vertex3i
;
1529 dest
->Vertex3s
= loopback_Vertex3s
;
1530 dest
->Vertex4d
= loopback_Vertex4d
;
1531 dest
->Vertex4i
= loopback_Vertex4i
;
1532 dest
->Vertex4s
= loopback_Vertex4s
;
1533 dest
->Vertex2dv
= loopback_Vertex2dv
;
1534 dest
->Vertex2iv
= loopback_Vertex2iv
;
1535 dest
->Vertex2sv
= loopback_Vertex2sv
;
1536 dest
->Vertex3dv
= loopback_Vertex3dv
;
1537 dest
->Vertex3iv
= loopback_Vertex3iv
;
1538 dest
->Vertex3sv
= loopback_Vertex3sv
;
1539 dest
->Vertex4dv
= loopback_Vertex4dv
;
1540 dest
->Vertex4iv
= loopback_Vertex4iv
;
1541 dest
->Vertex4sv
= loopback_Vertex4sv
;
1542 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1543 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1544 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1545 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1546 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1547 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1548 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1549 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1550 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1551 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1552 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1553 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1554 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1555 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1556 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1557 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1558 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1559 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1560 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1561 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1562 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1563 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1564 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1565 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1566 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1567 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1568 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1569 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1570 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1571 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1572 dest
->Materialf
= loopback_Materialf
;
1573 dest
->Materiali
= loopback_Materiali
;
1574 dest
->Materialiv
= loopback_Materialiv
;
1575 dest
->Rectd
= loopback_Rectd
;
1576 dest
->Rectdv
= loopback_Rectdv
;
1577 dest
->Rectfv
= loopback_Rectfv
;
1578 dest
->Recti
= loopback_Recti
;
1579 dest
->Rectiv
= loopback_Rectiv
;
1580 dest
->Rects
= loopback_Rects
;
1581 dest
->Rectsv
= loopback_Rectsv
;
1582 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1583 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1585 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1586 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1587 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1588 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1589 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1590 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1591 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1592 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1593 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1594 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1595 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1596 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1597 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1598 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1599 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1600 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1601 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1602 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1603 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1604 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1605 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1606 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1607 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1608 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1609 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1610 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1611 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1612 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1613 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1614 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1615 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;
1617 dest
->VertexAttrib1sARB
= loopback_VertexAttrib1sARB
;
1618 dest
->VertexAttrib1dARB
= loopback_VertexAttrib1dARB
;
1619 dest
->VertexAttrib2sARB
= loopback_VertexAttrib2sARB
;
1620 dest
->VertexAttrib2dARB
= loopback_VertexAttrib2dARB
;
1621 dest
->VertexAttrib3sARB
= loopback_VertexAttrib3sARB
;
1622 dest
->VertexAttrib3dARB
= loopback_VertexAttrib3dARB
;
1623 dest
->VertexAttrib4sARB
= loopback_VertexAttrib4sARB
;
1624 dest
->VertexAttrib4dARB
= loopback_VertexAttrib4dARB
;
1625 dest
->VertexAttrib1svARB
= loopback_VertexAttrib1svARB
;
1626 dest
->VertexAttrib1dvARB
= loopback_VertexAttrib1dvARB
;
1627 dest
->VertexAttrib2svARB
= loopback_VertexAttrib2svARB
;
1628 dest
->VertexAttrib2dvARB
= loopback_VertexAttrib2dvARB
;
1629 dest
->VertexAttrib3svARB
= loopback_VertexAttrib3svARB
;
1630 dest
->VertexAttrib3dvARB
= loopback_VertexAttrib3dvARB
;
1631 dest
->VertexAttrib4svARB
= loopback_VertexAttrib4svARB
;
1632 dest
->VertexAttrib4dvARB
= loopback_VertexAttrib4dvARB
;
1633 dest
->VertexAttrib4NubARB
= loopback_VertexAttrib4NubARB
;
1634 dest
->VertexAttrib4NubvARB
= loopback_VertexAttrib4NubvARB
;
1635 dest
->VertexAttrib4bvARB
= loopback_VertexAttrib4bvARB
;
1636 dest
->VertexAttrib4ivARB
= loopback_VertexAttrib4ivARB
;
1637 dest
->VertexAttrib4ubvARB
= loopback_VertexAttrib4ubvARB
;
1638 dest
->VertexAttrib4usvARB
= loopback_VertexAttrib4usvARB
;
1639 dest
->VertexAttrib4uivARB
= loopback_VertexAttrib4uivARB
;
1640 dest
->VertexAttrib4NbvARB
= loopback_VertexAttrib4NbvARB
;
1641 dest
->VertexAttrib4NsvARB
= loopback_VertexAttrib4NsvARB
;
1642 dest
->VertexAttrib4NivARB
= loopback_VertexAttrib4NivARB
;
1643 dest
->VertexAttrib4NusvARB
= loopback_VertexAttrib4NusvARB
;
1644 dest
->VertexAttrib4NuivARB
= loopback_VertexAttrib4NuivARB
;