17ec681f3Smrg/************************************************************************** 27ec681f3Smrg * 37ec681f3Smrg * Copyright 2015 VMware, Inc. 47ec681f3Smrg * All Rights Reserved. 57ec681f3Smrg * 67ec681f3Smrg * Permission is hereby granted, free of charge, to any person obtaining a 77ec681f3Smrg * copy of this software and associated documentation files (the 87ec681f3Smrg * "Software"), to deal in the Software without restriction, including 97ec681f3Smrg * without limitation the rights to use, copy, modify, merge, publish, 107ec681f3Smrg * distribute, sub license, and/or sell copies of the Software, and to 117ec681f3Smrg * permit persons to whom the Software is furnished to do so, subject to 127ec681f3Smrg * the following conditions: 137ec681f3Smrg * 147ec681f3Smrg * The above copyright notice and this permission notice (including the 157ec681f3Smrg * next paragraph) shall be included in all copies or substantial portions 167ec681f3Smrg * of the Software. 177ec681f3Smrg * 187ec681f3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 197ec681f3Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 207ec681f3Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 217ec681f3Smrg * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 227ec681f3Smrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 237ec681f3Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 247ec681f3Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 257ec681f3Smrg * 267ec681f3Smrg **************************************************************************/ 277ec681f3Smrg 287ec681f3Smrg/** 297ec681f3Smrg * No-op GL API functions. 307ec681f3Smrg * 317ec681f3Smrg * Some OpenGL apps (like Viewperf12) call wglGetProcAddress() to get 327ec681f3Smrg * a pointer to an extension function, get a NULL pointer, but don't bother 337ec681f3Smrg * to check for NULL before jumping through the pointer. This causes a 347ec681f3Smrg * crash. 357ec681f3Smrg * 367ec681f3Smrg * As a work-around we provide some no-op functions here to avoid those 377ec681f3Smrg * crashes. 387ec681f3Smrg */ 397ec681f3Smrg 407ec681f3Smrg#include <GL/gl.h> 417ec681f3Smrg#include "stw_nopfuncs.h" 427ec681f3Smrg#include "util/u_debug.h" 437ec681f3Smrg 447ec681f3Smrg 457ec681f3Smrgstatic void 467ec681f3Smrgwarning(const char *name) 477ec681f3Smrg{ 487ec681f3Smrg /* use name+4 to skip "nop_" prefix */ 497ec681f3Smrg _debug_printf("Application calling unsupported %s function\n", name+4); 507ec681f3Smrg} 517ec681f3Smrg 527ec681f3Smrgstatic void APIENTRY 537ec681f3Smrgnop_glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture) 547ec681f3Smrg{ 557ec681f3Smrg warning(__func__); 567ec681f3Smrg} 577ec681f3Smrg 587ec681f3Smrgstatic void APIENTRY 597ec681f3Smrgnop_glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) 607ec681f3Smrg{ 617ec681f3Smrg warning(__func__); 627ec681f3Smrg} 637ec681f3Smrg 647ec681f3Smrgstatic void APIENTRY 657ec681f3Smrgnop_glColor3hvNV(const GLhalfNV *v) 667ec681f3Smrg{ 677ec681f3Smrg warning(__func__); 687ec681f3Smrg} 697ec681f3Smrg 707ec681f3Smrgstatic void APIENTRY 717ec681f3Smrgnop_glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha) 727ec681f3Smrg{ 737ec681f3Smrg warning(__func__); 747ec681f3Smrg} 757ec681f3Smrg 767ec681f3Smrgstatic void APIENTRY 777ec681f3Smrgnop_glColor4hvNV(const GLhalfNV *v) 787ec681f3Smrg{ 797ec681f3Smrg warning(__func__); 807ec681f3Smrg} 817ec681f3Smrg 827ec681f3Smrgstatic void APIENTRY 837ec681f3Smrgnop_glDisableClientStateIndexedEXT(GLenum array, GLuint index) 847ec681f3Smrg{ 857ec681f3Smrg warning(__func__); 867ec681f3Smrg} 877ec681f3Smrg 887ec681f3Smrgstatic void APIENTRY 897ec681f3Smrgnop_glEnableClientStateIndexedEXT(GLenum array, GLuint index) 907ec681f3Smrg{ 917ec681f3Smrg warning(__func__); 927ec681f3Smrg} 937ec681f3Smrg 947ec681f3Smrgstatic void APIENTRY 957ec681f3Smrgnop_glFogCoordhNV(GLhalfNV fog) 967ec681f3Smrg{ 977ec681f3Smrg warning(__func__); 987ec681f3Smrg} 997ec681f3Smrg 1007ec681f3Smrgstatic void APIENTRY 1017ec681f3Smrgnop_glFogCoordhvNV(const GLhalfNV *fog) 1027ec681f3Smrg{ 1037ec681f3Smrg warning(__func__); 1047ec681f3Smrg} 1057ec681f3Smrg 1067ec681f3Smrgstatic void APIENTRY 1077ec681f3Smrgnop_glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params) 1087ec681f3Smrg{ 1097ec681f3Smrg warning(__func__); 1107ec681f3Smrg} 1117ec681f3Smrg 1127ec681f3Smrgstatic void APIENTRY 1137ec681f3Smrgnop_glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data) 1147ec681f3Smrg{ 1157ec681f3Smrg warning(__func__); 1167ec681f3Smrg} 1177ec681f3Smrg 1187ec681f3Smrgstatic void *APIENTRY 1197ec681f3Smrgnop_glMapNamedBufferEXT(GLuint buffer, GLenum access) 1207ec681f3Smrg{ 1217ec681f3Smrg warning(__func__); 1227ec681f3Smrg return NULL; 1237ec681f3Smrg} 1247ec681f3Smrg 1257ec681f3Smrgstatic void APIENTRY 1267ec681f3Smrgnop_glMatrixLoadfEXT(GLenum mode, const GLfloat *m) 1277ec681f3Smrg{ 1287ec681f3Smrg warning(__func__); 1297ec681f3Smrg} 1307ec681f3Smrg 1317ec681f3Smrgstatic void APIENTRY 1327ec681f3Smrgnop_glMatrixLoadIdentityEXT(GLenum mode) 1337ec681f3Smrg{ 1347ec681f3Smrg warning(__func__); 1357ec681f3Smrg} 1367ec681f3Smrg 1377ec681f3Smrgstatic void APIENTRY 1387ec681f3Smrgnop_glMultiTexCoord1hNV(GLenum target, GLhalfNV s) 1397ec681f3Smrg{ 1407ec681f3Smrg warning(__func__); 1417ec681f3Smrg} 1427ec681f3Smrg 1437ec681f3Smrgstatic void APIENTRY 1447ec681f3Smrgnop_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v) 1457ec681f3Smrg{ 1467ec681f3Smrg warning(__func__); 1477ec681f3Smrg} 1487ec681f3Smrg 1497ec681f3Smrgstatic void APIENTRY 1507ec681f3Smrgnop_glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t) 1517ec681f3Smrg{ 1527ec681f3Smrg warning(__func__); 1537ec681f3Smrg} 1547ec681f3Smrg 1557ec681f3Smrgstatic void APIENTRY 1567ec681f3Smrgnop_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v) 1577ec681f3Smrg{ 1587ec681f3Smrg warning(__func__); 1597ec681f3Smrg} 1607ec681f3Smrg 1617ec681f3Smrgstatic void APIENTRY 1627ec681f3Smrgnop_glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r) 1637ec681f3Smrg{ 1647ec681f3Smrg warning(__func__); 1657ec681f3Smrg} 1667ec681f3Smrg 1677ec681f3Smrgstatic void APIENTRY 1687ec681f3Smrgnop_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v) 1697ec681f3Smrg{ 1707ec681f3Smrg warning(__func__); 1717ec681f3Smrg} 1727ec681f3Smrg 1737ec681f3Smrgstatic void APIENTRY 1747ec681f3Smrgnop_glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) 1757ec681f3Smrg{ 1767ec681f3Smrg warning(__func__); 1777ec681f3Smrg} 1787ec681f3Smrg 1797ec681f3Smrgstatic void APIENTRY 1807ec681f3Smrgnop_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v) 1817ec681f3Smrg{ 1827ec681f3Smrg warning(__func__); 1837ec681f3Smrg} 1847ec681f3Smrg 1857ec681f3Smrgstatic void APIENTRY 1867ec681f3Smrgnop_glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer) 1877ec681f3Smrg{ 1887ec681f3Smrg warning(__func__); 1897ec681f3Smrg} 1907ec681f3Smrg 1917ec681f3Smrgstatic void APIENTRY 1927ec681f3Smrgnop_glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) 1937ec681f3Smrg{ 1947ec681f3Smrg warning(__func__); 1957ec681f3Smrg} 1967ec681f3Smrg 1977ec681f3Smrgstatic void APIENTRY 1987ec681f3Smrgnop_glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) 1997ec681f3Smrg{ 2007ec681f3Smrg warning(__func__); 2017ec681f3Smrg} 2027ec681f3Smrg 2037ec681f3Smrgstatic void APIENTRY 2047ec681f3Smrgnop_glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) 2057ec681f3Smrg{ 2067ec681f3Smrg warning(__func__); 2077ec681f3Smrg} 2087ec681f3Smrg 2097ec681f3Smrgstatic void APIENTRY 2107ec681f3Smrgnop_glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params) 2117ec681f3Smrg{ 2127ec681f3Smrg warning(__func__); 2137ec681f3Smrg} 2147ec681f3Smrg 2157ec681f3Smrgstatic void APIENTRY 2167ec681f3Smrgnop_glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param) 2177ec681f3Smrg{ 2187ec681f3Smrg warning(__func__); 2197ec681f3Smrg} 2207ec681f3Smrg 2217ec681f3Smrgstatic void APIENTRY 2227ec681f3Smrgnop_glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage) 2237ec681f3Smrg{ 2247ec681f3Smrg warning(__func__); 2257ec681f3Smrg} 2267ec681f3Smrg 2277ec681f3Smrgstatic void APIENTRY 2287ec681f3Smrgnop_glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data) 2297ec681f3Smrg{ 2307ec681f3Smrg warning(__func__); 2317ec681f3Smrg} 2327ec681f3Smrg 2337ec681f3Smrgstatic void APIENTRY 2347ec681f3Smrgnop_glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params) 2357ec681f3Smrg{ 2367ec681f3Smrg warning(__func__); 2377ec681f3Smrg} 2387ec681f3Smrg 2397ec681f3Smrgstatic void APIENTRY 2407ec681f3Smrgnop_glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params) 2417ec681f3Smrg{ 2427ec681f3Smrg warning(__func__); 2437ec681f3Smrg} 2447ec681f3Smrg 2457ec681f3Smrgstatic void APIENTRY 2467ec681f3Smrgnop_glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz) 2477ec681f3Smrg{ 2487ec681f3Smrg warning(__func__); 2497ec681f3Smrg} 2507ec681f3Smrg 2517ec681f3Smrgstatic void APIENTRY 2527ec681f3Smrgnop_glNormal3hvNV(const GLhalfNV *v) 2537ec681f3Smrg{ 2547ec681f3Smrg warning(__func__); 2557ec681f3Smrg} 2567ec681f3Smrg 2577ec681f3Smrgstatic void APIENTRY 2587ec681f3Smrgnop_glPatchParameterfv(GLenum pname, const GLfloat *values) 2597ec681f3Smrg{ 2607ec681f3Smrg warning(__func__); 2617ec681f3Smrg} 2627ec681f3Smrg 2637ec681f3Smrgstatic void APIENTRY 2647ec681f3Smrgnop_glPatchParameteri(GLenum pname, GLint value) 2657ec681f3Smrg{ 2667ec681f3Smrg warning(__func__); 2677ec681f3Smrg} 2687ec681f3Smrg 2697ec681f3Smrgstatic void APIENTRY 2707ec681f3Smrgnop_glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) 2717ec681f3Smrg{ 2727ec681f3Smrg warning(__func__); 2737ec681f3Smrg} 2747ec681f3Smrg 2757ec681f3Smrgstatic void APIENTRY 2767ec681f3Smrgnop_glSecondaryColor3hvNV(const GLhalfNV *v) 2777ec681f3Smrg{ 2787ec681f3Smrg warning(__func__); 2797ec681f3Smrg} 2807ec681f3Smrg 2817ec681f3Smrgstatic void APIENTRY 2827ec681f3Smrgnop_glTexCoord1hNV(GLhalfNV s) 2837ec681f3Smrg{ 2847ec681f3Smrg warning(__func__); 2857ec681f3Smrg} 2867ec681f3Smrg 2877ec681f3Smrgstatic void APIENTRY 2887ec681f3Smrgnop_glTexCoord1hvNV(const GLhalfNV *v) 2897ec681f3Smrg{ 2907ec681f3Smrg warning(__func__); 2917ec681f3Smrg} 2927ec681f3Smrg 2937ec681f3Smrgstatic void APIENTRY 2947ec681f3Smrgnop_glTexCoord2hNV(GLhalfNV s, GLhalfNV t) 2957ec681f3Smrg{ 2967ec681f3Smrg warning(__func__); 2977ec681f3Smrg} 2987ec681f3Smrg 2997ec681f3Smrgstatic void APIENTRY 3007ec681f3Smrgnop_glTexCoord2hvNV(const GLhalfNV *v) 3017ec681f3Smrg{ 3027ec681f3Smrg warning(__func__); 3037ec681f3Smrg} 3047ec681f3Smrg 3057ec681f3Smrgstatic void APIENTRY 3067ec681f3Smrgnop_glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r) 3077ec681f3Smrg{ 3087ec681f3Smrg warning(__func__); 3097ec681f3Smrg} 3107ec681f3Smrg 3117ec681f3Smrgstatic void APIENTRY 3127ec681f3Smrgnop_glTexCoord3hvNV(const GLhalfNV *v) 3137ec681f3Smrg{ 3147ec681f3Smrg warning(__func__); 3157ec681f3Smrg} 3167ec681f3Smrg 3177ec681f3Smrgstatic void APIENTRY 3187ec681f3Smrgnop_glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) 3197ec681f3Smrg{ 3207ec681f3Smrg warning(__func__); 3217ec681f3Smrg} 3227ec681f3Smrg 3237ec681f3Smrgstatic void APIENTRY 3247ec681f3Smrgnop_glTexCoord4hvNV(const GLhalfNV *v) 3257ec681f3Smrg{ 3267ec681f3Smrg warning(__func__); 3277ec681f3Smrg} 3287ec681f3Smrg 3297ec681f3Smrgstatic void APIENTRY 3307ec681f3Smrgnop_glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param) 3317ec681f3Smrg{ 3327ec681f3Smrg warning(__func__); 3337ec681f3Smrg} 3347ec681f3Smrg 3357ec681f3Smrgstatic void APIENTRY 3367ec681f3Smrgnop_glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params) 3377ec681f3Smrg{ 3387ec681f3Smrg warning(__func__); 3397ec681f3Smrg} 3407ec681f3Smrg 3417ec681f3Smrgstatic void APIENTRY 3427ec681f3Smrgnop_glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param) 3437ec681f3Smrg{ 3447ec681f3Smrg warning(__func__); 3457ec681f3Smrg} 3467ec681f3Smrg 3477ec681f3Smrgstatic GLboolean APIENTRY 3487ec681f3Smrgnop_glUnmapNamedBufferEXT(GLuint buffer) 3497ec681f3Smrg{ 3507ec681f3Smrg warning(__func__); 3517ec681f3Smrg return GL_FALSE; 3527ec681f3Smrg} 3537ec681f3Smrg 3547ec681f3Smrgstatic void APIENTRY 3557ec681f3Smrgnop_glVertex2hNV(GLhalfNV x, GLhalfNV y) 3567ec681f3Smrg{ 3577ec681f3Smrg warning(__func__); 3587ec681f3Smrg} 3597ec681f3Smrg 3607ec681f3Smrgstatic void APIENTRY 3617ec681f3Smrgnop_glVertex2hvNV(const GLhalfNV *v) 3627ec681f3Smrg{ 3637ec681f3Smrg warning(__func__); 3647ec681f3Smrg} 3657ec681f3Smrg 3667ec681f3Smrgstatic void APIENTRY 3677ec681f3Smrgnop_glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z) 3687ec681f3Smrg{ 3697ec681f3Smrg warning(__func__); 3707ec681f3Smrg} 3717ec681f3Smrg 3727ec681f3Smrgstatic void APIENTRY 3737ec681f3Smrgnop_glVertex3hvNV(const GLhalfNV *v) 3747ec681f3Smrg{ 3757ec681f3Smrg warning(__func__); 3767ec681f3Smrg} 3777ec681f3Smrg 3787ec681f3Smrgstatic void APIENTRY 3797ec681f3Smrgnop_glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) 3807ec681f3Smrg{ 3817ec681f3Smrg warning(__func__); 3827ec681f3Smrg} 3837ec681f3Smrg 3847ec681f3Smrgstatic void APIENTRY 3857ec681f3Smrgnop_glVertex4hvNV(const GLhalfNV *v) 3867ec681f3Smrg{ 3877ec681f3Smrg warning(__func__); 3887ec681f3Smrg} 3897ec681f3Smrg 3907ec681f3Smrg 3917ec681f3SmrgPROC 3927ec681f3Smrgstw_get_nop_function(const char *name) 3937ec681f3Smrg{ 3947ec681f3Smrg struct { 3957ec681f3Smrg const char *name; 3967ec681f3Smrg PROC p; 3977ec681f3Smrg } table[] = { 3987ec681f3Smrg { "glBindMultiTextureEXT", (PROC) nop_glBindMultiTextureEXT }, 3997ec681f3Smrg { "glColor3hNV", (PROC) nop_glColor3hNV }, 4007ec681f3Smrg { "glColor3hvNV", (PROC) nop_glColor3hvNV }, 4017ec681f3Smrg { "glColor4hNV", (PROC) nop_glColor4hNV }, 4027ec681f3Smrg { "glColor4hvNV", (PROC) nop_glColor4hvNV }, 4037ec681f3Smrg { "glDisableClientStateIndexedEXT", (PROC) nop_glDisableClientStateIndexedEXT }, 4047ec681f3Smrg { "glEnableClientStateIndexedEXT", (PROC) nop_glEnableClientStateIndexedEXT }, 4057ec681f3Smrg { "glFogCoordhNV", (PROC) nop_glFogCoordhNV }, 4067ec681f3Smrg { "glFogCoordhvNV", (PROC) nop_glFogCoordhvNV }, 4077ec681f3Smrg { "glGetNamedBufferParameterivEXT", (PROC) nop_glGetNamedBufferParameterivEXT }, 4087ec681f3Smrg { "glGetNamedBufferSubDataEXT", (PROC) nop_glGetNamedBufferSubDataEXT }, 4097ec681f3Smrg { "glMapNamedBufferEXT", (PROC) nop_glMapNamedBufferEXT }, 4107ec681f3Smrg { "glMatrixLoadfEXT", (PROC) nop_glMatrixLoadfEXT }, 4117ec681f3Smrg { "glMatrixLoadIdentityEXT", (PROC) nop_glMatrixLoadIdentityEXT }, 4127ec681f3Smrg { "glMultiTexCoord1hNV", (PROC) nop_glMultiTexCoord1hNV }, 4137ec681f3Smrg { "glMultiTexCoord1hvNV", (PROC) nop_glMultiTexCoord1hvNV }, 4147ec681f3Smrg { "glMultiTexCoord2hNV", (PROC) nop_glMultiTexCoord2hNV }, 4157ec681f3Smrg { "glMultiTexCoord2hvNV", (PROC) nop_glMultiTexCoord2hvNV }, 4167ec681f3Smrg { "glMultiTexCoord3hNV", (PROC) nop_glMultiTexCoord3hNV }, 4177ec681f3Smrg { "glMultiTexCoord3hvNV", (PROC) nop_glMultiTexCoord3hvNV }, 4187ec681f3Smrg { "glMultiTexCoord4hNV", (PROC) nop_glMultiTexCoord4hNV }, 4197ec681f3Smrg { "glMultiTexCoord4hvNV", (PROC) nop_glMultiTexCoord4hvNV }, 4207ec681f3Smrg { "glMultiTexCoordPointerEXT", (PROC) nop_glMultiTexCoordPointerEXT }, 4217ec681f3Smrg { "glMultiTexEnvfEXT", (PROC) nop_glMultiTexEnvfEXT }, 4227ec681f3Smrg { "glMultiTexEnvfvEXT", (PROC) nop_glMultiTexEnvfvEXT }, 4237ec681f3Smrg { "glMultiTexEnviEXT", (PROC) nop_glMultiTexEnviEXT }, 4247ec681f3Smrg { "glMultiTexGenfvEXT", (PROC) nop_glMultiTexGenfvEXT }, 4257ec681f3Smrg { "glMultiTexGeniEXT", (PROC) nop_glMultiTexGeniEXT }, 4267ec681f3Smrg { "glNamedBufferDataEXT", (PROC) nop_glNamedBufferDataEXT }, 4277ec681f3Smrg { "glNamedBufferSubDataEXT", (PROC) nop_glNamedBufferSubDataEXT }, 4287ec681f3Smrg { "glNamedProgramLocalParameter4fvEXT", (PROC) nop_glNamedProgramLocalParameter4fvEXT }, 4297ec681f3Smrg { "glNamedProgramLocalParameters4fvEXT", (PROC) nop_glNamedProgramLocalParameters4fvEXT }, 4307ec681f3Smrg { "glNormal3hNV", (PROC) nop_glNormal3hNV }, 4317ec681f3Smrg { "glNormal3hvNV", (PROC) nop_glNormal3hvNV }, 4327ec681f3Smrg { "glPatchParameterfv", (PROC) nop_glPatchParameterfv }, 4337ec681f3Smrg { "glPatchParameteri", (PROC) nop_glPatchParameteri }, 4347ec681f3Smrg { "glSecondaryColor3hNV", (PROC) nop_glSecondaryColor3hNV }, 4357ec681f3Smrg { "glSecondaryColor3hvNV", (PROC) nop_glSecondaryColor3hvNV }, 4367ec681f3Smrg { "glTexCoord1hNV", (PROC) nop_glTexCoord1hNV }, 4377ec681f3Smrg { "glTexCoord1hvNV", (PROC) nop_glTexCoord1hvNV }, 4387ec681f3Smrg { "glTexCoord2hNV", (PROC) nop_glTexCoord2hNV }, 4397ec681f3Smrg { "glTexCoord2hvNV", (PROC) nop_glTexCoord2hvNV }, 4407ec681f3Smrg { "glTexCoord3hNV", (PROC) nop_glTexCoord3hNV }, 4417ec681f3Smrg { "glTexCoord3hvNV", (PROC) nop_glTexCoord3hvNV }, 4427ec681f3Smrg { "glTexCoord4hNV", (PROC) nop_glTexCoord4hNV }, 4437ec681f3Smrg { "glTexCoord4hvNV", (PROC) nop_glTexCoord4hvNV }, 4447ec681f3Smrg { "glTextureParameterfEXT", (PROC) nop_glTextureParameterfEXT }, 4457ec681f3Smrg { "glTextureParameterfvEXT", (PROC) nop_glTextureParameterfvEXT }, 4467ec681f3Smrg { "glTextureParameteriEXT", (PROC) nop_glTextureParameteriEXT }, 4477ec681f3Smrg { "glUnmapNamedBufferEXT", (PROC) nop_glUnmapNamedBufferEXT }, 4487ec681f3Smrg { "glVertex2hNV", (PROC) nop_glVertex2hNV }, 4497ec681f3Smrg { "glVertex2hvNV", (PROC) nop_glVertex2hvNV }, 4507ec681f3Smrg { "glVertex3hNV", (PROC) nop_glVertex3hNV }, 4517ec681f3Smrg { "glVertex3hvNV", (PROC) nop_glVertex3hvNV }, 4527ec681f3Smrg { "glVertex4hNV", (PROC) nop_glVertex4hNV }, 4537ec681f3Smrg { "glVertex4hvNV", (PROC) nop_glVertex4hvNV }, 4547ec681f3Smrg { NULL, NULL } 4557ec681f3Smrg }; 4567ec681f3Smrg 4577ec681f3Smrg int i; 4587ec681f3Smrg 4597ec681f3Smrg for (i = 0; table[i].name; i++) { 4607ec681f3Smrg if (strcmp(table[i].name, name) == 0) 4617ec681f3Smrg return table[i].p; 4627ec681f3Smrg } 4637ec681f3Smrg return NULL; 4647ec681f3Smrg} 465