Tizen 2.0 Release
[profile/ivi/osmesa.git] / src / mesa / main / api_exec_es2.c
1 /* DO NOT EDIT *************************************************
2  * THIS FILE AUTOMATICALLY GENERATED BY THE es_generator.py SCRIPT
3  * API specification file:   main/APIspec.xml
4  * GLES version:             GLES2.0
5  * date:                     2011-11-17 11:46:39
6  */
7
8
9 #include "GLES2/gl2.h"
10 #include "GLES2/gl2ext.h"
11 #include "main/mfeatures.h"
12 #include "main/compiler.h"
13 #include "main/api_exec.h"
14
15 #if FEATURE_ES2
16
17 #ifndef GLAPIENTRYP
18 #define GLAPIENTRYP GL_APIENTRYP
19 #endif
20
21
22 /* These types are needed for the Mesa veneer, but are not defined in
23  * the standard GLES headers.
24  */
25 typedef double GLdouble;
26 typedef double GLclampd;
27
28 /* Mesa error handling requires these */
29 extern void *_mesa_get_current_context(void);
30 extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
31
32 /*************************************************************
33  * Generated functions begin here
34  */
35
36 extern void GL_APIENTRY _mesa_ActiveTextureARB(GLenum texture);
37 static void GL_APIENTRY _es_ActiveTexture(GLenum texture)
38 {
39     switch(texture) {
40         case GL_TEXTURE0:
41         case GL_TEXTURE1:
42         case GL_TEXTURE2:
43         case GL_TEXTURE3:
44         case GL_TEXTURE4:
45         case GL_TEXTURE5:
46         case GL_TEXTURE6:
47         case GL_TEXTURE7:
48         case GL_TEXTURE8:
49         case GL_TEXTURE9:
50         case GL_TEXTURE10:
51         case GL_TEXTURE11:
52         case GL_TEXTURE12:
53         case GL_TEXTURE13:
54         case GL_TEXTURE14:
55         case GL_TEXTURE15:
56         case GL_TEXTURE16:
57         case GL_TEXTURE17:
58         case GL_TEXTURE18:
59         case GL_TEXTURE19:
60         case GL_TEXTURE20:
61         case GL_TEXTURE21:
62         case GL_TEXTURE22:
63         case GL_TEXTURE23:
64         case GL_TEXTURE24:
65         case GL_TEXTURE25:
66         case GL_TEXTURE26:
67         case GL_TEXTURE27:
68         case GL_TEXTURE28:
69         case GL_TEXTURE29:
70         case GL_TEXTURE30:
71         case GL_TEXTURE31:
72             break;
73         default:
74             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glActiveTexture(texture=0x%x)", texture);
75             return;
76     }
77
78     _mesa_ActiveTextureARB(texture);
79 }
80
81 extern void GL_APIENTRY _mesa_AttachShader(GLuint program, GLuint shader);
82 #define _es_AttachShader _mesa_AttachShader
83
84 extern void GL_APIENTRY _mesa_BindAttribLocationARB(GLuint program, GLuint index, const char * name);
85 #define _es_BindAttribLocation _mesa_BindAttribLocationARB
86
87 extern void GL_APIENTRY _mesa_BindBufferARB(GLenum target, GLuint buffer);
88 static void GL_APIENTRY _es_BindBuffer(GLenum target, GLuint buffer)
89 {
90     switch(target) {
91         case GL_ARRAY_BUFFER:
92         case GL_ELEMENT_ARRAY_BUFFER:
93             break;
94         default:
95             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBindBuffer(target=0x%x)", target);
96             return;
97     }
98
99     _mesa_BindBufferARB(target, buffer);
100 }
101
102 extern void GL_APIENTRY _mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer);
103 static void GL_APIENTRY _es_BindFramebuffer(GLenum target, GLuint framebuffer)
104 {
105     switch(target) {
106         case GL_FRAMEBUFFER:
107             break;
108         default:
109             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBindFramebuffer(target=0x%x)", target);
110             return;
111     }
112
113     _mesa_BindFramebufferEXT(target, framebuffer);
114 }
115
116 extern void GL_APIENTRY _mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer);
117 static void GL_APIENTRY _es_BindRenderbuffer(GLenum target, GLuint renderbuffer)
118 {
119     switch(target) {
120         case GL_RENDERBUFFER:
121             break;
122         default:
123             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBindRenderbuffer(target=0x%x)", target);
124             return;
125     }
126
127     _mesa_BindRenderbufferEXT(target, renderbuffer);
128 }
129
130 extern void GL_APIENTRY _mesa_BindTexture(GLenum target, GLuint texture);
131 static void GL_APIENTRY _es_BindTexture(GLenum target, GLuint texture)
132 {
133     switch(target) {
134         case GL_TEXTURE_2D:
135         case GL_TEXTURE_CUBE_MAP:
136         case GL_TEXTURE_3D_OES:
137             break;
138         default:
139             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBindTexture(target=0x%x)", target);
140             return;
141     }
142
143     _mesa_BindTexture(target, texture);
144 }
145
146 extern void GL_APIENTRY _mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
147 #define _es_BlendColor _mesa_BlendColor
148
149 extern void GL_APIENTRY _mesa_BlendEquation(GLenum mode);
150 static void GL_APIENTRY _es_BlendEquation(GLenum mode)
151 {
152     switch(mode) {
153         case GL_FUNC_ADD:
154         case GL_FUNC_SUBTRACT:
155         case GL_FUNC_REVERSE_SUBTRACT:
156         case GL_MIN_EXT:
157         case GL_MAX_EXT:
158             break;
159         default:
160             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendEquation(mode=0x%x)", mode);
161             return;
162     }
163
164     _mesa_BlendEquation(mode);
165 }
166
167 extern void GL_APIENTRY _mesa_BlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha);
168 static void GL_APIENTRY _es_BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
169 {
170     switch(modeRGB) {
171         case GL_FUNC_ADD:
172         case GL_FUNC_SUBTRACT:
173         case GL_FUNC_REVERSE_SUBTRACT:
174         case GL_MIN_EXT:
175         case GL_MAX_EXT:
176             break;
177         default:
178             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendEquationSeparate(modeRGB=0x%x)", modeRGB);
179             return;
180     }
181     switch(modeAlpha) {
182         case GL_FUNC_ADD:
183         case GL_FUNC_SUBTRACT:
184         case GL_FUNC_REVERSE_SUBTRACT:
185         case GL_MIN_EXT:
186         case GL_MAX_EXT:
187             break;
188         default:
189             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendEquationSeparate(modeAlpha=0x%x)", modeAlpha);
190             return;
191     }
192
193     _mesa_BlendEquationSeparateEXT(modeRGB, modeAlpha);
194 }
195
196 extern void GL_APIENTRY _mesa_BlendFunc(GLenum sfactor, GLenum dfactor);
197 static void GL_APIENTRY _es_BlendFunc(GLenum sfactor, GLenum dfactor)
198 {
199     switch(sfactor) {
200         case GL_ZERO:
201         case GL_ONE:
202         case GL_SRC_COLOR:
203         case GL_ONE_MINUS_SRC_COLOR:
204         case GL_SRC_ALPHA:
205         case GL_ONE_MINUS_SRC_ALPHA:
206         case GL_DST_ALPHA:
207         case GL_ONE_MINUS_DST_ALPHA:
208         case GL_DST_COLOR:
209         case GL_ONE_MINUS_DST_COLOR:
210         case GL_SRC_ALPHA_SATURATE:
211         case GL_CONSTANT_COLOR:
212         case GL_CONSTANT_ALPHA:
213         case GL_ONE_MINUS_CONSTANT_COLOR:
214         case GL_ONE_MINUS_CONSTANT_ALPHA:
215             break;
216         default:
217             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFunc(sfactor=0x%x)", sfactor);
218             return;
219     }
220     switch(dfactor) {
221         case GL_ZERO:
222         case GL_ONE:
223         case GL_SRC_COLOR:
224         case GL_ONE_MINUS_SRC_COLOR:
225         case GL_SRC_ALPHA:
226         case GL_ONE_MINUS_SRC_ALPHA:
227         case GL_DST_ALPHA:
228         case GL_ONE_MINUS_DST_ALPHA:
229         case GL_DST_COLOR:
230         case GL_ONE_MINUS_DST_COLOR:
231         case GL_CONSTANT_COLOR:
232         case GL_CONSTANT_ALPHA:
233         case GL_ONE_MINUS_CONSTANT_COLOR:
234         case GL_ONE_MINUS_CONSTANT_ALPHA:
235             break;
236         default:
237             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFunc(dfactor=0x%x)", dfactor);
238             return;
239     }
240
241     _mesa_BlendFunc(sfactor, dfactor);
242 }
243
244 extern void GL_APIENTRY _mesa_BlendFuncSeparateEXT(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
245 static void GL_APIENTRY _es_BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
246 {
247     switch(srcRGB) {
248         case GL_ZERO:
249         case GL_ONE:
250         case GL_SRC_COLOR:
251         case GL_ONE_MINUS_SRC_COLOR:
252         case GL_SRC_ALPHA:
253         case GL_ONE_MINUS_SRC_ALPHA:
254         case GL_DST_ALPHA:
255         case GL_ONE_MINUS_DST_ALPHA:
256         case GL_DST_COLOR:
257         case GL_ONE_MINUS_DST_COLOR:
258         case GL_SRC_ALPHA_SATURATE:
259         case GL_CONSTANT_COLOR:
260         case GL_ONE_MINUS_CONSTANT_COLOR:
261         case GL_CONSTANT_ALPHA:
262         case GL_ONE_MINUS_CONSTANT_ALPHA:
263             break;
264         default:
265             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFuncSeparate(srcRGB=0x%x)", srcRGB);
266             return;
267     }
268     switch(dstRGB) {
269         case GL_ZERO:
270         case GL_ONE:
271         case GL_SRC_COLOR:
272         case GL_ONE_MINUS_SRC_COLOR:
273         case GL_SRC_ALPHA:
274         case GL_ONE_MINUS_SRC_ALPHA:
275         case GL_DST_ALPHA:
276         case GL_ONE_MINUS_DST_ALPHA:
277         case GL_DST_COLOR:
278         case GL_ONE_MINUS_DST_COLOR:
279         case GL_CONSTANT_COLOR:
280         case GL_ONE_MINUS_CONSTANT_COLOR:
281         case GL_CONSTANT_ALPHA:
282         case GL_ONE_MINUS_CONSTANT_ALPHA:
283             break;
284         default:
285             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFuncSeparate(dstRGB=0x%x)", dstRGB);
286             return;
287     }
288     switch(srcAlpha) {
289         case GL_ZERO:
290         case GL_ONE:
291         case GL_SRC_COLOR:
292         case GL_ONE_MINUS_SRC_COLOR:
293         case GL_SRC_ALPHA:
294         case GL_ONE_MINUS_SRC_ALPHA:
295         case GL_DST_ALPHA:
296         case GL_ONE_MINUS_DST_ALPHA:
297         case GL_DST_COLOR:
298         case GL_ONE_MINUS_DST_COLOR:
299         case GL_SRC_ALPHA_SATURATE:
300         case GL_CONSTANT_COLOR:
301         case GL_ONE_MINUS_CONSTANT_COLOR:
302         case GL_CONSTANT_ALPHA:
303         case GL_ONE_MINUS_CONSTANT_ALPHA:
304             break;
305         default:
306             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFuncSeparate(srcAlpha=0x%x)", srcAlpha);
307             return;
308     }
309     switch(dstAlpha) {
310         case GL_ZERO:
311         case GL_ONE:
312         case GL_SRC_COLOR:
313         case GL_ONE_MINUS_SRC_COLOR:
314         case GL_SRC_ALPHA:
315         case GL_ONE_MINUS_SRC_ALPHA:
316         case GL_DST_ALPHA:
317         case GL_ONE_MINUS_DST_ALPHA:
318         case GL_DST_COLOR:
319         case GL_ONE_MINUS_DST_COLOR:
320         case GL_CONSTANT_COLOR:
321         case GL_ONE_MINUS_CONSTANT_COLOR:
322         case GL_CONSTANT_ALPHA:
323         case GL_ONE_MINUS_CONSTANT_ALPHA:
324             break;
325         default:
326             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBlendFuncSeparate(dstAlpha=0x%x)", dstAlpha);
327             return;
328     }
329
330     _mesa_BlendFuncSeparateEXT(srcRGB, dstRGB, srcAlpha, dstAlpha);
331 }
332
333 extern void GL_APIENTRY _mesa_BufferDataARB(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
334 static void GL_APIENTRY _es_BufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
335 {
336     switch(target) {
337         case GL_ARRAY_BUFFER:
338         case GL_ELEMENT_ARRAY_BUFFER:
339             break;
340         default:
341             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBufferData(target=0x%x)", target);
342             return;
343     }
344     switch(usage) {
345         case GL_STATIC_DRAW:
346         case GL_DYNAMIC_DRAW:
347         case GL_STREAM_DRAW:
348             break;
349         default:
350             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBufferData(usage=0x%x)", usage);
351             return;
352     }
353
354     _mesa_BufferDataARB(target, size, data, usage);
355 }
356
357 extern void GL_APIENTRY _mesa_BufferSubDataARB(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data);
358 static void GL_APIENTRY _es_BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
359 {
360     switch(target) {
361         case GL_ARRAY_BUFFER:
362         case GL_ELEMENT_ARRAY_BUFFER:
363             break;
364         default:
365             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glBufferSubData(target=0x%x)", target);
366             return;
367     }
368
369     _mesa_BufferSubDataARB(target, offset, size, data);
370 }
371
372 extern GLenum GL_APIENTRY _mesa_CheckFramebufferStatusEXT(GLenum target);
373 static GLenum GL_APIENTRY _es_CheckFramebufferStatus(GLenum target)
374 {
375     switch(target) {
376         case GL_FRAMEBUFFER:
377             break;
378         default:
379             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCheckFramebufferStatus(target=0x%x)", target);
380             return (GLenum) 0;
381     }
382
383     return _mesa_CheckFramebufferStatusEXT(target);
384 }
385
386 extern void GL_APIENTRY _mesa_Clear(GLbitfield mask);
387 static void GL_APIENTRY _es_Clear(GLbitfield mask)
388 {
389         printf("%s\n", __FUNCTION__);
390     switch(mask) {
391         case 0:
392         case (GL_COLOR_BUFFER_BIT):
393         case (GL_DEPTH_BUFFER_BIT):
394         case (GL_STENCIL_BUFFER_BIT):
395         case (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT):
396         case (GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT):
397         case (GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT):
398         case (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT):
399             break;
400         default:
401             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glClear(mask=0x%x)", mask);
402             return;
403     }
404
405     _mesa_Clear(mask);
406 }
407
408 extern void GL_APIENTRY _mesa_ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
409 #define _es_ClearColor _mesa_ClearColor
410
411 extern void GL_APIENTRY _mesa_ClearDepthf(GLclampf depth);
412 #define _es_ClearDepthf _mesa_ClearDepthf
413
414 extern void GL_APIENTRY _mesa_ClearStencil(GLint s);
415 #define _es_ClearStencil _mesa_ClearStencil
416
417 extern void GL_APIENTRY _mesa_ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
418 #define _es_ColorMask _mesa_ColorMask
419
420 extern void GL_APIENTRY _mesa_CompileShaderARB(GLuint shader);
421 #define _es_CompileShader _mesa_CompileShaderARB
422
423 extern void GL_APIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);
424 static void GL_APIENTRY _es_CompressedTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
425 {
426     switch(target) {
427         case GL_TEXTURE_2D:
428         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
429         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
430         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
431         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
432         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
433         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
434             break;
435         default:
436             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexImage2D(target=0x%x)", target);
437             return;
438     }
439     switch(internalFormat) {
440         case GL_PALETTE4_RGB8_OES:
441         case GL_PALETTE4_RGBA8_OES:
442         case GL_PALETTE4_R5_G6_B5_OES:
443         case GL_PALETTE4_RGBA4_OES:
444         case GL_PALETTE4_RGB5_A1_OES:
445         case GL_PALETTE8_RGB8_OES:
446         case GL_PALETTE8_RGBA8_OES:
447         case GL_PALETTE8_R5_G6_B5_OES:
448         case GL_PALETTE8_RGBA4_OES:
449         case GL_PALETTE8_RGB5_A1_OES:
450         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
451         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
452             break;
453         default:
454             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexImage2D(internalFormat=0x%x)", internalFormat);
455             return;
456     }
457     switch(border) {
458         case 0:
459             break;
460         default:
461             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glCompressedTexImage2D(border=%d)", border);
462             return;
463     }
464
465     _mesa_CompressedTexImage2DARB(target, level, internalFormat, width, height, border, imageSize, data);
466 }
467
468 extern void GL_APIENTRY _mesa_CompressedTexImage3DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imagesize, const GLvoid * data);
469 static void GL_APIENTRY _es_CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imagesize, const GLvoid *data)
470 {
471     switch(target) {
472         case GL_TEXTURE_3D_OES:
473             break;
474         default:
475             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexImage3DOES(target=0x%x)", target);
476             return;
477     }
478
479     _mesa_CompressedTexImage3DARB(target, level, internalFormat, width, height, depth, border, imagesize, data);
480 }
481
482 extern void GL_APIENTRY _mesa_CompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);
483 static void GL_APIENTRY _es_CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
484 {
485     switch(target) {
486         case GL_TEXTURE_2D:
487         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
488         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
489         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
490         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
491         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
492         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
493             break;
494         default:
495             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexSubImage2D(target=0x%x)", target);
496             return;
497     }
498     switch(format) {
499         case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
500         case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
501             break;
502         default:
503             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexSubImage2D(format=0x%x)", format);
504             return;
505     }
506
507     _mesa_CompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);
508 }
509
510 extern void GL_APIENTRY _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imagesize, const GLvoid * data);
511 static void GL_APIENTRY _es_CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imagesize, const GLvoid *data)
512 {
513     switch(target) {
514         case GL_TEXTURE_3D_OES:
515             break;
516         default:
517             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCompressedTexSubImage3DOES(target=0x%x)", target);
518             return;
519     }
520
521     _mesa_CompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imagesize, data);
522 }
523
524 extern void GL_APIENTRY _mesa_CopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
525 static void GL_APIENTRY _es_CopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
526 {
527     switch(target) {
528         case GL_TEXTURE_2D:
529         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
530         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
531         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
532         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
533         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
534         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
535             break;
536         default:
537             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCopyTexImage2D(target=0x%x)", target);
538             return;
539     }
540     switch(internalFormat) {
541         case GL_ALPHA:
542         case GL_RGB:
543         case GL_RGBA:
544         case GL_LUMINANCE:
545         case GL_LUMINANCE_ALPHA:
546             break;
547         default:
548             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glCopyTexImage2D(internalFormat=0x%x)", internalFormat);
549             return;
550     }
551     switch(border) {
552         case 0:
553             break;
554         default:
555             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glCopyTexImage2D(border=%d)", border);
556             return;
557     }
558
559     _mesa_CopyTexImage2D(target, level, internalFormat, x, y, width, height, border);
560 }
561
562 extern void GL_APIENTRY _mesa_CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
563 static void GL_APIENTRY _es_CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
564 {
565     switch(target) {
566         case GL_TEXTURE_2D:
567         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
568         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
569         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
570         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
571         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
572         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
573             break;
574         default:
575             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCopyTexSubImage2D(target=0x%x)", target);
576             return;
577     }
578
579     _mesa_CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
580 }
581
582 extern void GL_APIENTRY _mesa_CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
583 static void GL_APIENTRY _es_CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
584 {
585     switch(target) {
586         case GL_TEXTURE_3D_OES:
587             break;
588         default:
589             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCopyTexSubImage3DOES(target=0x%x)", target);
590             return;
591     }
592
593     _mesa_CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
594 }
595
596 extern GLuint GL_APIENTRY _mesa_CreateProgram(void);
597 #define _es_CreateProgram _mesa_CreateProgram
598
599 extern GLuint GL_APIENTRY _mesa_CreateShader(GLenum type);
600 static GLuint GL_APIENTRY _es_CreateShader(GLenum type)
601 {
602     switch(type) {
603         case GL_VERTEX_SHADER:
604         case GL_FRAGMENT_SHADER:
605             break;
606         default:
607             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCreateShader(type=0x%x)", type);
608             return (GLuint) 0;
609     }
610
611     return _mesa_CreateShader(type);
612 }
613
614 extern void GL_APIENTRY _mesa_CullFace(GLenum mode);
615 static void GL_APIENTRY _es_CullFace(GLenum mode)
616 {
617     switch(mode) {
618         case GL_FRONT:
619         case GL_BACK:
620         case GL_FRONT_AND_BACK:
621             break;
622         default:
623             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glCullFace(mode=0x%x)", mode);
624             return;
625     }
626
627     _mesa_CullFace(mode);
628 }
629
630 extern void GL_APIENTRY _mesa_DeleteBuffersARB(GLsizei n, const GLuint * buffer);
631 #define _es_DeleteBuffers _mesa_DeleteBuffersARB
632
633 extern void GL_APIENTRY _mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers);
634 #define _es_DeleteFramebuffers _mesa_DeleteFramebuffersEXT
635
636 extern void GL_APIENTRY _mesa_DeleteProgram(GLuint program);
637 #define _es_DeleteProgram _mesa_DeleteProgram
638
639 extern void GL_APIENTRY _mesa_DeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers);
640 #define _es_DeleteRenderbuffers _mesa_DeleteRenderbuffersEXT
641
642 extern void GL_APIENTRY _mesa_DeleteShader(GLuint shader);
643 #define _es_DeleteShader _mesa_DeleteShader
644
645 extern void GL_APIENTRY _mesa_DeleteTextures(GLsizei n, const GLuint * textures);
646 #define _es_DeleteTextures _mesa_DeleteTextures
647
648 extern void GL_APIENTRY _mesa_DepthFunc(GLenum func);
649 static void GL_APIENTRY _es_DepthFunc(GLenum func)
650 {
651     switch(func) {
652         case GL_NEVER:
653         case GL_LESS:
654         case GL_EQUAL:
655         case GL_LEQUAL:
656         case GL_GREATER:
657         case GL_NOTEQUAL:
658         case GL_GEQUAL:
659         case GL_ALWAYS:
660             break;
661         default:
662             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glDepthFunc(func=0x%x)", func);
663             return;
664     }
665
666     _mesa_DepthFunc(func);
667 }
668
669 extern void GL_APIENTRY _mesa_DepthMask(GLboolean flag);
670 #define _es_DepthMask _mesa_DepthMask
671
672 extern void GL_APIENTRY _mesa_DepthRangef(GLclampf zNear, GLclampf zFar);
673 #define _es_DepthRangef _mesa_DepthRangef
674
675 extern void GL_APIENTRY _mesa_DetachShader(GLuint program, GLuint shader);
676 #define _es_DetachShader _mesa_DetachShader
677
678 extern void GL_APIENTRY _mesa_Disable(GLenum cap);
679 static void GL_APIENTRY _es_Disable(GLenum cap)
680 {
681     switch(cap) {
682         case GL_CULL_FACE:
683         case GL_SCISSOR_TEST:
684         case GL_POLYGON_OFFSET_FILL:
685         case GL_SAMPLE_ALPHA_TO_COVERAGE:
686         case GL_SAMPLE_COVERAGE:
687         case GL_STENCIL_TEST:
688         case GL_DEPTH_TEST:
689         case GL_DITHER:
690         case GL_BLEND:
691             break;
692         default:
693             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glDisable(cap=0x%x)", cap);
694             return;
695     }
696
697     _mesa_Disable(cap);
698 }
699
700 extern void GL_APIENTRY _mesa_DisableVertexAttribArrayARB(GLuint index);
701 #define _es_DisableVertexAttribArray _mesa_DisableVertexAttribArrayARB
702
703 extern void GL_APIENTRY _mesa_DrawArrays(GLenum mode, GLint first, GLsizei count);
704 static void GL_APIENTRY _es_DrawArrays(GLenum mode, GLint first, GLsizei count)
705 {
706     switch(mode) {
707         case GL_POINTS:
708         case GL_LINES:
709         case GL_LINE_LOOP:
710         case GL_LINE_STRIP:
711         case GL_TRIANGLES:
712         case GL_TRIANGLE_STRIP:
713         case GL_TRIANGLE_FAN:
714             break;
715         default:
716             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glDrawArrays(mode=0x%x)", mode);
717             return;
718     }
719
720     _mesa_DrawArrays(mode, first, count);
721 }
722
723 extern void GL_APIENTRY _mesa_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices);
724 static void GL_APIENTRY _es_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
725 {
726     switch(mode) {
727         case GL_POINTS:
728         case GL_LINES:
729         case GL_LINE_LOOP:
730         case GL_LINE_STRIP:
731         case GL_TRIANGLES:
732         case GL_TRIANGLE_STRIP:
733         case GL_TRIANGLE_FAN:
734             break;
735         default:
736             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glDrawElements(mode=0x%x)", mode);
737             return;
738     }
739     switch(type) {
740         case GL_UNSIGNED_BYTE:
741         case GL_UNSIGNED_SHORT:
742         case GL_UNSIGNED_INT:
743             break;
744         default:
745             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glDrawElements(type=0x%x)", type);
746             return;
747     }
748
749     _mesa_DrawElements(mode, count, type, indices);
750 }
751
752 extern void GL_APIENTRY _mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
753 static void GL_APIENTRY _es_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
754 {
755     switch(target) {
756         case GL_RENDERBUFFER:
757             break;
758         default:
759             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glEGLImageTargetRenderbufferStorageOES(target=0x%x)", target);
760             return;
761     }
762
763     _mesa_EGLImageTargetRenderbufferStorageOES(target, image);
764 }
765
766 extern void GL_APIENTRY _mesa_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
767 static void GL_APIENTRY _es_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
768 {
769     switch(target) {
770         case GL_TEXTURE_2D:
771             break;
772         default:
773             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glEGLImageTargetTexture2DOES(target=0x%x)", target);
774             return;
775     }
776
777     _mesa_EGLImageTargetTexture2DOES(target, image);
778 }
779
780 extern void GL_APIENTRY _mesa_Enable(GLenum cap);
781 static void GL_APIENTRY _es_Enable(GLenum cap)
782 {
783     switch(cap) {
784         case GL_CULL_FACE:
785         case GL_SCISSOR_TEST:
786         case GL_POLYGON_OFFSET_FILL:
787         case GL_SAMPLE_ALPHA_TO_COVERAGE:
788         case GL_SAMPLE_COVERAGE:
789         case GL_STENCIL_TEST:
790         case GL_DEPTH_TEST:
791         case GL_DITHER:
792         case GL_BLEND:
793             break;
794         default:
795             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glEnable(cap=0x%x)", cap);
796             return;
797     }
798
799     _mesa_Enable(cap);
800 }
801
802 extern void GL_APIENTRY _mesa_EnableVertexAttribArrayARB(GLuint index);
803 #define _es_EnableVertexAttribArray _mesa_EnableVertexAttribArrayARB
804
805 extern void GL_APIENTRY _mesa_Finish(void);
806 #define _es_Finish _mesa_Finish
807
808 extern void GL_APIENTRY _mesa_Flush(void);
809 #define _es_Flush _mesa_Flush
810
811 extern void GL_APIENTRY _mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
812 static void GL_APIENTRY _es_FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
813 {
814     switch(target) {
815         case GL_FRAMEBUFFER:
816             break;
817         default:
818             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferRenderbuffer(target=0x%x)", target);
819             return;
820     }
821     switch(attachment) {
822         case GL_COLOR_ATTACHMENT0:
823         case GL_DEPTH_ATTACHMENT:
824         case GL_STENCIL_ATTACHMENT:
825             break;
826         default:
827             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferRenderbuffer(attachment=0x%x)", attachment);
828             return;
829     }
830     switch(renderbuffertarget) {
831         case GL_RENDERBUFFER:
832             break;
833         default:
834             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferRenderbuffer(renderbuffertarget=0x%x)", renderbuffertarget);
835             return;
836     }
837
838     _mesa_FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
839 }
840
841 extern void GL_APIENTRY _mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
842 static void GL_APIENTRY _es_FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
843 {
844     switch(target) {
845         case GL_FRAMEBUFFER:
846             break;
847         default:
848             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferTexture2D(target=0x%x)", target);
849             return;
850     }
851     switch(attachment) {
852         case GL_COLOR_ATTACHMENT0:
853         case GL_DEPTH_ATTACHMENT:
854         case GL_STENCIL_ATTACHMENT:
855             break;
856         default:
857             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferTexture2D(attachment=0x%x)", attachment);
858             return;
859     }
860     switch(textarget) {
861         case GL_TEXTURE_2D:
862         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
863         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
864         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
865         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
866         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
867         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
868             break;
869         default:
870             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glFramebufferTexture2D(textarget=0x%x)", textarget);
871             return;
872     }
873
874     _mesa_FramebufferTexture2DEXT(target, attachment, textarget, texture, level);
875 }
876
877 extern void GL_APIENTRY _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
878 static void GL_APIENTRY _es_FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
879 {
880     switch(target) {
881         case GL_FRAMEBUFFER:
882             break;
883         default:
884             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferTexture3DOES(target=0x%x)", target);
885             return;
886     }
887     switch(attachment) {
888         case GL_COLOR_ATTACHMENT0:
889         case GL_DEPTH_ATTACHMENT:
890         case GL_STENCIL_ATTACHMENT:
891             break;
892         default:
893             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFramebufferTexture3DOES(attachment=0x%x)", attachment);
894             return;
895     }
896     switch(textarget) {
897         case GL_TEXTURE_3D_OES:
898             break;
899         default:
900             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glFramebufferTexture3DOES(textarget=0x%x)", textarget);
901             return;
902     }
903
904     _mesa_FramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);
905 }
906
907 extern void GL_APIENTRY _mesa_FrontFace(GLenum mode);
908 static void GL_APIENTRY _es_FrontFace(GLenum mode)
909 {
910     switch(mode) {
911         case GL_CW:
912         case GL_CCW:
913             break;
914         default:
915             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glFrontFace(mode=0x%x)", mode);
916             return;
917     }
918
919     _mesa_FrontFace(mode);
920 }
921
922 extern void GL_APIENTRY _mesa_GenBuffersARB(GLsizei n, GLuint * buffer);
923 #define _es_GenBuffers _mesa_GenBuffersARB
924
925 extern void GL_APIENTRY _mesa_GenFramebuffersEXT(GLsizei n, GLuint * ids);
926 #define _es_GenFramebuffers _mesa_GenFramebuffersEXT
927
928 extern void GL_APIENTRY _mesa_GenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers);
929 #define _es_GenRenderbuffers _mesa_GenRenderbuffersEXT
930
931 extern void GL_APIENTRY _mesa_GenTextures(GLsizei n, GLuint * textures);
932 #define _es_GenTextures _mesa_GenTextures
933
934 extern void GL_APIENTRY _mesa_GenerateMipmapEXT(GLenum target);
935 static void GL_APIENTRY _es_GenerateMipmap(GLenum target)
936 {
937     switch(target) {
938         case GL_TEXTURE_2D:
939         case GL_TEXTURE_CUBE_MAP:
940         case GL_TEXTURE_3D_OES:
941             break;
942         default:
943             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGenerateMipmap(target=0x%x)", target);
944             return;
945     }
946
947     _mesa_GenerateMipmapEXT(target);
948 }
949
950 extern void GL_APIENTRY _mesa_GetActiveAttribARB(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
951 #define _es_GetActiveAttrib _mesa_GetActiveAttribARB
952
953 extern void GL_APIENTRY _mesa_GetActiveUniformARB(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
954 #define _es_GetActiveUniform _mesa_GetActiveUniformARB
955
956 extern void GL_APIENTRY _mesa_GetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders);
957 #define _es_GetAttachedShaders _mesa_GetAttachedShaders
958
959 extern GLint GL_APIENTRY _mesa_GetAttribLocationARB(GLuint program, const char * name);
960 #define _es_GetAttribLocation _mesa_GetAttribLocationARB
961
962 extern void GL_APIENTRY _mesa_GetBooleanv(GLenum pname, GLboolean * params);
963 #define _es_GetBooleanv _mesa_GetBooleanv
964
965 extern void GL_APIENTRY _mesa_GetBufferParameterivARB(GLenum target, GLenum pname, GLint * params);
966 static void GL_APIENTRY _es_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
967 {
968     switch(target) {
969         case GL_ARRAY_BUFFER:
970         case GL_ELEMENT_ARRAY_BUFFER:
971             break;
972         default:
973             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetBufferParameteriv(target=0x%x)", target);
974             return;
975     }
976     switch(pname) {
977         case GL_BUFFER_SIZE:
978         case GL_BUFFER_USAGE:
979         case GL_BUFFER_ACCESS_OES:
980         case GL_BUFFER_MAPPED_OES:
981             break;
982         default:
983             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetBufferParameteriv(pname=0x%x)", pname);
984             return;
985     }
986
987     _mesa_GetBufferParameterivARB(target, pname, params);
988 }
989
990 extern void GL_APIENTRY _mesa_GetBufferPointervARB(GLenum target, GLenum pname, GLvoid ** params);
991 static void GL_APIENTRY _es_GetBufferPointervOES(GLenum target, GLenum pname, GLvoid **params)
992 {
993     switch(target) {
994         case GL_ARRAY_BUFFER:
995         case GL_ELEMENT_ARRAY_BUFFER:
996             break;
997         default:
998             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetBufferPointervOES(target=0x%x)", target);
999             return;
1000     }
1001     switch(pname) {
1002         case GL_BUFFER_MAP_POINTER_OES:
1003             break;
1004         default:
1005             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetBufferPointervOES(pname=0x%x)", pname);
1006             return;
1007     }
1008
1009     _mesa_GetBufferPointervARB(target, pname, params);
1010 }
1011
1012 extern GLenum GL_APIENTRY _mesa_GetError(void);
1013 #define _es_GetError _mesa_GetError
1014
1015 extern void GL_APIENTRY _mesa_GetFloatv(GLenum pname, GLfloat * params);
1016 #define _es_GetFloatv _mesa_GetFloatv
1017
1018 extern void GL_APIENTRY _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params);
1019 static void GL_APIENTRY _es_GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)
1020 {
1021     switch(target) {
1022         case GL_FRAMEBUFFER:
1023             break;
1024         default:
1025             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetFramebufferAttachmentParameteriv(target=0x%x)", target);
1026             return;
1027     }
1028     switch(pname) {
1029         case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: /* size 1 */
1030         case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: /* size 1 */
1031         case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: /* size 1 */
1032         case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: /* size 1 */
1033         case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES: /* size 1 */
1034             break;
1035         default:
1036             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetFramebufferAttachmentParameteriv(pname=0x%x)", pname);
1037             return;
1038     }
1039
1040     _mesa_GetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
1041 }
1042
1043 extern void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint * params);
1044 #define _es_GetIntegerv _mesa_GetIntegerv
1045
1046 extern void GL_APIENTRY _mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
1047 #define _es_GetProgramInfoLog _mesa_GetProgramInfoLog
1048
1049 extern void GL_APIENTRY _mesa_GetProgramiv(GLuint program, GLenum pname, GLint * params);
1050 static void GL_APIENTRY _es_GetProgramiv(GLuint program, GLenum pname, GLint *params)
1051 {
1052     switch(pname) {
1053         case GL_DELETE_STATUS:
1054         case GL_LINK_STATUS:
1055         case GL_VALIDATE_STATUS:
1056         case GL_INFO_LOG_LENGTH:
1057         case GL_ATTACHED_SHADERS:
1058         case GL_ACTIVE_ATTRIBUTES:
1059         case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:
1060         case GL_ACTIVE_UNIFORMS:
1061         case GL_ACTIVE_UNIFORM_MAX_LENGTH:
1062             break;
1063         default:
1064             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetProgramiv(pname=0x%x)", pname);
1065             return;
1066     }
1067
1068     _mesa_GetProgramiv(program, pname, params);
1069 }
1070
1071 extern void GL_APIENTRY _mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params);
1072 static void GL_APIENTRY _es_GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params)
1073 {
1074     switch(target) {
1075         case GL_RENDERBUFFER:
1076             break;
1077         default:
1078             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetRenderbufferParameteriv(target=0x%x)", target);
1079             return;
1080     }
1081     switch(pname) {
1082         case GL_RENDERBUFFER_WIDTH: /* size 1 */
1083         case GL_RENDERBUFFER_HEIGHT: /* size 1 */
1084         case GL_RENDERBUFFER_INTERNAL_FORMAT: /* size 1 */
1085         case GL_RENDERBUFFER_RED_SIZE: /* size 1 */
1086         case GL_RENDERBUFFER_GREEN_SIZE: /* size 1 */
1087         case GL_RENDERBUFFER_BLUE_SIZE: /* size 1 */
1088         case GL_RENDERBUFFER_ALPHA_SIZE: /* size 1 */
1089         case GL_RENDERBUFFER_DEPTH_SIZE: /* size 1 */
1090         case GL_RENDERBUFFER_STENCIL_SIZE: /* size 1 */
1091             break;
1092         default:
1093             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetRenderbufferParameteriv(pname=0x%x)", pname);
1094             return;
1095     }
1096
1097     _mesa_GetRenderbufferParameterivEXT(target, pname, params);
1098 }
1099
1100 extern void GL_APIENTRY _mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
1101 #define _es_GetShaderInfoLog _mesa_GetShaderInfoLog
1102
1103 extern void GL_APIENTRY _mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision);
1104 static void GL_APIENTRY _es_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
1105 {
1106     switch(shadertype) {
1107         case GL_VERTEX_SHADER:
1108         case GL_FRAGMENT_SHADER:
1109             break;
1110         default:
1111             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetShaderPrecisionFormat(shadertype=0x%x)", shadertype);
1112             return;
1113     }
1114     switch(precisiontype) {
1115         case GL_LOW_FLOAT:
1116         case GL_MEDIUM_FLOAT:
1117         case GL_HIGH_FLOAT:
1118         case GL_LOW_INT:
1119         case GL_MEDIUM_INT:
1120         case GL_HIGH_INT:
1121             break;
1122         default:
1123             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetShaderPrecisionFormat(precisiontype=0x%x)", precisiontype);
1124             return;
1125     }
1126
1127     _mesa_GetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
1128 }
1129
1130 extern void GL_APIENTRY _mesa_GetShaderSourceARB(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source);
1131 #define _es_GetShaderSource _mesa_GetShaderSourceARB
1132
1133 extern void GL_APIENTRY _mesa_GetShaderiv(GLuint shader, GLenum pname, GLint * params);
1134 static void GL_APIENTRY _es_GetShaderiv(GLuint shader, GLenum pname, GLint *params)
1135 {
1136     switch(pname) {
1137         case GL_SHADER_TYPE:
1138         case GL_COMPILE_STATUS:
1139         case GL_DELETE_STATUS:
1140         case GL_INFO_LOG_LENGTH:
1141         case GL_SHADER_SOURCE_LENGTH:
1142             break;
1143         default:
1144             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetShaderiv(pname=0x%x)", pname);
1145             return;
1146     }
1147
1148     _mesa_GetShaderiv(shader, pname, params);
1149 }
1150
1151 extern const GLubyte * GL_APIENTRY _mesa_GetString(GLenum name);
1152 static const GLubyte * GL_APIENTRY _es_GetString(GLenum name)
1153 {
1154     switch(name) {
1155         case GL_VENDOR:
1156         case GL_RENDERER:
1157         case GL_VERSION:
1158         case GL_EXTENSIONS:
1159         case GL_SHADING_LANGUAGE_VERSION:
1160             break;
1161         default:
1162             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetString(name=0x%x)", name);
1163             return (const GLubyte *) 0;
1164     }
1165
1166     return _mesa_GetString(name);
1167 }
1168
1169 extern void GL_APIENTRY _mesa_GetTexParameterfv(GLenum target, GLenum pname, GLfloat * params);
1170 static void GL_APIENTRY _es_GetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
1171 {
1172     switch(target) {
1173         case GL_TEXTURE_2D:
1174         case GL_TEXTURE_CUBE_MAP:
1175         case GL_TEXTURE_3D_OES:
1176             break;
1177         default:
1178             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetTexParameterfv(target=0x%x)", target);
1179             return;
1180     }
1181     switch(pname) {
1182         case GL_TEXTURE_WRAP_S: /* size 1 */
1183         case GL_TEXTURE_WRAP_T: /* size 1 */
1184         case GL_TEXTURE_WRAP_R_OES: /* size 1 */
1185         case GL_TEXTURE_MIN_FILTER: /* size 1 */
1186         case GL_TEXTURE_MAG_FILTER: /* size 1 */
1187             break;
1188         default:
1189             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetTexParameterfv(pname=0x%x)", pname);
1190             return;
1191     }
1192
1193     _mesa_GetTexParameterfv(target, pname, params);
1194 }
1195
1196 extern void GL_APIENTRY _mesa_GetTexParameteriv(GLenum target, GLenum pname, GLint * params);
1197 static void GL_APIENTRY _es_GetTexParameteriv(GLenum target, GLenum pname, GLint *params)
1198 {
1199     switch(target) {
1200         case GL_TEXTURE_2D:
1201         case GL_TEXTURE_CUBE_MAP:
1202         case GL_TEXTURE_3D_OES:
1203             break;
1204         default:
1205             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetTexParameteriv(target=0x%x)", target);
1206             return;
1207     }
1208     switch(pname) {
1209         case GL_TEXTURE_WRAP_S: /* size 1 */
1210         case GL_TEXTURE_WRAP_T: /* size 1 */
1211         case GL_TEXTURE_WRAP_R_OES: /* size 1 */
1212         case GL_TEXTURE_MIN_FILTER: /* size 1 */
1213         case GL_TEXTURE_MAG_FILTER: /* size 1 */
1214             break;
1215         default:
1216             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetTexParameteriv(pname=0x%x)", pname);
1217             return;
1218     }
1219
1220     _mesa_GetTexParameteriv(target, pname, params);
1221 }
1222
1223 extern GLint GL_APIENTRY _mesa_GetUniformLocationARB(GLuint program, const char * name);
1224 #define _es_GetUniformLocation _mesa_GetUniformLocationARB
1225
1226 extern void GL_APIENTRY _mesa_GetUniformfvARB(GLuint program, GLint location, GLfloat * params);
1227 #define _es_GetUniformfv _mesa_GetUniformfvARB
1228
1229 extern void GL_APIENTRY _mesa_GetUniformivARB(GLuint program, GLint location, GLint * params);
1230 #define _es_GetUniformiv _mesa_GetUniformivARB
1231
1232 extern void GL_APIENTRY _mesa_GetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid ** pointer);
1233 static void GL_APIENTRY _es_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer)
1234 {
1235     switch(pname) {
1236         case GL_VERTEX_ATTRIB_ARRAY_POINTER:
1237             break;
1238         default:
1239             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetVertexAttribPointerv(pname=0x%x)", pname);
1240             return;
1241     }
1242
1243     _mesa_GetVertexAttribPointervARB(index, pname, pointer);
1244 }
1245
1246 extern void GL_APIENTRY _mesa_GetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params);
1247 static void GL_APIENTRY _es_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)
1248 {
1249     switch(pname) {
1250         case GL_VERTEX_ATTRIB_ARRAY_ENABLED: /* size 1 */
1251         case GL_VERTEX_ATTRIB_ARRAY_SIZE: /* size 1 */
1252         case GL_VERTEX_ATTRIB_ARRAY_STRIDE: /* size 1 */
1253         case GL_VERTEX_ATTRIB_ARRAY_TYPE: /* size 1 */
1254         case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: /* size 1 */
1255         case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: /* size 1 */
1256         case GL_CURRENT_VERTEX_ATTRIB: /* size 16? */
1257             break;
1258         default:
1259             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetVertexAttribfv(pname=0x%x)", pname);
1260             return;
1261     }
1262
1263     _mesa_GetVertexAttribfvARB(index, pname, params);
1264 }
1265
1266 extern void GL_APIENTRY _mesa_GetVertexAttribivARB(GLuint index, GLenum pname, GLint * params);
1267 static void GL_APIENTRY _es_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params)
1268 {
1269     switch(pname) {
1270         case GL_VERTEX_ATTRIB_ARRAY_ENABLED: /* size 1 */
1271         case GL_VERTEX_ATTRIB_ARRAY_SIZE: /* size 1 */
1272         case GL_VERTEX_ATTRIB_ARRAY_STRIDE: /* size 1 */
1273         case GL_VERTEX_ATTRIB_ARRAY_TYPE: /* size 1 */
1274         case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: /* size 1 */
1275         case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: /* size 1 */
1276         case GL_CURRENT_VERTEX_ATTRIB: /* size 16? */
1277             break;
1278         default:
1279             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glGetVertexAttribiv(pname=0x%x)", pname);
1280             return;
1281     }
1282
1283     _mesa_GetVertexAttribivARB(index, pname, params);
1284 }
1285
1286 extern void GL_APIENTRY _mesa_Hint(GLenum target, GLenum mode);
1287 static void GL_APIENTRY _es_Hint(GLenum target, GLenum mode)
1288 {
1289     switch(target) {
1290         case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
1291         case GL_GENERATE_MIPMAP_HINT:
1292             break;
1293         default:
1294             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glHint(target=0x%x)", target);
1295             return;
1296     }
1297     switch(mode) {
1298         case GL_FASTEST:
1299         case GL_NICEST:
1300         case GL_DONT_CARE:
1301             break;
1302         default:
1303             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glHint(mode=0x%x)", mode);
1304             return;
1305     }
1306
1307     _mesa_Hint(target, mode);
1308 }
1309
1310 extern GLboolean GL_APIENTRY _mesa_IsBufferARB(GLuint buffer);
1311 #define _es_IsBuffer _mesa_IsBufferARB
1312
1313 extern GLboolean GL_APIENTRY _mesa_IsEnabled(GLenum cap);
1314 static GLboolean GL_APIENTRY _es_IsEnabled(GLenum cap)
1315 {
1316     switch(cap) {
1317         case GL_CULL_FACE:
1318         case GL_SCISSOR_TEST:
1319         case GL_POLYGON_OFFSET_FILL:
1320         case GL_SAMPLE_ALPHA_TO_COVERAGE:
1321         case GL_SAMPLE_COVERAGE:
1322         case GL_STENCIL_TEST:
1323         case GL_DEPTH_TEST:
1324         case GL_DITHER:
1325         case GL_BLEND:
1326             break;
1327         default:
1328             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glIsEnabled(cap=0x%x)", cap);
1329             return GL_FALSE;
1330     }
1331
1332     return _mesa_IsEnabled(cap);
1333 }
1334
1335 extern GLboolean GL_APIENTRY _mesa_IsFramebufferEXT(GLuint framebuffer);
1336 #define _es_IsFramebuffer _mesa_IsFramebufferEXT
1337
1338 extern GLboolean GL_APIENTRY _mesa_IsProgram(GLuint program);
1339 #define _es_IsProgram _mesa_IsProgram
1340
1341 extern GLboolean GL_APIENTRY _mesa_IsRenderbufferEXT(GLuint renderbuffer);
1342 #define _es_IsRenderbuffer _mesa_IsRenderbufferEXT
1343
1344 extern GLboolean GL_APIENTRY _mesa_IsShader(GLuint shader);
1345 #define _es_IsShader _mesa_IsShader
1346
1347 extern GLboolean GL_APIENTRY _mesa_IsTexture(GLuint texture);
1348 #define _es_IsTexture _mesa_IsTexture
1349
1350 extern void GL_APIENTRY _mesa_LineWidth(GLfloat width);
1351 #define _es_LineWidth _mesa_LineWidth
1352
1353 extern void GL_APIENTRY _mesa_LinkProgramARB(GLuint program);
1354 #define _es_LinkProgram _mesa_LinkProgramARB
1355
1356 extern void * GL_APIENTRY _mesa_MapBufferARB(GLenum target, GLenum access);
1357 static void * GL_APIENTRY _es_MapBufferOES(GLenum target, GLenum access)
1358 {
1359     switch(target) {
1360         case GL_ARRAY_BUFFER:
1361         case GL_ELEMENT_ARRAY_BUFFER:
1362             break;
1363         default:
1364             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMapBufferOES(target=0x%x)", target);
1365             return (void *) 0;
1366     }
1367     switch(access) {
1368         case GL_WRITE_ONLY_OES:
1369             break;
1370         default:
1371             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMapBufferOES(access=0x%x)", access);
1372             return (void *) 0;
1373     }
1374
1375     return _mesa_MapBufferARB(target, access);
1376 }
1377
1378 extern void GL_APIENTRY _mesa_MultiDrawArraysEXT(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
1379 static void GL_APIENTRY _es_MultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)
1380 {
1381     switch(mode) {
1382         case GL_POINTS:
1383         case GL_LINES:
1384         case GL_LINE_LOOP:
1385         case GL_LINE_STRIP:
1386         case GL_TRIANGLES:
1387         case GL_TRIANGLE_STRIP:
1388         case GL_TRIANGLE_FAN:
1389             break;
1390         default:
1391             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMultiDrawArraysEXT(mode=0x%x)", mode);
1392             return;
1393     }
1394
1395     _mesa_MultiDrawArraysEXT(mode, first, count, primcount);
1396 }
1397
1398 extern void GL_APIENTRY _mesa_MultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount);
1399 static void GL_APIENTRY _es_MultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)
1400 {
1401     switch(mode) {
1402         case GL_POINTS:
1403         case GL_LINES:
1404         case GL_LINE_LOOP:
1405         case GL_LINE_STRIP:
1406         case GL_TRIANGLES:
1407         case GL_TRIANGLE_STRIP:
1408         case GL_TRIANGLE_FAN:
1409             break;
1410         default:
1411             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMultiDrawElementsEXT(mode=0x%x)", mode);
1412             return;
1413     }
1414     switch(type) {
1415         case GL_UNSIGNED_BYTE:
1416         case GL_UNSIGNED_SHORT:
1417         case GL_UNSIGNED_INT:
1418             break;
1419         default:
1420             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMultiDrawElementsEXT(type=0x%x)", type);
1421             return;
1422     }
1423
1424     _mesa_MultiDrawElementsEXT(mode, count, type, indices, primcount);
1425 }
1426
1427 extern void GL_APIENTRY _mesa_PixelStorei(GLenum pname, GLint param);
1428 static void GL_APIENTRY _es_PixelStorei(GLenum pname, GLint param)
1429 {
1430     switch(pname) {
1431         case GL_PACK_ALIGNMENT:
1432         case GL_UNPACK_ALIGNMENT:
1433             break;
1434         default:
1435             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glPixelStorei(pname=0x%x)", pname);
1436             return;
1437     }
1438     switch(param) {
1439         case 1:
1440         case 2:
1441         case 4:
1442         case 8:
1443             break;
1444         default:
1445             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glPixelStorei(param=%d)", param);
1446             return;
1447     }
1448
1449     _mesa_PixelStorei(pname, param);
1450 }
1451
1452 extern void GL_APIENTRY _mesa_PolygonOffset(GLfloat factor, GLfloat units);
1453 #define _es_PolygonOffset _mesa_PolygonOffset
1454
1455 extern void GL_APIENTRY _mesa_ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels);
1456 static void GL_APIENTRY _es_ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
1457 {
1458     switch(format) {
1459         case GL_ALPHA:
1460             if (type != GL_UNSIGNED_BYTE) {
1461                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glReadPixels(format=0x%x)", format);
1462                 return;
1463             }
1464             break;
1465         case GL_RGB:
1466             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_5_6_5) {
1467                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glReadPixels(format=0x%x)", format);
1468                 return;
1469             }
1470             break;
1471         case GL_RGBA:
1472             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_4_4_4_4 && type != GL_UNSIGNED_SHORT_5_5_5_1) {
1473                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glReadPixels(format=0x%x)", format);
1474                 return;
1475             }
1476             break;
1477         case GL_LUMINANCE:
1478         case GL_LUMINANCE_ALPHA:
1479             if (type != GL_UNSIGNED_BYTE) {
1480                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glReadPixels(format=0x%x)", format);
1481                 return;
1482             }
1483             break;
1484         default:
1485             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glReadPixels(format=0x%x)", format);
1486             return;
1487     }
1488
1489     _mesa_ReadPixels(x, y, width, height, format, type, pixels);
1490 }
1491
1492 extern void GL_APIENTRY _mesa_ReleaseShaderCompiler(void);
1493 #define _es_ReleaseShaderCompiler _mesa_ReleaseShaderCompiler
1494
1495 /* this function is special and is defined elsewhere */
1496 extern void GL_APIENTRY _es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
1497 static void GL_APIENTRY _check_RenderbufferStorage(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height)
1498 {
1499     switch(target) {
1500         case GL_RENDERBUFFER:
1501             break;
1502         default:
1503             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glRenderbufferStorage(target=0x%x)", target);
1504             return;
1505     }
1506     switch(internalFormat) {
1507         case GL_DEPTH_COMPONENT16:
1508         case GL_RGBA4:
1509         case GL_RGB5_A1:
1510         case GL_RGB565:
1511         case GL_STENCIL_INDEX8:
1512         case GL_DEPTH_COMPONENT24_OES:
1513         case GL_DEPTH_COMPONENT32_OES:
1514         case GL_RGB8_OES:
1515         case GL_RGBA8_OES:
1516         case GL_STENCIL_INDEX1_OES:
1517         case GL_STENCIL_INDEX4_OES:
1518         case GL_DEPTH24_STENCIL8_OES:
1519             break;
1520         default:
1521             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glRenderbufferStorage(internalFormat=0x%x)", internalFormat);
1522             return;
1523     }
1524
1525     _es_RenderbufferStorageEXT(target, internalFormat, width, height);
1526 }
1527
1528 extern void GL_APIENTRY _mesa_SampleCoverageARB(GLclampf value, GLboolean invert);
1529 #define _es_SampleCoverage _mesa_SampleCoverageARB
1530
1531 extern void GL_APIENTRY _mesa_Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
1532 #define _es_Scissor _mesa_Scissor
1533
1534 extern void GL_APIENTRY _mesa_ShaderBinary(GLsizei n, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length);
1535 #define _es_ShaderBinary _mesa_ShaderBinary
1536
1537 extern void GL_APIENTRY _mesa_ShaderSourceARB(GLuint shader, GLsizei count, const GLchar ** string, const int * length);
1538 #define _es_ShaderSource _mesa_ShaderSourceARB
1539
1540 extern void GL_APIENTRY _mesa_StencilFunc(GLenum func, GLint ref, GLuint mask);
1541 static void GL_APIENTRY _es_StencilFunc(GLenum func, GLint ref, GLuint mask)
1542 {
1543     switch(func) {
1544         case GL_NEVER:
1545         case GL_LESS:
1546         case GL_LEQUAL:
1547         case GL_GREATER:
1548         case GL_GEQUAL:
1549         case GL_EQUAL:
1550         case GL_NOTEQUAL:
1551         case GL_ALWAYS:
1552             break;
1553         default:
1554             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilFunc(func=0x%x)", func);
1555             return;
1556     }
1557
1558     _mesa_StencilFunc(func, ref, mask);
1559 }
1560
1561 extern void GL_APIENTRY _mesa_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
1562 static void GL_APIENTRY _es_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
1563 {
1564     switch(face) {
1565         case GL_FRONT:
1566         case GL_BACK:
1567         case GL_FRONT_AND_BACK:
1568             break;
1569         default:
1570             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilFuncSeparate(face=0x%x)", face);
1571             return;
1572     }
1573     switch(func) {
1574         case GL_NEVER:
1575         case GL_LESS:
1576         case GL_LEQUAL:
1577         case GL_GREATER:
1578         case GL_GEQUAL:
1579         case GL_EQUAL:
1580         case GL_NOTEQUAL:
1581         case GL_ALWAYS:
1582             break;
1583         default:
1584             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilFuncSeparate(func=0x%x)", func);
1585             return;
1586     }
1587
1588     _mesa_StencilFuncSeparate(face, func, ref, mask);
1589 }
1590
1591 extern void GL_APIENTRY _mesa_StencilMask(GLuint mask);
1592 #define _es_StencilMask _mesa_StencilMask
1593
1594 extern void GL_APIENTRY _mesa_StencilMaskSeparate(GLenum face, GLuint mask);
1595 static void GL_APIENTRY _es_StencilMaskSeparate(GLenum face, GLuint mask)
1596 {
1597     switch(face) {
1598         case GL_FRONT:
1599         case GL_BACK:
1600         case GL_FRONT_AND_BACK:
1601             break;
1602         default:
1603             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilMaskSeparate(face=0x%x)", face);
1604             return;
1605     }
1606
1607     _mesa_StencilMaskSeparate(face, mask);
1608 }
1609
1610 extern void GL_APIENTRY _mesa_StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
1611 static void GL_APIENTRY _es_StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
1612 {
1613     switch(fail) {
1614         case GL_KEEP:
1615         case GL_ZERO:
1616         case GL_REPLACE:
1617         case GL_INCR:
1618         case GL_DECR:
1619         case GL_INVERT:
1620         case GL_INCR_WRAP:
1621         case GL_DECR_WRAP:
1622             break;
1623         default:
1624             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOp(fail=0x%x)", fail);
1625             return;
1626     }
1627     switch(zfail) {
1628         case GL_KEEP:
1629         case GL_ZERO:
1630         case GL_REPLACE:
1631         case GL_INCR:
1632         case GL_DECR:
1633         case GL_INVERT:
1634         case GL_INCR_WRAP:
1635         case GL_DECR_WRAP:
1636             break;
1637         default:
1638             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOp(zfail=0x%x)", zfail);
1639             return;
1640     }
1641     switch(zpass) {
1642         case GL_KEEP:
1643         case GL_ZERO:
1644         case GL_REPLACE:
1645         case GL_INCR:
1646         case GL_DECR:
1647         case GL_INVERT:
1648         case GL_INCR_WRAP:
1649         case GL_DECR_WRAP:
1650             break;
1651         default:
1652             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOp(zpass=0x%x)", zpass);
1653             return;
1654     }
1655
1656     _mesa_StencilOp(fail, zfail, zpass);
1657 }
1658
1659 extern void GL_APIENTRY _mesa_StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
1660 static void GL_APIENTRY _es_StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
1661 {
1662     switch(face) {
1663         case GL_FRONT:
1664         case GL_BACK:
1665         case GL_FRONT_AND_BACK:
1666             break;
1667         default:
1668             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOpSeparate(face=0x%x)", face);
1669             return;
1670     }
1671     switch(fail) {
1672         case GL_KEEP:
1673         case GL_ZERO:
1674         case GL_REPLACE:
1675         case GL_INCR:
1676         case GL_DECR:
1677         case GL_INVERT:
1678         case GL_INCR_WRAP:
1679         case GL_DECR_WRAP:
1680             break;
1681         default:
1682             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOpSeparate(fail=0x%x)", fail);
1683             return;
1684     }
1685     switch(zfail) {
1686         case GL_KEEP:
1687         case GL_ZERO:
1688         case GL_REPLACE:
1689         case GL_INCR:
1690         case GL_DECR:
1691         case GL_INVERT:
1692         case GL_INCR_WRAP:
1693         case GL_DECR_WRAP:
1694             break;
1695         default:
1696             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOpSeparate(zfail=0x%x)", zfail);
1697             return;
1698     }
1699     switch(zpass) {
1700         case GL_KEEP:
1701         case GL_ZERO:
1702         case GL_REPLACE:
1703         case GL_INCR:
1704         case GL_DECR:
1705         case GL_INVERT:
1706         case GL_INCR_WRAP:
1707         case GL_DECR_WRAP:
1708             break;
1709         default:
1710             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glStencilOpSeparate(zpass=0x%x)", zpass);
1711             return;
1712     }
1713
1714     _mesa_StencilOpSeparate(face, fail, zfail, zpass);
1715 }
1716
1717 extern void GL_APIENTRY _mesa_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
1718 static void GL_APIENTRY _es_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
1719 {
1720     switch(target) {
1721         case GL_TEXTURE_2D:
1722         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
1723         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
1724         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
1725         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
1726         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
1727         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
1728             break;
1729         default:
1730             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexImage2D(target=0x%x)", target);
1731             return;
1732     }
1733     switch(internalFormat) {
1734         case GL_ALPHA:
1735             if (format != GL_ALPHA) {
1736                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1737                 return;
1738             }
1739             break;
1740         case GL_RGB:
1741             if (format != GL_RGB) {
1742                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1743                 return;
1744             }
1745             break;
1746         case GL_RGBA:
1747             if (format != GL_RGBA) {
1748                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1749                 return;
1750             }
1751             break;
1752         case GL_LUMINANCE:
1753             if (format != GL_LUMINANCE) {
1754                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1755                 return;
1756             }
1757             break;
1758         case GL_LUMINANCE_ALPHA:
1759             if (format != GL_LUMINANCE_ALPHA) {
1760                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1761                 return;
1762             }
1763             break;
1764         case GL_DEPTH_COMPONENT:
1765             if (format != GL_DEPTH_COMPONENT) {
1766                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1767                 return;
1768             }
1769             break;
1770         case GL_DEPTH_STENCIL_OES:
1771             if (format != GL_DEPTH_STENCIL_OES) {
1772                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1773                 return;
1774             }
1775             break;
1776         case GL_BGRA_EXT:
1777             if (format != GL_BGRA_EXT) {
1778                 _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=0x%x)", internalFormat);
1779                 return;
1780             }
1781             break;
1782         default:
1783             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(internalFormat=%d)", internalFormat);
1784             return;
1785     }
1786     switch(border) {
1787         case 0:
1788             break;
1789         default:
1790             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glTexImage2D(border=%d)", border);
1791             return;
1792     }
1793     switch(format) {
1794         case GL_ALPHA:
1795             if (type != GL_UNSIGNED_BYTE) {
1796                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1797                 return;
1798             }
1799             break;
1800         case GL_RGB:
1801             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_5_6_5) {
1802                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1803                 return;
1804             }
1805             break;
1806         case GL_RGBA:
1807             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_4_4_4_4 && type != GL_UNSIGNED_SHORT_5_5_5_1 && type != GL_UNSIGNED_INT_2_10_10_10_REV_EXT) {
1808                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1809                 return;
1810             }
1811             break;
1812         case GL_LUMINANCE:
1813         case GL_LUMINANCE_ALPHA:
1814             if (type != GL_UNSIGNED_BYTE) {
1815                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1816                 return;
1817             }
1818             break;
1819         case GL_DEPTH_COMPONENT:
1820             if (type != GL_UNSIGNED_SHORT && type != GL_UNSIGNED_INT) {
1821                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1822                 return;
1823             }
1824             break;
1825         case GL_DEPTH_STENCIL_OES:
1826             if (type != GL_UNSIGNED_INT_24_8_OES) {
1827                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1828                 return;
1829             }
1830             break;
1831         case GL_BGRA_EXT:
1832             if (type != GL_UNSIGNED_BYTE) {
1833                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1834                 return;
1835             }
1836             break;
1837         default:
1838             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage2D(format=0x%x)", format);
1839             return;
1840     }
1841
1842     _mesa_TexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
1843 }
1844
1845 extern void GL_APIENTRY _mesa_TexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
1846 static void GL_APIENTRY _es_TexImage3DOES(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
1847 {
1848     switch(target) {
1849         case GL_TEXTURE_3D_OES:
1850             break;
1851         default:
1852             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexImage3DOES(target=0x%x)", target);
1853             return;
1854     }
1855     switch(internalFormat) {
1856         case GL_ALPHA:
1857         case GL_RGB:
1858         case GL_RGBA:
1859         case GL_LUMINANCE:
1860         case GL_LUMINANCE_ALPHA:
1861             break;
1862         default:
1863             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexImage3DOES(internalFormat=0x%x)", internalFormat);
1864             return;
1865     }
1866     switch(format) {
1867         case GL_ALPHA:
1868             if (type != GL_UNSIGNED_BYTE) {
1869                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage3DOES(format=0x%x)", format);
1870                 return;
1871             }
1872             break;
1873         case GL_RGB:
1874             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_5_6_5) {
1875                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage3DOES(format=0x%x)", format);
1876                 return;
1877             }
1878             break;
1879         case GL_RGBA:
1880             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_4_4_4_4 && type != GL_UNSIGNED_SHORT_5_5_5_1 && type != GL_UNSIGNED_INT_2_10_10_10_REV_EXT) {
1881                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage3DOES(format=0x%x)", format);
1882                 return;
1883             }
1884             break;
1885         case GL_LUMINANCE:
1886         case GL_LUMINANCE_ALPHA:
1887             if (type != GL_UNSIGNED_BYTE) {
1888                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage3DOES(format=0x%x)", format);
1889                 return;
1890             }
1891             break;
1892         default:
1893             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexImage3DOES(format=0x%x)", format);
1894             return;
1895     }
1896
1897     _mesa_TexImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels);
1898 }
1899
1900 extern void GL_APIENTRY _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param);
1901 static void GL_APIENTRY _es_TexParameterf(GLenum target, GLenum pname, GLfloat param)
1902 {
1903     switch(target) {
1904         case GL_TEXTURE_2D:
1905         case GL_TEXTURE_CUBE_MAP:
1906         case GL_TEXTURE_3D_OES:
1907             break;
1908         default:
1909             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterf(target=0x%x)", target);
1910             return;
1911     }
1912     switch(pname) {
1913         case GL_TEXTURE_WRAP_S:
1914         case GL_TEXTURE_WRAP_T:
1915         case GL_TEXTURE_WRAP_R_OES:
1916             if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) {
1917                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterf(pname=0x%x)", pname);
1918                 return;
1919             }
1920             break;
1921         case GL_TEXTURE_MIN_FILTER:
1922             if (param != GL_NEAREST && param != GL_LINEAR && param != GL_NEAREST_MIPMAP_NEAREST && param != GL_NEAREST_MIPMAP_LINEAR && param != GL_LINEAR_MIPMAP_NEAREST && param != GL_LINEAR_MIPMAP_LINEAR) {
1923                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterf(pname=0x%x)", pname);
1924                 return;
1925             }
1926             break;
1927         case GL_TEXTURE_MAG_FILTER:
1928             if (param != GL_NEAREST && param != GL_LINEAR) {
1929                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterf(pname=0x%x)", pname);
1930                 return;
1931             }
1932             break;
1933         case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1934             break;
1935         default:
1936             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterf(pname=0x%x)", pname);
1937             return;
1938     }
1939
1940     _mesa_TexParameterf(target, pname, param);
1941 }
1942
1943 extern void GL_APIENTRY _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat * params);
1944 static void GL_APIENTRY _es_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
1945 {
1946     switch(target) {
1947         case GL_TEXTURE_2D:
1948         case GL_TEXTURE_CUBE_MAP:
1949         case GL_TEXTURE_3D_OES:
1950             break;
1951         default:
1952             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterfv(target=0x%x)", target);
1953             return;
1954     }
1955     switch(pname) {
1956         case GL_TEXTURE_WRAP_S: /* size 1 */
1957         case GL_TEXTURE_WRAP_T: /* size 1 */
1958         case GL_TEXTURE_WRAP_R_OES: /* size 1 */
1959             if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) {
1960                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterfv(pname=0x%x)", pname);
1961                 return;
1962             }
1963             break;
1964         case GL_TEXTURE_MIN_FILTER: /* size 1 */
1965             if (params[0] != GL_NEAREST && params[0] != GL_LINEAR && params[0] != GL_NEAREST_MIPMAP_NEAREST && params[0] != GL_NEAREST_MIPMAP_LINEAR && params[0] != GL_LINEAR_MIPMAP_NEAREST && params[0] != GL_LINEAR_MIPMAP_LINEAR) {
1966                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterfv(pname=0x%x)", pname);
1967                 return;
1968             }
1969             break;
1970         case GL_TEXTURE_MAG_FILTER: /* size 1 */
1971             if (params[0] != GL_NEAREST && params[0] != GL_LINEAR) {
1972                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterfv(pname=0x%x)", pname);
1973                 return;
1974             }
1975             break;
1976         case GL_TEXTURE_MAX_ANISOTROPY_EXT: /* size 1 */
1977             break;
1978         default:
1979             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameterfv(pname=0x%x)", pname);
1980             return;
1981     }
1982
1983     _mesa_TexParameterfv(target, pname, params);
1984 }
1985
1986 extern void GL_APIENTRY _mesa_TexParameteri(GLenum target, GLenum pname, GLint param);
1987 static void GL_APIENTRY _es_TexParameteri(GLenum target, GLenum pname, GLint param)
1988 {
1989     switch(target) {
1990         case GL_TEXTURE_2D:
1991         case GL_TEXTURE_CUBE_MAP:
1992         case GL_TEXTURE_3D_OES:
1993             break;
1994         default:
1995             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteri(target=0x%x)", target);
1996             return;
1997     }
1998     switch(pname) {
1999         case GL_TEXTURE_WRAP_S:
2000         case GL_TEXTURE_WRAP_T:
2001         case GL_TEXTURE_WRAP_R_OES:
2002             if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) {
2003                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteri(pname=0x%x)", pname);
2004                 return;
2005             }
2006             break;
2007         case GL_TEXTURE_MIN_FILTER:
2008             if (param != GL_NEAREST && param != GL_LINEAR && param != GL_NEAREST_MIPMAP_NEAREST && param != GL_NEAREST_MIPMAP_LINEAR && param != GL_LINEAR_MIPMAP_NEAREST && param != GL_LINEAR_MIPMAP_LINEAR) {
2009                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteri(pname=0x%x)", pname);
2010                 return;
2011             }
2012             break;
2013         case GL_TEXTURE_MAG_FILTER:
2014             if (param != GL_NEAREST && param != GL_LINEAR) {
2015                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteri(pname=0x%x)", pname);
2016                 return;
2017             }
2018             break;
2019         case GL_TEXTURE_MAX_ANISOTROPY_EXT:
2020             break;
2021         default:
2022             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteri(pname=0x%x)", pname);
2023             return;
2024     }
2025
2026     _mesa_TexParameteri(target, pname, param);
2027 }
2028
2029 extern void GL_APIENTRY _mesa_TexParameteriv(GLenum target, GLenum pname, const GLint * params);
2030 static void GL_APIENTRY _es_TexParameteriv(GLenum target, GLenum pname, const GLint *params)
2031 {
2032     switch(target) {
2033         case GL_TEXTURE_2D:
2034         case GL_TEXTURE_CUBE_MAP:
2035         case GL_TEXTURE_3D_OES:
2036             break;
2037         default:
2038             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteriv(target=0x%x)", target);
2039             return;
2040     }
2041     switch(pname) {
2042         case GL_TEXTURE_WRAP_S: /* size 1 */
2043         case GL_TEXTURE_WRAP_T: /* size 1 */
2044         case GL_TEXTURE_WRAP_R_OES: /* size 1 */
2045             if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) {
2046                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteriv(pname=0x%x)", pname);
2047                 return;
2048             }
2049             break;
2050         case GL_TEXTURE_MIN_FILTER: /* size 1 */
2051             if (params[0] != GL_NEAREST && params[0] != GL_LINEAR && params[0] != GL_NEAREST_MIPMAP_NEAREST && params[0] != GL_NEAREST_MIPMAP_LINEAR && params[0] != GL_LINEAR_MIPMAP_NEAREST && params[0] != GL_LINEAR_MIPMAP_LINEAR) {
2052                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteriv(pname=0x%x)", pname);
2053                 return;
2054             }
2055             break;
2056         case GL_TEXTURE_MAG_FILTER: /* size 1 */
2057             if (params[0] != GL_NEAREST && params[0] != GL_LINEAR) {
2058                 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteriv(pname=0x%x)", pname);
2059                 return;
2060             }
2061             break;
2062         case GL_TEXTURE_MAX_ANISOTROPY_EXT: /* size 1 */
2063             break;
2064         default:
2065             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexParameteriv(pname=0x%x)", pname);
2066             return;
2067     }
2068
2069     _mesa_TexParameteriv(target, pname, params);
2070 }
2071
2072 extern void GL_APIENTRY _mesa_TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
2073 static void GL_APIENTRY _es_TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
2074 {
2075     switch(target) {
2076         case GL_TEXTURE_2D:
2077         case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
2078         case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
2079         case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
2080         case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
2081         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
2082         case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
2083             break;
2084         default:
2085             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexSubImage2D(target=0x%x)", target);
2086             return;
2087     }
2088     switch(format) {
2089         case GL_ALPHA:
2090             if (type != GL_UNSIGNED_BYTE) {
2091                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2092                 return;
2093             }
2094             break;
2095         case GL_RGB:
2096             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_5_6_5) {
2097                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2098                 return;
2099             }
2100             break;
2101         case GL_RGBA:
2102             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_4_4_4_4 && type != GL_UNSIGNED_SHORT_5_5_5_1 && type != GL_UNSIGNED_INT_2_10_10_10_REV_EXT) {
2103                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2104                 return;
2105             }
2106             break;
2107         case GL_LUMINANCE:
2108         case GL_LUMINANCE_ALPHA:
2109             if (type != GL_UNSIGNED_BYTE) {
2110                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2111                 return;
2112             }
2113             break;
2114         case GL_DEPTH_COMPONENT:
2115             if (type != GL_UNSIGNED_SHORT && type != GL_UNSIGNED_INT) {
2116                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2117                 return;
2118             }
2119             break;
2120         case GL_DEPTH_STENCIL_OES:
2121             if (type != GL_UNSIGNED_INT_24_8_OES) {
2122                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2123                 return;
2124             }
2125             break;
2126         case GL_BGRA_EXT:
2127             if (type != GL_UNSIGNED_BYTE) {
2128                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2129                 return;
2130             }
2131             break;
2132         default:
2133             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage2D(format=0x%x)", format);
2134             return;
2135     }
2136
2137     _mesa_TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
2138 }
2139
2140 extern void GL_APIENTRY _mesa_TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);
2141 static void GL_APIENTRY _es_TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
2142 {
2143     switch(target) {
2144         case GL_TEXTURE_3D_OES:
2145             break;
2146         default:
2147             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glTexSubImage3DOES(target=0x%x)", target);
2148             return;
2149     }
2150     switch(format) {
2151         case GL_ALPHA:
2152             if (type != GL_UNSIGNED_BYTE) {
2153                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage3DOES(format=0x%x)", format);
2154                 return;
2155             }
2156             break;
2157         case GL_RGB:
2158             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_5_6_5) {
2159                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage3DOES(format=0x%x)", format);
2160                 return;
2161             }
2162             break;
2163         case GL_RGBA:
2164             if (type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_SHORT_4_4_4_4 && type != GL_UNSIGNED_SHORT_5_5_5_1 && type != GL_UNSIGNED_INT_2_10_10_10_REV_EXT) {
2165                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage3DOES(format=0x%x)", format);
2166                 return;
2167             }
2168             break;
2169         case GL_LUMINANCE:
2170         case GL_LUMINANCE_ALPHA:
2171             if (type != GL_UNSIGNED_BYTE) {
2172                 _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage3DOES(format=0x%x)", format);
2173                 return;
2174             }
2175             break;
2176         default:
2177             _mesa_error(_mesa_get_current_context(), GL_INVALID_OPERATION, "glTexSubImage3DOES(format=0x%x)", format);
2178             return;
2179     }
2180
2181     _mesa_TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
2182 }
2183
2184 extern void GL_APIENTRY _mesa_Uniform1fARB(GLint location, GLfloat v0);
2185 #define _es_Uniform1f _mesa_Uniform1fARB
2186
2187 extern void GL_APIENTRY _mesa_Uniform1fvARB(GLint location, GLsizei count, const GLfloat * values);
2188 #define _es_Uniform1fv _mesa_Uniform1fvARB
2189
2190 extern void GL_APIENTRY _mesa_Uniform1iARB(GLint location, GLint v0);
2191 #define _es_Uniform1i _mesa_Uniform1iARB
2192
2193 extern void GL_APIENTRY _mesa_Uniform1ivARB(GLint location, GLsizei count, const GLint * values);
2194 #define _es_Uniform1iv _mesa_Uniform1ivARB
2195
2196 extern void GL_APIENTRY _mesa_Uniform2fARB(GLint location, GLfloat v0, GLfloat v1);
2197 #define _es_Uniform2f _mesa_Uniform2fARB
2198
2199 extern void GL_APIENTRY _mesa_Uniform2fvARB(GLint location, GLsizei count, const GLfloat * values);
2200 #define _es_Uniform2fv _mesa_Uniform2fvARB
2201
2202 extern void GL_APIENTRY _mesa_Uniform2iARB(GLint location, GLint v0, GLint v1);
2203 #define _es_Uniform2i _mesa_Uniform2iARB
2204
2205 extern void GL_APIENTRY _mesa_Uniform2ivARB(GLint location, GLsizei count, const GLint * values);
2206 #define _es_Uniform2iv _mesa_Uniform2ivARB
2207
2208 extern void GL_APIENTRY _mesa_Uniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
2209 #define _es_Uniform3f _mesa_Uniform3fARB
2210
2211 extern void GL_APIENTRY _mesa_Uniform3fvARB(GLint location, GLsizei count, const GLfloat * values);
2212 #define _es_Uniform3fv _mesa_Uniform3fvARB
2213
2214 extern void GL_APIENTRY _mesa_Uniform3iARB(GLint location, GLint v0, GLint v1, GLint v2);
2215 #define _es_Uniform3i _mesa_Uniform3iARB
2216
2217 extern void GL_APIENTRY _mesa_Uniform3ivARB(GLint location, GLsizei count, const GLint * values);
2218 #define _es_Uniform3iv _mesa_Uniform3ivARB
2219
2220 extern void GL_APIENTRY _mesa_Uniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
2221 #define _es_Uniform4f _mesa_Uniform4fARB
2222
2223 extern void GL_APIENTRY _mesa_Uniform4fvARB(GLint location, GLsizei count, const GLfloat * values);
2224 #define _es_Uniform4fv _mesa_Uniform4fvARB
2225
2226 extern void GL_APIENTRY _mesa_Uniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
2227 #define _es_Uniform4i _mesa_Uniform4iARB
2228
2229 extern void GL_APIENTRY _mesa_Uniform4ivARB(GLint location, GLsizei count, const GLint * values);
2230 #define _es_Uniform4iv _mesa_Uniform4ivARB
2231
2232 extern void GL_APIENTRY _mesa_UniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
2233 #define _es_UniformMatrix2fv _mesa_UniformMatrix2fvARB
2234
2235 extern void GL_APIENTRY _mesa_UniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
2236 #define _es_UniformMatrix3fv _mesa_UniformMatrix3fvARB
2237
2238 extern void GL_APIENTRY _mesa_UniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
2239 #define _es_UniformMatrix4fv _mesa_UniformMatrix4fvARB
2240
2241 extern GLboolean GL_APIENTRY _mesa_UnmapBufferARB(GLenum target);
2242 static GLboolean GL_APIENTRY _es_UnmapBufferOES(GLenum target)
2243 {
2244     switch(target) {
2245         case GL_ARRAY_BUFFER:
2246         case GL_ELEMENT_ARRAY_BUFFER:
2247             break;
2248         default:
2249             _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glUnmapBufferOES(target=0x%x)", target);
2250             return GL_FALSE;
2251     }
2252
2253     return _mesa_UnmapBufferARB(target);
2254 }
2255
2256 extern void GL_APIENTRY _mesa_UseProgramObjectARB(GLuint program);
2257 #define _es_UseProgram _mesa_UseProgramObjectARB
2258
2259 extern void GL_APIENTRY _mesa_ValidateProgramARB(GLuint program);
2260 #define _es_ValidateProgram _mesa_ValidateProgramARB
2261
2262 /* this function is special and is defined elsewhere */
2263 extern void GL_APIENTRY _es_VertexAttrib1f(GLuint index, GLfloat x);
2264 #define _check_VertexAttrib1f _es_VertexAttrib1f
2265
2266 /* this function is special and is defined elsewhere */
2267 extern void GL_APIENTRY _es_VertexAttrib1fv(GLuint index, const GLfloat * v);
2268 #define _check_VertexAttrib1fv _es_VertexAttrib1fv
2269
2270 /* this function is special and is defined elsewhere */
2271 extern void GL_APIENTRY _es_VertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
2272 #define _check_VertexAttrib2f _es_VertexAttrib2f
2273
2274 /* this function is special and is defined elsewhere */
2275 extern void GL_APIENTRY _es_VertexAttrib2fv(GLuint index, const GLfloat * v);
2276 #define _check_VertexAttrib2fv _es_VertexAttrib2fv
2277
2278 /* this function is special and is defined elsewhere */
2279 extern void GL_APIENTRY _es_VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
2280 #define _check_VertexAttrib3f _es_VertexAttrib3f
2281
2282 /* this function is special and is defined elsewhere */
2283 extern void GL_APIENTRY _es_VertexAttrib3fv(GLuint index, const GLfloat * v);
2284 #define _check_VertexAttrib3fv _es_VertexAttrib3fv
2285
2286 /* this function is special and is defined elsewhere */
2287 extern void GL_APIENTRY _es_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
2288 #define _check_VertexAttrib4f _es_VertexAttrib4f
2289
2290 /* this function is special and is defined elsewhere */
2291 extern void GL_APIENTRY _es_VertexAttrib4fv(GLuint index, const GLfloat * v);
2292 #define _check_VertexAttrib4fv _es_VertexAttrib4fv
2293
2294 extern void GL_APIENTRY _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
2295 static void GL_APIENTRY _es_VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
2296 {
2297     switch(size) {
2298         case 1:
2299         case 2:
2300         case 3:
2301         case 4:
2302             break;
2303         default:
2304             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glVertexAttribPointer(size=%d)", size);
2305             return;
2306     }
2307     switch(type) {
2308         case GL_BYTE:
2309         case GL_UNSIGNED_BYTE:
2310         case GL_SHORT:
2311         case GL_UNSIGNED_SHORT:
2312         case GL_FLOAT:
2313         case GL_FIXED:
2314             break;
2315         default:
2316             _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, "glVertexAttribPointer(type=0x%x)", type);
2317             return;
2318     }
2319
2320     _mesa_VertexAttribPointerARB(index, size, type, normalized, stride, pointer);
2321 }
2322
2323 extern void GL_APIENTRY _mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
2324 #define _es_Viewport _mesa_Viewport
2325
2326
2327 #include "glapi/glapi.h"
2328
2329 #if FEATURE_remap_table
2330
2331 /* define esLocalRemapTable */
2332 #include "es2api/main/dispatch.h"
2333
2334 #define need_MESA_remap_table
2335 #include "es2api/main/remap_helper.h"
2336
2337 static void
2338 init_remap_table(void)
2339 {
2340    _glthread_DECLARE_STATIC_MUTEX(mutex);
2341    static GLboolean initialized = GL_FALSE;
2342    const struct gl_function_pool_remap *remap = MESA_remap_table_functions;
2343    int i;
2344
2345    _glthread_LOCK_MUTEX(mutex);
2346    if (initialized) {
2347       _glthread_UNLOCK_MUTEX(mutex);
2348       return;
2349    }
2350
2351    for (i = 0; i < esLocalRemapTable_size; i++) {
2352       GLint offset;
2353       const char *spec;
2354
2355       /* sanity check */
2356       ASSERT(i == remap[i].remap_index);
2357       spec = _mesa_function_pool + remap[i].pool_index;
2358
2359       offset = _mesa_map_function_spec(spec);
2360       esLocalRemapTable[i] = offset;
2361    }
2362    initialized = GL_TRUE;
2363    _glthread_UNLOCK_MUTEX(mutex);
2364 }
2365
2366 #else /* FEATURE_remap_table */
2367
2368 #include "es2api/main/dispatch.h"
2369
2370 static INLINE void
2371 init_remap_table(void)
2372 {
2373 }
2374
2375 #endif /* FEATURE_remap_table */
2376
2377 struct _glapi_table *
2378 _mesa_create_exec_table_es2(void)
2379 {
2380    struct _glapi_table *exec;
2381
2382    exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
2383    if (exec == NULL)
2384       return NULL;
2385
2386    init_remap_table();
2387
2388     SET_ActiveTexture(exec, _es_ActiveTexture);
2389     SET_AttachShader(exec, _es_AttachShader);
2390     SET_BindAttribLocation(exec, _es_BindAttribLocation);
2391     SET_BindBuffer(exec, _es_BindBuffer);
2392     SET_BindFramebuffer(exec, _es_BindFramebuffer);
2393     SET_BindRenderbuffer(exec, _es_BindRenderbuffer);
2394     SET_BindTexture(exec, _es_BindTexture);
2395     SET_BlendColor(exec, _es_BlendColor);
2396     SET_BlendEquation(exec, _es_BlendEquation);
2397     SET_BlendEquationSeparate(exec, _es_BlendEquationSeparate);
2398     SET_BlendFunc(exec, _es_BlendFunc);
2399     SET_BlendFuncSeparate(exec, _es_BlendFuncSeparate);
2400     SET_BufferData(exec, _es_BufferData);
2401     SET_BufferSubData(exec, _es_BufferSubData);
2402     SET_CheckFramebufferStatus(exec, _es_CheckFramebufferStatus);
2403     SET_Clear(exec, _es_Clear);
2404     SET_ClearColor(exec, _es_ClearColor);
2405     SET_ClearDepthf(exec, _es_ClearDepthf);
2406     SET_ClearStencil(exec, _es_ClearStencil);
2407     SET_ColorMask(exec, _es_ColorMask);
2408     SET_CompileShader(exec, _es_CompileShader);
2409     SET_CompressedTexImage2D(exec, _es_CompressedTexImage2D);
2410     SET_CompressedTexImage3DOES(exec, _es_CompressedTexImage3DOES);
2411     SET_CompressedTexSubImage2D(exec, _es_CompressedTexSubImage2D);
2412     SET_CompressedTexSubImage3DOES(exec, _es_CompressedTexSubImage3DOES);
2413     SET_CopyTexImage2D(exec, _es_CopyTexImage2D);
2414     SET_CopyTexSubImage2D(exec, _es_CopyTexSubImage2D);
2415     SET_CopyTexSubImage3DOES(exec, _es_CopyTexSubImage3DOES);
2416     SET_CreateProgram(exec, _es_CreateProgram);
2417     SET_CreateShader(exec, _es_CreateShader);
2418     SET_CullFace(exec, _es_CullFace);
2419     SET_DeleteBuffers(exec, _es_DeleteBuffers);
2420     SET_DeleteFramebuffers(exec, _es_DeleteFramebuffers);
2421     SET_DeleteProgram(exec, _es_DeleteProgram);
2422     SET_DeleteRenderbuffers(exec, _es_DeleteRenderbuffers);
2423     SET_DeleteShader(exec, _es_DeleteShader);
2424     SET_DeleteTextures(exec, _es_DeleteTextures);
2425     SET_DepthFunc(exec, _es_DepthFunc);
2426     SET_DepthMask(exec, _es_DepthMask);
2427     SET_DepthRangef(exec, _es_DepthRangef);
2428     SET_DetachShader(exec, _es_DetachShader);
2429     SET_Disable(exec, _es_Disable);
2430     SET_DisableVertexAttribArray(exec, _es_DisableVertexAttribArray);
2431     SET_DrawArrays(exec, _es_DrawArrays);
2432     SET_DrawElements(exec, _es_DrawElements);
2433     SET_EGLImageTargetRenderbufferStorageOES(exec, _es_EGLImageTargetRenderbufferStorageOES);
2434     SET_EGLImageTargetTexture2DOES(exec, _es_EGLImageTargetTexture2DOES);
2435     SET_Enable(exec, _es_Enable);
2436     SET_EnableVertexAttribArray(exec, _es_EnableVertexAttribArray);
2437     SET_Finish(exec, _es_Finish);
2438     SET_Flush(exec, _es_Flush);
2439     SET_FramebufferRenderbuffer(exec, _es_FramebufferRenderbuffer);
2440     SET_FramebufferTexture2D(exec, _es_FramebufferTexture2D);
2441     SET_FramebufferTexture3DOES(exec, _es_FramebufferTexture3DOES);
2442     SET_FrontFace(exec, _es_FrontFace);
2443     SET_GenBuffers(exec, _es_GenBuffers);
2444     SET_GenFramebuffers(exec, _es_GenFramebuffers);
2445     SET_GenRenderbuffers(exec, _es_GenRenderbuffers);
2446     SET_GenTextures(exec, _es_GenTextures);
2447     SET_GenerateMipmap(exec, _es_GenerateMipmap);
2448     SET_GetActiveAttrib(exec, _es_GetActiveAttrib);
2449     SET_GetActiveUniform(exec, _es_GetActiveUniform);
2450     SET_GetAttachedShaders(exec, _es_GetAttachedShaders);
2451     SET_GetAttribLocation(exec, _es_GetAttribLocation);
2452     SET_GetBooleanv(exec, _es_GetBooleanv);
2453     SET_GetBufferParameteriv(exec, _es_GetBufferParameteriv);
2454     SET_GetBufferPointervOES(exec, _es_GetBufferPointervOES);
2455     SET_GetError(exec, _es_GetError);
2456     SET_GetFloatv(exec, _es_GetFloatv);
2457     SET_GetFramebufferAttachmentParameteriv(exec, _es_GetFramebufferAttachmentParameteriv);
2458     SET_GetIntegerv(exec, _es_GetIntegerv);
2459     SET_GetProgramInfoLog(exec, _es_GetProgramInfoLog);
2460     SET_GetProgramiv(exec, _es_GetProgramiv);
2461     SET_GetRenderbufferParameteriv(exec, _es_GetRenderbufferParameteriv);
2462     SET_GetShaderInfoLog(exec, _es_GetShaderInfoLog);
2463     SET_GetShaderPrecisionFormat(exec, _es_GetShaderPrecisionFormat);
2464     SET_GetShaderSource(exec, _es_GetShaderSource);
2465     SET_GetShaderiv(exec, _es_GetShaderiv);
2466     SET_GetString(exec, _es_GetString);
2467     SET_GetTexParameterfv(exec, _es_GetTexParameterfv);
2468     SET_GetTexParameteriv(exec, _es_GetTexParameteriv);
2469     SET_GetUniformLocation(exec, _es_GetUniformLocation);
2470     SET_GetUniformfv(exec, _es_GetUniformfv);
2471     SET_GetUniformiv(exec, _es_GetUniformiv);
2472     SET_GetVertexAttribPointerv(exec, _es_GetVertexAttribPointerv);
2473     SET_GetVertexAttribfv(exec, _es_GetVertexAttribfv);
2474     SET_GetVertexAttribiv(exec, _es_GetVertexAttribiv);
2475     SET_Hint(exec, _es_Hint);
2476     SET_IsBuffer(exec, _es_IsBuffer);
2477     SET_IsEnabled(exec, _es_IsEnabled);
2478     SET_IsFramebuffer(exec, _es_IsFramebuffer);
2479     SET_IsProgram(exec, _es_IsProgram);
2480     SET_IsRenderbuffer(exec, _es_IsRenderbuffer);
2481     SET_IsShader(exec, _es_IsShader);
2482     SET_IsTexture(exec, _es_IsTexture);
2483     SET_LineWidth(exec, _es_LineWidth);
2484     SET_LinkProgram(exec, _es_LinkProgram);
2485     SET_MapBufferOES(exec, _es_MapBufferOES);
2486     SET_MultiDrawArraysEXT(exec, _es_MultiDrawArraysEXT);
2487     SET_MultiDrawElementsEXT(exec, _es_MultiDrawElementsEXT);
2488     SET_PixelStorei(exec, _es_PixelStorei);
2489     SET_PolygonOffset(exec, _es_PolygonOffset);
2490     SET_ReadPixels(exec, _es_ReadPixels);
2491     SET_ReleaseShaderCompiler(exec, _es_ReleaseShaderCompiler);
2492     SET_RenderbufferStorage(exec, _check_RenderbufferStorage);
2493     SET_SampleCoverage(exec, _es_SampleCoverage);
2494     SET_Scissor(exec, _es_Scissor);
2495     SET_ShaderBinary(exec, _es_ShaderBinary);
2496     SET_ShaderSource(exec, _es_ShaderSource);
2497     SET_StencilFunc(exec, _es_StencilFunc);
2498     SET_StencilFuncSeparate(exec, _es_StencilFuncSeparate);
2499     SET_StencilMask(exec, _es_StencilMask);
2500     SET_StencilMaskSeparate(exec, _es_StencilMaskSeparate);
2501     SET_StencilOp(exec, _es_StencilOp);
2502     SET_StencilOpSeparate(exec, _es_StencilOpSeparate);
2503     SET_TexImage2D(exec, _es_TexImage2D);
2504     SET_TexImage3DOES(exec, _es_TexImage3DOES);
2505     SET_TexParameterf(exec, _es_TexParameterf);
2506     SET_TexParameterfv(exec, _es_TexParameterfv);
2507     SET_TexParameteri(exec, _es_TexParameteri);
2508     SET_TexParameteriv(exec, _es_TexParameteriv);
2509     SET_TexSubImage2D(exec, _es_TexSubImage2D);
2510     SET_TexSubImage3DOES(exec, _es_TexSubImage3DOES);
2511     SET_Uniform1f(exec, _es_Uniform1f);
2512     SET_Uniform1fv(exec, _es_Uniform1fv);
2513     SET_Uniform1i(exec, _es_Uniform1i);
2514     SET_Uniform1iv(exec, _es_Uniform1iv);
2515     SET_Uniform2f(exec, _es_Uniform2f);
2516     SET_Uniform2fv(exec, _es_Uniform2fv);
2517     SET_Uniform2i(exec, _es_Uniform2i);
2518     SET_Uniform2iv(exec, _es_Uniform2iv);
2519     SET_Uniform3f(exec, _es_Uniform3f);
2520     SET_Uniform3fv(exec, _es_Uniform3fv);
2521     SET_Uniform3i(exec, _es_Uniform3i);
2522     SET_Uniform3iv(exec, _es_Uniform3iv);
2523     SET_Uniform4f(exec, _es_Uniform4f);
2524     SET_Uniform4fv(exec, _es_Uniform4fv);
2525     SET_Uniform4i(exec, _es_Uniform4i);
2526     SET_Uniform4iv(exec, _es_Uniform4iv);
2527     SET_UniformMatrix2fv(exec, _es_UniformMatrix2fv);
2528     SET_UniformMatrix3fv(exec, _es_UniformMatrix3fv);
2529     SET_UniformMatrix4fv(exec, _es_UniformMatrix4fv);
2530     SET_UnmapBufferOES(exec, _es_UnmapBufferOES);
2531     SET_UseProgram(exec, _es_UseProgram);
2532     SET_ValidateProgram(exec, _es_ValidateProgram);
2533     SET_VertexAttrib1f(exec, _check_VertexAttrib1f);
2534     SET_VertexAttrib1fv(exec, _check_VertexAttrib1fv);
2535     SET_VertexAttrib2f(exec, _check_VertexAttrib2f);
2536     SET_VertexAttrib2fv(exec, _check_VertexAttrib2fv);
2537     SET_VertexAttrib3f(exec, _check_VertexAttrib3f);
2538     SET_VertexAttrib3fv(exec, _check_VertexAttrib3fv);
2539     SET_VertexAttrib4f(exec, _check_VertexAttrib4f);
2540     SET_VertexAttrib4fv(exec, _check_VertexAttrib4fv);
2541     SET_VertexAttribPointer(exec, _es_VertexAttribPointer);
2542     SET_Viewport(exec, _es_Viewport);
2543
2544    return exec;
2545 }
2546
2547 #endif /* FEATURE_ES2 */