1 /**************************************************************************
3 * Copyright 2015 VMware, Inc.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
29 * No-op GL API functions.
31 * Some OpenGL apps (like Viewperf12) call wglGetProcAddress() to get
32 * a pointer to an extension function, get a NULL pointer, but don't bother
33 * to check for NULL before jumping through the pointer. This causes a
36 * As a work-around we provide some no-op functions here to avoid those
41 #include "stw_nopfuncs.h"
42 #include "util/u_debug.h"
46 warning(const char *name
)
48 /* use name+4 to skip "nop_" prefix */
49 _debug_printf("Application calling unsupported %s function\n", name
+4);
53 nop_glBindMultiTextureEXT(GLenum texunit
, GLenum target
, GLuint texture
)
59 nop_glColor3hNV(GLhalfNV red
, GLhalfNV green
, GLhalfNV blue
)
65 nop_glColor3hvNV(const GLhalfNV
*v
)
71 nop_glColor4hNV(GLhalfNV red
, GLhalfNV green
, GLhalfNV blue
, GLhalfNV alpha
)
77 nop_glColor4hvNV(const GLhalfNV
*v
)
83 nop_glDisableClientStateIndexedEXT(GLenum array
, GLuint index
)
89 nop_glEnableClientStateIndexedEXT(GLenum array
, GLuint index
)
95 nop_glFogCoordhNV(GLhalfNV fog
)
101 nop_glFogCoordhvNV(const GLhalfNV
*fog
)
107 nop_glGetNamedBufferParameterivEXT(GLuint buffer
, GLenum pname
, GLint
*params
)
113 nop_glGetNamedBufferSubDataEXT(GLuint buffer
, GLintptr offset
, GLsizeiptr size
, void *data
)
118 static void *APIENTRY
119 nop_glMapNamedBufferEXT(GLuint buffer
, GLenum access
)
126 nop_glMatrixLoadfEXT(GLenum mode
, const GLfloat
*m
)
132 nop_glMatrixLoadIdentityEXT(GLenum mode
)
138 nop_glMultiTexCoord1hNV(GLenum target
, GLhalfNV s
)
144 nop_glMultiTexCoord1hvNV(GLenum target
, const GLhalfNV
*v
)
150 nop_glMultiTexCoord2hNV(GLenum target
, GLhalfNV s
, GLhalfNV t
)
156 nop_glMultiTexCoord2hvNV(GLenum target
, const GLhalfNV
*v
)
162 nop_glMultiTexCoord3hNV(GLenum target
, GLhalfNV s
, GLhalfNV t
, GLhalfNV r
)
168 nop_glMultiTexCoord3hvNV(GLenum target
, const GLhalfNV
*v
)
174 nop_glMultiTexCoord4hNV(GLenum target
, GLhalfNV s
, GLhalfNV t
, GLhalfNV r
, GLhalfNV q
)
180 nop_glMultiTexCoord4hvNV(GLenum target
, const GLhalfNV
*v
)
186 nop_glMultiTexCoordPointerEXT(GLenum texunit
, GLint size
, GLenum type
, GLsizei stride
, const void *pointer
)
192 nop_glMultiTexEnvfEXT(GLenum texunit
, GLenum target
, GLenum pname
, GLfloat param
)
198 nop_glMultiTexEnvfvEXT(GLenum texunit
, GLenum target
, GLenum pname
, const GLfloat
*params
)
204 nop_glMultiTexEnviEXT(GLenum texunit
, GLenum target
, GLenum pname
, GLint param
)
210 nop_glMultiTexGenfvEXT(GLenum texunit
, GLenum coord
, GLenum pname
, const GLfloat
*params
)
216 nop_glMultiTexGeniEXT(GLenum texunit
, GLenum coord
, GLenum pname
, GLint param
)
222 nop_glNamedBufferDataEXT(GLuint buffer
, GLsizeiptr size
, const void *data
, GLenum usage
)
228 nop_glNamedBufferSubDataEXT(GLuint buffer
, GLintptr offset
, GLsizeiptr size
, const void *data
)
234 nop_glNamedProgramLocalParameter4fvEXT(GLuint program
, GLenum target
, GLuint index
, const GLfloat
*params
)
240 nop_glNamedProgramLocalParameters4fvEXT(GLuint program
, GLenum target
, GLuint index
, GLsizei count
, const GLfloat
*params
)
246 nop_glNormal3hNV(GLhalfNV nx
, GLhalfNV ny
, GLhalfNV nz
)
252 nop_glNormal3hvNV(const GLhalfNV
*v
)
258 nop_glPatchParameterfv(GLenum pname
, const GLfloat
*values
)
264 nop_glPatchParameteri(GLenum pname
, GLint value
)
270 nop_glSecondaryColor3hNV(GLhalfNV red
, GLhalfNV green
, GLhalfNV blue
)
276 nop_glSecondaryColor3hvNV(const GLhalfNV
*v
)
282 nop_glTexCoord1hNV(GLhalfNV s
)
288 nop_glTexCoord1hvNV(const GLhalfNV
*v
)
294 nop_glTexCoord2hNV(GLhalfNV s
, GLhalfNV t
)
300 nop_glTexCoord2hvNV(const GLhalfNV
*v
)
306 nop_glTexCoord3hNV(GLhalfNV s
, GLhalfNV t
, GLhalfNV r
)
312 nop_glTexCoord3hvNV(const GLhalfNV
*v
)
318 nop_glTexCoord4hNV(GLhalfNV s
, GLhalfNV t
, GLhalfNV r
, GLhalfNV q
)
324 nop_glTexCoord4hvNV(const GLhalfNV
*v
)
330 nop_glTextureParameterfEXT(GLuint texture
, GLenum target
, GLenum pname
, GLfloat param
)
336 nop_glTextureParameterfvEXT(GLuint texture
, GLenum target
, GLenum pname
, const GLfloat
*params
)
342 nop_glTextureParameteriEXT(GLuint texture
, GLenum target
, GLenum pname
, GLint param
)
347 static GLboolean APIENTRY
348 nop_glUnmapNamedBufferEXT(GLuint buffer
)
355 nop_glVertex2hNV(GLhalfNV x
, GLhalfNV y
)
361 nop_glVertex2hvNV(const GLhalfNV
*v
)
367 nop_glVertex3hNV(GLhalfNV x
, GLhalfNV y
, GLhalfNV z
)
373 nop_glVertex3hvNV(const GLhalfNV
*v
)
379 nop_glVertex4hNV(GLhalfNV x
, GLhalfNV y
, GLhalfNV z
, GLhalfNV w
)
385 nop_glVertex4hvNV(const GLhalfNV
*v
)
392 stw_get_nop_function(const char *name
)
398 { "glBindMultiTextureEXT", (PROC
) nop_glBindMultiTextureEXT
},
399 { "glColor3hNV", (PROC
) nop_glColor3hNV
},
400 { "glColor3hvNV", (PROC
) nop_glColor3hvNV
},
401 { "glColor4hNV", (PROC
) nop_glColor4hNV
},
402 { "glColor4hvNV", (PROC
) nop_glColor4hvNV
},
403 { "glDisableClientStateIndexedEXT", (PROC
) nop_glDisableClientStateIndexedEXT
},
404 { "glEnableClientStateIndexedEXT", (PROC
) nop_glEnableClientStateIndexedEXT
},
405 { "glFogCoordhNV", (PROC
) nop_glFogCoordhNV
},
406 { "glFogCoordhvNV", (PROC
) nop_glFogCoordhvNV
},
407 { "glGetNamedBufferParameterivEXT", (PROC
) nop_glGetNamedBufferParameterivEXT
},
408 { "glGetNamedBufferSubDataEXT", (PROC
) nop_glGetNamedBufferSubDataEXT
},
409 { "glMapNamedBufferEXT", (PROC
) nop_glMapNamedBufferEXT
},
410 { "glMatrixLoadfEXT", (PROC
) nop_glMatrixLoadfEXT
},
411 { "glMatrixLoadIdentityEXT", (PROC
) nop_glMatrixLoadIdentityEXT
},
412 { "glMultiTexCoord1hNV", (PROC
) nop_glMultiTexCoord1hNV
},
413 { "glMultiTexCoord1hvNV", (PROC
) nop_glMultiTexCoord1hvNV
},
414 { "glMultiTexCoord2hNV", (PROC
) nop_glMultiTexCoord2hNV
},
415 { "glMultiTexCoord2hvNV", (PROC
) nop_glMultiTexCoord2hvNV
},
416 { "glMultiTexCoord3hNV", (PROC
) nop_glMultiTexCoord3hNV
},
417 { "glMultiTexCoord3hvNV", (PROC
) nop_glMultiTexCoord3hvNV
},
418 { "glMultiTexCoord4hNV", (PROC
) nop_glMultiTexCoord4hNV
},
419 { "glMultiTexCoord4hvNV", (PROC
) nop_glMultiTexCoord4hvNV
},
420 { "glMultiTexCoordPointerEXT", (PROC
) nop_glMultiTexCoordPointerEXT
},
421 { "glMultiTexEnvfEXT", (PROC
) nop_glMultiTexEnvfEXT
},
422 { "glMultiTexEnvfvEXT", (PROC
) nop_glMultiTexEnvfvEXT
},
423 { "glMultiTexEnviEXT", (PROC
) nop_glMultiTexEnviEXT
},
424 { "glMultiTexGenfvEXT", (PROC
) nop_glMultiTexGenfvEXT
},
425 { "glMultiTexGeniEXT", (PROC
) nop_glMultiTexGeniEXT
},
426 { "glNamedBufferDataEXT", (PROC
) nop_glNamedBufferDataEXT
},
427 { "glNamedBufferSubDataEXT", (PROC
) nop_glNamedBufferSubDataEXT
},
428 { "glNamedProgramLocalParameter4fvEXT", (PROC
) nop_glNamedProgramLocalParameter4fvEXT
},
429 { "glNamedProgramLocalParameters4fvEXT", (PROC
) nop_glNamedProgramLocalParameters4fvEXT
},
430 { "glNormal3hNV", (PROC
) nop_glNormal3hNV
},
431 { "glNormal3hvNV", (PROC
) nop_glNormal3hvNV
},
432 { "glPatchParameterfv", (PROC
) nop_glPatchParameterfv
},
433 { "glPatchParameteri", (PROC
) nop_glPatchParameteri
},
434 { "glSecondaryColor3hNV", (PROC
) nop_glSecondaryColor3hNV
},
435 { "glSecondaryColor3hvNV", (PROC
) nop_glSecondaryColor3hvNV
},
436 { "glTexCoord1hNV", (PROC
) nop_glTexCoord1hNV
},
437 { "glTexCoord1hvNV", (PROC
) nop_glTexCoord1hvNV
},
438 { "glTexCoord2hNV", (PROC
) nop_glTexCoord2hNV
},
439 { "glTexCoord2hvNV", (PROC
) nop_glTexCoord2hvNV
},
440 { "glTexCoord3hNV", (PROC
) nop_glTexCoord3hNV
},
441 { "glTexCoord3hvNV", (PROC
) nop_glTexCoord3hvNV
},
442 { "glTexCoord4hNV", (PROC
) nop_glTexCoord4hNV
},
443 { "glTexCoord4hvNV", (PROC
) nop_glTexCoord4hvNV
},
444 { "glTextureParameterfEXT", (PROC
) nop_glTextureParameterfEXT
},
445 { "glTextureParameterfvEXT", (PROC
) nop_glTextureParameterfvEXT
},
446 { "glTextureParameteriEXT", (PROC
) nop_glTextureParameteriEXT
},
447 { "glUnmapNamedBufferEXT", (PROC
) nop_glUnmapNamedBufferEXT
},
448 { "glVertex2hNV", (PROC
) nop_glVertex2hNV
},
449 { "glVertex2hvNV", (PROC
) nop_glVertex2hvNV
},
450 { "glVertex3hNV", (PROC
) nop_glVertex3hNV
},
451 { "glVertex3hvNV", (PROC
) nop_glVertex3hvNV
},
452 { "glVertex4hNV", (PROC
) nop_glVertex4hNV
},
453 { "glVertex4hvNV", (PROC
) nop_glVertex4hvNV
},
459 for (i
= 0; table
[i
].name
; i
++) {
460 if (strcmp(table
[i
].name
, name
) == 0)