Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/frontends/wgl/stw_nopfuncs.c
4561 views
1
/**************************************************************************
2
*
3
* Copyright 2015 VMware, Inc.
4
* All Rights Reserved.
5
*
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:
13
*
14
* The above copyright notice and this permission notice (including the
15
* next paragraph) shall be included in all copies or substantial portions
16
* of the Software.
17
*
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.
25
*
26
**************************************************************************/
27
28
/**
29
* No-op GL API functions.
30
*
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
34
* crash.
35
*
36
* As a work-around we provide some no-op functions here to avoid those
37
* crashes.
38
*/
39
40
#include <GL/gl.h>
41
#include "stw_nopfuncs.h"
42
#include "util/u_debug.h"
43
44
45
static void
46
warning(const char *name)
47
{
48
/* use name+4 to skip "nop_" prefix */
49
_debug_printf("Application calling unsupported %s function\n", name+4);
50
}
51
52
static void APIENTRY
53
nop_glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture)
54
{
55
warning(__func__);
56
}
57
58
static void APIENTRY
59
nop_glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)
60
{
61
warning(__func__);
62
}
63
64
static void APIENTRY
65
nop_glColor3hvNV(const GLhalfNV *v)
66
{
67
warning(__func__);
68
}
69
70
static void APIENTRY
71
nop_glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha)
72
{
73
warning(__func__);
74
}
75
76
static void APIENTRY
77
nop_glColor4hvNV(const GLhalfNV *v)
78
{
79
warning(__func__);
80
}
81
82
static void APIENTRY
83
nop_glDisableClientStateIndexedEXT(GLenum array, GLuint index)
84
{
85
warning(__func__);
86
}
87
88
static void APIENTRY
89
nop_glEnableClientStateIndexedEXT(GLenum array, GLuint index)
90
{
91
warning(__func__);
92
}
93
94
static void APIENTRY
95
nop_glFogCoordhNV(GLhalfNV fog)
96
{
97
warning(__func__);
98
}
99
100
static void APIENTRY
101
nop_glFogCoordhvNV(const GLhalfNV *fog)
102
{
103
warning(__func__);
104
}
105
106
static void APIENTRY
107
nop_glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params)
108
{
109
warning(__func__);
110
}
111
112
static void APIENTRY
113
nop_glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
114
{
115
warning(__func__);
116
}
117
118
static void *APIENTRY
119
nop_glMapNamedBufferEXT(GLuint buffer, GLenum access)
120
{
121
warning(__func__);
122
return NULL;
123
}
124
125
static void APIENTRY
126
nop_glMatrixLoadfEXT(GLenum mode, const GLfloat *m)
127
{
128
warning(__func__);
129
}
130
131
static void APIENTRY
132
nop_glMatrixLoadIdentityEXT(GLenum mode)
133
{
134
warning(__func__);
135
}
136
137
static void APIENTRY
138
nop_glMultiTexCoord1hNV(GLenum target, GLhalfNV s)
139
{
140
warning(__func__);
141
}
142
143
static void APIENTRY
144
nop_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v)
145
{
146
warning(__func__);
147
}
148
149
static void APIENTRY
150
nop_glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t)
151
{
152
warning(__func__);
153
}
154
155
static void APIENTRY
156
nop_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v)
157
{
158
warning(__func__);
159
}
160
161
static void APIENTRY
162
nop_glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r)
163
{
164
warning(__func__);
165
}
166
167
static void APIENTRY
168
nop_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v)
169
{
170
warning(__func__);
171
}
172
173
static void APIENTRY
174
nop_glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)
175
{
176
warning(__func__);
177
}
178
179
static void APIENTRY
180
nop_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v)
181
{
182
warning(__func__);
183
}
184
185
static void APIENTRY
186
nop_glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)
187
{
188
warning(__func__);
189
}
190
191
static void APIENTRY
192
nop_glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param)
193
{
194
warning(__func__);
195
}
196
197
static void APIENTRY
198
nop_glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params)
199
{
200
warning(__func__);
201
}
202
203
static void APIENTRY
204
nop_glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param)
205
{
206
warning(__func__);
207
}
208
209
static void APIENTRY
210
nop_glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params)
211
{
212
warning(__func__);
213
}
214
215
static void APIENTRY
216
nop_glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param)
217
{
218
warning(__func__);
219
}
220
221
static void APIENTRY
222
nop_glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
223
{
224
warning(__func__);
225
}
226
227
static void APIENTRY
228
nop_glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
229
{
230
warning(__func__);
231
}
232
233
static void APIENTRY
234
nop_glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params)
235
{
236
warning(__func__);
237
}
238
239
static void APIENTRY
240
nop_glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params)
241
{
242
warning(__func__);
243
}
244
245
static void APIENTRY
246
nop_glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz)
247
{
248
warning(__func__);
249
}
250
251
static void APIENTRY
252
nop_glNormal3hvNV(const GLhalfNV *v)
253
{
254
warning(__func__);
255
}
256
257
static void APIENTRY
258
nop_glPatchParameterfv(GLenum pname, const GLfloat *values)
259
{
260
warning(__func__);
261
}
262
263
static void APIENTRY
264
nop_glPatchParameteri(GLenum pname, GLint value)
265
{
266
warning(__func__);
267
}
268
269
static void APIENTRY
270
nop_glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue)
271
{
272
warning(__func__);
273
}
274
275
static void APIENTRY
276
nop_glSecondaryColor3hvNV(const GLhalfNV *v)
277
{
278
warning(__func__);
279
}
280
281
static void APIENTRY
282
nop_glTexCoord1hNV(GLhalfNV s)
283
{
284
warning(__func__);
285
}
286
287
static void APIENTRY
288
nop_glTexCoord1hvNV(const GLhalfNV *v)
289
{
290
warning(__func__);
291
}
292
293
static void APIENTRY
294
nop_glTexCoord2hNV(GLhalfNV s, GLhalfNV t)
295
{
296
warning(__func__);
297
}
298
299
static void APIENTRY
300
nop_glTexCoord2hvNV(const GLhalfNV *v)
301
{
302
warning(__func__);
303
}
304
305
static void APIENTRY
306
nop_glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r)
307
{
308
warning(__func__);
309
}
310
311
static void APIENTRY
312
nop_glTexCoord3hvNV(const GLhalfNV *v)
313
{
314
warning(__func__);
315
}
316
317
static void APIENTRY
318
nop_glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q)
319
{
320
warning(__func__);
321
}
322
323
static void APIENTRY
324
nop_glTexCoord4hvNV(const GLhalfNV *v)
325
{
326
warning(__func__);
327
}
328
329
static void APIENTRY
330
nop_glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param)
331
{
332
warning(__func__);
333
}
334
335
static void APIENTRY
336
nop_glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params)
337
{
338
warning(__func__);
339
}
340
341
static void APIENTRY
342
nop_glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param)
343
{
344
warning(__func__);
345
}
346
347
static GLboolean APIENTRY
348
nop_glUnmapNamedBufferEXT(GLuint buffer)
349
{
350
warning(__func__);
351
return GL_FALSE;
352
}
353
354
static void APIENTRY
355
nop_glVertex2hNV(GLhalfNV x, GLhalfNV y)
356
{
357
warning(__func__);
358
}
359
360
static void APIENTRY
361
nop_glVertex2hvNV(const GLhalfNV *v)
362
{
363
warning(__func__);
364
}
365
366
static void APIENTRY
367
nop_glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z)
368
{
369
warning(__func__);
370
}
371
372
static void APIENTRY
373
nop_glVertex3hvNV(const GLhalfNV *v)
374
{
375
warning(__func__);
376
}
377
378
static void APIENTRY
379
nop_glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
380
{
381
warning(__func__);
382
}
383
384
static void APIENTRY
385
nop_glVertex4hvNV(const GLhalfNV *v)
386
{
387
warning(__func__);
388
}
389
390
391
PROC
392
stw_get_nop_function(const char *name)
393
{
394
struct {
395
const char *name;
396
PROC p;
397
} table[] = {
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 },
454
{ NULL, NULL }
455
};
456
457
int i;
458
459
for (i = 0; table[i].name; i++) {
460
if (strcmp(table[i].name, name) == 0)
461
return table[i].p;
462
}
463
return NULL;
464
}
465
466