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