api_loopback.c revision e793a24d7ca6ca9b50a716563c8c2abe15c9d1b5
1/** 2 * \file api_loopback.c 3 * 4 * \author Keith Whitwell <keith@tungstengraphics.com> 5 */ 6 7/* 8 * Mesa 3-D graphics library 9 * Version: 6.3 10 * 11 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. 12 * 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: 19 * 20 * The above copyright notice and this permission notice shall be included 21 * in all copies or substantial portions of the Software. 22 * 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. 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 "glapi/glapitable.h" 38#include "glapi/glthread.h" 39#include "main/dispatch.h" 40 41/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc 42 * calls to a smaller set of driver-provided formats. Currently just 43 * go back to dispatch to find these (eg. call glNormal3f directly), 44 * hence 'loopback'. 45 * 46 * The driver must supply all of the remaining entry points, which are 47 * listed in dd.h. The easiest way for a driver to do this is to 48 * install the supplied software t&l module. 49 */ 50#define COLORF(r,g,b,a) CALL_Color4f(GET_DISPATCH(), (r,g,b,a)) 51#define VERTEX2(x,y) CALL_Vertex2f(GET_DISPATCH(), (x,y)) 52#define VERTEX3(x,y,z) CALL_Vertex3f(GET_DISPATCH(), (x,y,z)) 53#define VERTEX4(x,y,z,w) CALL_Vertex4f(GET_DISPATCH(), (x,y,z,w)) 54#define NORMAL(x,y,z) CALL_Normal3f(GET_DISPATCH(), (x,y,z)) 55#define TEXCOORD1(s) CALL_TexCoord1f(GET_DISPATCH(), (s)) 56#define TEXCOORD2(s,t) CALL_TexCoord2f(GET_DISPATCH(), (s,t)) 57#define TEXCOORD3(s,t,u) CALL_TexCoord3f(GET_DISPATCH(), (s,t,u)) 58#define TEXCOORD4(s,t,u,v) CALL_TexCoord4f(GET_DISPATCH(), (s,t,u,v)) 59#define INDEX(c) CALL_Indexf(GET_DISPATCH(), (c)) 60#define MULTI_TEXCOORD1(z,s) CALL_MultiTexCoord1fARB(GET_DISPATCH(), (z,s)) 61#define MULTI_TEXCOORD2(z,s,t) CALL_MultiTexCoord2fARB(GET_DISPATCH(), (z,s,t)) 62#define MULTI_TEXCOORD3(z,s,t,u) CALL_MultiTexCoord3fARB(GET_DISPATCH(), (z,s,t,u)) 63#define MULTI_TEXCOORD4(z,s,t,u,v) CALL_MultiTexCoord4fARB(GET_DISPATCH(), (z,s,t,u,v)) 64#define EVALCOORD1(x) CALL_EvalCoord1f(GET_DISPATCH(), (x)) 65#define EVALCOORD2(x,y) CALL_EvalCoord2f(GET_DISPATCH(), (x,y)) 66#define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c)) 67#define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d)) 68 69#define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x)) 70#define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y)) 71#define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z)) 72#define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w)) 73#define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x)) 74#define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y)) 75#define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z)) 76#define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w)) 77#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x)) 78#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c)) 79 80 81#if FEATURE_beginend 82 83 84static void GLAPIENTRY 85loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue ) 86{ 87 COLORF( BYTE_TO_FLOAT(red), 88 BYTE_TO_FLOAT(green), 89 BYTE_TO_FLOAT(blue), 90 1.0 ); 91} 92 93static void GLAPIENTRY 94loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue ) 95{ 96 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 ); 97} 98 99static void GLAPIENTRY 100loopback_Color3i_f( GLint red, GLint green, GLint blue ) 101{ 102 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), 103 INT_TO_FLOAT(blue), 1.0); 104} 105 106static void GLAPIENTRY 107loopback_Color3s_f( GLshort red, GLshort green, GLshort blue ) 108{ 109 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 110 SHORT_TO_FLOAT(blue), 1.0); 111} 112 113static void GLAPIENTRY 114loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue ) 115{ 116 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 117 UINT_TO_FLOAT(blue), 1.0 ); 118} 119 120static void GLAPIENTRY 121loopback_Color3us_f( GLushort red, GLushort green, GLushort blue ) 122{ 123 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 124 USHORT_TO_FLOAT(blue), 1.0 ); 125} 126 127static void GLAPIENTRY 128loopback_Color3ub_f( GLubyte red, GLubyte green, GLubyte blue ) 129{ 130 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 131 UBYTE_TO_FLOAT(blue), 1.0 ); 132} 133 134 135static void GLAPIENTRY 136loopback_Color3bv_f( const GLbyte *v ) 137{ 138 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 139 BYTE_TO_FLOAT(v[2]), 1.0 ); 140} 141 142static void GLAPIENTRY 143loopback_Color3dv_f( const GLdouble *v ) 144{ 145 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 ); 146} 147 148static void GLAPIENTRY 149loopback_Color3iv_f( const GLint *v ) 150{ 151 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 152 INT_TO_FLOAT(v[2]), 1.0 ); 153} 154 155static void GLAPIENTRY 156loopback_Color3sv_f( const GLshort *v ) 157{ 158 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 159 SHORT_TO_FLOAT(v[2]), 1.0 ); 160} 161 162static void GLAPIENTRY 163loopback_Color3uiv_f( const GLuint *v ) 164{ 165 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 166 UINT_TO_FLOAT(v[2]), 1.0 ); 167} 168 169static void GLAPIENTRY 170loopback_Color3usv_f( const GLushort *v ) 171{ 172 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 173 USHORT_TO_FLOAT(v[2]), 1.0 ); 174} 175 176static void GLAPIENTRY 177loopback_Color3ubv_f( const GLubyte *v ) 178{ 179 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 180 UBYTE_TO_FLOAT(v[2]), 1.0 ); 181} 182 183 184static void GLAPIENTRY 185loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue, 186 GLbyte alpha ) 187{ 188 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green), 189 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) ); 190} 191 192static void GLAPIENTRY 193loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue, 194 GLdouble alpha ) 195{ 196 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha ); 197} 198 199static void GLAPIENTRY 200loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha ) 201{ 202 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), 203 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) ); 204} 205 206static void GLAPIENTRY 207loopback_Color4s_f( GLshort red, GLshort green, GLshort blue, 208 GLshort alpha ) 209{ 210 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 211 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) ); 212} 213 214static void GLAPIENTRY 215loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha ) 216{ 217 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 218 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) ); 219} 220 221static void GLAPIENTRY 222loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha ) 223{ 224 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 225 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) ); 226} 227 228static void GLAPIENTRY 229loopback_Color4ub_f( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) 230{ 231 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 232 UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) ); 233} 234 235 236static void GLAPIENTRY 237loopback_Color4iv_f( const GLint *v ) 238{ 239 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 240 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) ); 241} 242 243 244static void GLAPIENTRY 245loopback_Color4bv_f( const GLbyte *v ) 246{ 247 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 248 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) ); 249} 250 251static void GLAPIENTRY 252loopback_Color4dv_f( const GLdouble *v ) 253{ 254 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] ); 255} 256 257 258static void GLAPIENTRY 259loopback_Color4sv_f( const GLshort *v) 260{ 261 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 262 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) ); 263} 264 265 266static void GLAPIENTRY 267loopback_Color4uiv_f( const GLuint *v) 268{ 269 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 270 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) ); 271} 272 273static void GLAPIENTRY 274loopback_Color4usv_f( const GLushort *v) 275{ 276 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 277 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) ); 278} 279 280static void GLAPIENTRY 281loopback_Color4ubv_f( const GLubyte *v) 282{ 283 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 284 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) ); 285} 286 287 288static void GLAPIENTRY 289loopback_FogCoorddEXT( GLdouble d ) 290{ 291 FOGCOORDF( (GLfloat) d ); 292} 293 294static void GLAPIENTRY 295loopback_FogCoorddvEXT( const GLdouble *v ) 296{ 297 FOGCOORDF( (GLfloat) *v ); 298} 299 300 301static void GLAPIENTRY 302loopback_Indexd( GLdouble c ) 303{ 304 INDEX( (GLfloat) c ); 305} 306 307static void GLAPIENTRY 308loopback_Indexi( GLint c ) 309{ 310 INDEX( (GLfloat) c ); 311} 312 313static void GLAPIENTRY 314loopback_Indexs( GLshort c ) 315{ 316 INDEX( (GLfloat) c ); 317} 318 319static void GLAPIENTRY 320loopback_Indexub( GLubyte c ) 321{ 322 INDEX( (GLfloat) c ); 323} 324 325static void GLAPIENTRY 326loopback_Indexdv( const GLdouble *c ) 327{ 328 INDEX( (GLfloat) *c ); 329} 330 331static void GLAPIENTRY 332loopback_Indexiv( const GLint *c ) 333{ 334 INDEX( (GLfloat) *c ); 335} 336 337static void GLAPIENTRY 338loopback_Indexsv( const GLshort *c ) 339{ 340 INDEX( (GLfloat) *c ); 341} 342 343static void GLAPIENTRY 344loopback_Indexubv( const GLubyte *c ) 345{ 346 INDEX( (GLfloat) *c ); 347} 348 349 350static void GLAPIENTRY 351loopback_EdgeFlagv(const GLboolean *flag) 352{ 353 CALL_EdgeFlag(GET_DISPATCH(), (*flag)); 354} 355 356 357static void GLAPIENTRY 358loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz ) 359{ 360 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) ); 361} 362 363static void GLAPIENTRY 364loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz ) 365{ 366 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz); 367} 368 369static void GLAPIENTRY 370loopback_Normal3i( GLint nx, GLint ny, GLint nz ) 371{ 372 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) ); 373} 374 375static void GLAPIENTRY 376loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz ) 377{ 378 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) ); 379} 380 381static void GLAPIENTRY 382loopback_Normal3bv( const GLbyte *v ) 383{ 384 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) ); 385} 386 387static void GLAPIENTRY 388loopback_Normal3dv( const GLdouble *v ) 389{ 390 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 391} 392 393static void GLAPIENTRY 394loopback_Normal3iv( const GLint *v ) 395{ 396 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) ); 397} 398 399static void GLAPIENTRY 400loopback_Normal3sv( const GLshort *v ) 401{ 402 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) ); 403} 404 405static void GLAPIENTRY 406loopback_TexCoord1d( GLdouble s ) 407{ 408 TEXCOORD1((GLfloat) s); 409} 410 411static void GLAPIENTRY 412loopback_TexCoord1i( GLint s ) 413{ 414 TEXCOORD1((GLfloat) s); 415} 416 417static void GLAPIENTRY 418loopback_TexCoord1s( GLshort s ) 419{ 420 TEXCOORD1((GLfloat) s); 421} 422 423static void GLAPIENTRY 424loopback_TexCoord2d( GLdouble s, GLdouble t ) 425{ 426 TEXCOORD2((GLfloat) s,(GLfloat) t); 427} 428 429static void GLAPIENTRY 430loopback_TexCoord2s( GLshort s, GLshort t ) 431{ 432 TEXCOORD2((GLfloat) s,(GLfloat) t); 433} 434 435static void GLAPIENTRY 436loopback_TexCoord2i( GLint s, GLint t ) 437{ 438 TEXCOORD2((GLfloat) s,(GLfloat) t); 439} 440 441static void GLAPIENTRY 442loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r ) 443{ 444 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 445} 446 447static void GLAPIENTRY 448loopback_TexCoord3i( GLint s, GLint t, GLint r ) 449{ 450 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 451} 452 453static void GLAPIENTRY 454loopback_TexCoord3s( GLshort s, GLshort t, GLshort r ) 455{ 456 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 457} 458 459static void GLAPIENTRY 460loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) 461{ 462 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 463} 464 465static void GLAPIENTRY 466loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q ) 467{ 468 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 469} 470 471static void GLAPIENTRY 472loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) 473{ 474 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 475} 476 477static void GLAPIENTRY 478loopback_TexCoord1dv( const GLdouble *v ) 479{ 480 TEXCOORD1((GLfloat) v[0]); 481} 482 483static void GLAPIENTRY 484loopback_TexCoord1iv( const GLint *v ) 485{ 486 TEXCOORD1((GLfloat) v[0]); 487} 488 489static void GLAPIENTRY 490loopback_TexCoord1sv( const GLshort *v ) 491{ 492 TEXCOORD1((GLfloat) v[0]); 493} 494 495static void GLAPIENTRY 496loopback_TexCoord2dv( const GLdouble *v ) 497{ 498 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 499} 500 501static void GLAPIENTRY 502loopback_TexCoord2iv( const GLint *v ) 503{ 504 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 505} 506 507static void GLAPIENTRY 508loopback_TexCoord2sv( const GLshort *v ) 509{ 510 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 511} 512 513static void GLAPIENTRY 514loopback_TexCoord3dv( const GLdouble *v ) 515{ 516 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 517} 518 519static void GLAPIENTRY 520loopback_TexCoord3iv( const GLint *v ) 521{ 522 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 523} 524 525static void GLAPIENTRY 526loopback_TexCoord3sv( const GLshort *v ) 527{ 528 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 529} 530 531static void GLAPIENTRY 532loopback_TexCoord4dv( const GLdouble *v ) 533{ 534 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 535} 536 537static void GLAPIENTRY 538loopback_TexCoord4iv( const GLint *v ) 539{ 540 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 541} 542 543static void GLAPIENTRY 544loopback_TexCoord4sv( const GLshort *v ) 545{ 546 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 547} 548 549static void GLAPIENTRY 550loopback_Vertex2d( GLdouble x, GLdouble y ) 551{ 552 VERTEX2( (GLfloat) x, (GLfloat) y ); 553} 554 555static void GLAPIENTRY 556loopback_Vertex2i( GLint x, GLint y ) 557{ 558 VERTEX2( (GLfloat) x, (GLfloat) y ); 559} 560 561static void GLAPIENTRY 562loopback_Vertex2s( GLshort x, GLshort y ) 563{ 564 VERTEX2( (GLfloat) x, (GLfloat) y ); 565} 566 567static void GLAPIENTRY 568loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z ) 569{ 570 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 571} 572 573static void GLAPIENTRY 574loopback_Vertex3i( GLint x, GLint y, GLint z ) 575{ 576 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 577} 578 579static void GLAPIENTRY 580loopback_Vertex3s( GLshort x, GLshort y, GLshort z ) 581{ 582 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 583} 584 585static void GLAPIENTRY 586loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) 587{ 588 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 589} 590 591static void GLAPIENTRY 592loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w ) 593{ 594 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 595} 596 597static void GLAPIENTRY 598loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) 599{ 600 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 601} 602 603static void GLAPIENTRY 604loopback_Vertex2dv( const GLdouble *v ) 605{ 606 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 607} 608 609static void GLAPIENTRY 610loopback_Vertex2iv( const GLint *v ) 611{ 612 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 613} 614 615static void GLAPIENTRY 616loopback_Vertex2sv( const GLshort *v ) 617{ 618 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 619} 620 621static void GLAPIENTRY 622loopback_Vertex3dv( const GLdouble *v ) 623{ 624 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 625} 626 627static void GLAPIENTRY 628loopback_Vertex3iv( const GLint *v ) 629{ 630 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 631} 632 633static void GLAPIENTRY 634loopback_Vertex3sv( const GLshort *v ) 635{ 636 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 637} 638 639static void GLAPIENTRY 640loopback_Vertex4dv( const GLdouble *v ) 641{ 642 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 643 (GLfloat) v[2], (GLfloat) v[3] ); 644} 645 646static void GLAPIENTRY 647loopback_Vertex4iv( const GLint *v ) 648{ 649 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 650 (GLfloat) v[2], (GLfloat) v[3] ); 651} 652 653static void GLAPIENTRY 654loopback_Vertex4sv( const GLshort *v ) 655{ 656 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 657 (GLfloat) v[2], (GLfloat) v[3] ); 658} 659 660static void GLAPIENTRY 661loopback_MultiTexCoord1dARB(GLenum target, GLdouble s) 662{ 663 MULTI_TEXCOORD1( target, (GLfloat) s ); 664} 665 666static void GLAPIENTRY 667loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v) 668{ 669 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 670} 671 672static void GLAPIENTRY 673loopback_MultiTexCoord1iARB(GLenum target, GLint s) 674{ 675 MULTI_TEXCOORD1( target, (GLfloat) s ); 676} 677 678static void GLAPIENTRY 679loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v) 680{ 681 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 682} 683 684static void GLAPIENTRY 685loopback_MultiTexCoord1sARB(GLenum target, GLshort s) 686{ 687 MULTI_TEXCOORD1( target, (GLfloat) s ); 688} 689 690static void GLAPIENTRY 691loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v) 692{ 693 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 694} 695 696static void GLAPIENTRY 697loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) 698{ 699 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 700} 701 702static void GLAPIENTRY 703loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v) 704{ 705 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 706} 707 708static void GLAPIENTRY 709loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t) 710{ 711 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 712} 713 714static void GLAPIENTRY 715loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v) 716{ 717 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 718} 719 720static void GLAPIENTRY 721loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) 722{ 723 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 724} 725 726static void GLAPIENTRY 727loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v) 728{ 729 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 730} 731 732static void GLAPIENTRY 733loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) 734{ 735 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 736} 737 738static void GLAPIENTRY 739loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v) 740{ 741 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 742} 743 744static void GLAPIENTRY 745loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) 746{ 747 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 748} 749 750static void GLAPIENTRY 751loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v) 752{ 753 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 754} 755 756static void GLAPIENTRY 757loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) 758{ 759 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 760} 761 762static void GLAPIENTRY 763loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v) 764{ 765 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 766} 767 768static void GLAPIENTRY 769loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) 770{ 771 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 772 (GLfloat) r, (GLfloat) q ); 773} 774 775static void GLAPIENTRY 776loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v) 777{ 778 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 779 (GLfloat) v[2], (GLfloat) v[3] ); 780} 781 782static void GLAPIENTRY 783loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) 784{ 785 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 786 (GLfloat) r, (GLfloat) q ); 787} 788 789static void GLAPIENTRY 790loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v) 791{ 792 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 793 (GLfloat) v[2], (GLfloat) v[3] ); 794} 795 796static void GLAPIENTRY 797loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) 798{ 799 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 800 (GLfloat) r, (GLfloat) q ); 801} 802 803static void GLAPIENTRY 804loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v) 805{ 806 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 807 (GLfloat) v[2], (GLfloat) v[3] ); 808} 809 810static void GLAPIENTRY 811loopback_EvalCoord2dv( const GLdouble *u ) 812{ 813 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] ); 814} 815 816static void GLAPIENTRY 817loopback_EvalCoord2fv( const GLfloat *u ) 818{ 819 EVALCOORD2( u[0], u[1] ); 820} 821 822static void GLAPIENTRY 823loopback_EvalCoord2d( GLdouble u, GLdouble v ) 824{ 825 EVALCOORD2( (GLfloat) u, (GLfloat) v ); 826} 827 828static void GLAPIENTRY 829loopback_EvalCoord1dv( const GLdouble *u ) 830{ 831 EVALCOORD1( (GLfloat) *u ); 832} 833 834static void GLAPIENTRY 835loopback_EvalCoord1fv( const GLfloat *u ) 836{ 837 EVALCOORD1( (GLfloat) *u ); 838} 839 840static void GLAPIENTRY 841loopback_EvalCoord1d( GLdouble u ) 842{ 843 EVALCOORD1( (GLfloat) u ); 844} 845 846static void GLAPIENTRY 847loopback_Materialf( GLenum face, GLenum pname, GLfloat param ) 848{ 849 GLfloat fparam[4]; 850 fparam[0] = param; 851 MATERIALFV( face, pname, fparam ); 852} 853 854static void GLAPIENTRY 855loopback_Materiali(GLenum face, GLenum pname, GLint param ) 856{ 857 GLfloat p = (GLfloat) param; 858 MATERIALFV(face, pname, &p); 859} 860 861static void GLAPIENTRY 862loopback_Materialiv(GLenum face, GLenum pname, const GLint *params ) 863{ 864 GLfloat fparam[4]; 865 switch (pname) { 866 case GL_AMBIENT: 867 case GL_DIFFUSE: 868 case GL_SPECULAR: 869 case GL_EMISSION: 870 case GL_AMBIENT_AND_DIFFUSE: 871 fparam[0] = INT_TO_FLOAT( params[0] ); 872 fparam[1] = INT_TO_FLOAT( params[1] ); 873 fparam[2] = INT_TO_FLOAT( params[2] ); 874 fparam[3] = INT_TO_FLOAT( params[3] ); 875 break; 876 case GL_SHININESS: 877 fparam[0] = (GLfloat) params[0]; 878 break; 879 case GL_COLOR_INDEXES: 880 fparam[0] = (GLfloat) params[0]; 881 fparam[1] = (GLfloat) params[1]; 882 fparam[2] = (GLfloat) params[2]; 883 break; 884 default: 885 ; 886 } 887 MATERIALFV(face, pname, fparam); 888} 889 890 891static void GLAPIENTRY 892loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) 893{ 894 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 895} 896 897static void GLAPIENTRY 898loopback_Rectdv(const GLdouble *v1, const GLdouble *v2) 899{ 900 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 901} 902 903static void GLAPIENTRY 904loopback_Rectfv(const GLfloat *v1, const GLfloat *v2) 905{ 906 RECTF(v1[0], v1[1], v2[0], v2[1]); 907} 908 909static void GLAPIENTRY 910loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2) 911{ 912 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 913} 914 915static void GLAPIENTRY 916loopback_Rectiv(const GLint *v1, const GLint *v2) 917{ 918 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 919} 920 921static void GLAPIENTRY 922loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) 923{ 924 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 925} 926 927static void GLAPIENTRY 928loopback_Rectsv(const GLshort *v1, const GLshort *v2) 929{ 930 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 931} 932 933static void GLAPIENTRY 934loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue ) 935{ 936 SECONDARYCOLORF( BYTE_TO_FLOAT(red), 937 BYTE_TO_FLOAT(green), 938 BYTE_TO_FLOAT(blue) ); 939} 940 941static void GLAPIENTRY 942loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue ) 943{ 944 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue ); 945} 946 947static void GLAPIENTRY 948loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue ) 949{ 950 SECONDARYCOLORF( INT_TO_FLOAT(red), 951 INT_TO_FLOAT(green), 952 INT_TO_FLOAT(blue)); 953} 954 955static void GLAPIENTRY 956loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue ) 957{ 958 SECONDARYCOLORF(SHORT_TO_FLOAT(red), 959 SHORT_TO_FLOAT(green), 960 SHORT_TO_FLOAT(blue)); 961} 962 963static void GLAPIENTRY 964loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue ) 965{ 966 SECONDARYCOLORF(UINT_TO_FLOAT(red), 967 UINT_TO_FLOAT(green), 968 UINT_TO_FLOAT(blue)); 969} 970 971static void GLAPIENTRY 972loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue ) 973{ 974 SECONDARYCOLORF(USHORT_TO_FLOAT(red), 975 USHORT_TO_FLOAT(green), 976 USHORT_TO_FLOAT(blue)); 977} 978 979static void GLAPIENTRY 980loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue ) 981{ 982 SECONDARYCOLORF(UBYTE_TO_FLOAT(red), 983 UBYTE_TO_FLOAT(green), 984 UBYTE_TO_FLOAT(blue)); 985} 986 987static void GLAPIENTRY 988loopback_SecondaryColor3bvEXT_f( const GLbyte *v ) 989{ 990 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]), 991 BYTE_TO_FLOAT(v[1]), 992 BYTE_TO_FLOAT(v[2])); 993} 994 995static void GLAPIENTRY 996loopback_SecondaryColor3dvEXT_f( const GLdouble *v ) 997{ 998 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 999} 1000static void GLAPIENTRY 1001loopback_SecondaryColor3ivEXT_f( const GLint *v ) 1002{ 1003 SECONDARYCOLORF(INT_TO_FLOAT(v[0]), 1004 INT_TO_FLOAT(v[1]), 1005 INT_TO_FLOAT(v[2])); 1006} 1007 1008static void GLAPIENTRY 1009loopback_SecondaryColor3svEXT_f( const GLshort *v ) 1010{ 1011 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]), 1012 SHORT_TO_FLOAT(v[1]), 1013 SHORT_TO_FLOAT(v[2])); 1014} 1015 1016static void GLAPIENTRY 1017loopback_SecondaryColor3uivEXT_f( const GLuint *v ) 1018{ 1019 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]), 1020 UINT_TO_FLOAT(v[1]), 1021 UINT_TO_FLOAT(v[2])); 1022} 1023 1024static void GLAPIENTRY 1025loopback_SecondaryColor3usvEXT_f( const GLushort *v ) 1026{ 1027 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]), 1028 USHORT_TO_FLOAT(v[1]), 1029 USHORT_TO_FLOAT(v[2])); 1030} 1031 1032static void GLAPIENTRY 1033loopback_SecondaryColor3ubvEXT_f( const GLubyte *v ) 1034{ 1035 SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]), 1036 UBYTE_TO_FLOAT(v[1]), 1037 UBYTE_TO_FLOAT(v[2])); 1038} 1039 1040 1041/* 1042 * GL_NV_vertex_program: 1043 * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions. 1044 */ 1045 1046static void GLAPIENTRY 1047loopback_VertexAttrib1sNV(GLuint index, GLshort x) 1048{ 1049 ATTRIB1NV(index, (GLfloat) x); 1050} 1051 1052static void GLAPIENTRY 1053loopback_VertexAttrib1dNV(GLuint index, GLdouble x) 1054{ 1055 ATTRIB1NV(index, (GLfloat) x); 1056} 1057 1058static void GLAPIENTRY 1059loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y) 1060{ 1061 ATTRIB2NV(index, (GLfloat) x, y); 1062} 1063 1064static void GLAPIENTRY 1065loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) 1066{ 1067 ATTRIB2NV(index, (GLfloat) x, (GLfloat) y); 1068} 1069 1070static void GLAPIENTRY 1071loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) 1072{ 1073 ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1074} 1075 1076static void GLAPIENTRY 1077loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) 1078{ 1079 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 1080} 1081 1082static void GLAPIENTRY 1083loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) 1084{ 1085 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1086} 1087 1088static void GLAPIENTRY 1089loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1090{ 1091 ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1092} 1093 1094static void GLAPIENTRY 1095loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) 1096{ 1097 ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), 1098 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1099} 1100 1101static void GLAPIENTRY 1102loopback_VertexAttrib1svNV(GLuint index, const GLshort *v) 1103{ 1104 ATTRIB1NV(index, (GLfloat) v[0]); 1105} 1106 1107static void GLAPIENTRY 1108loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v) 1109{ 1110 ATTRIB1NV(index, (GLfloat) v[0]); 1111} 1112 1113static void GLAPIENTRY 1114loopback_VertexAttrib2svNV(GLuint index, const GLshort *v) 1115{ 1116 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]); 1117} 1118 1119static void GLAPIENTRY 1120loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v) 1121{ 1122 ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]); 1123} 1124 1125static void GLAPIENTRY 1126loopback_VertexAttrib3svNV(GLuint index, const GLshort *v) 1127{ 1128 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1129} 1130 1131static void GLAPIENTRY 1132loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v) 1133{ 1134 ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1135} 1136 1137static void GLAPIENTRY 1138loopback_VertexAttrib4svNV(GLuint index, const GLshort *v) 1139{ 1140 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1141 (GLfloat)v[3]); 1142} 1143 1144static void GLAPIENTRY 1145loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v) 1146{ 1147 ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1148} 1149 1150static void GLAPIENTRY 1151loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v) 1152{ 1153 ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 1154 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1155} 1156 1157 1158static void GLAPIENTRY 1159loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v) 1160{ 1161 GLint i; 1162 for (i = n - 1; i >= 0; i--) 1163 loopback_VertexAttrib1svNV(index + i, v + i); 1164} 1165 1166static void GLAPIENTRY 1167loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v) 1168{ 1169 GLint i; 1170 for (i = n - 1; i >= 0; i--) 1171 ATTRIB1NV(index + i, v[i]); 1172} 1173 1174static void GLAPIENTRY 1175loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v) 1176{ 1177 GLint i; 1178 for (i = n - 1; i >= 0; i--) 1179 loopback_VertexAttrib1dvNV(index + i, v + i); 1180} 1181 1182static void GLAPIENTRY 1183loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v) 1184{ 1185 GLint i; 1186 for (i = n - 1; i >= 0; i--) 1187 loopback_VertexAttrib2svNV(index + i, v + 2 * i); 1188} 1189 1190static void GLAPIENTRY 1191loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v) 1192{ 1193 GLint i; 1194 for (i = n - 1; i >= 0; i--) 1195 ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]); 1196} 1197 1198static void GLAPIENTRY 1199loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v) 1200{ 1201 GLint i; 1202 for (i = n - 1; i >= 0; i--) 1203 loopback_VertexAttrib2dvNV(index + i, v + 2 * i); 1204} 1205 1206static void GLAPIENTRY 1207loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v) 1208{ 1209 GLint i; 1210 for (i = n - 1; i >= 0; i--) 1211 loopback_VertexAttrib3svNV(index + i, v + 3 * i); 1212} 1213 1214static void GLAPIENTRY 1215loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v) 1216{ 1217 GLint i; 1218 for (i = n - 1; i >= 0; i--) 1219 ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]); 1220} 1221 1222static void GLAPIENTRY 1223loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v) 1224{ 1225 GLint i; 1226 for (i = n - 1; i >= 0; i--) 1227 loopback_VertexAttrib3dvNV(index + i, v + 3 * i); 1228} 1229 1230static void GLAPIENTRY 1231loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v) 1232{ 1233 GLint i; 1234 for (i = n - 1; i >= 0; i--) 1235 loopback_VertexAttrib4svNV(index + i, v + 4 * i); 1236} 1237 1238static void GLAPIENTRY 1239loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v) 1240{ 1241 GLint i; 1242 for (i = n - 1; i >= 0; i--) 1243 ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]); 1244} 1245 1246static void GLAPIENTRY 1247loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v) 1248{ 1249 GLint i; 1250 for (i = n - 1; i >= 0; i--) 1251 loopback_VertexAttrib4dvNV(index + i, v + 4 * i); 1252} 1253 1254static void GLAPIENTRY 1255loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v) 1256{ 1257 GLint i; 1258 for (i = n - 1; i >= 0; i--) 1259 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i); 1260} 1261 1262 1263/* 1264 * GL_ARB_vertex_program 1265 * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions. 1266 */ 1267 1268static void GLAPIENTRY 1269loopback_VertexAttrib1sARB(GLuint index, GLshort x) 1270{ 1271 ATTRIB1ARB(index, (GLfloat) x); 1272} 1273 1274static void GLAPIENTRY 1275loopback_VertexAttrib1dARB(GLuint index, GLdouble x) 1276{ 1277 ATTRIB1ARB(index, (GLfloat) x); 1278} 1279 1280static void GLAPIENTRY 1281loopback_VertexAttrib2sARB(GLuint index, GLshort x, GLshort y) 1282{ 1283 ATTRIB2ARB(index, (GLfloat) x, y); 1284} 1285 1286static void GLAPIENTRY 1287loopback_VertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y) 1288{ 1289 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y); 1290} 1291 1292static void GLAPIENTRY 1293loopback_VertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z) 1294{ 1295 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1296} 1297 1298static void GLAPIENTRY 1299loopback_VertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z) 1300{ 1301 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 1302} 1303 1304static void GLAPIENTRY 1305loopback_VertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) 1306{ 1307 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1308} 1309 1310static void GLAPIENTRY 1311loopback_VertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1312{ 1313 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1314} 1315 1316static void GLAPIENTRY 1317loopback_VertexAttrib1svARB(GLuint index, const GLshort *v) 1318{ 1319 ATTRIB1ARB(index, (GLfloat) v[0]); 1320} 1321 1322static void GLAPIENTRY 1323loopback_VertexAttrib1dvARB(GLuint index, const GLdouble *v) 1324{ 1325 ATTRIB1ARB(index, (GLfloat) v[0]); 1326} 1327 1328static void GLAPIENTRY 1329loopback_VertexAttrib2svARB(GLuint index, const GLshort *v) 1330{ 1331 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); 1332} 1333 1334static void GLAPIENTRY 1335loopback_VertexAttrib2dvARB(GLuint index, const GLdouble *v) 1336{ 1337 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); 1338} 1339 1340static void GLAPIENTRY 1341loopback_VertexAttrib3svARB(GLuint index, const GLshort *v) 1342{ 1343 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1344} 1345 1346static void GLAPIENTRY 1347loopback_VertexAttrib3dvARB(GLuint index, const GLdouble *v) 1348{ 1349 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1350} 1351 1352static void GLAPIENTRY 1353loopback_VertexAttrib4svARB(GLuint index, const GLshort *v) 1354{ 1355 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1356 (GLfloat)v[3]); 1357} 1358 1359static void GLAPIENTRY 1360loopback_VertexAttrib4dvARB(GLuint index, const GLdouble *v) 1361{ 1362 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1363} 1364 1365static void GLAPIENTRY 1366loopback_VertexAttrib4bvARB(GLuint index, const GLbyte * v) 1367{ 1368 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1369} 1370 1371static void GLAPIENTRY 1372loopback_VertexAttrib4ivARB(GLuint index, const GLint * v) 1373{ 1374 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1375} 1376 1377static void GLAPIENTRY 1378loopback_VertexAttrib4ubvARB(GLuint index, const GLubyte * v) 1379{ 1380 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1381} 1382 1383static void GLAPIENTRY 1384loopback_VertexAttrib4usvARB(GLuint index, const GLushort * v) 1385{ 1386 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1387} 1388 1389static void GLAPIENTRY 1390loopback_VertexAttrib4uivARB(GLuint index, const GLuint * v) 1391{ 1392 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1393} 1394 1395static void GLAPIENTRY 1396loopback_VertexAttrib4NbvARB(GLuint index, const GLbyte * v) 1397{ 1398 ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 1399 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3])); 1400} 1401 1402static void GLAPIENTRY 1403loopback_VertexAttrib4NsvARB(GLuint index, const GLshort * v) 1404{ 1405 ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 1406 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3])); 1407} 1408 1409static void GLAPIENTRY 1410loopback_VertexAttrib4NivARB(GLuint index, const GLint * v) 1411{ 1412 ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 1413 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3])); 1414} 1415 1416static void GLAPIENTRY 1417loopback_VertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) 1418{ 1419 ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), 1420 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1421} 1422 1423static void GLAPIENTRY 1424loopback_VertexAttrib4NubvARB(GLuint index, const GLubyte * v) 1425{ 1426 ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 1427 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1428} 1429 1430static void GLAPIENTRY 1431loopback_VertexAttrib4NusvARB(GLuint index, const GLushort * v) 1432{ 1433 ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 1434 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3])); 1435} 1436 1437static void GLAPIENTRY 1438loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v) 1439{ 1440 ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 1441 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3])); 1442} 1443 1444 1445 1446/** GL 3.0 Integer-valued attributes **/ 1447 1448static void GLAPIENTRY 1449loopback_VertexAttribI1i(GLuint index, GLint x) 1450{ 1451 ATTRIB1ARB(index, (GLfloat) x); 1452} 1453 1454static void GLAPIENTRY 1455loopback_VertexAttribI2i(GLuint index, GLint x, GLint y) 1456{ 1457 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y); 1458} 1459 1460static void GLAPIENTRY 1461loopback_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) 1462{ 1463 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1464} 1465 1466static void GLAPIENTRY 1467loopback_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) 1468{ 1469 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1470} 1471 1472static void GLAPIENTRY 1473loopback_VertexAttribI1ui(GLuint index, GLuint x) 1474{ 1475 ATTRIB1ARB(index, (GLfloat) x); 1476} 1477 1478static void GLAPIENTRY 1479loopback_VertexAttribI2ui(GLuint index, GLuint x, GLuint y) 1480{ 1481 ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y); 1482} 1483 1484static void GLAPIENTRY 1485loopback_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) 1486{ 1487 ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); 1488} 1489 1490static void GLAPIENTRY 1491loopback_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) 1492{ 1493 ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1494} 1495 1496static void GLAPIENTRY 1497loopback_VertexAttribI1iv(GLuint index, const GLint *v) 1498{ 1499 ATTRIB1ARB(index, (GLfloat) v[0]); 1500} 1501 1502static void GLAPIENTRY 1503loopback_VertexAttribI2iv (GLuint index, const GLint *v) 1504{ 1505 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); 1506} 1507 1508static void GLAPIENTRY 1509loopback_VertexAttribI3iv(GLuint index, const GLint *v) 1510{ 1511 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1512} 1513 1514static void GLAPIENTRY 1515loopback_VertexAttribI4iv(GLuint index, const GLint *v) 1516{ 1517 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1518 (GLfloat) v[2], (GLfloat) v[3]); 1519} 1520 1521static void GLAPIENTRY 1522loopback_VertexAttribI1uiv(GLuint index, const GLuint *v) 1523{ 1524 ATTRIB1ARB(index, (GLfloat) v[0]); 1525} 1526 1527static void GLAPIENTRY 1528loopback_VertexAttribI2uiv(GLuint index, const GLuint *v) 1529{ 1530 ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]); 1531} 1532 1533static void GLAPIENTRY 1534loopback_VertexAttribI3uiv(GLuint index, const GLuint *v) 1535{ 1536 ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1537} 1538 1539static void GLAPIENTRY 1540loopback_VertexAttribI4uiv(GLuint index, const GLuint *v) 1541{ 1542 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1543 (GLfloat) v[2], (GLfloat) v[3]); 1544} 1545 1546static void GLAPIENTRY 1547loopback_VertexAttribI4bv(GLuint index, const GLbyte *v) 1548{ 1549 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1550 (GLfloat) v[2], (GLfloat) v[3]); 1551} 1552 1553static void GLAPIENTRY 1554loopback_VertexAttribI4sv(GLuint index, const GLshort *v) 1555{ 1556 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1557 (GLfloat) v[2], (GLfloat) v[3]); 1558} 1559 1560static void GLAPIENTRY 1561loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v) 1562{ 1563 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1564 (GLfloat) v[2], (GLfloat) v[3]); 1565} 1566 1567static void GLAPIENTRY 1568loopback_VertexAttribI4usv(GLuint index, const GLushort *v) 1569{ 1570 ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], 1571 (GLfloat) v[2], (GLfloat) v[3]); 1572} 1573 1574 1575 1576/* 1577 * This code never registers handlers for any of the entry points 1578 * listed in vtxfmt.h. 1579 */ 1580void 1581_mesa_loopback_init_api_table( struct _glapi_table *dest ) 1582{ 1583 SET_Color3b(dest, loopback_Color3b_f); 1584 SET_Color3d(dest, loopback_Color3d_f); 1585 SET_Color3i(dest, loopback_Color3i_f); 1586 SET_Color3s(dest, loopback_Color3s_f); 1587 SET_Color3ui(dest, loopback_Color3ui_f); 1588 SET_Color3us(dest, loopback_Color3us_f); 1589 SET_Color3ub(dest, loopback_Color3ub_f); 1590 SET_Color4b(dest, loopback_Color4b_f); 1591 SET_Color4d(dest, loopback_Color4d_f); 1592 SET_Color4i(dest, loopback_Color4i_f); 1593 SET_Color4s(dest, loopback_Color4s_f); 1594 SET_Color4ui(dest, loopback_Color4ui_f); 1595 SET_Color4us(dest, loopback_Color4us_f); 1596 SET_Color4ub(dest, loopback_Color4ub_f); 1597 SET_Color3bv(dest, loopback_Color3bv_f); 1598 SET_Color3dv(dest, loopback_Color3dv_f); 1599 SET_Color3iv(dest, loopback_Color3iv_f); 1600 SET_Color3sv(dest, loopback_Color3sv_f); 1601 SET_Color3uiv(dest, loopback_Color3uiv_f); 1602 SET_Color3usv(dest, loopback_Color3usv_f); 1603 SET_Color3ubv(dest, loopback_Color3ubv_f); 1604 SET_Color4bv(dest, loopback_Color4bv_f); 1605 SET_Color4dv(dest, loopback_Color4dv_f); 1606 SET_Color4iv(dest, loopback_Color4iv_f); 1607 SET_Color4sv(dest, loopback_Color4sv_f); 1608 SET_Color4uiv(dest, loopback_Color4uiv_f); 1609 SET_Color4usv(dest, loopback_Color4usv_f); 1610 SET_Color4ubv(dest, loopback_Color4ubv_f); 1611 1612 SET_SecondaryColor3bEXT(dest, loopback_SecondaryColor3bEXT_f); 1613 SET_SecondaryColor3dEXT(dest, loopback_SecondaryColor3dEXT_f); 1614 SET_SecondaryColor3iEXT(dest, loopback_SecondaryColor3iEXT_f); 1615 SET_SecondaryColor3sEXT(dest, loopback_SecondaryColor3sEXT_f); 1616 SET_SecondaryColor3uiEXT(dest, loopback_SecondaryColor3uiEXT_f); 1617 SET_SecondaryColor3usEXT(dest, loopback_SecondaryColor3usEXT_f); 1618 SET_SecondaryColor3ubEXT(dest, loopback_SecondaryColor3ubEXT_f); 1619 SET_SecondaryColor3bvEXT(dest, loopback_SecondaryColor3bvEXT_f); 1620 SET_SecondaryColor3dvEXT(dest, loopback_SecondaryColor3dvEXT_f); 1621 SET_SecondaryColor3ivEXT(dest, loopback_SecondaryColor3ivEXT_f); 1622 SET_SecondaryColor3svEXT(dest, loopback_SecondaryColor3svEXT_f); 1623 SET_SecondaryColor3uivEXT(dest, loopback_SecondaryColor3uivEXT_f); 1624 SET_SecondaryColor3usvEXT(dest, loopback_SecondaryColor3usvEXT_f); 1625 SET_SecondaryColor3ubvEXT(dest, loopback_SecondaryColor3ubvEXT_f); 1626 1627 SET_EdgeFlagv(dest, loopback_EdgeFlagv); 1628 1629 SET_Indexd(dest, loopback_Indexd); 1630 SET_Indexi(dest, loopback_Indexi); 1631 SET_Indexs(dest, loopback_Indexs); 1632 SET_Indexub(dest, loopback_Indexub); 1633 SET_Indexdv(dest, loopback_Indexdv); 1634 SET_Indexiv(dest, loopback_Indexiv); 1635 SET_Indexsv(dest, loopback_Indexsv); 1636 SET_Indexubv(dest, loopback_Indexubv); 1637 SET_Normal3b(dest, loopback_Normal3b); 1638 SET_Normal3d(dest, loopback_Normal3d); 1639 SET_Normal3i(dest, loopback_Normal3i); 1640 SET_Normal3s(dest, loopback_Normal3s); 1641 SET_Normal3bv(dest, loopback_Normal3bv); 1642 SET_Normal3dv(dest, loopback_Normal3dv); 1643 SET_Normal3iv(dest, loopback_Normal3iv); 1644 SET_Normal3sv(dest, loopback_Normal3sv); 1645 SET_TexCoord1d(dest, loopback_TexCoord1d); 1646 SET_TexCoord1i(dest, loopback_TexCoord1i); 1647 SET_TexCoord1s(dest, loopback_TexCoord1s); 1648 SET_TexCoord2d(dest, loopback_TexCoord2d); 1649 SET_TexCoord2s(dest, loopback_TexCoord2s); 1650 SET_TexCoord2i(dest, loopback_TexCoord2i); 1651 SET_TexCoord3d(dest, loopback_TexCoord3d); 1652 SET_TexCoord3i(dest, loopback_TexCoord3i); 1653 SET_TexCoord3s(dest, loopback_TexCoord3s); 1654 SET_TexCoord4d(dest, loopback_TexCoord4d); 1655 SET_TexCoord4i(dest, loopback_TexCoord4i); 1656 SET_TexCoord4s(dest, loopback_TexCoord4s); 1657 SET_TexCoord1dv(dest, loopback_TexCoord1dv); 1658 SET_TexCoord1iv(dest, loopback_TexCoord1iv); 1659 SET_TexCoord1sv(dest, loopback_TexCoord1sv); 1660 SET_TexCoord2dv(dest, loopback_TexCoord2dv); 1661 SET_TexCoord2iv(dest, loopback_TexCoord2iv); 1662 SET_TexCoord2sv(dest, loopback_TexCoord2sv); 1663 SET_TexCoord3dv(dest, loopback_TexCoord3dv); 1664 SET_TexCoord3iv(dest, loopback_TexCoord3iv); 1665 SET_TexCoord3sv(dest, loopback_TexCoord3sv); 1666 SET_TexCoord4dv(dest, loopback_TexCoord4dv); 1667 SET_TexCoord4iv(dest, loopback_TexCoord4iv); 1668 SET_TexCoord4sv(dest, loopback_TexCoord4sv); 1669 SET_Vertex2d(dest, loopback_Vertex2d); 1670 SET_Vertex2i(dest, loopback_Vertex2i); 1671 SET_Vertex2s(dest, loopback_Vertex2s); 1672 SET_Vertex3d(dest, loopback_Vertex3d); 1673 SET_Vertex3i(dest, loopback_Vertex3i); 1674 SET_Vertex3s(dest, loopback_Vertex3s); 1675 SET_Vertex4d(dest, loopback_Vertex4d); 1676 SET_Vertex4i(dest, loopback_Vertex4i); 1677 SET_Vertex4s(dest, loopback_Vertex4s); 1678 SET_Vertex2dv(dest, loopback_Vertex2dv); 1679 SET_Vertex2iv(dest, loopback_Vertex2iv); 1680 SET_Vertex2sv(dest, loopback_Vertex2sv); 1681 SET_Vertex3dv(dest, loopback_Vertex3dv); 1682 SET_Vertex3iv(dest, loopback_Vertex3iv); 1683 SET_Vertex3sv(dest, loopback_Vertex3sv); 1684 SET_Vertex4dv(dest, loopback_Vertex4dv); 1685 SET_Vertex4iv(dest, loopback_Vertex4iv); 1686 SET_Vertex4sv(dest, loopback_Vertex4sv); 1687 SET_MultiTexCoord1dARB(dest, loopback_MultiTexCoord1dARB); 1688 SET_MultiTexCoord1dvARB(dest, loopback_MultiTexCoord1dvARB); 1689 SET_MultiTexCoord1iARB(dest, loopback_MultiTexCoord1iARB); 1690 SET_MultiTexCoord1ivARB(dest, loopback_MultiTexCoord1ivARB); 1691 SET_MultiTexCoord1sARB(dest, loopback_MultiTexCoord1sARB); 1692 SET_MultiTexCoord1svARB(dest, loopback_MultiTexCoord1svARB); 1693 SET_MultiTexCoord2dARB(dest, loopback_MultiTexCoord2dARB); 1694 SET_MultiTexCoord2dvARB(dest, loopback_MultiTexCoord2dvARB); 1695 SET_MultiTexCoord2iARB(dest, loopback_MultiTexCoord2iARB); 1696 SET_MultiTexCoord2ivARB(dest, loopback_MultiTexCoord2ivARB); 1697 SET_MultiTexCoord2sARB(dest, loopback_MultiTexCoord2sARB); 1698 SET_MultiTexCoord2svARB(dest, loopback_MultiTexCoord2svARB); 1699 SET_MultiTexCoord3dARB(dest, loopback_MultiTexCoord3dARB); 1700 SET_MultiTexCoord3dvARB(dest, loopback_MultiTexCoord3dvARB); 1701 SET_MultiTexCoord3iARB(dest, loopback_MultiTexCoord3iARB); 1702 SET_MultiTexCoord3ivARB(dest, loopback_MultiTexCoord3ivARB); 1703 SET_MultiTexCoord3sARB(dest, loopback_MultiTexCoord3sARB); 1704 SET_MultiTexCoord3svARB(dest, loopback_MultiTexCoord3svARB); 1705 SET_MultiTexCoord4dARB(dest, loopback_MultiTexCoord4dARB); 1706 SET_MultiTexCoord4dvARB(dest, loopback_MultiTexCoord4dvARB); 1707 SET_MultiTexCoord4iARB(dest, loopback_MultiTexCoord4iARB); 1708 SET_MultiTexCoord4ivARB(dest, loopback_MultiTexCoord4ivARB); 1709 SET_MultiTexCoord4sARB(dest, loopback_MultiTexCoord4sARB); 1710 SET_MultiTexCoord4svARB(dest, loopback_MultiTexCoord4svARB); 1711 SET_EvalCoord2dv(dest, loopback_EvalCoord2dv); 1712 SET_EvalCoord2fv(dest, loopback_EvalCoord2fv); 1713 SET_EvalCoord2d(dest, loopback_EvalCoord2d); 1714 SET_EvalCoord1dv(dest, loopback_EvalCoord1dv); 1715 SET_EvalCoord1fv(dest, loopback_EvalCoord1fv); 1716 SET_EvalCoord1d(dest, loopback_EvalCoord1d); 1717 SET_Materialf(dest, loopback_Materialf); 1718 SET_Materiali(dest, loopback_Materiali); 1719 SET_Materialiv(dest, loopback_Materialiv); 1720 SET_Rectd(dest, loopback_Rectd); 1721 SET_Rectdv(dest, loopback_Rectdv); 1722 SET_Rectfv(dest, loopback_Rectfv); 1723 SET_Recti(dest, loopback_Recti); 1724 SET_Rectiv(dest, loopback_Rectiv); 1725 SET_Rects(dest, loopback_Rects); 1726 SET_Rectsv(dest, loopback_Rectsv); 1727 SET_FogCoorddEXT(dest, loopback_FogCoorddEXT); 1728 SET_FogCoorddvEXT(dest, loopback_FogCoorddvEXT); 1729 1730 SET_VertexAttrib1sNV(dest, loopback_VertexAttrib1sNV); 1731 SET_VertexAttrib1dNV(dest, loopback_VertexAttrib1dNV); 1732 SET_VertexAttrib2sNV(dest, loopback_VertexAttrib2sNV); 1733 SET_VertexAttrib2dNV(dest, loopback_VertexAttrib2dNV); 1734 SET_VertexAttrib3sNV(dest, loopback_VertexAttrib3sNV); 1735 SET_VertexAttrib3dNV(dest, loopback_VertexAttrib3dNV); 1736 SET_VertexAttrib4sNV(dest, loopback_VertexAttrib4sNV); 1737 SET_VertexAttrib4dNV(dest, loopback_VertexAttrib4dNV); 1738 SET_VertexAttrib4ubNV(dest, loopback_VertexAttrib4ubNV); 1739 SET_VertexAttrib1svNV(dest, loopback_VertexAttrib1svNV); 1740 SET_VertexAttrib1dvNV(dest, loopback_VertexAttrib1dvNV); 1741 SET_VertexAttrib2svNV(dest, loopback_VertexAttrib2svNV); 1742 SET_VertexAttrib2dvNV(dest, loopback_VertexAttrib2dvNV); 1743 SET_VertexAttrib3svNV(dest, loopback_VertexAttrib3svNV); 1744 SET_VertexAttrib3dvNV(dest, loopback_VertexAttrib3dvNV); 1745 SET_VertexAttrib4svNV(dest, loopback_VertexAttrib4svNV); 1746 SET_VertexAttrib4dvNV(dest, loopback_VertexAttrib4dvNV); 1747 SET_VertexAttrib4ubvNV(dest, loopback_VertexAttrib4ubvNV); 1748 SET_VertexAttribs1svNV(dest, loopback_VertexAttribs1svNV); 1749 SET_VertexAttribs1fvNV(dest, loopback_VertexAttribs1fvNV); 1750 SET_VertexAttribs1dvNV(dest, loopback_VertexAttribs1dvNV); 1751 SET_VertexAttribs2svNV(dest, loopback_VertexAttribs2svNV); 1752 SET_VertexAttribs2fvNV(dest, loopback_VertexAttribs2fvNV); 1753 SET_VertexAttribs2dvNV(dest, loopback_VertexAttribs2dvNV); 1754 SET_VertexAttribs3svNV(dest, loopback_VertexAttribs3svNV); 1755 SET_VertexAttribs3fvNV(dest, loopback_VertexAttribs3fvNV); 1756 SET_VertexAttribs3dvNV(dest, loopback_VertexAttribs3dvNV); 1757 SET_VertexAttribs4svNV(dest, loopback_VertexAttribs4svNV); 1758 SET_VertexAttribs4fvNV(dest, loopback_VertexAttribs4fvNV); 1759 SET_VertexAttribs4dvNV(dest, loopback_VertexAttribs4dvNV); 1760 SET_VertexAttribs4ubvNV(dest, loopback_VertexAttribs4ubvNV); 1761 1762 SET_VertexAttrib1sARB(dest, loopback_VertexAttrib1sARB); 1763 SET_VertexAttrib1dARB(dest, loopback_VertexAttrib1dARB); 1764 SET_VertexAttrib2sARB(dest, loopback_VertexAttrib2sARB); 1765 SET_VertexAttrib2dARB(dest, loopback_VertexAttrib2dARB); 1766 SET_VertexAttrib3sARB(dest, loopback_VertexAttrib3sARB); 1767 SET_VertexAttrib3dARB(dest, loopback_VertexAttrib3dARB); 1768 SET_VertexAttrib4sARB(dest, loopback_VertexAttrib4sARB); 1769 SET_VertexAttrib4dARB(dest, loopback_VertexAttrib4dARB); 1770 SET_VertexAttrib1svARB(dest, loopback_VertexAttrib1svARB); 1771 SET_VertexAttrib1dvARB(dest, loopback_VertexAttrib1dvARB); 1772 SET_VertexAttrib2svARB(dest, loopback_VertexAttrib2svARB); 1773 SET_VertexAttrib2dvARB(dest, loopback_VertexAttrib2dvARB); 1774 SET_VertexAttrib3svARB(dest, loopback_VertexAttrib3svARB); 1775 SET_VertexAttrib3dvARB(dest, loopback_VertexAttrib3dvARB); 1776 SET_VertexAttrib4svARB(dest, loopback_VertexAttrib4svARB); 1777 SET_VertexAttrib4dvARB(dest, loopback_VertexAttrib4dvARB); 1778 SET_VertexAttrib4NubARB(dest, loopback_VertexAttrib4NubARB); 1779 SET_VertexAttrib4NubvARB(dest, loopback_VertexAttrib4NubvARB); 1780 SET_VertexAttrib4bvARB(dest, loopback_VertexAttrib4bvARB); 1781 SET_VertexAttrib4ivARB(dest, loopback_VertexAttrib4ivARB); 1782 SET_VertexAttrib4ubvARB(dest, loopback_VertexAttrib4ubvARB); 1783 SET_VertexAttrib4usvARB(dest, loopback_VertexAttrib4usvARB); 1784 SET_VertexAttrib4uivARB(dest, loopback_VertexAttrib4uivARB); 1785 SET_VertexAttrib4NbvARB(dest, loopback_VertexAttrib4NbvARB); 1786 SET_VertexAttrib4NsvARB(dest, loopback_VertexAttrib4NsvARB); 1787 SET_VertexAttrib4NivARB(dest, loopback_VertexAttrib4NivARB); 1788 SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB); 1789 SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB); 1790 1791 /* GL 3.0 */ 1792#if 0 1793 SET_VertexAttribI1i(dest, loopback_VertexAttribI1i); 1794 SET_VertexAttribI2i(dest, loopback_VertexAttribI2i); 1795 SET_VertexAttribI3i(dest, loopback_VertexAttribI3i); 1796 SET_VertexAttribI4i(dest, loopback_VertexAttribI4i); 1797 SET_VertexAttribI1ui(dest, loopback_VertexAttribI1ui); 1798 SET_VertexAttribI2ui(dest, loopback_VertexAttribI2ui); 1799 SET_VertexAttribI3ui(dest, loopback_VertexAttribI3ui); 1800 SET_VertexAttribI4ui(dest, loopback_VertexAttribI4ui); 1801 SET_VertexAttribI1iv(dest, loopback_VertexAttribI1iv); 1802 SET_VertexAttribI2iv(dest, loopback_VertexAttribI2iv); 1803 SET_VertexAttribI3iv(dest, loopback_VertexAttribI3iv); 1804 SET_VertexAttribI4iv(dest, loopback_VertexAttribI4iv); 1805 SET_VertexAttribI1uiv(dest, loopback_VertexAttribI1uiv); 1806 SET_VertexAttribI2uiv(dest, loopback_VertexAttribI2uiv); 1807 SET_VertexAttribI3uiv(dest, loopback_VertexAttribI3uiv); 1808 SET_VertexAttribI4uiv(dest, loopback_VertexAttribI4uiv); 1809 SET_VertexAttribI4bv(dest, loopback_VertexAttribI4bv); 1810 SET_VertexAttribI4sv(dest, loopback_VertexAttribI4sv); 1811 SET_VertexAttribI4ubv(dest, loopback_VertexAttribI4ubv); 1812 SET_VertexAttribI4usv(dest, loopback_VertexAttribI4usv); 1813#else 1814 (void) loopback_VertexAttribI1i; 1815 (void) loopback_VertexAttribI2i; 1816 (void) loopback_VertexAttribI3i; 1817 (void) loopback_VertexAttribI4i; 1818 (void) loopback_VertexAttribI1ui; 1819 (void) loopback_VertexAttribI2ui; 1820 (void) loopback_VertexAttribI3ui; 1821 (void) loopback_VertexAttribI4ui; 1822 (void) loopback_VertexAttribI1iv; 1823 (void) loopback_VertexAttribI2iv; 1824 (void) loopback_VertexAttribI3iv; 1825 (void) loopback_VertexAttribI4iv; 1826 (void) loopback_VertexAttribI1uiv; 1827 (void) loopback_VertexAttribI2uiv; 1828 (void) loopback_VertexAttribI3uiv; 1829 (void) loopback_VertexAttribI4uiv; 1830 (void) loopback_VertexAttribI4bv; 1831 (void) loopback_VertexAttribI4sv; 1832 (void) loopback_VertexAttribI4ubv; 1833 (void) loopback_VertexAttribI4usv; 1834#endif 1835} 1836 1837 1838#endif /* FEATURE_beginend */ 1839