1 /*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include <OpenGLESDispatch/GLESv1Dispatch.h>
18
19 #include "GLESv1.h"
20
21 // Stubs (common)
22
glDeleteFencesNV(GLsizei,const GLuint *)23 static void glDeleteFencesNV(GLsizei, const GLuint*) {
24 printf("%s: not implemented\n", __func__);
25 }
26
glDisableDriverControlQCOM(GLuint)27 static void glDisableDriverControlQCOM(GLuint) {
28 printf("%s: not implemented\n", __func__);
29 }
30
glDiscardFramebufferEXT(GLenum,GLsizei,const GLenum *)31 static void glDiscardFramebufferEXT(GLenum, GLsizei, const GLenum*) {
32 printf("%s: not implemented\n", __func__);
33 }
34
glEnableDriverControlQCOM(GLuint)35 static void glEnableDriverControlQCOM(GLuint) {
36 printf("%s: not implemented\n", __func__);
37 }
38
glEndTilingQCOM(GLbitfield)39 static void glEndTilingQCOM(GLbitfield) {
40 printf("%s: not implemented\n", __func__);
41 }
42
glExtGetBufferPointervQCOM(GLenum,GLvoid **)43 static void glExtGetBufferPointervQCOM(GLenum, GLvoid**) {
44 printf("%s: not implemented\n", __func__);
45 }
46
glExtGetBuffersQCOM(GLuint *,GLint,GLint *)47 static void glExtGetBuffersQCOM(GLuint*, GLint, GLint*) {
48 printf("%s: not implemented\n", __func__);
49 }
50
glExtGetFramebuffersQCOM(GLuint *,GLint,GLint *)51 static void glExtGetFramebuffersQCOM(GLuint*, GLint, GLint*) {
52 printf("%s: not implemented\n", __func__);
53 }
54
glExtGetProgramBinarySourceQCOM(GLuint,GLenum,GLchar *,GLint *)55 static void glExtGetProgramBinarySourceQCOM(GLuint, GLenum, GLchar*, GLint*) {
56 printf("%s: not implemented\n", __func__);
57 }
58
glExtGetProgramsQCOM(GLuint *,GLint,GLint *)59 static void glExtGetProgramsQCOM(GLuint*, GLint, GLint*) {
60 printf("%s: not implemented\n", __func__);
61 }
62
glExtGetRenderbuffersQCOM(GLuint *,GLint,GLint *)63 static void glExtGetRenderbuffersQCOM(GLuint*, GLint, GLint*) {
64 printf("%s: not implemented\n", __func__);
65 }
66
glExtGetShadersQCOM(GLuint *,GLint,GLint *)67 static void glExtGetShadersQCOM(GLuint*, GLint, GLint*) {
68 printf("%s: not implemented\n", __func__);
69 }
70
glExtGetTexLevelParameterivQCOM(GLuint,GLenum,GLint,GLenum,GLint *)71 static void glExtGetTexLevelParameterivQCOM(GLuint, GLenum, GLint, GLenum, GLint*) {
72 printf("%s: not implemented\n", __func__);
73 }
74
glExtGetTexSubImageQCOM(GLenum,GLint,GLint,GLint,GLint,GLsizei,GLsizei,GLsizei,GLenum,GLenum,GLvoid *)75 static void glExtGetTexSubImageQCOM(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei,
76 GLenum, GLenum, GLvoid*) {
77 printf("%s: not implemented\n", __func__);
78 }
79
glExtGetTexturesQCOM(GLuint *,GLint,GLint *)80 static void glExtGetTexturesQCOM(GLuint*, GLint, GLint*) {
81 printf("%s: not implemented\n", __func__);
82 }
83
glExtIsProgramBinaryQCOM(GLuint)84 static GLboolean glExtIsProgramBinaryQCOM(GLuint) {
85 printf("%s: not implemented\n", __func__);
86 return GL_FALSE;
87 }
88
glExtTexObjectStateOverrideiQCOM(GLenum,GLenum,GLint)89 static void glExtTexObjectStateOverrideiQCOM(GLenum, GLenum, GLint) {
90 printf("%s: not implemented\n", __func__);
91 }
92
glFinishFenceNV(GLuint)93 static void glFinishFenceNV(GLuint) {
94 printf("%s: not implemented\n", __func__);
95 }
96
glFramebufferTexture2DMultisampleIMG(GLenum,GLenum,GLenum,GLuint,GLint,GLsizei)97 static void glFramebufferTexture2DMultisampleIMG(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei) {
98 printf("%s: not implemented\n", __func__);
99 }
100
glGenFencesNV(GLsizei,GLuint *)101 static void glGenFencesNV(GLsizei, GLuint*) {
102 printf("%s: not implemented\n", __func__);
103 }
104
glGetDriverControlsQCOM(GLint *,GLsizei,GLuint *)105 static void glGetDriverControlsQCOM(GLint*, GLsizei, GLuint*) {
106 printf("%s: not implemented\n", __func__);
107 }
108
glGetDriverControlStringQCOM(GLuint,GLsizei,GLsizei *,GLchar *)109 static void glGetDriverControlStringQCOM(GLuint, GLsizei, GLsizei*, GLchar*) {
110 printf("%s: not implemented\n", __func__);
111 }
112
glGetFenceivNV(GLuint,GLenum,GLint *)113 static void glGetFenceivNV(GLuint, GLenum, GLint*) {
114 printf("%s: not implemented\n", __func__);
115 }
116
glIsFenceNV(GLuint)117 static GLboolean glIsFenceNV(GLuint) {
118 printf("%s: not implemented\n", __func__);
119 return GL_FALSE;
120 }
121
glMapBufferOES(GLenum,GLenum)122 static void* glMapBufferOES(GLenum, GLenum) {
123 printf("%s: not implemented\n", __func__);
124 return nullptr;
125 }
126
glMultiDrawArraysEXT(GLenum,const GLint *,const GLsizei *,GLsizei)127 static void glMultiDrawArraysEXT(GLenum, const GLint*, const GLsizei*, GLsizei) {
128 printf("%s: not implemented\n", __func__);
129 }
130
glMultiDrawElementsEXT(GLenum,const GLsizei *,GLenum,const GLvoid * const *,GLsizei)131 static void glMultiDrawElementsEXT(GLenum, const GLsizei*, GLenum, const GLvoid* const*, GLsizei) {
132 printf("%s: not implemented\n", __func__);
133 }
134
glRenderbufferStorageMultisampleIMG(GLenum,GLsizei,GLenum,GLsizei,GLsizei)135 static void glRenderbufferStorageMultisampleIMG(GLenum, GLsizei, GLenum, GLsizei, GLsizei) {
136 printf("%s: not implemented\n", __func__);
137 }
138
glSetFenceNV(GLuint,GLenum)139 static void glSetFenceNV(GLuint, GLenum) {
140 printf("%s: not implemented\n", __func__);
141 }
142
glStartTilingQCOM(GLuint,GLuint,GLuint,GLuint,GLbitfield)143 static void glStartTilingQCOM(GLuint, GLuint, GLuint, GLuint, GLbitfield) {
144 printf("%s: not implemented\n", __func__);
145 }
146
glTestFenceNV(GLuint)147 static GLboolean glTestFenceNV(GLuint) {
148 printf("%s: not implemented\n", __func__);
149 return GL_FALSE;
150 }
151
152 // Stubs (ES 1.1)
153
glBindVertexArrayOES(GLuint)154 static void glBindVertexArrayOES(GLuint) {
155 printf("%s: not implemented\n", __func__);
156 }
157
glCurrentPaletteMatrixOES(GLuint)158 static void glCurrentPaletteMatrixOES(GLuint) {
159 printf("%s: not implemented\n", __func__);
160 }
161
glDeleteVertexArraysOES(GLsizei,const GLuint *)162 static void glDeleteVertexArraysOES(GLsizei, const GLuint*) {
163 printf("%s: not implemented\n", __func__);
164 }
165
glGenVertexArraysOES(GLsizei,GLuint *)166 static void glGenVertexArraysOES(GLsizei, GLuint*) {
167 printf("%s: not implemented\n", __func__);
168 }
169
glGetBufferPointervOES(GLenum,GLenum,GLvoid **)170 static void glGetBufferPointervOES(GLenum, GLenum, GLvoid**) {
171 printf("%s: not implemented\n", __func__);
172 }
173
glGetTexGenfvOES(GLenum,GLenum,GLfloat *)174 static void glGetTexGenfvOES(GLenum, GLenum, GLfloat*) {
175 printf("%s: not implemented\n", __func__);
176 }
177
glGetTexGenivOES(GLenum,GLenum,GLint *)178 static void glGetTexGenivOES(GLenum, GLenum, GLint*) {
179 printf("%s: not implemented\n", __func__);
180 }
181
glGetTexGenxvOES(GLenum,GLenum,GLfixed *)182 static void glGetTexGenxvOES(GLenum, GLenum, GLfixed*) {
183 printf("%s: not implemented\n", __func__);
184 }
185
glIsVertexArrayOES(GLuint)186 static GLboolean glIsVertexArrayOES(GLuint) {
187 printf("%s: not implemented\n", __func__);
188 return GL_FALSE;
189 }
190
glLoadPaletteFromModelViewMatrixOES()191 static void glLoadPaletteFromModelViewMatrixOES() {
192 printf("%s: not implemented\n", __func__);
193 }
194
glMatrixIndexPointerData(GLint,GLenum,GLsizei,void *,GLuint)195 static void glMatrixIndexPointerData(GLint, GLenum, GLsizei, void*, GLuint) {
196 printf("%s: not implemented\n", __func__);
197 }
198
glMatrixIndexPointerOffset(GLint,GLenum,GLsizei,GLuint)199 static void glMatrixIndexPointerOffset(GLint, GLenum, GLsizei, GLuint) {
200 printf("%s: not implemented\n", __func__);
201 }
202
glMultiDrawArraysSUN(GLenum,GLint *,GLsizei *,GLsizei)203 static void glMultiDrawArraysSUN(GLenum, GLint*, GLsizei*, GLsizei) {
204 printf("%s: not implemented\n", __func__);
205 }
206
glMultiDrawElementsSUN(GLenum,const GLsizei *,GLenum,const GLvoid **,GLsizei)207 static void glMultiDrawElementsSUN(GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei) {
208 printf("%s: not implemented\n", __func__);
209 }
210
glQueryMatrixxOES(GLfixed *,GLint *)211 static GLbitfield glQueryMatrixxOES(GLfixed*, GLint*) {
212 printf("%s: not implemented\n", __func__);
213 return 0;
214 }
215
glTexGenfOES(GLenum,GLenum,GLfloat)216 static void glTexGenfOES(GLenum, GLenum, GLfloat) {
217 printf("%s: not implemented\n", __func__);
218 }
219
glTexGenfvOES(GLenum,GLenum,const GLfloat *)220 static void glTexGenfvOES(GLenum, GLenum, const GLfloat*) {
221 printf("%s: not implemented\n", __func__);
222 }
223
glTexGeniOES(GLenum,GLenum,GLint)224 static void glTexGeniOES(GLenum, GLenum, GLint) {
225 printf("%s: not implemented\n", __func__);
226 }
227
glTexGenivOES(GLenum,GLenum,const GLint *)228 static void glTexGenivOES(GLenum, GLenum, const GLint*) {
229 printf("%s: not implemented\n", __func__);
230 }
231
glTexGenxOES(GLenum,GLenum,GLfixed)232 static void glTexGenxOES(GLenum, GLenum, GLfixed) {
233 printf("%s: not implemented\n", __func__);
234 }
235
glTexGenxvOES(GLenum,GLenum,const GLfixed *)236 static void glTexGenxvOES(GLenum, GLenum, const GLfixed*) {
237 printf("%s: not implemented\n", __func__);
238 }
239
glUnmapBufferOES(GLenum)240 static GLboolean glUnmapBufferOES(GLenum) {
241 printf("%s: not implemented\n", __func__);
242 return GL_FALSE;
243 }
244
glWeightPointerData(GLint,GLenum,GLsizei,void *,GLuint)245 static void glWeightPointerData(GLint, GLenum, GLsizei, void*, GLuint) {
246 printf("%s: not implemented\n", __func__);
247 }
248
glWeightPointerOffset(GLint,GLenum,GLsizei,GLuint)249 static void glWeightPointerOffset(GLint, GLenum, GLsizei, GLuint) {
250 printf("%s: not implemented\n", __func__);
251 }
252
253 // Non-stubs (common)
254
glDrawElementsData(GLenum mode,GLsizei count,GLenum type,void * indices,GLuint)255 static void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* indices, GLuint) {
256 s_gles1.glDrawElements(mode, count, type, indices);
257 }
258
glDrawElementsOffset(GLenum mode,GLsizei count,GLenum type,GLuint offset)259 static void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset) {
260 s_gles1.glDrawElements(mode, count, type, reinterpret_cast<const GLvoid*>(offset));
261 }
262
glFinishRoundTrip()263 static GLint glFinishRoundTrip() {
264 s_gles1.glFinish();
265 return 0;
266 }
267
glGetCompressedTextureFormats(int count,GLint * formats)268 static void glGetCompressedTextureFormats(int count, GLint* formats) {
269 int nFormats;
270 s_gles1.glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &nFormats);
271 if (nFormats <= count)
272 s_gles1.glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, formats);
273 }
274
275 // Non-stubs (ES 1.1)
276
glColorPointerData(GLint size,GLenum type,GLsizei,void * data,GLuint)277 static void glColorPointerData(GLint size, GLenum type, GLsizei, void* data, GLuint) {
278 s_gles1.glColorPointer(size, type, 0, data);
279 }
280
glColorPointerOffset(GLint size,GLenum type,GLsizei,GLuint offset)281 static void glColorPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) {
282 s_gles1.glColorPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset));
283 }
284
glNormalPointerData(GLenum type,GLsizei,void * data,GLuint)285 static void glNormalPointerData(GLenum type, GLsizei, void* data, GLuint) {
286 s_gles1.glNormalPointer(type, 0, data);
287 }
288
glNormalPointerOffset(GLenum type,GLsizei,GLuint offset)289 static void glNormalPointerOffset(GLenum type, GLsizei, GLuint offset) {
290 s_gles1.glNormalPointer(type, 0, reinterpret_cast<GLvoid*>(offset));
291 }
292
glPointSizePointerData(GLenum type,GLsizei,void * data,GLuint)293 static void glPointSizePointerData(GLenum type, GLsizei, void* data, GLuint) {
294 s_gles1.glPointSizePointerOES(type, 0, data);
295 }
296
glPointSizePointerOffset(GLenum type,GLsizei,GLuint offset)297 static void glPointSizePointerOffset(GLenum type, GLsizei, GLuint offset) {
298 s_gles1.glPointSizePointerOES(type, 0, reinterpret_cast<GLvoid*>(offset));
299 }
300
glTexCoordPointerData(GLint,GLint size,GLenum type,GLsizei,void * data,GLuint)301 static void glTexCoordPointerData(GLint, GLint size, GLenum type, GLsizei, void* data, GLuint) {
302 // FIXME: unit?
303 s_gles1.glTexCoordPointer(size, type, 0, data);
304 }
305
glTexCoordPointerOffset(GLint size,GLenum type,GLsizei,GLuint offset)306 static void glTexCoordPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) {
307 s_gles1.glTexCoordPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset));
308 }
309
glVertexPointerData(GLint size,GLenum type,GLsizei,void * data,GLuint)310 static void glVertexPointerData(GLint size, GLenum type, GLsizei, void* data, GLuint) {
311 s_gles1.glVertexPointer(size, type, 0, data);
312 }
313
glVertexPointerOffset(GLint size,GLenum type,GLsizei,GLuint offset)314 static void glVertexPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) {
315 s_gles1.glVertexPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset));
316 }
317
318 #define KNIT(return_type, function_name, signature, callargs) function_name = s_gles1.function_name;
319
GLESv1()320 GLESv1::GLESv1() {
321 LIST_GLES1_FUNCTIONS(KNIT, KNIT)
322
323 // Remap some ES 1.0 extensions that become core in ES 1.1
324 glAlphaFuncxOES = glAlphaFuncx;
325 glClearColorxOES = glClearColorx;
326 glClearDepthfOES = glClearDepthf;
327 glClearDepthxOES = glClearDepthx;
328 glClipPlanefIMG = glClipPlanef;
329 glClipPlanefOES = glClipPlanef;
330 glClipPlanexIMG = glClipPlanex;
331 glClipPlanexOES = glClipPlanex;
332 glColor4xOES = glColor4x;
333 glDepthRangefOES = glDepthRangef;
334 glDepthRangexOES = glDepthRangex;
335 glFogxOES = glFogx;
336 glFogxvOES = glFogxv;
337 glFrustumfOES = glFrustumf;
338 glFrustumxOES = glFrustumx;
339 glGetClipPlanefOES = glGetClipPlanef;
340 glGetClipPlanexOES = glGetClipPlanex;
341 glGetFixedvOES = glGetFixedv;
342 glGetLightxvOES = glGetLightxv;
343 glGetMaterialxvOES = glGetMaterialxv;
344 glGetTexEnvxvOES = glGetTexEnvxv;
345 glGetTexParameterxvOES = glGetTexParameterxv;
346 glLightModelxOES = glLightModelx;
347 glLightModelxvOES = glLightModelxv;
348 glLightxOES = glLightx;
349 glLightxvOES = glLightxv;
350 glLineWidthxOES = glLineWidthx;
351 glLoadMatrixxOES = glLoadMatrixx;
352 glMaterialxOES = glMaterialx;
353 glMaterialxvOES = glMaterialxv;
354 glMultiTexCoord4xOES = glMultiTexCoord4x;
355 glMultMatrixxOES = glMultMatrixx;
356 glNormal3xOES = glNormal3x;
357 glOrthofOES = glOrthof;
358 glOrthoxOES = glOrthox;
359 glPointParameterxOES = glPointParameterx;
360 glPointParameterxvOES = glPointParameterxv;
361 glPointSizexOES = glPointSizex;
362 glPolygonOffsetxOES = glPolygonOffsetx;
363 glRotatexOES = glRotatex;
364 glSampleCoveragexOES = glSampleCoveragex;
365 glScalexOES = glScalex;
366 glTexEnvxOES = glTexEnvx;
367 glTexEnvxvOES = glTexEnvxv;
368 glTexParameterxOES = glTexParameterx;
369 glTexParameterxvOES = glTexParameterxv;
370 glTranslatexOES = glTranslatex;
371
372 // Entrypoints requiring custom wrappers (common)
373 glDrawElementsData = ::glDrawElementsData;
374 glDrawElementsOffset = ::glDrawElementsOffset;
375 glFinishRoundTrip = ::glFinishRoundTrip;
376 glGetCompressedTextureFormats = ::glGetCompressedTextureFormats;
377
378 // Entrypoints requiring custom wrappers (ES 1.1)
379 glColorPointerData = ::glColorPointerData;
380 glColorPointerOffset = ::glColorPointerOffset;
381 glNormalPointerData = ::glNormalPointerData;
382 glNormalPointerOffset = ::glNormalPointerOffset;
383 glPointSizePointerData = ::glPointSizePointerData;
384 glPointSizePointerOffset = ::glPointSizePointerOffset;
385 glTexCoordPointerData = ::glTexCoordPointerData;
386 glTexCoordPointerOffset = ::glTexCoordPointerOffset;
387 glVertexPointerData = ::glVertexPointerData;
388 glVertexPointerOffset = ::glVertexPointerOffset;
389
390 // Stub some extensions we will never implement (common)
391 glDeleteFencesNV = ::glDeleteFencesNV;
392 glDisableDriverControlQCOM = ::glDisableDriverControlQCOM;
393 glDiscardFramebufferEXT = ::glDiscardFramebufferEXT;
394 glEnableDriverControlQCOM = ::glEnableDriverControlQCOM;
395 glEndTilingQCOM = ::glEndTilingQCOM;
396 glExtGetBufferPointervQCOM = ::glExtGetBufferPointervQCOM;
397 glExtGetBuffersQCOM = ::glExtGetBuffersQCOM;
398 glExtGetFramebuffersQCOM = ::glExtGetFramebuffersQCOM;
399 glExtGetProgramBinarySourceQCOM = ::glExtGetProgramBinarySourceQCOM;
400 glExtGetProgramsQCOM = ::glExtGetProgramsQCOM;
401 glExtGetRenderbuffersQCOM = ::glExtGetRenderbuffersQCOM;
402 glExtGetShadersQCOM = ::glExtGetShadersQCOM;
403 glExtGetTexLevelParameterivQCOM = ::glExtGetTexLevelParameterivQCOM;
404 glExtGetTexSubImageQCOM = ::glExtGetTexSubImageQCOM;
405 glExtGetTexturesQCOM = ::glExtGetTexturesQCOM;
406 glExtIsProgramBinaryQCOM = ::glExtIsProgramBinaryQCOM;
407 glExtTexObjectStateOverrideiQCOM = ::glExtTexObjectStateOverrideiQCOM;
408 glFinishFenceNV = ::glFinishFenceNV;
409 glFramebufferTexture2DMultisampleIMG = ::glFramebufferTexture2DMultisampleIMG;
410 glGenFencesNV = ::glGenFencesNV;
411 glGetDriverControlsQCOM = ::glGetDriverControlsQCOM;
412 glGetDriverControlStringQCOM = ::glGetDriverControlStringQCOM;
413 glGetFenceivNV = ::glGetFenceivNV;
414 glIsFenceNV = ::glIsFenceNV;
415 glMapBufferOES = ::glMapBufferOES;
416 glMultiDrawArraysEXT = ::glMultiDrawArraysEXT;
417 glMultiDrawElementsEXT = ::glMultiDrawElementsEXT;
418 glRenderbufferStorageMultisampleIMG = ::glRenderbufferStorageMultisampleIMG;
419 glSetFenceNV = ::glSetFenceNV;
420 glStartTilingQCOM = ::glStartTilingQCOM;
421 glTestFenceNV = ::glTestFenceNV;
422
423 // Stub some extensions we will never implement (ES 1.1)
424 glBindVertexArrayOES = ::glBindVertexArrayOES;
425 glCurrentPaletteMatrixOES = ::glCurrentPaletteMatrixOES;
426 glDeleteVertexArraysOES = ::glDeleteVertexArraysOES;
427 glGenVertexArraysOES = ::glGenVertexArraysOES;
428 glGetBufferPointervOES = ::glGetBufferPointervOES;
429 glGetTexGenfvOES = ::glGetTexGenfvOES;
430 glGetTexGenivOES = ::glGetTexGenivOES;
431 glGetTexGenxvOES = ::glGetTexGenxvOES;
432 glIsVertexArrayOES = ::glIsVertexArrayOES;
433 glLoadPaletteFromModelViewMatrixOES = ::glLoadPaletteFromModelViewMatrixOES;
434 glMatrixIndexPointerData = ::glMatrixIndexPointerData;
435 glMatrixIndexPointerOffset = ::glMatrixIndexPointerOffset;
436 glMultiDrawArraysSUN = ::glMultiDrawArraysSUN;
437 glMultiDrawElementsSUN = ::glMultiDrawElementsSUN;
438 glQueryMatrixxOES = ::glQueryMatrixxOES;
439 glTexGenfOES = ::glTexGenfOES;
440 glTexGenfvOES = ::glTexGenfvOES;
441 glTexGeniOES = ::glTexGeniOES;
442 glTexGenivOES = ::glTexGenivOES;
443 glTexGenxOES = ::glTexGenxOES;
444 glTexGenxvOES = ::glTexGenxvOES;
445 glUnmapBufferOES = ::glUnmapBufferOES;
446 glWeightPointerData = ::glWeightPointerData;
447 glWeightPointerOffset = ::glWeightPointerOffset;
448 }
449