mesa: split bind_buffer_range_uniform_buffer() in two
[mesa.git] / src / mesa / main / api_loopback.c
1 /**
2 * \file api_loopback.c
3 *
4 * \author Keith Whitwell <keithw@vmware.com>
5 */
6
7 /*
8 * Mesa 3-D graphics library
9 *
10 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
11 *
12 * Permission is hereby granted, free of charge, to any person obtaining a
13 * copy of this software and associated documentation files (the "Software"),
14 * to deal in the Software without restriction, including without limitation
15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16 * and/or sell copies of the Software, and to permit persons to whom the
17 * Software is furnished to do so, subject to the following conditions:
18 *
19 * The above copyright notice and this permission notice shall be included
20 * in all copies or substantial portions of the Software.
21 *
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28 * OTHER DEALINGS IN THE SOFTWARE.
29 */
30
31
32 #include "glheader.h"
33 #include "macros.h"
34 #include "api_loopback.h"
35 #include "mtypes.h"
36 #include "glapi/glapi.h"
37 #include "main/dispatch.h"
38 #include "main/context.h"
39
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),
43 * hence 'loopback'.
44 *
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.
48 */
49 #define COLORF(r,g,b,a) CALL_Color4f(GET_DISPATCH(), (r,g,b,a))
50 #define VERTEX2(x,y) CALL_Vertex2f(GET_DISPATCH(), (x,y))
51 #define VERTEX3(x,y,z) CALL_Vertex3f(GET_DISPATCH(), (x,y,z))
52 #define VERTEX4(x,y,z,w) CALL_Vertex4f(GET_DISPATCH(), (x,y,z,w))
53 #define NORMAL(x,y,z) CALL_Normal3f(GET_DISPATCH(), (x,y,z))
54 #define TEXCOORD1(s) CALL_TexCoord1f(GET_DISPATCH(), (s))
55 #define TEXCOORD2(s,t) CALL_TexCoord2f(GET_DISPATCH(), (s,t))
56 #define TEXCOORD3(s,t,u) CALL_TexCoord3f(GET_DISPATCH(), (s,t,u))
57 #define TEXCOORD4(s,t,u,v) CALL_TexCoord4f(GET_DISPATCH(), (s,t,u,v))
58 #define INDEX(c) CALL_Indexf(GET_DISPATCH(), (c))
59 #define MULTI_TEXCOORD1(z,s) CALL_MultiTexCoord1fARB(GET_DISPATCH(), (z,s))
60 #define MULTI_TEXCOORD2(z,s,t) CALL_MultiTexCoord2fARB(GET_DISPATCH(), (z,s,t))
61 #define MULTI_TEXCOORD3(z,s,t,u) CALL_MultiTexCoord3fARB(GET_DISPATCH(), (z,s,t,u))
62 #define MULTI_TEXCOORD4(z,s,t,u,v) CALL_MultiTexCoord4fARB(GET_DISPATCH(), (z,s,t,u,v))
63 #define EVALCOORD1(x) CALL_EvalCoord1f(GET_DISPATCH(), (x))
64 #define EVALCOORD2(x,y) CALL_EvalCoord2f(GET_DISPATCH(), (x,y))
65 #define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c))
66 #define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
67
68 #define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
69 #define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
70
71 #define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
72 #define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
73 #define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
74 #define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
75
76 #define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
77 #define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
78 #define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
79 #define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
80
81 #define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
82 #define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
83 #define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
84
85 #define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
86
87 #define ATTRIB1_D(index,x) CALL_VertexAttribL1d(GET_DISPATCH(), (index,x))
88 #define ATTRIB2_D(index,x,y) CALL_VertexAttribL2d(GET_DISPATCH(), (index,x,y))
89 #define ATTRIB3_D(index,x,y,z) CALL_VertexAttribL3d(GET_DISPATCH(), (index,x,y,z))
90 #define ATTRIB4_D(index,x,y,z,w) CALL_VertexAttribL4d(GET_DISPATCH(), (index,x,y,z,w))
91
92 void GLAPIENTRY
93 _mesa_Color3b( GLbyte red, GLbyte green, GLbyte blue )
94 {
95 COLORF( BYTE_TO_FLOAT(red),
96 BYTE_TO_FLOAT(green),
97 BYTE_TO_FLOAT(blue),
98 1.0 );
99 }
100
101 void GLAPIENTRY
102 _mesa_Color3d( GLdouble red, GLdouble green, GLdouble blue )
103 {
104 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
105 }
106
107 void GLAPIENTRY
108 _mesa_Color3i( GLint red, GLint green, GLint blue )
109 {
110 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
111 INT_TO_FLOAT(blue), 1.0);
112 }
113
114 void GLAPIENTRY
115 _mesa_Color3s( GLshort red, GLshort green, GLshort blue )
116 {
117 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
118 SHORT_TO_FLOAT(blue), 1.0);
119 }
120
121 void GLAPIENTRY
122 _mesa_Color3ui( GLuint red, GLuint green, GLuint blue )
123 {
124 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
125 UINT_TO_FLOAT(blue), 1.0 );
126 }
127
128 void GLAPIENTRY
129 _mesa_Color3us( GLushort red, GLushort green, GLushort blue )
130 {
131 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
132 USHORT_TO_FLOAT(blue), 1.0 );
133 }
134
135 void GLAPIENTRY
136 _mesa_Color3ub( GLubyte red, GLubyte green, GLubyte blue )
137 {
138 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
139 UBYTE_TO_FLOAT(blue), 1.0 );
140 }
141
142
143 void GLAPIENTRY
144 _mesa_Color3bv( const GLbyte *v )
145 {
146 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
147 BYTE_TO_FLOAT(v[2]), 1.0 );
148 }
149
150 void GLAPIENTRY
151 _mesa_Color3dv( const GLdouble *v )
152 {
153 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
154 }
155
156 void GLAPIENTRY
157 _mesa_Color3iv( const GLint *v )
158 {
159 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
160 INT_TO_FLOAT(v[2]), 1.0 );
161 }
162
163 void GLAPIENTRY
164 _mesa_Color3sv( const GLshort *v )
165 {
166 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
167 SHORT_TO_FLOAT(v[2]), 1.0 );
168 }
169
170 void GLAPIENTRY
171 _mesa_Color3uiv( const GLuint *v )
172 {
173 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
174 UINT_TO_FLOAT(v[2]), 1.0 );
175 }
176
177 void GLAPIENTRY
178 _mesa_Color3usv( const GLushort *v )
179 {
180 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
181 USHORT_TO_FLOAT(v[2]), 1.0 );
182 }
183
184 void GLAPIENTRY
185 _mesa_Color3ubv( const GLubyte *v )
186 {
187 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
188 UBYTE_TO_FLOAT(v[2]), 1.0 );
189 }
190
191
192 void GLAPIENTRY
193 _mesa_Color4b( GLbyte red, GLbyte green, GLbyte blue,
194 GLbyte alpha )
195 {
196 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
197 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
198 }
199
200 void GLAPIENTRY
201 _mesa_Color4d( GLdouble red, GLdouble green, GLdouble blue,
202 GLdouble alpha )
203 {
204 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
205 }
206
207 void GLAPIENTRY
208 _mesa_Color4i( GLint red, GLint green, GLint blue, GLint alpha )
209 {
210 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
211 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
212 }
213
214 void GLAPIENTRY
215 _mesa_Color4s( GLshort red, GLshort green, GLshort blue,
216 GLshort alpha )
217 {
218 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
219 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
220 }
221
222 void GLAPIENTRY
223 _mesa_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )
224 {
225 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
226 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
227 }
228
229 void GLAPIENTRY
230 _mesa_Color4us( GLushort red, GLushort green, GLushort blue, GLushort alpha )
231 {
232 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
233 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
234 }
235
236 void GLAPIENTRY
237 _mesa_Color4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
238 {
239 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
240 UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) );
241 }
242
243
244 void GLAPIENTRY
245 _mesa_Color4iv( const GLint *v )
246 {
247 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
248 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
249 }
250
251
252 void GLAPIENTRY
253 _mesa_Color4bv( const GLbyte *v )
254 {
255 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
256 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
257 }
258
259 void GLAPIENTRY
260 _mesa_Color4dv( const GLdouble *v )
261 {
262 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
263 }
264
265
266 void GLAPIENTRY
267 _mesa_Color4sv( const GLshort *v)
268 {
269 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
270 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
271 }
272
273
274 void GLAPIENTRY
275 _mesa_Color4uiv( const GLuint *v)
276 {
277 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
278 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
279 }
280
281 void GLAPIENTRY
282 _mesa_Color4usv( const GLushort *v)
283 {
284 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
285 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
286 }
287
288 void GLAPIENTRY
289 _mesa_Color4ubv( const GLubyte *v)
290 {
291 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
292 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) );
293 }
294
295
296 void GLAPIENTRY
297 _mesa_FogCoordd( GLdouble d )
298 {
299 FOGCOORDF( (GLfloat) d );
300 }
301
302 void GLAPIENTRY
303 _mesa_FogCoorddv( const GLdouble *v )
304 {
305 FOGCOORDF( (GLfloat) *v );
306 }
307
308
309 void GLAPIENTRY
310 _mesa_Indexd( GLdouble c )
311 {
312 INDEX( (GLfloat) c );
313 }
314
315 void GLAPIENTRY
316 _mesa_Indexi( GLint c )
317 {
318 INDEX( (GLfloat) c );
319 }
320
321 void GLAPIENTRY
322 _mesa_Indexs( GLshort c )
323 {
324 INDEX( (GLfloat) c );
325 }
326
327 void GLAPIENTRY
328 _mesa_Indexub( GLubyte c )
329 {
330 INDEX( (GLfloat) c );
331 }
332
333 void GLAPIENTRY
334 _mesa_Indexdv( const GLdouble *c )
335 {
336 INDEX( (GLfloat) *c );
337 }
338
339 void GLAPIENTRY
340 _mesa_Indexiv( const GLint *c )
341 {
342 INDEX( (GLfloat) *c );
343 }
344
345 void GLAPIENTRY
346 _mesa_Indexsv( const GLshort *c )
347 {
348 INDEX( (GLfloat) *c );
349 }
350
351 void GLAPIENTRY
352 _mesa_Indexubv( const GLubyte *c )
353 {
354 INDEX( (GLfloat) *c );
355 }
356
357
358 void GLAPIENTRY
359 _mesa_EdgeFlagv(const GLboolean *flag)
360 {
361 CALL_EdgeFlag(GET_DISPATCH(), (*flag));
362 }
363
364
365 void GLAPIENTRY
366 _mesa_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
367 {
368 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
369 }
370
371 void GLAPIENTRY
372 _mesa_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
373 {
374 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
375 }
376
377 void GLAPIENTRY
378 _mesa_Normal3i( GLint nx, GLint ny, GLint nz )
379 {
380 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
381 }
382
383 void GLAPIENTRY
384 _mesa_Normal3s( GLshort nx, GLshort ny, GLshort nz )
385 {
386 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
387 }
388
389 void GLAPIENTRY
390 _mesa_Normal3bv( const GLbyte *v )
391 {
392 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
393 }
394
395 void GLAPIENTRY
396 _mesa_Normal3dv( const GLdouble *v )
397 {
398 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
399 }
400
401 void GLAPIENTRY
402 _mesa_Normal3iv( const GLint *v )
403 {
404 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
405 }
406
407 void GLAPIENTRY
408 _mesa_Normal3sv( const GLshort *v )
409 {
410 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
411 }
412
413 void GLAPIENTRY
414 _mesa_TexCoord1d( GLdouble s )
415 {
416 TEXCOORD1((GLfloat) s);
417 }
418
419 void GLAPIENTRY
420 _mesa_TexCoord1i( GLint s )
421 {
422 TEXCOORD1((GLfloat) s);
423 }
424
425 void GLAPIENTRY
426 _mesa_TexCoord1s( GLshort s )
427 {
428 TEXCOORD1((GLfloat) s);
429 }
430
431 void GLAPIENTRY
432 _mesa_TexCoord2d( GLdouble s, GLdouble t )
433 {
434 TEXCOORD2((GLfloat) s,(GLfloat) t);
435 }
436
437 void GLAPIENTRY
438 _mesa_TexCoord2s( GLshort s, GLshort t )
439 {
440 TEXCOORD2((GLfloat) s,(GLfloat) t);
441 }
442
443 void GLAPIENTRY
444 _mesa_TexCoord2i( GLint s, GLint t )
445 {
446 TEXCOORD2((GLfloat) s,(GLfloat) t);
447 }
448
449 void GLAPIENTRY
450 _mesa_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
451 {
452 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
453 }
454
455 void GLAPIENTRY
456 _mesa_TexCoord3i( GLint s, GLint t, GLint r )
457 {
458 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
459 }
460
461 void GLAPIENTRY
462 _mesa_TexCoord3s( GLshort s, GLshort t, GLshort r )
463 {
464 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
465 }
466
467 void GLAPIENTRY
468 _mesa_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
469 {
470 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
471 }
472
473 void GLAPIENTRY
474 _mesa_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
475 {
476 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
477 }
478
479 void GLAPIENTRY
480 _mesa_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
481 {
482 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
483 }
484
485 void GLAPIENTRY
486 _mesa_TexCoord1dv( const GLdouble *v )
487 {
488 TEXCOORD1((GLfloat) v[0]);
489 }
490
491 void GLAPIENTRY
492 _mesa_TexCoord1iv( const GLint *v )
493 {
494 TEXCOORD1((GLfloat) v[0]);
495 }
496
497 void GLAPIENTRY
498 _mesa_TexCoord1sv( const GLshort *v )
499 {
500 TEXCOORD1((GLfloat) v[0]);
501 }
502
503 void GLAPIENTRY
504 _mesa_TexCoord2dv( const GLdouble *v )
505 {
506 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
507 }
508
509 void GLAPIENTRY
510 _mesa_TexCoord2iv( const GLint *v )
511 {
512 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
513 }
514
515 void GLAPIENTRY
516 _mesa_TexCoord2sv( const GLshort *v )
517 {
518 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
519 }
520
521 void GLAPIENTRY
522 _mesa_TexCoord3dv( const GLdouble *v )
523 {
524 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
525 }
526
527 void GLAPIENTRY
528 _mesa_TexCoord3iv( const GLint *v )
529 {
530 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
531 }
532
533 void GLAPIENTRY
534 _mesa_TexCoord3sv( const GLshort *v )
535 {
536 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
537 }
538
539 void GLAPIENTRY
540 _mesa_TexCoord4dv( const GLdouble *v )
541 {
542 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
543 }
544
545 void GLAPIENTRY
546 _mesa_TexCoord4iv( const GLint *v )
547 {
548 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
549 }
550
551 void GLAPIENTRY
552 _mesa_TexCoord4sv( const GLshort *v )
553 {
554 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
555 }
556
557 void GLAPIENTRY
558 _mesa_Vertex2d( GLdouble x, GLdouble y )
559 {
560 VERTEX2( (GLfloat) x, (GLfloat) y );
561 }
562
563 void GLAPIENTRY
564 _mesa_Vertex2i( GLint x, GLint y )
565 {
566 VERTEX2( (GLfloat) x, (GLfloat) y );
567 }
568
569 void GLAPIENTRY
570 _mesa_Vertex2s( GLshort x, GLshort y )
571 {
572 VERTEX2( (GLfloat) x, (GLfloat) y );
573 }
574
575 void GLAPIENTRY
576 _mesa_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
577 {
578 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
579 }
580
581 void GLAPIENTRY
582 _mesa_Vertex3i( GLint x, GLint y, GLint z )
583 {
584 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
585 }
586
587 void GLAPIENTRY
588 _mesa_Vertex3s( GLshort x, GLshort y, GLshort z )
589 {
590 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
591 }
592
593 void GLAPIENTRY
594 _mesa_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
595 {
596 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
597 }
598
599 void GLAPIENTRY
600 _mesa_Vertex4i( GLint x, GLint y, GLint z, GLint w )
601 {
602 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
603 }
604
605 void GLAPIENTRY
606 _mesa_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
607 {
608 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
609 }
610
611 void GLAPIENTRY
612 _mesa_Vertex2dv( const GLdouble *v )
613 {
614 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
615 }
616
617 void GLAPIENTRY
618 _mesa_Vertex2iv( const GLint *v )
619 {
620 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
621 }
622
623 void GLAPIENTRY
624 _mesa_Vertex2sv( const GLshort *v )
625 {
626 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
627 }
628
629 void GLAPIENTRY
630 _mesa_Vertex3dv( const GLdouble *v )
631 {
632 if (v[2] == 0.0)
633 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
634 else
635 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
636 }
637
638 void GLAPIENTRY
639 _mesa_Vertex3iv( const GLint *v )
640 {
641 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
642 }
643
644 void GLAPIENTRY
645 _mesa_Vertex3sv( const GLshort *v )
646 {
647 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
648 }
649
650 void GLAPIENTRY
651 _mesa_Vertex4dv( const GLdouble *v )
652 {
653 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
654 (GLfloat) v[2], (GLfloat) v[3] );
655 }
656
657 void GLAPIENTRY
658 _mesa_Vertex4iv( const GLint *v )
659 {
660 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
661 (GLfloat) v[2], (GLfloat) v[3] );
662 }
663
664 void GLAPIENTRY
665 _mesa_Vertex4sv( const GLshort *v )
666 {
667 VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
668 (GLfloat) v[2], (GLfloat) v[3] );
669 }
670
671 void GLAPIENTRY
672 _mesa_MultiTexCoord1d(GLenum target, GLdouble s)
673 {
674 MULTI_TEXCOORD1( target, (GLfloat) s );
675 }
676
677 void GLAPIENTRY
678 _mesa_MultiTexCoord1dv(GLenum target, const GLdouble *v)
679 {
680 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
681 }
682
683 void GLAPIENTRY
684 _mesa_MultiTexCoord1i(GLenum target, GLint s)
685 {
686 MULTI_TEXCOORD1( target, (GLfloat) s );
687 }
688
689 void GLAPIENTRY
690 _mesa_MultiTexCoord1iv(GLenum target, const GLint *v)
691 {
692 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
693 }
694
695 void GLAPIENTRY
696 _mesa_MultiTexCoord1s(GLenum target, GLshort s)
697 {
698 MULTI_TEXCOORD1( target, (GLfloat) s );
699 }
700
701 void GLAPIENTRY
702 _mesa_MultiTexCoord1sv(GLenum target, const GLshort *v)
703 {
704 MULTI_TEXCOORD1( target, (GLfloat) v[0] );
705 }
706
707 void GLAPIENTRY
708 _mesa_MultiTexCoord2d(GLenum target, GLdouble s, GLdouble t)
709 {
710 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
711 }
712
713 void GLAPIENTRY
714 _mesa_MultiTexCoord2dv(GLenum target, const GLdouble *v)
715 {
716 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
717 }
718
719 void GLAPIENTRY
720 _mesa_MultiTexCoord2i(GLenum target, GLint s, GLint t)
721 {
722 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
723 }
724
725 void GLAPIENTRY
726 _mesa_MultiTexCoord2iv(GLenum target, const GLint *v)
727 {
728 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
729 }
730
731 void GLAPIENTRY
732 _mesa_MultiTexCoord2s(GLenum target, GLshort s, GLshort t)
733 {
734 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
735 }
736
737 void GLAPIENTRY
738 _mesa_MultiTexCoord2sv(GLenum target, const GLshort *v)
739 {
740 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
741 }
742
743 void GLAPIENTRY
744 _mesa_MultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r)
745 {
746 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
747 }
748
749 void GLAPIENTRY
750 _mesa_MultiTexCoord3dv(GLenum target, const GLdouble *v)
751 {
752 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
753 }
754
755 void GLAPIENTRY
756 _mesa_MultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r)
757 {
758 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
759 }
760
761 void GLAPIENTRY
762 _mesa_MultiTexCoord3iv(GLenum target, const GLint *v)
763 {
764 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
765 }
766
767 void GLAPIENTRY
768 _mesa_MultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r)
769 {
770 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
771 }
772
773 void GLAPIENTRY
774 _mesa_MultiTexCoord3sv(GLenum target, const GLshort *v)
775 {
776 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
777 }
778
779 void GLAPIENTRY
780 _mesa_MultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
781 {
782 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
783 (GLfloat) r, (GLfloat) q );
784 }
785
786 void GLAPIENTRY
787 _mesa_MultiTexCoord4dv(GLenum target, const GLdouble *v)
788 {
789 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
790 (GLfloat) v[2], (GLfloat) v[3] );
791 }
792
793 void GLAPIENTRY
794 _mesa_MultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q)
795 {
796 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
797 (GLfloat) r, (GLfloat) q );
798 }
799
800 void GLAPIENTRY
801 _mesa_MultiTexCoord4iv(GLenum target, const GLint *v)
802 {
803 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
804 (GLfloat) v[2], (GLfloat) v[3] );
805 }
806
807 void GLAPIENTRY
808 _mesa_MultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
809 {
810 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
811 (GLfloat) r, (GLfloat) q );
812 }
813
814 void GLAPIENTRY
815 _mesa_MultiTexCoord4sv(GLenum target, const GLshort *v)
816 {
817 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
818 (GLfloat) v[2], (GLfloat) v[3] );
819 }
820
821 void GLAPIENTRY
822 _mesa_EvalCoord2dv( const GLdouble *u )
823 {
824 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
825 }
826
827 void GLAPIENTRY
828 _mesa_EvalCoord2fv( const GLfloat *u )
829 {
830 EVALCOORD2( u[0], u[1] );
831 }
832
833 void GLAPIENTRY
834 _mesa_EvalCoord2d( GLdouble u, GLdouble v )
835 {
836 EVALCOORD2( (GLfloat) u, (GLfloat) v );
837 }
838
839 void GLAPIENTRY
840 _mesa_EvalCoord1dv( const GLdouble *u )
841 {
842 EVALCOORD1( (GLfloat) *u );
843 }
844
845 void GLAPIENTRY
846 _mesa_EvalCoord1fv( const GLfloat *u )
847 {
848 EVALCOORD1( (GLfloat) *u );
849 }
850
851 void GLAPIENTRY
852 _mesa_EvalCoord1d( GLdouble u )
853 {
854 EVALCOORD1( (GLfloat) u );
855 }
856
857 void GLAPIENTRY
858 _mesa_Materialf( GLenum face, GLenum pname, GLfloat param )
859 {
860 GLfloat fparam[4];
861 fparam[0] = param;
862 MATERIALFV( face, pname, fparam );
863 }
864
865 void GLAPIENTRY
866 _mesa_Materiali(GLenum face, GLenum pname, GLint param )
867 {
868 GLfloat p[4];
869 p[0] = (GLfloat) param;
870 MATERIALFV(face, pname, p);
871 }
872
873 void GLAPIENTRY
874 _mesa_Materialiv(GLenum face, GLenum pname, const GLint *params )
875 {
876 GLfloat fparam[4];
877 switch (pname) {
878 case GL_AMBIENT:
879 case GL_DIFFUSE:
880 case GL_SPECULAR:
881 case GL_EMISSION:
882 case GL_AMBIENT_AND_DIFFUSE:
883 fparam[0] = INT_TO_FLOAT( params[0] );
884 fparam[1] = INT_TO_FLOAT( params[1] );
885 fparam[2] = INT_TO_FLOAT( params[2] );
886 fparam[3] = INT_TO_FLOAT( params[3] );
887 break;
888 case GL_SHININESS:
889 fparam[0] = (GLfloat) params[0];
890 break;
891 case GL_COLOR_INDEXES:
892 fparam[0] = (GLfloat) params[0];
893 fparam[1] = (GLfloat) params[1];
894 fparam[2] = (GLfloat) params[2];
895 break;
896 default:
897 ;
898 }
899 MATERIALFV(face, pname, fparam);
900 }
901
902
903 void GLAPIENTRY
904 _mesa_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
905 {
906 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
907 }
908
909 void GLAPIENTRY
910 _mesa_Rectdv(const GLdouble *v1, const GLdouble *v2)
911 {
912 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
913 }
914
915 void GLAPIENTRY
916 _mesa_Rectfv(const GLfloat *v1, const GLfloat *v2)
917 {
918 RECTF(v1[0], v1[1], v2[0], v2[1]);
919 }
920
921 void GLAPIENTRY
922 _mesa_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
923 {
924 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
925 }
926
927 void GLAPIENTRY
928 _mesa_Rectiv(const GLint *v1, const GLint *v2)
929 {
930 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
931 }
932
933 void GLAPIENTRY
934 _mesa_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
935 {
936 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
937 }
938
939 void GLAPIENTRY
940 _mesa_Rectsv(const GLshort *v1, const GLshort *v2)
941 {
942 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
943 }
944
945 void GLAPIENTRY
946 _mesa_SecondaryColor3b( GLbyte red, GLbyte green, GLbyte blue )
947 {
948 SECONDARYCOLORF( BYTE_TO_FLOAT(red),
949 BYTE_TO_FLOAT(green),
950 BYTE_TO_FLOAT(blue) );
951 }
952
953 void GLAPIENTRY
954 _mesa_SecondaryColor3d( GLdouble red, GLdouble green, GLdouble blue )
955 {
956 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
957 }
958
959 void GLAPIENTRY
960 _mesa_SecondaryColor3i( GLint red, GLint green, GLint blue )
961 {
962 SECONDARYCOLORF( INT_TO_FLOAT(red),
963 INT_TO_FLOAT(green),
964 INT_TO_FLOAT(blue));
965 }
966
967 void GLAPIENTRY
968 _mesa_SecondaryColor3s( GLshort red, GLshort green, GLshort blue )
969 {
970 SECONDARYCOLORF(SHORT_TO_FLOAT(red),
971 SHORT_TO_FLOAT(green),
972 SHORT_TO_FLOAT(blue));
973 }
974
975 void GLAPIENTRY
976 _mesa_SecondaryColor3ui( GLuint red, GLuint green, GLuint blue )
977 {
978 SECONDARYCOLORF(UINT_TO_FLOAT(red),
979 UINT_TO_FLOAT(green),
980 UINT_TO_FLOAT(blue));
981 }
982
983 void GLAPIENTRY
984 _mesa_SecondaryColor3us( GLushort red, GLushort green, GLushort blue )
985 {
986 SECONDARYCOLORF(USHORT_TO_FLOAT(red),
987 USHORT_TO_FLOAT(green),
988 USHORT_TO_FLOAT(blue));
989 }
990
991 void GLAPIENTRY
992 _mesa_SecondaryColor3ub( GLubyte red, GLubyte green, GLubyte blue )
993 {
994 SECONDARYCOLORF(UBYTE_TO_FLOAT(red),
995 UBYTE_TO_FLOAT(green),
996 UBYTE_TO_FLOAT(blue));
997 }
998
999 void GLAPIENTRY
1000 _mesa_SecondaryColor3bv( const GLbyte *v )
1001 {
1002 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
1003 BYTE_TO_FLOAT(v[1]),
1004 BYTE_TO_FLOAT(v[2]));
1005 }
1006
1007 void GLAPIENTRY
1008 _mesa_SecondaryColor3dv( const GLdouble *v )
1009 {
1010 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
1011 }
1012 void GLAPIENTRY
1013 _mesa_SecondaryColor3iv( const GLint *v )
1014 {
1015 SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
1016 INT_TO_FLOAT(v[1]),
1017 INT_TO_FLOAT(v[2]));
1018 }
1019
1020 void GLAPIENTRY
1021 _mesa_SecondaryColor3sv( const GLshort *v )
1022 {
1023 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
1024 SHORT_TO_FLOAT(v[1]),
1025 SHORT_TO_FLOAT(v[2]));
1026 }
1027
1028 void GLAPIENTRY
1029 _mesa_SecondaryColor3uiv( const GLuint *v )
1030 {
1031 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
1032 UINT_TO_FLOAT(v[1]),
1033 UINT_TO_FLOAT(v[2]));
1034 }
1035
1036 void GLAPIENTRY
1037 _mesa_SecondaryColor3usv( const GLushort *v )
1038 {
1039 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
1040 USHORT_TO_FLOAT(v[1]),
1041 USHORT_TO_FLOAT(v[2]));
1042 }
1043
1044 void GLAPIENTRY
1045 _mesa_SecondaryColor3ubv( const GLubyte *v )
1046 {
1047 SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]),
1048 UBYTE_TO_FLOAT(v[1]),
1049 UBYTE_TO_FLOAT(v[2]));
1050 }
1051
1052
1053 /*
1054 * GL_NV_vertex_program:
1055 * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
1056 * Note that attribute indexes DO alias conventional vertex attributes.
1057 */
1058
1059 void GLAPIENTRY
1060 _mesa_VertexAttrib1sNV(GLuint index, GLshort x)
1061 {
1062 ATTRIB1NV(index, (GLfloat) x);
1063 }
1064
1065 void GLAPIENTRY
1066 _mesa_VertexAttrib1dNV(GLuint index, GLdouble x)
1067 {
1068 ATTRIB1NV(index, (GLfloat) x);
1069 }
1070
1071 void GLAPIENTRY
1072 _mesa_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
1073 {
1074 ATTRIB2NV(index, (GLfloat) x, y);
1075 }
1076
1077 void GLAPIENTRY
1078 _mesa_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
1079 {
1080 ATTRIB2NV(index, (GLfloat) x, (GLfloat) y);
1081 }
1082
1083 void GLAPIENTRY
1084 _mesa_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
1085 {
1086 ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1087 }
1088
1089 void GLAPIENTRY
1090 _mesa_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1091 {
1092 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1093 }
1094
1095 void GLAPIENTRY
1096 _mesa_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1097 {
1098 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1099 }
1100
1101 void GLAPIENTRY
1102 _mesa_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1103 {
1104 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1105 }
1106
1107 void GLAPIENTRY
1108 _mesa_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1109 {
1110 ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1111 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1112 }
1113
1114 void GLAPIENTRY
1115 _mesa_VertexAttrib1svNV(GLuint index, const GLshort *v)
1116 {
1117 ATTRIB1NV(index, (GLfloat) v[0]);
1118 }
1119
1120 void GLAPIENTRY
1121 _mesa_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
1122 {
1123 ATTRIB1NV(index, (GLfloat) v[0]);
1124 }
1125
1126 void GLAPIENTRY
1127 _mesa_VertexAttrib2svNV(GLuint index, const GLshort *v)
1128 {
1129 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1130 }
1131
1132 void GLAPIENTRY
1133 _mesa_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
1134 {
1135 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
1136 }
1137
1138 void GLAPIENTRY
1139 _mesa_VertexAttrib3svNV(GLuint index, const GLshort *v)
1140 {
1141 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1142 }
1143
1144 void GLAPIENTRY
1145 _mesa_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
1146 {
1147 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1148 }
1149
1150 void GLAPIENTRY
1151 _mesa_VertexAttrib4svNV(GLuint index, const GLshort *v)
1152 {
1153 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1154 (GLfloat)v[3]);
1155 }
1156
1157 void GLAPIENTRY
1158 _mesa_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
1159 {
1160 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1161 }
1162
1163 void GLAPIENTRY
1164 _mesa_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
1165 {
1166 ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1167 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1168 }
1169
1170
1171 void GLAPIENTRY
1172 _mesa_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
1173 {
1174 GLint i;
1175 for (i = n - 1; i >= 0; i--)
1176 _mesa_VertexAttrib1svNV(index + i, v + i);
1177 }
1178
1179 void GLAPIENTRY
1180 _mesa_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
1181 {
1182 GLint i;
1183 for (i = n - 1; i >= 0; i--)
1184 ATTRIB1NV(index + i, v[i]);
1185 }
1186
1187 void GLAPIENTRY
1188 _mesa_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
1189 {
1190 GLint i;
1191 for (i = n - 1; i >= 0; i--)
1192 _mesa_VertexAttrib1dvNV(index + i, v + i);
1193 }
1194
1195 void GLAPIENTRY
1196 _mesa_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
1197 {
1198 GLint i;
1199 for (i = n - 1; i >= 0; i--)
1200 _mesa_VertexAttrib2svNV(index + i, v + 2 * i);
1201 }
1202
1203 void GLAPIENTRY
1204 _mesa_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
1205 {
1206 GLint i;
1207 for (i = n - 1; i >= 0; i--)
1208 ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]);
1209 }
1210
1211 void GLAPIENTRY
1212 _mesa_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
1213 {
1214 GLint i;
1215 for (i = n - 1; i >= 0; i--)
1216 _mesa_VertexAttrib2dvNV(index + i, v + 2 * i);
1217 }
1218
1219 void GLAPIENTRY
1220 _mesa_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
1221 {
1222 GLint i;
1223 for (i = n - 1; i >= 0; i--)
1224 _mesa_VertexAttrib3svNV(index + i, v + 3 * i);
1225 }
1226
1227 void GLAPIENTRY
1228 _mesa_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
1229 {
1230 GLint i;
1231 for (i = n - 1; i >= 0; i--)
1232 ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1233 }
1234
1235 void GLAPIENTRY
1236 _mesa_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
1237 {
1238 GLint i;
1239 for (i = n - 1; i >= 0; i--)
1240 _mesa_VertexAttrib3dvNV(index + i, v + 3 * i);
1241 }
1242
1243 void GLAPIENTRY
1244 _mesa_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
1245 {
1246 GLint i;
1247 for (i = n - 1; i >= 0; i--)
1248 _mesa_VertexAttrib4svNV(index + i, v + 4 * i);
1249 }
1250
1251 void GLAPIENTRY
1252 _mesa_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
1253 {
1254 GLint i;
1255 for (i = n - 1; i >= 0; i--)
1256 ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1257 }
1258
1259 void GLAPIENTRY
1260 _mesa_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
1261 {
1262 GLint i;
1263 for (i = n - 1; i >= 0; i--)
1264 _mesa_VertexAttrib4dvNV(index + i, v + 4 * i);
1265 }
1266
1267 void GLAPIENTRY
1268 _mesa_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
1269 {
1270 GLint i;
1271 for (i = n - 1; i >= 0; i--)
1272 _mesa_VertexAttrib4ubvNV(index + i, v + 4 * i);
1273 }
1274
1275
1276 /*
1277 * GL_ARB_vertex_program
1278 * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
1279 * Note that attribute indexes do NOT alias conventional attributes.
1280 */
1281
1282 void GLAPIENTRY
1283 _mesa_VertexAttrib1s(GLuint index, GLshort x)
1284 {
1285 ATTRIB1ARB(index, (GLfloat) x);
1286 }
1287
1288 void GLAPIENTRY
1289 _mesa_VertexAttrib1d(GLuint index, GLdouble x)
1290 {
1291 ATTRIB1ARB(index, (GLfloat) x);
1292 }
1293
1294 void GLAPIENTRY
1295 _mesa_VertexAttrib2s(GLuint index, GLshort x, GLshort y)
1296 {
1297 ATTRIB2ARB(index, (GLfloat) x, y);
1298 }
1299
1300 void GLAPIENTRY
1301 _mesa_VertexAttrib2d(GLuint index, GLdouble x, GLdouble y)
1302 {
1303 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
1304 }
1305
1306 void GLAPIENTRY
1307 _mesa_VertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z)
1308 {
1309 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1310 }
1311
1312 void GLAPIENTRY
1313 _mesa_VertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1314 {
1315 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1316 }
1317
1318 void GLAPIENTRY
1319 _mesa_VertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1320 {
1321 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1322 }
1323
1324 void GLAPIENTRY
1325 _mesa_VertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1326 {
1327 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1328 }
1329
1330 void GLAPIENTRY
1331 _mesa_VertexAttrib1sv(GLuint index, const GLshort *v)
1332 {
1333 ATTRIB1ARB(index, (GLfloat) v[0]);
1334 }
1335
1336 void GLAPIENTRY
1337 _mesa_VertexAttrib1dv(GLuint index, const GLdouble *v)
1338 {
1339 ATTRIB1ARB(index, (GLfloat) v[0]);
1340 }
1341
1342 void GLAPIENTRY
1343 _mesa_VertexAttrib2sv(GLuint index, const GLshort *v)
1344 {
1345 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1346 }
1347
1348 void GLAPIENTRY
1349 _mesa_VertexAttrib2dv(GLuint index, const GLdouble *v)
1350 {
1351 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
1352 }
1353
1354 void GLAPIENTRY
1355 _mesa_VertexAttrib3sv(GLuint index, const GLshort *v)
1356 {
1357 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1358 }
1359
1360 void GLAPIENTRY
1361 _mesa_VertexAttrib3dv(GLuint index, const GLdouble *v)
1362 {
1363 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1364 }
1365
1366 void GLAPIENTRY
1367 _mesa_VertexAttrib4sv(GLuint index, const GLshort *v)
1368 {
1369 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1370 (GLfloat)v[3]);
1371 }
1372
1373 void GLAPIENTRY
1374 _mesa_VertexAttrib4dv(GLuint index, const GLdouble *v)
1375 {
1376 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1377 }
1378
1379 void GLAPIENTRY
1380 _mesa_VertexAttrib4bv(GLuint index, const GLbyte * v)
1381 {
1382 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1383 }
1384
1385 void GLAPIENTRY
1386 _mesa_VertexAttrib4iv(GLuint index, const GLint * v)
1387 {
1388 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1389 }
1390
1391 void GLAPIENTRY
1392 _mesa_VertexAttrib4ubv(GLuint index, const GLubyte * v)
1393 {
1394 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1395 }
1396
1397 void GLAPIENTRY
1398 _mesa_VertexAttrib4usv(GLuint index, const GLushort * v)
1399 {
1400 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1401 }
1402
1403 void GLAPIENTRY
1404 _mesa_VertexAttrib4uiv(GLuint index, const GLuint * v)
1405 {
1406 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1407 }
1408
1409 void GLAPIENTRY
1410 _mesa_VertexAttrib4Nbv(GLuint index, const GLbyte * v)
1411 {
1412 ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
1413 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1414 }
1415
1416 void GLAPIENTRY
1417 _mesa_VertexAttrib4Nsv(GLuint index, const GLshort * v)
1418 {
1419 ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
1420 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1421 }
1422
1423 void GLAPIENTRY
1424 _mesa_VertexAttrib4Niv(GLuint index, const GLint * v)
1425 {
1426 ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
1427 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1428 }
1429
1430 void GLAPIENTRY
1431 _mesa_VertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1432 {
1433 ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1434 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1435 }
1436
1437 void GLAPIENTRY
1438 _mesa_VertexAttrib4Nubv(GLuint index, const GLubyte * v)
1439 {
1440 ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1441 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1442 }
1443
1444 void GLAPIENTRY
1445 _mesa_VertexAttrib4Nusv(GLuint index, const GLushort * v)
1446 {
1447 ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
1448 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1449 }
1450
1451 void GLAPIENTRY
1452 _mesa_VertexAttrib4Nuiv(GLuint index, const GLuint * v)
1453 {
1454 ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
1455 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1456 }
1457
1458
1459
1460 /**
1461 * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
1462 * Note that attribute indexes do NOT alias conventional attributes.
1463 */
1464
1465 void GLAPIENTRY
1466 _mesa_VertexAttribI1iv(GLuint index, const GLint *v)
1467 {
1468 ATTRIBI_1I(index, v[0]);
1469 }
1470
1471 void GLAPIENTRY
1472 _mesa_VertexAttribI1uiv(GLuint index, const GLuint *v)
1473 {
1474 ATTRIBI_1UI(index, v[0]);
1475 }
1476
1477 void GLAPIENTRY
1478 _mesa_VertexAttribI4bv(GLuint index, const GLbyte *v)
1479 {
1480 ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
1481 }
1482
1483 void GLAPIENTRY
1484 _mesa_VertexAttribI4sv(GLuint index, const GLshort *v)
1485 {
1486 ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
1487 }
1488
1489 void GLAPIENTRY
1490 _mesa_VertexAttribI4ubv(GLuint index, const GLubyte *v)
1491 {
1492 ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
1493 }
1494
1495 void GLAPIENTRY
1496 _mesa_VertexAttribI4usv(GLuint index, const GLushort *v)
1497 {
1498 ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
1499 }
1500
1501 void GLAPIENTRY
1502 _mesa_VertexAttribL1d(GLuint index, GLdouble x)
1503 {
1504 ATTRIB1_D(index, x);
1505 }
1506
1507 void GLAPIENTRY
1508 _mesa_VertexAttribL2d(GLuint index, GLdouble x, GLdouble y)
1509 {
1510 ATTRIB2_D(index, x, y);
1511 }
1512
1513 void GLAPIENTRY
1514 _mesa_VertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1515 {
1516 ATTRIB3_D(index, x, y, z);
1517 }
1518
1519 void GLAPIENTRY
1520 _mesa_VertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1521 {
1522 ATTRIB4_D(index, x, y, z, w);
1523 }
1524
1525 void GLAPIENTRY
1526 _mesa_VertexAttribL1dv(GLuint index, const GLdouble *v)
1527 {
1528 ATTRIB1_D(index, v[0]);
1529 }
1530
1531 void GLAPIENTRY
1532 _mesa_VertexAttribL2dv(GLuint index, const GLdouble *v)
1533 {
1534 ATTRIB2_D(index, v[0], v[1]);
1535 }
1536
1537 void GLAPIENTRY
1538 _mesa_VertexAttribL3dv(GLuint index, const GLdouble *v)
1539 {
1540 ATTRIB3_D(index, v[0], v[1], v[2]);
1541 }
1542
1543 void GLAPIENTRY
1544 _mesa_VertexAttribL4dv(GLuint index, const GLdouble *v)
1545 {
1546 ATTRIB4_D(index, v[0], v[1], v[2], v[3]);
1547 }
1548
1549 /*
1550 * This code never registers handlers for any of the entry points
1551 * listed in vtxfmt.h.
1552 */
1553 void
1554 _mesa_loopback_init_api_table(const struct gl_context *ctx,
1555 struct _glapi_table *dest)
1556 {
1557 if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
1558 SET_Color4ub(dest, _mesa_Color4ub);
1559 SET_Materialf(dest, _mesa_Materialf);
1560 }
1561 if (ctx->API == API_OPENGL_COMPAT) {
1562 SET_Color3b(dest, _mesa_Color3b);
1563 SET_Color3d(dest, _mesa_Color3d);
1564 SET_Color3i(dest, _mesa_Color3i);
1565 SET_Color3s(dest, _mesa_Color3s);
1566 SET_Color3ui(dest, _mesa_Color3ui);
1567 SET_Color3us(dest, _mesa_Color3us);
1568 SET_Color3ub(dest, _mesa_Color3ub);
1569 SET_Color4b(dest, _mesa_Color4b);
1570 SET_Color4d(dest, _mesa_Color4d);
1571 SET_Color4i(dest, _mesa_Color4i);
1572 SET_Color4s(dest, _mesa_Color4s);
1573 SET_Color4ui(dest, _mesa_Color4ui);
1574 SET_Color4us(dest, _mesa_Color4us);
1575 SET_Color3bv(dest, _mesa_Color3bv);
1576 SET_Color3dv(dest, _mesa_Color3dv);
1577 SET_Color3iv(dest, _mesa_Color3iv);
1578 SET_Color3sv(dest, _mesa_Color3sv);
1579 SET_Color3uiv(dest, _mesa_Color3uiv);
1580 SET_Color3usv(dest, _mesa_Color3usv);
1581 SET_Color3ubv(dest, _mesa_Color3ubv);
1582 SET_Color4bv(dest, _mesa_Color4bv);
1583 SET_Color4dv(dest, _mesa_Color4dv);
1584 SET_Color4iv(dest, _mesa_Color4iv);
1585 SET_Color4sv(dest, _mesa_Color4sv);
1586 SET_Color4uiv(dest, _mesa_Color4uiv);
1587 SET_Color4usv(dest, _mesa_Color4usv);
1588 SET_Color4ubv(dest, _mesa_Color4ubv);
1589
1590 SET_SecondaryColor3b(dest, _mesa_SecondaryColor3b);
1591 SET_SecondaryColor3d(dest, _mesa_SecondaryColor3d);
1592 SET_SecondaryColor3i(dest, _mesa_SecondaryColor3i);
1593 SET_SecondaryColor3s(dest, _mesa_SecondaryColor3s);
1594 SET_SecondaryColor3ui(dest, _mesa_SecondaryColor3ui);
1595 SET_SecondaryColor3us(dest, _mesa_SecondaryColor3us);
1596 SET_SecondaryColor3ub(dest, _mesa_SecondaryColor3ub);
1597 SET_SecondaryColor3bv(dest, _mesa_SecondaryColor3bv);
1598 SET_SecondaryColor3dv(dest, _mesa_SecondaryColor3dv);
1599 SET_SecondaryColor3iv(dest, _mesa_SecondaryColor3iv);
1600 SET_SecondaryColor3sv(dest, _mesa_SecondaryColor3sv);
1601 SET_SecondaryColor3uiv(dest, _mesa_SecondaryColor3uiv);
1602 SET_SecondaryColor3usv(dest, _mesa_SecondaryColor3usv);
1603 SET_SecondaryColor3ubv(dest, _mesa_SecondaryColor3ubv);
1604
1605 SET_EdgeFlagv(dest, _mesa_EdgeFlagv);
1606
1607 SET_Indexd(dest, _mesa_Indexd);
1608 SET_Indexi(dest, _mesa_Indexi);
1609 SET_Indexs(dest, _mesa_Indexs);
1610 SET_Indexub(dest, _mesa_Indexub);
1611 SET_Indexdv(dest, _mesa_Indexdv);
1612 SET_Indexiv(dest, _mesa_Indexiv);
1613 SET_Indexsv(dest, _mesa_Indexsv);
1614 SET_Indexubv(dest, _mesa_Indexubv);
1615 SET_Normal3b(dest, _mesa_Normal3b);
1616 SET_Normal3d(dest, _mesa_Normal3d);
1617 SET_Normal3i(dest, _mesa_Normal3i);
1618 SET_Normal3s(dest, _mesa_Normal3s);
1619 SET_Normal3bv(dest, _mesa_Normal3bv);
1620 SET_Normal3dv(dest, _mesa_Normal3dv);
1621 SET_Normal3iv(dest, _mesa_Normal3iv);
1622 SET_Normal3sv(dest, _mesa_Normal3sv);
1623 SET_TexCoord1d(dest, _mesa_TexCoord1d);
1624 SET_TexCoord1i(dest, _mesa_TexCoord1i);
1625 SET_TexCoord1s(dest, _mesa_TexCoord1s);
1626 SET_TexCoord2d(dest, _mesa_TexCoord2d);
1627 SET_TexCoord2s(dest, _mesa_TexCoord2s);
1628 SET_TexCoord2i(dest, _mesa_TexCoord2i);
1629 SET_TexCoord3d(dest, _mesa_TexCoord3d);
1630 SET_TexCoord3i(dest, _mesa_TexCoord3i);
1631 SET_TexCoord3s(dest, _mesa_TexCoord3s);
1632 SET_TexCoord4d(dest, _mesa_TexCoord4d);
1633 SET_TexCoord4i(dest, _mesa_TexCoord4i);
1634 SET_TexCoord4s(dest, _mesa_TexCoord4s);
1635 SET_TexCoord1dv(dest, _mesa_TexCoord1dv);
1636 SET_TexCoord1iv(dest, _mesa_TexCoord1iv);
1637 SET_TexCoord1sv(dest, _mesa_TexCoord1sv);
1638 SET_TexCoord2dv(dest, _mesa_TexCoord2dv);
1639 SET_TexCoord2iv(dest, _mesa_TexCoord2iv);
1640 SET_TexCoord2sv(dest, _mesa_TexCoord2sv);
1641 SET_TexCoord3dv(dest, _mesa_TexCoord3dv);
1642 SET_TexCoord3iv(dest, _mesa_TexCoord3iv);
1643 SET_TexCoord3sv(dest, _mesa_TexCoord3sv);
1644 SET_TexCoord4dv(dest, _mesa_TexCoord4dv);
1645 SET_TexCoord4iv(dest, _mesa_TexCoord4iv);
1646 SET_TexCoord4sv(dest, _mesa_TexCoord4sv);
1647 SET_Vertex2d(dest, _mesa_Vertex2d);
1648 SET_Vertex2i(dest, _mesa_Vertex2i);
1649 SET_Vertex2s(dest, _mesa_Vertex2s);
1650 SET_Vertex3d(dest, _mesa_Vertex3d);
1651 SET_Vertex3i(dest, _mesa_Vertex3i);
1652 SET_Vertex3s(dest, _mesa_Vertex3s);
1653 SET_Vertex4d(dest, _mesa_Vertex4d);
1654 SET_Vertex4i(dest, _mesa_Vertex4i);
1655 SET_Vertex4s(dest, _mesa_Vertex4s);
1656 SET_Vertex2dv(dest, _mesa_Vertex2dv);
1657 SET_Vertex2iv(dest, _mesa_Vertex2iv);
1658 SET_Vertex2sv(dest, _mesa_Vertex2sv);
1659 SET_Vertex3dv(dest, _mesa_Vertex3dv);
1660 SET_Vertex3iv(dest, _mesa_Vertex3iv);
1661 SET_Vertex3sv(dest, _mesa_Vertex3sv);
1662 SET_Vertex4dv(dest, _mesa_Vertex4dv);
1663 SET_Vertex4iv(dest, _mesa_Vertex4iv);
1664 SET_Vertex4sv(dest, _mesa_Vertex4sv);
1665 SET_MultiTexCoord1d(dest, _mesa_MultiTexCoord1d);
1666 SET_MultiTexCoord1dv(dest, _mesa_MultiTexCoord1dv);
1667 SET_MultiTexCoord1i(dest, _mesa_MultiTexCoord1i);
1668 SET_MultiTexCoord1iv(dest, _mesa_MultiTexCoord1iv);
1669 SET_MultiTexCoord1s(dest, _mesa_MultiTexCoord1s);
1670 SET_MultiTexCoord1sv(dest, _mesa_MultiTexCoord1sv);
1671 SET_MultiTexCoord2d(dest, _mesa_MultiTexCoord2d);
1672 SET_MultiTexCoord2dv(dest, _mesa_MultiTexCoord2dv);
1673 SET_MultiTexCoord2i(dest, _mesa_MultiTexCoord2i);
1674 SET_MultiTexCoord2iv(dest, _mesa_MultiTexCoord2iv);
1675 SET_MultiTexCoord2s(dest, _mesa_MultiTexCoord2s);
1676 SET_MultiTexCoord2sv(dest, _mesa_MultiTexCoord2sv);
1677 SET_MultiTexCoord3d(dest, _mesa_MultiTexCoord3d);
1678 SET_MultiTexCoord3dv(dest, _mesa_MultiTexCoord3dv);
1679 SET_MultiTexCoord3i(dest, _mesa_MultiTexCoord3i);
1680 SET_MultiTexCoord3iv(dest, _mesa_MultiTexCoord3iv);
1681 SET_MultiTexCoord3s(dest, _mesa_MultiTexCoord3s);
1682 SET_MultiTexCoord3sv(dest, _mesa_MultiTexCoord3sv);
1683 SET_MultiTexCoord4d(dest, _mesa_MultiTexCoord4d);
1684 SET_MultiTexCoord4dv(dest, _mesa_MultiTexCoord4dv);
1685 SET_MultiTexCoord4i(dest, _mesa_MultiTexCoord4i);
1686 SET_MultiTexCoord4iv(dest, _mesa_MultiTexCoord4iv);
1687 SET_MultiTexCoord4s(dest, _mesa_MultiTexCoord4s);
1688 SET_MultiTexCoord4sv(dest, _mesa_MultiTexCoord4sv);
1689 SET_EvalCoord2dv(dest, _mesa_EvalCoord2dv);
1690 SET_EvalCoord2fv(dest, _mesa_EvalCoord2fv);
1691 SET_EvalCoord2d(dest, _mesa_EvalCoord2d);
1692 SET_EvalCoord1dv(dest, _mesa_EvalCoord1dv);
1693 SET_EvalCoord1fv(dest, _mesa_EvalCoord1fv);
1694 SET_EvalCoord1d(dest, _mesa_EvalCoord1d);
1695 SET_Materiali(dest, _mesa_Materiali);
1696 SET_Materialiv(dest, _mesa_Materialiv);
1697 SET_Rectd(dest, _mesa_Rectd);
1698 SET_Rectdv(dest, _mesa_Rectdv);
1699 SET_Rectfv(dest, _mesa_Rectfv);
1700 SET_Recti(dest, _mesa_Recti);
1701 SET_Rectiv(dest, _mesa_Rectiv);
1702 SET_Rects(dest, _mesa_Rects);
1703 SET_Rectsv(dest, _mesa_Rectsv);
1704 SET_FogCoordd(dest, _mesa_FogCoordd);
1705 SET_FogCoorddv(dest, _mesa_FogCoorddv);
1706 }
1707
1708 if (ctx->API == API_OPENGL_COMPAT) {
1709 SET_VertexAttrib1sNV(dest, _mesa_VertexAttrib1sNV);
1710 SET_VertexAttrib1dNV(dest, _mesa_VertexAttrib1dNV);
1711 SET_VertexAttrib2sNV(dest, _mesa_VertexAttrib2sNV);
1712 SET_VertexAttrib2dNV(dest, _mesa_VertexAttrib2dNV);
1713 SET_VertexAttrib3sNV(dest, _mesa_VertexAttrib3sNV);
1714 SET_VertexAttrib3dNV(dest, _mesa_VertexAttrib3dNV);
1715 SET_VertexAttrib4sNV(dest, _mesa_VertexAttrib4sNV);
1716 SET_VertexAttrib4dNV(dest, _mesa_VertexAttrib4dNV);
1717 SET_VertexAttrib4ubNV(dest, _mesa_VertexAttrib4ubNV);
1718 SET_VertexAttrib1svNV(dest, _mesa_VertexAttrib1svNV);
1719 SET_VertexAttrib1dvNV(dest, _mesa_VertexAttrib1dvNV);
1720 SET_VertexAttrib2svNV(dest, _mesa_VertexAttrib2svNV);
1721 SET_VertexAttrib2dvNV(dest, _mesa_VertexAttrib2dvNV);
1722 SET_VertexAttrib3svNV(dest, _mesa_VertexAttrib3svNV);
1723 SET_VertexAttrib3dvNV(dest, _mesa_VertexAttrib3dvNV);
1724 SET_VertexAttrib4svNV(dest, _mesa_VertexAttrib4svNV);
1725 SET_VertexAttrib4dvNV(dest, _mesa_VertexAttrib4dvNV);
1726 SET_VertexAttrib4ubvNV(dest, _mesa_VertexAttrib4ubvNV);
1727 SET_VertexAttribs1svNV(dest, _mesa_VertexAttribs1svNV);
1728 SET_VertexAttribs1fvNV(dest, _mesa_VertexAttribs1fvNV);
1729 SET_VertexAttribs1dvNV(dest, _mesa_VertexAttribs1dvNV);
1730 SET_VertexAttribs2svNV(dest, _mesa_VertexAttribs2svNV);
1731 SET_VertexAttribs2fvNV(dest, _mesa_VertexAttribs2fvNV);
1732 SET_VertexAttribs2dvNV(dest, _mesa_VertexAttribs2dvNV);
1733 SET_VertexAttribs3svNV(dest, _mesa_VertexAttribs3svNV);
1734 SET_VertexAttribs3fvNV(dest, _mesa_VertexAttribs3fvNV);
1735 SET_VertexAttribs3dvNV(dest, _mesa_VertexAttribs3dvNV);
1736 SET_VertexAttribs4svNV(dest, _mesa_VertexAttribs4svNV);
1737 SET_VertexAttribs4fvNV(dest, _mesa_VertexAttribs4fvNV);
1738 SET_VertexAttribs4dvNV(dest, _mesa_VertexAttribs4dvNV);
1739 SET_VertexAttribs4ubvNV(dest, _mesa_VertexAttribs4ubvNV);
1740 }
1741
1742 if (_mesa_is_desktop_gl(ctx)) {
1743 SET_VertexAttrib1s(dest, _mesa_VertexAttrib1s);
1744 SET_VertexAttrib1d(dest, _mesa_VertexAttrib1d);
1745 SET_VertexAttrib2s(dest, _mesa_VertexAttrib2s);
1746 SET_VertexAttrib2d(dest, _mesa_VertexAttrib2d);
1747 SET_VertexAttrib3s(dest, _mesa_VertexAttrib3s);
1748 SET_VertexAttrib3d(dest, _mesa_VertexAttrib3d);
1749 SET_VertexAttrib4s(dest, _mesa_VertexAttrib4s);
1750 SET_VertexAttrib4d(dest, _mesa_VertexAttrib4d);
1751 SET_VertexAttrib1sv(dest, _mesa_VertexAttrib1sv);
1752 SET_VertexAttrib1dv(dest, _mesa_VertexAttrib1dv);
1753 SET_VertexAttrib2sv(dest, _mesa_VertexAttrib2sv);
1754 SET_VertexAttrib2dv(dest, _mesa_VertexAttrib2dv);
1755 SET_VertexAttrib3sv(dest, _mesa_VertexAttrib3sv);
1756 SET_VertexAttrib3dv(dest, _mesa_VertexAttrib3dv);
1757 SET_VertexAttrib4sv(dest, _mesa_VertexAttrib4sv);
1758 SET_VertexAttrib4dv(dest, _mesa_VertexAttrib4dv);
1759 SET_VertexAttrib4Nub(dest, _mesa_VertexAttrib4Nub);
1760 SET_VertexAttrib4Nubv(dest, _mesa_VertexAttrib4Nubv);
1761 SET_VertexAttrib4bv(dest, _mesa_VertexAttrib4bv);
1762 SET_VertexAttrib4iv(dest, _mesa_VertexAttrib4iv);
1763 SET_VertexAttrib4ubv(dest, _mesa_VertexAttrib4ubv);
1764 SET_VertexAttrib4usv(dest, _mesa_VertexAttrib4usv);
1765 SET_VertexAttrib4uiv(dest, _mesa_VertexAttrib4uiv);
1766 SET_VertexAttrib4Nbv(dest, _mesa_VertexAttrib4Nbv);
1767 SET_VertexAttrib4Nsv(dest, _mesa_VertexAttrib4Nsv);
1768 SET_VertexAttrib4Nusv(dest, _mesa_VertexAttrib4Nusv);
1769 SET_VertexAttrib4Niv(dest, _mesa_VertexAttrib4Niv);
1770 SET_VertexAttrib4Nuiv(dest, _mesa_VertexAttrib4Nuiv);
1771
1772 /* GL_EXT_gpu_shader4, GL 3.0 */
1773 SET_VertexAttribI1iv(dest, _mesa_VertexAttribI1iv);
1774 SET_VertexAttribI1uiv(dest, _mesa_VertexAttribI1uiv);
1775 SET_VertexAttribI4bv(dest, _mesa_VertexAttribI4bv);
1776 SET_VertexAttribI4sv(dest, _mesa_VertexAttribI4sv);
1777 SET_VertexAttribI4ubv(dest, _mesa_VertexAttribI4ubv);
1778 SET_VertexAttribI4usv(dest, _mesa_VertexAttribI4usv);
1779 }
1780
1781 if (ctx->API == API_OPENGL_CORE) {
1782 /* GL 4.1 / GL_ARB_vertex_attrib_64bit */
1783 SET_VertexAttribL1d(dest, _mesa_VertexAttribL1d);
1784 SET_VertexAttribL2d(dest, _mesa_VertexAttribL2d);
1785 SET_VertexAttribL3d(dest, _mesa_VertexAttribL3d);
1786 SET_VertexAttribL4d(dest, _mesa_VertexAttribL4d);
1787
1788 SET_VertexAttribL1dv(dest, _mesa_VertexAttribL1dv);
1789 SET_VertexAttribL2dv(dest, _mesa_VertexAttribL2dv);
1790 SET_VertexAttribL3dv(dest, _mesa_VertexAttribL3dv);
1791 SET_VertexAttribL4dv(dest, _mesa_VertexAttribL4dv);
1792 }
1793 }