api_loopback.c revision d6745697b625a6a5b7d6e3d7dd5f5510f96e277a
11e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins/** 21e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * \file api_loopback.c 31e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 41e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * \author Keith Whitwell <keith@tungstengraphics.com> 51e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins */ 61e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 71e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins/* 81e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * Mesa 3-D graphics library 91e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * Version: 5.1 101e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 111e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. 121e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 131e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * Permission is hereby granted, free of charge, to any person obtaining a 141e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * copy of this software and associated documentation files (the "Software"), 151e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * to deal in the Software without restriction, including without limitation 161e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * the rights to use, copy, modify, merge, publish, distribute, sublicense, 171e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * and/or sell copies of the Software, and to permit persons to whom the 181e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * Software is furnished to do so, subject to the following conditions: 191e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 201e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * The above copyright notice and this permission notice shall be included 211e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * in all copies or substantial portions of the Software. 221e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 231e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 241e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 251e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 261e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 271e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 281e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 291e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins */ 301e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 311e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 321e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "glheader.h" 331e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "glapi.h" 341e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "glapitable.h" 351e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "macros.h" 361e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "colormac.h" 371e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#include "api_loopback.h" 381e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 395149785eb7175a791acbd9859872e07439b968b6David Majnemer/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc 405149785eb7175a791acbd9859872e07439b968b6David Majnemer * calls to a smaller set of driver-provided formats. Currently just 415149785eb7175a791acbd9859872e07439b968b6David Majnemer * go back to dispatch to find these (eg. call glNormal3f directly), 421e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * hence 'loopback'. 431e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * 441e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * The driver must supply all of the remaining entry points, which are 451e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * listed in dd.h. The easiest way for a driver to do this is to 461e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * install the supplied software t&l module. 471e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins */ 481e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define COLORF(r,g,b,a) glColor4f(r,g,b,a) 491e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define VERTEX2(x,y) glVertex2f(x,y) 501e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define VERTEX3(x,y,z) glVertex3f(x,y,z) 511e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w) 521e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define NORMAL(x,y,z) glNormal3f(x,y,z) 531e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define TEXCOORD1(s) glTexCoord1f(s) 541e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define TEXCOORD2(s,t) glTexCoord2f(s,t) 551e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u) 561e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v) 571e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define INDEX(c) glIndexf(c) 581e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s) 591e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t) 605149785eb7175a791acbd9859872e07439b968b6David Majnemer#define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u) 615149785eb7175a791acbd9859872e07439b968b6David Majnemer#define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v) 625149785eb7175a791acbd9859872e07439b968b6David Majnemer#define EVALCOORD1(x) glEvalCoord1f(x) 631e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define EVALCOORD2(x,y) glEvalCoord2f(x,y) 641e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define MATERIALFV(a,b,c) glMaterialfv(a,b,c) 651e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define RECTF(a,b,c,d) glRectf(a,b,c,d) 661e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 671e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins/* Extension functions must be dereferenced through _glapi_Dispatch as 681e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins * not all libGL.so's will have all the uptodate entrypoints. 691e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins */ 701e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define ATTRIB1(index,x) _glapi_Dispatch->VertexAttrib1fNV(index,x) 711e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define ATTRIB2(index,x,y) _glapi_Dispatch->VertexAttrib2fNV(index,x,y) 721e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define ATTRIB3(index,x,y,z) _glapi_Dispatch->VertexAttrib3fNV(index,x,y,z) 731e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define ATTRIB4(index,x,y,z,w) _glapi_Dispatch->VertexAttrib4fNV(index,x,y,z,w) 741e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x) 751e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins#define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c) 761e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 771e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 781e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue ) 791e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 805149785eb7175a791acbd9859872e07439b968b6David Majnemer COLORF( BYTE_TO_FLOAT(red), 815149785eb7175a791acbd9859872e07439b968b6David Majnemer BYTE_TO_FLOAT(green), 825149785eb7175a791acbd9859872e07439b968b6David Majnemer BYTE_TO_FLOAT(blue), 831e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1.0 ); 841e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 851e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 861e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 871e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue ) 881e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 891e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 ); 901e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 911e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 921e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 931e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3i_f( GLint red, GLint green, GLint blue ) 941e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 951e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), 961e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins INT_TO_FLOAT(blue), 1.0); 971e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 981e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 991e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1005149785eb7175a791acbd9859872e07439b968b6David Majnemerloopback_Color3s_f( GLshort red, GLshort green, GLshort blue ) 1015149785eb7175a791acbd9859872e07439b968b6David Majnemer{ 1025149785eb7175a791acbd9859872e07439b968b6David Majnemer COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 1031e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins SHORT_TO_FLOAT(blue), 1.0); 1041e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1051e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1061e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1071e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3ui_f( GLuint red, GLuint green, GLuint blue ) 1081e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1091e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 1101e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins UINT_TO_FLOAT(blue), 1.0 ); 1111e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1121e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1131e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1141e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3us_f( GLushort red, GLushort green, GLushort blue ) 1151e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1161e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 1175149785eb7175a791acbd9859872e07439b968b6David Majnemer USHORT_TO_FLOAT(blue), 1.0 ); 1185149785eb7175a791acbd9859872e07439b968b6David Majnemer} 1195149785eb7175a791acbd9859872e07439b968b6David Majnemer 1201e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1211e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3ub_f( GLubyte red, GLubyte green, GLubyte blue ) 1221e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1231e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 1241e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins UBYTE_TO_FLOAT(blue), 1.0 ); 1251e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1261e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1271e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1281e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1291e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3bv_f( const GLbyte *v ) 1301e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1311e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 1321e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins BYTE_TO_FLOAT(v[2]), 1.0 ); 1335149785eb7175a791acbd9859872e07439b968b6David Majnemer} 1345149785eb7175a791acbd9859872e07439b968b6David Majnemer 1355149785eb7175a791acbd9859872e07439b968b6David Majnemerstatic void GLAPIENTRY 1361e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3dv_f( const GLdouble *v ) 1371e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1381e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 ); 1391e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1401e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1411e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1421e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsloopback_Color3iv_f( const GLint *v ) 1431e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins{ 1441e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 1451e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) ); 1461e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1471e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 1481e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkinsstatic void GLAPIENTRY 1495149785eb7175a791acbd9859872e07439b968b6David Majnemerloopback_Color3sv_f( const GLshort *v ) 1505149785eb7175a791acbd9859872e07439b968b6David Majnemer{ 1515149785eb7175a791acbd9859872e07439b968b6David Majnemer COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 1521e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins SHORT_TO_FLOAT(v[2]), 1.0 ); 1531e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins} 1541e67c90e2caceeff82d09793d1ef5fa0300d219bPeter Hawkins 155static void GLAPIENTRY 156loopback_Color3uiv_f( const GLuint *v ) 157{ 158 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 159 UINT_TO_FLOAT(v[2]), 1.0 ); 160} 161 162static void GLAPIENTRY 163loopback_Color3usv_f( const GLushort *v ) 164{ 165 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 166 USHORT_TO_FLOAT(v[2]), 1.0 ); 167} 168 169static void GLAPIENTRY 170loopback_Color3ubv_f( const GLubyte *v ) 171{ 172 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 173 UBYTE_TO_FLOAT(v[2]), 1.0 ); 174} 175 176 177static void GLAPIENTRY 178loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue, 179 GLbyte alpha ) 180{ 181 COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green), 182 BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) ); 183} 184 185static void GLAPIENTRY 186loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue, 187 GLdouble alpha ) 188{ 189 COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha ); 190} 191 192static void GLAPIENTRY 193loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha ) 194{ 195 COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), 196 INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) ); 197} 198 199static void GLAPIENTRY 200loopback_Color4s_f( GLshort red, GLshort green, GLshort blue, 201 GLshort alpha ) 202{ 203 COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), 204 SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) ); 205} 206 207static void GLAPIENTRY 208loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha ) 209{ 210 COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), 211 UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) ); 212} 213 214static void GLAPIENTRY 215loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha ) 216{ 217 COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), 218 USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) ); 219} 220 221static void GLAPIENTRY 222loopback_Color4ub_f( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) 223{ 224 COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green), 225 UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) ); 226} 227 228 229static void GLAPIENTRY 230loopback_Color4iv_f( const GLint *v ) 231{ 232 COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 233 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) ); 234} 235 236 237static void GLAPIENTRY 238loopback_Color4bv_f( const GLbyte *v ) 239{ 240 COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 241 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) ); 242} 243 244static void GLAPIENTRY 245loopback_Color4dv_f( const GLdouble *v ) 246{ 247 COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] ); 248} 249 250 251static void GLAPIENTRY 252loopback_Color4sv_f( const GLshort *v) 253{ 254 COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 255 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) ); 256} 257 258 259static void GLAPIENTRY 260loopback_Color4uiv_f( const GLuint *v) 261{ 262 COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 263 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) ); 264} 265 266static void GLAPIENTRY 267loopback_Color4usv_f( const GLushort *v) 268{ 269 COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 270 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) ); 271} 272 273static void GLAPIENTRY 274loopback_Color4ubv_f( const GLubyte *v) 275{ 276 COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 277 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) ); 278} 279 280static void GLAPIENTRY 281loopback_FogCoorddEXT( GLdouble d ) 282{ 283 FOGCOORDF( (GLfloat) d ); 284} 285 286static void GLAPIENTRY 287loopback_FogCoorddvEXT( const GLdouble *v ) 288{ 289 FOGCOORDF( (GLfloat) *v ); 290} 291 292 293static void GLAPIENTRY 294loopback_Indexd( GLdouble c ) 295{ 296 INDEX( (GLfloat) c ); 297} 298 299static void GLAPIENTRY 300loopback_Indexi( GLint c ) 301{ 302 INDEX( (GLfloat) c ); 303} 304 305static void GLAPIENTRY 306loopback_Indexs( GLshort c ) 307{ 308 INDEX( (GLfloat) c ); 309} 310 311static void GLAPIENTRY 312loopback_Indexub( GLubyte c ) 313{ 314 INDEX( (GLfloat) c ); 315} 316 317static void GLAPIENTRY 318loopback_Indexdv( const GLdouble *c ) 319{ 320 INDEX( (GLfloat) *c ); 321} 322 323static void GLAPIENTRY 324loopback_Indexiv( const GLint *c ) 325{ 326 INDEX( (GLfloat) *c ); 327} 328 329static void GLAPIENTRY 330loopback_Indexsv( const GLshort *c ) 331{ 332 INDEX( (GLfloat) *c ); 333} 334 335static void GLAPIENTRY 336loopback_Indexubv( const GLubyte *c ) 337{ 338 INDEX( (GLfloat) *c ); 339} 340 341static void GLAPIENTRY 342loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz ) 343{ 344 NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) ); 345} 346 347static void GLAPIENTRY 348loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz ) 349{ 350 NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz); 351} 352 353static void GLAPIENTRY 354loopback_Normal3i( GLint nx, GLint ny, GLint nz ) 355{ 356 NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) ); 357} 358 359static void GLAPIENTRY 360loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz ) 361{ 362 NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) ); 363} 364 365static void GLAPIENTRY 366loopback_Normal3bv( const GLbyte *v ) 367{ 368 NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) ); 369} 370 371static void GLAPIENTRY 372loopback_Normal3dv( const GLdouble *v ) 373{ 374 NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 375} 376 377static void GLAPIENTRY 378loopback_Normal3iv( const GLint *v ) 379{ 380 NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) ); 381} 382 383static void GLAPIENTRY 384loopback_Normal3sv( const GLshort *v ) 385{ 386 NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) ); 387} 388 389static void GLAPIENTRY 390loopback_TexCoord1d( GLdouble s ) 391{ 392 TEXCOORD1((GLfloat) s); 393} 394 395static void GLAPIENTRY 396loopback_TexCoord1i( GLint s ) 397{ 398 TEXCOORD1((GLfloat) s); 399} 400 401static void GLAPIENTRY 402loopback_TexCoord1s( GLshort s ) 403{ 404 TEXCOORD1((GLfloat) s); 405} 406 407static void GLAPIENTRY 408loopback_TexCoord2d( GLdouble s, GLdouble t ) 409{ 410 TEXCOORD2((GLfloat) s,(GLfloat) t); 411} 412 413static void GLAPIENTRY 414loopback_TexCoord2s( GLshort s, GLshort t ) 415{ 416 TEXCOORD2((GLfloat) s,(GLfloat) t); 417} 418 419static void GLAPIENTRY 420loopback_TexCoord2i( GLint s, GLint t ) 421{ 422 TEXCOORD2((GLfloat) s,(GLfloat) t); 423} 424 425static void GLAPIENTRY 426loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r ) 427{ 428 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 429} 430 431static void GLAPIENTRY 432loopback_TexCoord3i( GLint s, GLint t, GLint r ) 433{ 434 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 435} 436 437static void GLAPIENTRY 438loopback_TexCoord3s( GLshort s, GLshort t, GLshort r ) 439{ 440 TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); 441} 442 443static void GLAPIENTRY 444loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) 445{ 446 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 447} 448 449static void GLAPIENTRY 450loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q ) 451{ 452 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 453} 454 455static void GLAPIENTRY 456loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) 457{ 458 TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); 459} 460 461static void GLAPIENTRY 462loopback_TexCoord1dv( const GLdouble *v ) 463{ 464 TEXCOORD1((GLfloat) v[0]); 465} 466 467static void GLAPIENTRY 468loopback_TexCoord1iv( const GLint *v ) 469{ 470 TEXCOORD1((GLfloat) v[0]); 471} 472 473static void GLAPIENTRY 474loopback_TexCoord1sv( const GLshort *v ) 475{ 476 TEXCOORD1((GLfloat) v[0]); 477} 478 479static void GLAPIENTRY 480loopback_TexCoord2dv( const GLdouble *v ) 481{ 482 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 483} 484 485static void GLAPIENTRY 486loopback_TexCoord2iv( const GLint *v ) 487{ 488 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 489} 490 491static void GLAPIENTRY 492loopback_TexCoord2sv( const GLshort *v ) 493{ 494 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 495} 496 497static void GLAPIENTRY 498loopback_TexCoord3dv( const GLdouble *v ) 499{ 500 TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); 501} 502 503static void GLAPIENTRY 504loopback_TexCoord3iv( const GLint *v ) 505{ 506 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 507} 508 509static void GLAPIENTRY 510loopback_TexCoord3sv( const GLshort *v ) 511{ 512 TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); 513} 514 515static void GLAPIENTRY 516loopback_TexCoord4dv( const GLdouble *v ) 517{ 518 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 519} 520 521static void GLAPIENTRY 522loopback_TexCoord4iv( const GLint *v ) 523{ 524 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 525} 526 527static void GLAPIENTRY 528loopback_TexCoord4sv( const GLshort *v ) 529{ 530 TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); 531} 532 533static void GLAPIENTRY 534loopback_Vertex2d( GLdouble x, GLdouble y ) 535{ 536 VERTEX2( (GLfloat) x, (GLfloat) y ); 537} 538 539static void GLAPIENTRY 540loopback_Vertex2i( GLint x, GLint y ) 541{ 542 VERTEX2( (GLfloat) x, (GLfloat) y ); 543} 544 545static void GLAPIENTRY 546loopback_Vertex2s( GLshort x, GLshort y ) 547{ 548 VERTEX2( (GLfloat) x, (GLfloat) y ); 549} 550 551static void GLAPIENTRY 552loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z ) 553{ 554 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 555} 556 557static void GLAPIENTRY 558loopback_Vertex3i( GLint x, GLint y, GLint z ) 559{ 560 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 561} 562 563static void GLAPIENTRY 564loopback_Vertex3s( GLshort x, GLshort y, GLshort z ) 565{ 566 VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); 567} 568 569static void GLAPIENTRY 570loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) 571{ 572 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 573} 574 575static void GLAPIENTRY 576loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w ) 577{ 578 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 579} 580 581static void GLAPIENTRY 582loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) 583{ 584 VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); 585} 586 587static void GLAPIENTRY 588loopback_Vertex2dv( const GLdouble *v ) 589{ 590 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 591} 592 593static void GLAPIENTRY 594loopback_Vertex2iv( const GLint *v ) 595{ 596 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 597} 598 599static void GLAPIENTRY 600loopback_Vertex2sv( const GLshort *v ) 601{ 602 VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); 603} 604 605static void GLAPIENTRY 606loopback_Vertex3dv( const GLdouble *v ) 607{ 608 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 609} 610 611static void GLAPIENTRY 612loopback_Vertex3iv( const GLint *v ) 613{ 614 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 615} 616 617static void GLAPIENTRY 618loopback_Vertex3sv( const GLshort *v ) 619{ 620 VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 621} 622 623static void GLAPIENTRY 624loopback_Vertex4dv( const GLdouble *v ) 625{ 626 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 627 (GLfloat) v[2], (GLfloat) v[3] ); 628} 629 630static void GLAPIENTRY 631loopback_Vertex4iv( const GLint *v ) 632{ 633 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 634 (GLfloat) v[2], (GLfloat) v[3] ); 635} 636 637static void GLAPIENTRY 638loopback_Vertex4sv( const GLshort *v ) 639{ 640 VERTEX4( (GLfloat) v[0], (GLfloat) v[1], 641 (GLfloat) v[2], (GLfloat) v[3] ); 642} 643 644static void GLAPIENTRY 645loopback_MultiTexCoord1dARB(GLenum target, GLdouble s) 646{ 647 MULTI_TEXCOORD1( target, (GLfloat) s ); 648} 649 650static void GLAPIENTRY 651loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v) 652{ 653 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 654} 655 656static void GLAPIENTRY 657loopback_MultiTexCoord1iARB(GLenum target, GLint s) 658{ 659 MULTI_TEXCOORD1( target, (GLfloat) s ); 660} 661 662static void GLAPIENTRY 663loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v) 664{ 665 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 666} 667 668static void GLAPIENTRY 669loopback_MultiTexCoord1sARB(GLenum target, GLshort s) 670{ 671 MULTI_TEXCOORD1( target, (GLfloat) s ); 672} 673 674static void GLAPIENTRY 675loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v) 676{ 677 MULTI_TEXCOORD1( target, (GLfloat) v[0] ); 678} 679 680static void GLAPIENTRY 681loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) 682{ 683 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 684} 685 686static void GLAPIENTRY 687loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v) 688{ 689 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 690} 691 692static void GLAPIENTRY 693loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t) 694{ 695 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 696} 697 698static void GLAPIENTRY 699loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v) 700{ 701 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 702} 703 704static void GLAPIENTRY 705loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) 706{ 707 MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); 708} 709 710static void GLAPIENTRY 711loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v) 712{ 713 MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); 714} 715 716static void GLAPIENTRY 717loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) 718{ 719 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 720} 721 722static void GLAPIENTRY 723loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v) 724{ 725 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 726} 727 728static void GLAPIENTRY 729loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) 730{ 731 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 732} 733 734static void GLAPIENTRY 735loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v) 736{ 737 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 738} 739 740static void GLAPIENTRY 741loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) 742{ 743 MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); 744} 745 746static void GLAPIENTRY 747loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v) 748{ 749 MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 750} 751 752static void GLAPIENTRY 753loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) 754{ 755 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 756 (GLfloat) r, (GLfloat) q ); 757} 758 759static void GLAPIENTRY 760loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v) 761{ 762 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 763 (GLfloat) v[2], (GLfloat) v[3] ); 764} 765 766static void GLAPIENTRY 767loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) 768{ 769 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 770 (GLfloat) r, (GLfloat) q ); 771} 772 773static void GLAPIENTRY 774loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v) 775{ 776 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 777 (GLfloat) v[2], (GLfloat) v[3] ); 778} 779 780static void GLAPIENTRY 781loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) 782{ 783 MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, 784 (GLfloat) r, (GLfloat) q ); 785} 786 787static void GLAPIENTRY 788loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v) 789{ 790 MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], 791 (GLfloat) v[2], (GLfloat) v[3] ); 792} 793 794static void GLAPIENTRY 795loopback_EvalCoord2dv( const GLdouble *u ) 796{ 797 EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] ); 798} 799 800static void GLAPIENTRY 801loopback_EvalCoord2fv( const GLfloat *u ) 802{ 803 EVALCOORD2( u[0], u[1] ); 804} 805 806static void GLAPIENTRY 807loopback_EvalCoord2d( GLdouble u, GLdouble v ) 808{ 809 EVALCOORD2( (GLfloat) u, (GLfloat) v ); 810} 811 812static void GLAPIENTRY 813loopback_EvalCoord1dv( const GLdouble *u ) 814{ 815 EVALCOORD1( (GLfloat) *u ); 816} 817 818static void GLAPIENTRY 819loopback_EvalCoord1fv( const GLfloat *u ) 820{ 821 EVALCOORD1( (GLfloat) *u ); 822} 823 824static void GLAPIENTRY 825loopback_EvalCoord1d( GLdouble u ) 826{ 827 EVALCOORD1( (GLfloat) u ); 828} 829 830static void GLAPIENTRY 831loopback_Materialf( GLenum face, GLenum pname, GLfloat param ) 832{ 833 GLfloat fparam[4]; 834 fparam[0] = param; 835 MATERIALFV( face, pname, fparam ); 836} 837 838static void GLAPIENTRY 839loopback_Materiali(GLenum face, GLenum pname, GLint param ) 840{ 841 GLfloat p = (GLfloat) param; 842 MATERIALFV(face, pname, &p); 843} 844 845static void GLAPIENTRY 846loopback_Materialiv(GLenum face, GLenum pname, const GLint *params ) 847{ 848 GLfloat fparam[4]; 849 switch (pname) { 850 case GL_AMBIENT: 851 case GL_DIFFUSE: 852 case GL_SPECULAR: 853 case GL_EMISSION: 854 case GL_AMBIENT_AND_DIFFUSE: 855 fparam[0] = INT_TO_FLOAT( params[0] ); 856 fparam[1] = INT_TO_FLOAT( params[1] ); 857 fparam[2] = INT_TO_FLOAT( params[2] ); 858 fparam[3] = INT_TO_FLOAT( params[3] ); 859 break; 860 case GL_SHININESS: 861 fparam[0] = (GLfloat) params[0]; 862 break; 863 case GL_COLOR_INDEXES: 864 fparam[0] = (GLfloat) params[0]; 865 fparam[1] = (GLfloat) params[1]; 866 fparam[2] = (GLfloat) params[2]; 867 break; 868 default: 869 ; 870 } 871 MATERIALFV(face, pname, fparam); 872} 873 874 875static void GLAPIENTRY 876loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) 877{ 878 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 879} 880 881static void GLAPIENTRY 882loopback_Rectdv(const GLdouble *v1, const GLdouble *v2) 883{ 884 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 885} 886 887static void GLAPIENTRY 888loopback_Rectfv(const GLfloat *v1, const GLfloat *v2) 889{ 890 RECTF(v1[0], v1[1], v2[0], v2[1]); 891} 892 893static void GLAPIENTRY 894loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2) 895{ 896 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 897} 898 899static void GLAPIENTRY 900loopback_Rectiv(const GLint *v1, const GLint *v2) 901{ 902 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 903} 904 905static void GLAPIENTRY 906loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) 907{ 908 RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); 909} 910 911static void GLAPIENTRY 912loopback_Rectsv(const GLshort *v1, const GLshort *v2) 913{ 914 RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); 915} 916 917static void GLAPIENTRY 918loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue ) 919{ 920 SECONDARYCOLORF( BYTE_TO_FLOAT(red), 921 BYTE_TO_FLOAT(green), 922 BYTE_TO_FLOAT(blue) ); 923} 924 925static void GLAPIENTRY 926loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue ) 927{ 928 SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue ); 929} 930 931static void GLAPIENTRY 932loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue ) 933{ 934 SECONDARYCOLORF( INT_TO_FLOAT(red), 935 INT_TO_FLOAT(green), 936 INT_TO_FLOAT(blue)); 937} 938 939static void GLAPIENTRY 940loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue ) 941{ 942 SECONDARYCOLORF(SHORT_TO_FLOAT(red), 943 SHORT_TO_FLOAT(green), 944 SHORT_TO_FLOAT(blue)); 945} 946 947static void GLAPIENTRY 948loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue ) 949{ 950 SECONDARYCOLORF(UINT_TO_FLOAT(red), 951 UINT_TO_FLOAT(green), 952 UINT_TO_FLOAT(blue)); 953} 954 955static void GLAPIENTRY 956loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue ) 957{ 958 SECONDARYCOLORF(USHORT_TO_FLOAT(red), 959 USHORT_TO_FLOAT(green), 960 USHORT_TO_FLOAT(blue)); 961} 962 963static void GLAPIENTRY 964loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue ) 965{ 966 SECONDARYCOLORF(UBYTE_TO_FLOAT(red), 967 UBYTE_TO_FLOAT(green), 968 UBYTE_TO_FLOAT(blue)); 969} 970 971static void GLAPIENTRY 972loopback_SecondaryColor3bvEXT_f( const GLbyte *v ) 973{ 974 SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]), 975 BYTE_TO_FLOAT(v[1]), 976 BYTE_TO_FLOAT(v[2])); 977} 978 979static void GLAPIENTRY 980loopback_SecondaryColor3dvEXT_f( const GLdouble *v ) 981{ 982 SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); 983} 984static void GLAPIENTRY 985loopback_SecondaryColor3ivEXT_f( const GLint *v ) 986{ 987 SECONDARYCOLORF(INT_TO_FLOAT(v[0]), 988 INT_TO_FLOAT(v[1]), 989 INT_TO_FLOAT(v[2])); 990} 991 992static void GLAPIENTRY 993loopback_SecondaryColor3svEXT_f( const GLshort *v ) 994{ 995 SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]), 996 SHORT_TO_FLOAT(v[1]), 997 SHORT_TO_FLOAT(v[2])); 998} 999 1000static void GLAPIENTRY 1001loopback_SecondaryColor3uivEXT_f( const GLuint *v ) 1002{ 1003 SECONDARYCOLORF(UINT_TO_FLOAT(v[0]), 1004 UINT_TO_FLOAT(v[1]), 1005 UINT_TO_FLOAT(v[2])); 1006} 1007 1008static void GLAPIENTRY 1009loopback_SecondaryColor3usvEXT_f( const GLushort *v ) 1010{ 1011 SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]), 1012 USHORT_TO_FLOAT(v[1]), 1013 USHORT_TO_FLOAT(v[2])); 1014} 1015 1016static void GLAPIENTRY 1017loopback_SecondaryColor3ubvEXT_f( const GLubyte *v ) 1018{ 1019 SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]), 1020 UBYTE_TO_FLOAT(v[1]), 1021 UBYTE_TO_FLOAT(v[2])); 1022} 1023 1024 1025/* 1026 * GL_NV_vertex_program 1027 */ 1028 1029static void GLAPIENTRY 1030loopback_VertexAttrib1sNV(GLuint index, GLshort x) 1031{ 1032 ATTRIB1(index, (GLfloat) x); 1033} 1034 1035static void GLAPIENTRY 1036loopback_VertexAttrib1fNV(GLuint index, GLfloat x) 1037{ 1038 ATTRIB1(index, x); 1039} 1040 1041static void GLAPIENTRY 1042loopback_VertexAttrib1dNV(GLuint index, GLdouble x) 1043{ 1044 ATTRIB1(index, (GLfloat) x); 1045} 1046 1047static void GLAPIENTRY 1048loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y) 1049{ 1050 ATTRIB2(index, (GLfloat) x, y); 1051} 1052 1053static void GLAPIENTRY 1054loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) 1055{ 1056 ATTRIB2(index, (GLfloat) x, y); 1057} 1058 1059static void GLAPIENTRY 1060loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) 1061{ 1062 ATTRIB2(index, (GLfloat) x, (GLfloat) y); 1063} 1064 1065static void GLAPIENTRY 1066loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) 1067{ 1068 ATTRIB3(index, (GLfloat) x, y, z); 1069} 1070 1071static void GLAPIENTRY 1072loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) 1073{ 1074 ATTRIB3(index, x, y, z); 1075} 1076 1077static void GLAPIENTRY 1078loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) 1079{ 1080 ATTRIB4(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); 1081} 1082 1083static void GLAPIENTRY 1084loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) 1085{ 1086 ATTRIB4(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1087} 1088 1089static void GLAPIENTRY 1090loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) 1091{ 1092 ATTRIB4(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); 1093} 1094 1095static void GLAPIENTRY 1096loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) 1097{ 1098 ATTRIB4(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), 1099 UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); 1100} 1101 1102static void GLAPIENTRY 1103loopback_VertexAttrib1svNV(GLuint index, const GLshort *v) 1104{ 1105 ATTRIB1(index, (GLfloat) v[0]); 1106} 1107 1108static void GLAPIENTRY 1109loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v) 1110{ 1111 ATTRIB1(index, v[0]); 1112} 1113 1114static void GLAPIENTRY 1115loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v) 1116{ 1117 ATTRIB1(index, (GLfloat) v[0]); 1118} 1119 1120static void GLAPIENTRY 1121loopback_VertexAttrib2svNV(GLuint index, const GLshort *v) 1122{ 1123 ATTRIB2(index, (GLfloat) v[0], (GLfloat) v[1]); 1124} 1125 1126static void GLAPIENTRY 1127loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v) 1128{ 1129 ATTRIB2(index, v[0], v[1]); 1130} 1131 1132static void GLAPIENTRY 1133loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v) 1134{ 1135 ATTRIB2(index, (GLfloat) v[0], (GLfloat) v[1]); 1136} 1137 1138static void GLAPIENTRY 1139loopback_VertexAttrib3svNV(GLuint index, const GLshort *v) 1140{ 1141 ATTRIB2(index, (GLfloat) v[0], (GLfloat) v[1]); 1142} 1143 1144static void GLAPIENTRY 1145loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v) 1146{ 1147 ATTRIB3(index, v[0], v[1], v[2]); 1148} 1149 1150static void GLAPIENTRY 1151loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v) 1152{ 1153 ATTRIB3(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); 1154} 1155 1156static void GLAPIENTRY 1157loopback_VertexAttrib4svNV(GLuint index, const GLshort *v) 1158{ 1159 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1160 (GLfloat)v[3]); 1161} 1162 1163static void GLAPIENTRY 1164loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v) 1165{ 1166 ATTRIB4(index, v[0], v[1], v[2], v[3]); 1167} 1168 1169static void GLAPIENTRY 1170loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v) 1171{ 1172 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1173} 1174 1175static void GLAPIENTRY 1176loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v) 1177{ 1178 ATTRIB4(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), 1179 UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); 1180} 1181 1182 1183static void GLAPIENTRY 1184loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v) 1185{ 1186 GLint i; 1187 for (i = n - 1; i >= 0; i--) 1188 loopback_VertexAttrib1svNV(index + i, v + i); 1189} 1190 1191static void GLAPIENTRY 1192loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v) 1193{ 1194 GLint i; 1195 for (i = n - 1; i >= 0; i--) 1196 loopback_VertexAttrib1fvNV(index + i, v + i); 1197} 1198 1199static void GLAPIENTRY 1200loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v) 1201{ 1202 GLint i; 1203 for (i = n - 1; i >= 0; i--) 1204 loopback_VertexAttrib1dvNV(index + i, v + i); 1205} 1206 1207static void GLAPIENTRY 1208loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v) 1209{ 1210 GLint i; 1211 for (i = n - 1; i >= 0; i--) 1212 loopback_VertexAttrib2svNV(index + i, v + 2 * i); 1213} 1214 1215static void GLAPIENTRY 1216loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v) 1217{ 1218 GLint i; 1219 for (i = n - 1; i >= 0; i--) 1220 loopback_VertexAttrib2fvNV(index + i, v + 2 * i); 1221} 1222 1223static void GLAPIENTRY 1224loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v) 1225{ 1226 GLint i; 1227 for (i = n - 1; i >= 0; i--) 1228 loopback_VertexAttrib2dvNV(index + i, v + 2 * i); 1229} 1230 1231static void GLAPIENTRY 1232loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v) 1233{ 1234 GLint i; 1235 for (i = n - 1; i >= 0; i--) 1236 loopback_VertexAttrib3svNV(index + i, v + 3 * i); 1237} 1238 1239static void GLAPIENTRY 1240loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v) 1241{ 1242 GLint i; 1243 for (i = n - 1; i >= 0; i--) 1244 loopback_VertexAttrib3fvNV(index + i, v + 3 * i); 1245} 1246 1247static void GLAPIENTRY 1248loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v) 1249{ 1250 GLint i; 1251 for (i = n - 1; i >= 0; i--) 1252 loopback_VertexAttrib3dvNV(index + i, v + 3 * i); 1253} 1254 1255static void GLAPIENTRY 1256loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v) 1257{ 1258 GLint i; 1259 for (i = n - 1; i >= 0; i--) 1260 loopback_VertexAttrib4svNV(index + i, v + 4 * i); 1261} 1262 1263static void GLAPIENTRY 1264loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v) 1265{ 1266 GLint i; 1267 for (i = n - 1; i >= 0; i--) 1268 loopback_VertexAttrib4fvNV(index + i, v + 4 * i); 1269} 1270 1271static void GLAPIENTRY 1272loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v) 1273{ 1274 GLint i; 1275 for (i = n - 1; i >= 0; i--) 1276 loopback_VertexAttrib4dvNV(index + i, v + 4 * i); 1277} 1278 1279static void GLAPIENTRY 1280loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v) 1281{ 1282 GLint i; 1283 for (i = n - 1; i >= 0; i--) 1284 loopback_VertexAttrib4ubvNV(index + i, v + 4 * i); 1285} 1286 1287 1288/* 1289 * GL_ARB_vertex_program 1290 */ 1291 1292static void GLAPIENTRY 1293loopback_VertexAttrib4bvARB(GLuint index, const GLbyte * v) 1294{ 1295 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1296} 1297 1298static void GLAPIENTRY 1299loopback_VertexAttrib4ivARB(GLuint index, const GLint * v) 1300{ 1301 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1302} 1303 1304static void GLAPIENTRY 1305loopback_VertexAttrib4ubvARB(GLuint index, const GLubyte * v) 1306{ 1307 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1308} 1309 1310static void GLAPIENTRY 1311loopback_VertexAttrib4usvARB(GLuint index, const GLushort * v) 1312{ 1313 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1314} 1315 1316static void GLAPIENTRY 1317loopback_VertexAttrib4uivARB(GLuint index, const GLuint * v) 1318{ 1319 ATTRIB4(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); 1320} 1321 1322static void GLAPIENTRY 1323loopback_VertexAttrib4NbvARB(GLuint index, const GLbyte * v) 1324{ 1325 ATTRIB4(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), 1326 BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3])); 1327} 1328 1329static void GLAPIENTRY 1330loopback_VertexAttrib4NsvARB(GLuint index, const GLshort * v) 1331{ 1332 ATTRIB4(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), 1333 SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3])); 1334} 1335 1336static void GLAPIENTRY 1337loopback_VertexAttrib4NivARB(GLuint index, const GLint * v) 1338{ 1339 ATTRIB4(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), 1340 INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3])); 1341} 1342 1343static void GLAPIENTRY 1344loopback_VertexAttrib4NusvARB(GLuint index, const GLushort * v) 1345{ 1346 ATTRIB4(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), 1347 USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3])); 1348} 1349 1350static void GLAPIENTRY 1351loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v) 1352{ 1353 ATTRIB4(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), 1354 UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3])); 1355} 1356 1357 1358 1359 1360/* 1361 * This code never registers handlers for any of the entry points 1362 * listed in vtxfmt.h. 1363 */ 1364void 1365_mesa_loopback_init_api_table( struct _glapi_table *dest ) 1366{ 1367 dest->Color3b = loopback_Color3b_f; 1368 dest->Color3d = loopback_Color3d_f; 1369 dest->Color3i = loopback_Color3i_f; 1370 dest->Color3s = loopback_Color3s_f; 1371 dest->Color3ui = loopback_Color3ui_f; 1372 dest->Color3us = loopback_Color3us_f; 1373 dest->Color3ub = loopback_Color3ub_f; 1374 dest->Color4b = loopback_Color4b_f; 1375 dest->Color4d = loopback_Color4d_f; 1376 dest->Color4i = loopback_Color4i_f; 1377 dest->Color4s = loopback_Color4s_f; 1378 dest->Color4ui = loopback_Color4ui_f; 1379 dest->Color4us = loopback_Color4us_f; 1380 dest->Color4ub = loopback_Color4ub_f; 1381 dest->Color3bv = loopback_Color3bv_f; 1382 dest->Color3dv = loopback_Color3dv_f; 1383 dest->Color3iv = loopback_Color3iv_f; 1384 dest->Color3sv = loopback_Color3sv_f; 1385 dest->Color3uiv = loopback_Color3uiv_f; 1386 dest->Color3usv = loopback_Color3usv_f; 1387 dest->Color3ubv = loopback_Color3ubv_f; 1388 dest->Color4bv = loopback_Color4bv_f; 1389 dest->Color4dv = loopback_Color4dv_f; 1390 dest->Color4iv = loopback_Color4iv_f; 1391 dest->Color4sv = loopback_Color4sv_f; 1392 dest->Color4uiv = loopback_Color4uiv_f; 1393 dest->Color4usv = loopback_Color4usv_f; 1394 dest->Color4ubv = loopback_Color4ubv_f; 1395 1396 dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f; 1397 dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f; 1398 dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f; 1399 dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f; 1400 dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f; 1401 dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f; 1402 dest->SecondaryColor3ubEXT = loopback_SecondaryColor3ubEXT_f; 1403 dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f; 1404 dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f; 1405 dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f; 1406 dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f; 1407 dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f; 1408 dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f; 1409 dest->SecondaryColor3ubvEXT = loopback_SecondaryColor3ubvEXT_f; 1410 1411 dest->Indexd = loopback_Indexd; 1412 dest->Indexi = loopback_Indexi; 1413 dest->Indexs = loopback_Indexs; 1414 dest->Indexub = loopback_Indexub; 1415 dest->Indexdv = loopback_Indexdv; 1416 dest->Indexiv = loopback_Indexiv; 1417 dest->Indexsv = loopback_Indexsv; 1418 dest->Indexubv = loopback_Indexubv; 1419 dest->Normal3b = loopback_Normal3b; 1420 dest->Normal3d = loopback_Normal3d; 1421 dest->Normal3i = loopback_Normal3i; 1422 dest->Normal3s = loopback_Normal3s; 1423 dest->Normal3bv = loopback_Normal3bv; 1424 dest->Normal3dv = loopback_Normal3dv; 1425 dest->Normal3iv = loopback_Normal3iv; 1426 dest->Normal3sv = loopback_Normal3sv; 1427 dest->TexCoord1d = loopback_TexCoord1d; 1428 dest->TexCoord1i = loopback_TexCoord1i; 1429 dest->TexCoord1s = loopback_TexCoord1s; 1430 dest->TexCoord2d = loopback_TexCoord2d; 1431 dest->TexCoord2s = loopback_TexCoord2s; 1432 dest->TexCoord2i = loopback_TexCoord2i; 1433 dest->TexCoord3d = loopback_TexCoord3d; 1434 dest->TexCoord3i = loopback_TexCoord3i; 1435 dest->TexCoord3s = loopback_TexCoord3s; 1436 dest->TexCoord4d = loopback_TexCoord4d; 1437 dest->TexCoord4i = loopback_TexCoord4i; 1438 dest->TexCoord4s = loopback_TexCoord4s; 1439 dest->TexCoord1dv = loopback_TexCoord1dv; 1440 dest->TexCoord1iv = loopback_TexCoord1iv; 1441 dest->TexCoord1sv = loopback_TexCoord1sv; 1442 dest->TexCoord2dv = loopback_TexCoord2dv; 1443 dest->TexCoord2iv = loopback_TexCoord2iv; 1444 dest->TexCoord2sv = loopback_TexCoord2sv; 1445 dest->TexCoord3dv = loopback_TexCoord3dv; 1446 dest->TexCoord3iv = loopback_TexCoord3iv; 1447 dest->TexCoord3sv = loopback_TexCoord3sv; 1448 dest->TexCoord4dv = loopback_TexCoord4dv; 1449 dest->TexCoord4iv = loopback_TexCoord4iv; 1450 dest->TexCoord4sv = loopback_TexCoord4sv; 1451 dest->Vertex2d = loopback_Vertex2d; 1452 dest->Vertex2i = loopback_Vertex2i; 1453 dest->Vertex2s = loopback_Vertex2s; 1454 dest->Vertex3d = loopback_Vertex3d; 1455 dest->Vertex3i = loopback_Vertex3i; 1456 dest->Vertex3s = loopback_Vertex3s; 1457 dest->Vertex4d = loopback_Vertex4d; 1458 dest->Vertex4i = loopback_Vertex4i; 1459 dest->Vertex4s = loopback_Vertex4s; 1460 dest->Vertex2dv = loopback_Vertex2dv; 1461 dest->Vertex2iv = loopback_Vertex2iv; 1462 dest->Vertex2sv = loopback_Vertex2sv; 1463 dest->Vertex3dv = loopback_Vertex3dv; 1464 dest->Vertex3iv = loopback_Vertex3iv; 1465 dest->Vertex3sv = loopback_Vertex3sv; 1466 dest->Vertex4dv = loopback_Vertex4dv; 1467 dest->Vertex4iv = loopback_Vertex4iv; 1468 dest->Vertex4sv = loopback_Vertex4sv; 1469 dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB; 1470 dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB; 1471 dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB; 1472 dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB; 1473 dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB; 1474 dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB; 1475 dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB; 1476 dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB; 1477 dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB; 1478 dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB; 1479 dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB; 1480 dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB; 1481 dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB; 1482 dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB; 1483 dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB; 1484 dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB; 1485 dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB; 1486 dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB; 1487 dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB; 1488 dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB; 1489 dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB; 1490 dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB; 1491 dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB; 1492 dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB; 1493 dest->EvalCoord2dv = loopback_EvalCoord2dv; 1494 dest->EvalCoord2fv = loopback_EvalCoord2fv; 1495 dest->EvalCoord2d = loopback_EvalCoord2d; 1496 dest->EvalCoord1dv = loopback_EvalCoord1dv; 1497 dest->EvalCoord1fv = loopback_EvalCoord1fv; 1498 dest->EvalCoord1d = loopback_EvalCoord1d; 1499 dest->Materialf = loopback_Materialf; 1500 dest->Materiali = loopback_Materiali; 1501 dest->Materialiv = loopback_Materialiv; 1502 dest->Rectd = loopback_Rectd; 1503 dest->Rectdv = loopback_Rectdv; 1504 dest->Rectfv = loopback_Rectfv; 1505 dest->Recti = loopback_Recti; 1506 dest->Rectiv = loopback_Rectiv; 1507 dest->Rects = loopback_Rects; 1508 dest->Rectsv = loopback_Rectsv; 1509 dest->FogCoorddEXT = loopback_FogCoorddEXT; 1510 dest->FogCoorddvEXT = loopback_FogCoorddvEXT; 1511 1512 dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV; 1513 dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV; 1514 dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV; 1515 dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV; 1516 dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV; 1517 dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV; 1518 dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV; 1519 dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV; 1520 dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV; 1521 dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV; 1522 dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV; 1523 dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV; 1524 1525 dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV; 1526 dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV; 1527 dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV; 1528 dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV; 1529 dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV; 1530 dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV; 1531 dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV; 1532 dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV; 1533 dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV; 1534 dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV; 1535 dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV; 1536 dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV; 1537 dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV; 1538 1539 dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV; 1540 dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV; 1541 dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV; 1542 dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV; 1543 dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV; 1544 dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV; 1545 dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV; 1546 dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV; 1547 dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV; 1548 dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV; 1549 dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV; 1550 dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV; 1551 dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV; 1552 1553 dest->VertexAttrib4bvARB = loopback_VertexAttrib4bvARB; 1554 dest->VertexAttrib4ivARB = loopback_VertexAttrib4ivARB; 1555 dest->VertexAttrib4ubvARB = loopback_VertexAttrib4ubvARB; 1556 dest->VertexAttrib4usvARB = loopback_VertexAttrib4usvARB; 1557 dest->VertexAttrib4uivARB = loopback_VertexAttrib4uivARB; 1558 dest->VertexAttrib4NbvARB = loopback_VertexAttrib4NbvARB; 1559 dest->VertexAttrib4NsvARB = loopback_VertexAttrib4NsvARB; 1560 dest->VertexAttrib4NivARB = loopback_VertexAttrib4NivARB; 1561 dest->VertexAttrib4NusvARB = loopback_VertexAttrib4NusvARB; 1562 dest->VertexAttrib4NuivARB = loopback_VertexAttrib4NuivARB; 1563} 1564