diff --git a/.gitignore b/.gitignore index 5761abc..6467048 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ +*.dll +*.exe +*.c~ +*.un~ *.o diff --git a/features/features_cpu.c b/features/features_cpu.c index 0d46fba..fdefe92 100644 --- a/features/features_cpu.c +++ b/features/features_cpu.c @@ -79,7 +79,9 @@ #include #endif -#ifdef SWITCH +#if defined(HAVE_LIBNX) +#include +#elif defined(SWITCH) #include #include #endif @@ -219,7 +221,9 @@ retro_time_t cpu_features_get_time_usec(void) return sys_time_get_system_time(); #elif defined(GEKKO) return ticks_to_microsecs(gettime()); -#elif defined(SWITCH) +#elif defined(WIIU) + return ticks_to_us(OSGetSystemTime()); +#elif defined(SWITCH) || defined(HAVE_LIBNX) return (svcGetSystemTick() * 10) / 192; #elif defined(_POSIX_MONOTONIC_CLOCK) || defined(__QNX__) || defined(ANDROID) || defined(__MACH__) struct timespec tv = {0}; @@ -236,8 +240,6 @@ retro_time_t cpu_features_get_time_usec(void) return osGetTime() * 1000; #elif defined(VITA) return sceKernelGetProcessTimeWide(); -#elif defined(WIIU) - return ticks_to_us(OSGetSystemTime()); #else #error "Your platform does not have a timer function implemented in cpu_features_get_time_usec(). Cannot continue." #endif @@ -481,6 +483,8 @@ unsigned cpu_features_get_core_amount(void) return 1; #elif defined(VITA) return 4; +#elif defined(HAVE_LIBNX) || defined(SWITCH) + return 4; #elif defined(_3DS) u8 device_model = 0xFF; CFGU_GetSystemModel(&device_model);/*(0 = O3DS, 1 = O3DSXL, 2 = N3DS, 3 = 2DS, 4 = N3DSXL, 5 = N2DSXL)*/ diff --git a/file/config_file.c b/file/config_file.c index 9c2b76b..0a63e77 100644 --- a/file/config_file.c +++ b/file/config_file.c @@ -999,6 +999,7 @@ void config_file_dump(config_file_t *conf, FILE *file) } list = merge_sort_linked_list((struct config_entry_list*)conf->entries, config_sort_compare_func); + conf->entries = list; while (list) { @@ -1092,7 +1093,7 @@ static void test_config_file(void) test_config_file_parse_contains("foo = \"bar\"", "foo", "bar"); #if 0 - /* turns out it treats empty as nonexistent - + /* turns out it treats empty as nonexistent - * should probably be fixed */ test_config_file_parse_contains("foo = \"\"\n", "foo", ""); test_config_file_parse_contains("foo = \"\"", "foo", ""); diff --git a/file/file_path.c b/file/file_path.c index b87b5fb..2e90537 100644 --- a/file/file_path.c +++ b/file/file_path.c @@ -230,7 +230,7 @@ static bool path_mkdir_error(int ret) { #if defined(VITA) return (ret == SCE_ERROR_ERRNO_EEXIST); -#elif defined(PSP) || defined(_3DS) || defined(WIIU) +#elif defined(PSP) || defined(_3DS) || defined(WIIU) || defined(SWITCH) return (ret == -1); #else return (ret < 0 && errno == EEXIST); diff --git a/gfx/scaler/pixconv.c b/gfx/scaler/pixconv.c index 64f5d89..15f0094 100644 --- a/gfx/scaler/pixconv.c +++ b/gfx/scaler/pixconv.c @@ -254,6 +254,65 @@ void conv_rgb565_argb8888(void *output_, const void *input_, } } +void conv_rgb565_abgr8888(void *output_, const void *input_, + int width, int height, + int out_stride, int in_stride) +{ + int h; + const uint16_t *input = (const uint16_t*)input_; + uint32_t *output = (uint32_t*)output_; + #if defined(__SSE2__) + const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); + const __m128i pix_mask_g = _mm_set1_epi16(0x3f << 5); + const __m128i pix_mask_b = _mm_set1_epi16(0x1f << 5); + const __m128i mul16_r = _mm_set1_epi16(0x0210); + const __m128i mul16_g = _mm_set1_epi16(0x2080); + const __m128i mul16_b = _mm_set1_epi16(0x4200); + const __m128i a = _mm_set1_epi16(0x00ff); + int max_width = width - 7; +#endif + for (h = 0; h < height; + h++, output += out_stride >> 2, input += in_stride >> 1) + { + int w = 0; +#if defined(__SSE2__) + for (; w < max_width; w += 8) + { + __m128i res_lo, res_hi; + __m128i res_lo_bg, res_hi_bg, res_lo_ra, res_hi_ra; + const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); + __m128i r = _mm_and_si128(_mm_srli_epi16(in, 1), pix_mask_r); + __m128i g = _mm_and_si128(in, pix_mask_g); + __m128i b = _mm_and_si128(_mm_slli_epi16(in, 5), pix_mask_b); + r = _mm_mulhi_epi16(r, mul16_r); + g = _mm_mulhi_epi16(g, mul16_g); + b = _mm_mulhi_epi16(b, mul16_b); + res_lo_bg = _mm_unpacklo_epi8(b, g); + res_hi_bg = _mm_unpackhi_epi8(b, g); + res_lo_ra = _mm_unpacklo_epi8(r, a); + res_hi_ra = _mm_unpackhi_epi8(r, a); + res_lo = _mm_or_si128(res_lo_bg, + _mm_slli_si128(res_lo_ra, 2)); + res_hi = _mm_or_si128(res_hi_bg, + _mm_slli_si128(res_hi_ra, 2)); + _mm_storeu_si128((__m128i*)(output + w + 0), res_lo); + _mm_storeu_si128((__m128i*)(output + w + 4), res_hi); + } +#endif + for (; w < width; w++) + { + uint32_t col = input[w]; + uint32_t r = (col >> 11) & 0x1f; + uint32_t g = (col >> 5) & 0x3f; + uint32_t b = (col >> 0) & 0x1f; + r = (r << 3) | (r >> 2); + g = (g << 2) | (g >> 4); + b = (b << 3) | (b >> 2); + output[w] = (0xffu << 24) | (b << 16) | (g << 8) | (r << 0); + } + } +} + void conv_argb8888_rgba4444(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) diff --git a/gfx/scaler/scaler.c b/gfx/scaler/scaler.c index 803fecb..047c374 100644 --- a/gfx/scaler/scaler.c +++ b/gfx/scaler/scaler.c @@ -119,6 +119,9 @@ bool scaler_ctx_gen_filter(struct scaler_ctx *ctx) case SCALER_FMT_ARGB8888: ctx->direct_pixconv = conv_rgb565_argb8888; break; + case SCALER_FMT_ABGR8888: + ctx->direct_pixconv = conv_rgb565_abgr8888; + break; case SCALER_FMT_BGR24: ctx->direct_pixconv = conv_rgb565_bgr24; break; diff --git a/glsym/glsym_gl.c b/glsym/glsym_gl.c index d89992c..8fa9697 100644 --- a/glsym/glsym_gl.c +++ b/glsym/glsym_gl.c @@ -27,6 +27,385 @@ #define SYM(x) { "gl" #x, &(gl##x) } const struct rglgen_sym_map rglgen_symbol_map[] = { +#ifdef HAVE_LIBNX + // xglgen missing + SYM(ReadPixels), + SYM(TexImage2D), + SYM(Viewport), + SYM(TexParameteri), + SYM(TexSubImage2D), + SYM(TexParameteriv), + SYM(DrawElements), + + // xglgen generated + SYM(ClearIndex), + SYM(ClearColor), + SYM(Clear), + SYM(IndexMask), + SYM(ColorMask), + SYM(AlphaFunc), + SYM(BlendFunc), + SYM(LogicOp), + SYM(CullFace), + SYM(FrontFace), + SYM(PointSize), + SYM(LineWidth), + SYM(LineStipple), + SYM(PolygonMode), + SYM(PolygonOffset), + SYM(PolygonStipple), + SYM(GetPolygonStipple), + SYM(EdgeFlag), + SYM(EdgeFlagv), + SYM(Scissor), + SYM(ClipPlane), + SYM(GetClipPlane), + SYM(DrawBuffer), + SYM(ReadBuffer), + SYM(Enable), + SYM(Disable), + SYM(IsEnabled), + SYM(EnableClientState), + SYM(DisableClientState), + SYM(GetBooleanv), + SYM(GetDoublev), + SYM(GetFloatv), + SYM(GetIntegerv), + SYM(PushAttrib), + SYM(PopAttrib), + SYM(PushClientAttrib), + SYM(PopClientAttrib), + SYM(RenderMode), + SYM(GetError), + SYM(GetString), + SYM(Finish), + SYM(Flush), + SYM(Hint), + SYM(ClearDepth), + SYM(DepthFunc), + SYM(DepthMask), + SYM(DepthRange), + SYM(ClearAccum), + SYM(Accum), + SYM(MatrixMode), + SYM(PushMatrix), + SYM(PopMatrix), + SYM(LoadIdentity), + SYM(LoadMatrixd), + SYM(LoadMatrixf), + SYM(MultMatrixd), + SYM(MultMatrixf), + SYM(Scaled), + SYM(Scalef), + SYM(Translated), + SYM(Translatef), + SYM(IsList), + SYM(DeleteLists), + SYM(GenLists), + SYM(NewList), + SYM(EndList), + SYM(CallList), + SYM(ListBase), + SYM(Begin), + SYM(End), + SYM(Vertex2d), + SYM(Vertex2f), + SYM(Vertex2i), + SYM(Vertex2s), + SYM(Vertex3d), + SYM(Vertex3f), + SYM(Vertex3i), + SYM(Vertex3s), + SYM(Vertex4d), + SYM(Vertex4f), + SYM(Vertex4i), + SYM(Vertex4s), + SYM(Vertex2dv), + SYM(Vertex2fv), + SYM(Vertex2iv), + SYM(Vertex2sv), + SYM(Vertex3dv), + SYM(Vertex3fv), + SYM(Vertex3iv), + SYM(Vertex3sv), + SYM(Vertex4dv), + SYM(Vertex4fv), + SYM(Vertex4iv), + SYM(Vertex4sv), + SYM(Normal3b), + SYM(Normal3d), + SYM(Normal3f), + SYM(Normal3i), + SYM(Normal3s), + SYM(Normal3bv), + SYM(Normal3dv), + SYM(Normal3fv), + SYM(Normal3iv), + SYM(Normal3sv), + SYM(Indexd), + SYM(Indexf), + SYM(Indexi), + SYM(Indexs), + SYM(Indexub), + SYM(Indexdv), + SYM(Indexfv), + SYM(Indexiv), + SYM(Indexsv), + SYM(Indexubv), + SYM(Color3b), + SYM(Color3d), + SYM(Color3f), + SYM(Color3i), + SYM(Color3s), + SYM(Color3ub), + SYM(Color3ui), + SYM(Color3us), + SYM(Color3bv), + SYM(Color3dv), + SYM(Color3fv), + SYM(Color3iv), + SYM(Color3sv), + SYM(Color3ubv), + SYM(Color3uiv), + SYM(Color3usv), + SYM(Color4bv), + SYM(Color4dv), + SYM(Color4fv), + SYM(Color4iv), + SYM(Color4sv), + SYM(Color4ubv), + SYM(Color4uiv), + SYM(Color4usv), + SYM(TexCoord1d), + SYM(TexCoord1f), + SYM(TexCoord1i), + SYM(TexCoord1s), + SYM(TexCoord2d), + SYM(TexCoord2f), + SYM(TexCoord2i), + SYM(TexCoord2s), + SYM(TexCoord3d), + SYM(TexCoord3f), + SYM(TexCoord3i), + SYM(TexCoord3s), + SYM(TexCoord4d), + SYM(TexCoord4f), + SYM(TexCoord4i), + SYM(TexCoord4s), + SYM(TexCoord1dv), + SYM(TexCoord1fv), + SYM(TexCoord1iv), + SYM(TexCoord1sv), + SYM(TexCoord2dv), + SYM(TexCoord2fv), + SYM(TexCoord2iv), + SYM(TexCoord2sv), + SYM(TexCoord3dv), + SYM(TexCoord3fv), + SYM(TexCoord3iv), + SYM(TexCoord3sv), + SYM(TexCoord4dv), + SYM(TexCoord4fv), + SYM(TexCoord4iv), + SYM(TexCoord4sv), + SYM(RasterPos2d), + SYM(RasterPos2f), + SYM(RasterPos2i), + SYM(RasterPos2s), + SYM(RasterPos3d), + SYM(RasterPos3f), + SYM(RasterPos3i), + SYM(RasterPos3s), + SYM(RasterPos4d), + SYM(RasterPos4f), + SYM(RasterPos4i), + SYM(RasterPos4s), + SYM(RasterPos2dv), + SYM(RasterPos2fv), + SYM(RasterPos2iv), + SYM(RasterPos2sv), + SYM(RasterPos3dv), + SYM(RasterPos3fv), + SYM(RasterPos3iv), + SYM(RasterPos3sv), + SYM(RasterPos4dv), + SYM(RasterPos4fv), + SYM(RasterPos4iv), + SYM(RasterPos4sv), + SYM(Rectd), + SYM(Rectf), + SYM(Recti), + SYM(Rects), + SYM(Rectdv), + SYM(Rectfv), + SYM(Rectiv), + SYM(Rectsv), + SYM(EdgeFlagPointer), + SYM(GetPointerv), + SYM(ArrayElement), + SYM(DrawArrays), + SYM(ShadeModel), + SYM(Lightf), + SYM(Lighti), + SYM(LightModelf), + SYM(LightModeli), + SYM(LightModelfv), + SYM(LightModeliv), + SYM(Materialf), + SYM(Materiali), + SYM(Materialfv), + SYM(Materialiv), + SYM(GetMaterialfv), + SYM(GetMaterialiv), + SYM(ColorMaterial), + SYM(PixelZoom), + SYM(PixelStoref), + SYM(PixelStorei), + SYM(PixelTransferf), + SYM(PixelTransferi), + SYM(GetPixelMapfv), + SYM(GetPixelMapuiv), + SYM(GetPixelMapusv), + SYM(StencilFunc), + SYM(StencilMask), + SYM(StencilOp), + SYM(ClearStencil), + SYM(TexGend), + SYM(TexGenf), + SYM(TexGeni), + SYM(TexGendv), + SYM(TexGenfv), + SYM(TexGeniv), + SYM(GetTexGendv), + SYM(GetTexGenfv), + SYM(GetTexGeniv), + SYM(TexEnvf), + SYM(TexEnvi), + SYM(TexEnvfv), + SYM(TexEnviv), + SYM(GetTexEnvfv), + SYM(GetTexEnviv), + SYM(TexParameterf), + SYM(TexParameteri), + SYM(GenTextures), + SYM(DeleteTextures), + SYM(BindTexture), + SYM(IsTexture), + SYM(GetMapdv), + SYM(GetMapfv), + SYM(GetMapiv), + SYM(EvalCoord1d), + SYM(EvalCoord1f), + SYM(EvalCoord1dv), + SYM(EvalCoord1fv), + SYM(EvalCoord2d), + SYM(EvalCoord2f), + SYM(EvalCoord2dv), + SYM(EvalCoord2fv), + SYM(MapGrid1d), + SYM(MapGrid1f), + SYM(EvalPoint1), + SYM(EvalPoint2), + SYM(EvalMesh1), + SYM(EvalMesh2), + SYM(Fogf), + SYM(Fogi), + SYM(Fogfv), + SYM(Fogiv), + SYM(FeedbackBuffer), + SYM(PassThrough), + SYM(SelectBuffer), + SYM(InitNames), + SYM(LoadName), + SYM(PushName), + SYM(PopName), + SYM(BlendEquation), + SYM(ResetHistogram), + SYM(ResetMinmax), + SYM(ActiveTexture), + SYM(ClientActiveTexture), + SYM(CompressedTexImage1D), + SYM(CompressedTexImage2D), + SYM(CompressedTexImage3D), + SYM(CompressedTexSubImage1D), + SYM(CompressedTexSubImage2D), + SYM(CompressedTexSubImage3D), + SYM(GetCompressedTexImage), + SYM(MultiTexCoord1d), + SYM(MultiTexCoord1dv), + SYM(MultiTexCoord1f), + SYM(MultiTexCoord1fv), + SYM(MultiTexCoord1i), + SYM(MultiTexCoord1iv), + SYM(MultiTexCoord1s), + SYM(MultiTexCoord1sv), + SYM(MultiTexCoord2d), + SYM(MultiTexCoord2dv), + SYM(MultiTexCoord2f), + SYM(MultiTexCoord2fv), + SYM(MultiTexCoord2i), + SYM(MultiTexCoord2iv), + SYM(MultiTexCoord2s), + SYM(MultiTexCoord2sv), + SYM(MultiTexCoord3d), + SYM(MultiTexCoord3dv), + SYM(MultiTexCoord3f), + SYM(MultiTexCoord3fv), + SYM(MultiTexCoord3i), + SYM(MultiTexCoord3iv), + SYM(MultiTexCoord3s), + SYM(MultiTexCoord3sv), + SYM(MultiTexCoord4d), + SYM(MultiTexCoord4dv), + SYM(MultiTexCoord4f), + SYM(MultiTexCoord4fv), + SYM(MultiTexCoord4i), + SYM(MultiTexCoord4iv), + SYM(MultiTexCoord4s), + SYM(MultiTexCoord4sv), + SYM(LoadTransposeMatrixd), + SYM(LoadTransposeMatrixf), + SYM(MultTransposeMatrixd), + SYM(MultTransposeMatrixf), + SYM(SampleCoverage), + SYM(ActiveTextureARB), + SYM(ClientActiveTextureARB), + SYM(MultiTexCoord1dARB), + SYM(MultiTexCoord1dvARB), + SYM(MultiTexCoord1fARB), + SYM(MultiTexCoord1fvARB), + SYM(MultiTexCoord1iARB), + SYM(MultiTexCoord1ivARB), + SYM(MultiTexCoord1sARB), + SYM(MultiTexCoord1svARB), + SYM(MultiTexCoord2dARB), + SYM(MultiTexCoord2dvARB), + SYM(MultiTexCoord2fARB), + SYM(MultiTexCoord2fvARB), + SYM(MultiTexCoord2iARB), + SYM(MultiTexCoord2ivARB), + SYM(MultiTexCoord2sARB), + SYM(MultiTexCoord2svARB), + SYM(MultiTexCoord3dARB), + SYM(MultiTexCoord3dvARB), + SYM(MultiTexCoord3fARB), + SYM(MultiTexCoord3fvARB), + SYM(MultiTexCoord3iARB), + SYM(MultiTexCoord3ivARB), + SYM(MultiTexCoord3sARB), + SYM(MultiTexCoord3svARB), + SYM(MultiTexCoord4dARB), + SYM(MultiTexCoord4dvARB), + SYM(MultiTexCoord4fARB), + SYM(MultiTexCoord4fvARB), + SYM(MultiTexCoord4iARB), + SYM(MultiTexCoord4ivARB), + SYM(MultiTexCoord4sARB), + SYM(MultiTexCoord4svARB), + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), +#endif + SYM(DrawRangeElements), SYM(TexImage3D), SYM(TexSubImage3D), diff --git a/glsym/xglgen.py b/glsym/xglgen.py new file mode 100644 index 0000000..9fae01b --- /dev/null +++ b/glsym/xglgen.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 + +""" + License statement applies to this file (xglgen.py) only. +""" + +""" + Permission is hereby granted, free of charge, + to any person obtaining a copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +import sys +import os +import re + +banned_ext = [ 'AMD', 'APPLE', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] + +def noext(sym): + for ext in banned_ext: + if sym.endswith(ext): + return False + return True + +def find_gl_symbols(lines): + typedefs = [] + syms = [] + for line in lines: + # Note this doesn't work automated; this script is designed as a helper + m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) + g = re.search(r'^GLAPI\s(.+)\s(.+)\s(gl\S+)\W*\((.+)\).*', line) + if g and noext(g.group(3)): + typedefs.append('typedef ' + g.group(1) + ' (APIENTRYP RGLSYM' + g.group(3).upper() + 'PROC) (' + g.group(4) + ');') + syms.append(g.group(3)) + + return (typedefs, syms) + +def generate_defines(gl_syms): + res = [] + for line in gl_syms: + res.append('#define {} __rglgen_{}'.format(line, line)) + return res + +def generate_declarations(gl_syms): + return ['RGLSYM' + x.upper() + 'PROC ' + x + ';' for x in gl_syms] + +def generate_macros(gl_syms): + return [' SYM(' + x.replace('gl', '') + '),' for x in gl_syms] + +def dump(f, lines): + f.write('\n'.join(lines)) + f.write('\n\n') + +if __name__ == '__main__': + + if len(sys.argv) > 4: + for banned in sys.argv[4:]: + banned_ext.append(banned) + + with open(sys.argv[1], 'r') as f: + lines = f.readlines() + typedefs, syms = find_gl_symbols(lines) + + overrides = generate_defines(syms) + declarations = generate_declarations(syms) + externs = ['extern ' + x for x in declarations] + + macros = generate_macros(syms) + + with open(sys.argv[2], 'w') as f: + f.write('#ifndef RGLGEN_DECL_H__\n') + f.write('#define RGLGEN_DECL_H__\n') + + f.write('#ifdef __cplusplus\n') + f.write('extern "C" {\n') + f.write('#endif\n') + + f.write('#ifdef GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROCKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\n') + f.write('#ifndef APIENTRY\n') + f.write('#define APIENTRY\n') + f.write('#endif\n') + f.write('#ifndef APIENTRYP\n') + f.write('#define APIENTRYP APIENTRY *\n') + f.write('#endif\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#endif\n') + + f.write('#ifndef GL_OES_EGL_image\n') + f.write('typedef void *GLeglImageOES;\n') + f.write('#endif\n') + + f.write('#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2)\n') + f.write('typedef GLint GLfixed;\n') + f.write('#endif\n') + + f.write('#if defined(OSX) && !defined(MAC_OS_X_VERSION_10_7)\n') + f.write('typedef long long int GLint64;\n') + f.write('typedef unsigned long long int GLuint64;\n') + f.write('typedef unsigned long long int GLuint64EXT;\n') + f.write('typedef struct __GLsync *GLsync;\n') + f.write('#endif\n') + + dump(f, typedefs) + dump(f, overrides) + dump(f, externs) + + f.write('struct rglgen_sym_map { const char *sym; void *ptr; };\n') + f.write('extern const struct rglgen_sym_map rglgen_symbol_map[];\n') + + f.write('#ifdef __cplusplus\n') + f.write('}\n') + f.write('#endif\n') + + f.write('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "glsym/glsym.h"\n') + f.write('#include \n') + f.write('#define SYM(x) { "gl" #x, &(gl##x) }\n') + f.write('const struct rglgen_sym_map rglgen_symbol_map[] = {\n') + dump(f, macros) + f.write(' { NULL, NULL },\n') + f.write('};\n') + dump(f, declarations) + diff --git a/include/gfx/scaler/pixconv.h b/include/gfx/scaler/pixconv.h index 100864d..b83e0e7 100644 --- a/include/gfx/scaler/pixconv.h +++ b/include/gfx/scaler/pixconv.h @@ -42,6 +42,10 @@ void conv_rgb565_0rgb1555(void *output, const void *input, int width, int height, int out_stride, int in_stride); +void conv_rgb565_abgr8888(void *output, const void *input, + int width, int height, + int out_stride, int in_stride); + void conv_rgb565_argb8888(void *output, const void *input, int width, int height, int out_stride, int in_stride); diff --git a/include/glsym/glsym.h b/include/glsym/glsym.h index 24f4584..36c9b49 100644 --- a/include/glsym/glsym.h +++ b/include/glsym/glsym.h @@ -31,6 +31,9 @@ #elif defined(HAVE_OPENGLES3) #include "glsym_es3.h" #else +#ifdef HAVE_LIBNX +#include "switch/nx_glsym.h" +#endif #include "glsym_gl.h" #endif #endif diff --git a/include/glsym/rglgen_headers.h b/include/glsym/rglgen_headers.h index 766efb6..4ae33bc 100644 --- a/include/glsym/rglgen_headers.h +++ b/include/glsym/rglgen_headers.h @@ -62,8 +62,14 @@ #define WIN32_LEAN_AND_MEAN #include #endif +#ifndef HAVE_LIBNX #include #include +#else +/* We need to avoid including on this platform */ +#include "switch/nx_gl.h" +#include +#endif /* SWITCH */ #endif #ifndef GL_MAP_WRITE_BIT diff --git a/include/glsym/switch/nx_gl.h b/include/glsym/switch/nx_gl.h new file mode 100644 index 0000000..2c4b3e1 --- /dev/null +++ b/include/glsym/switch/nx_gl.h @@ -0,0 +1,848 @@ +/* Copyright (C) 2018 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro SDK code part (nx_gl.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __NX_GL_H__ +#define __NX_GL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif + +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +// GL.h types +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef signed char GLbyte; /* 1-byte signed */ +typedef short GLshort; /* 2-byte signed */ +typedef int GLint; /* 4-byte signed */ +typedef unsigned char GLubyte; /* 1-byte unsigned */ +typedef unsigned short GLushort; /* 2-byte unsigned */ +typedef unsigned int GLuint; /* 4-byte unsigned */ +typedef int GLsizei; /* 4-byte signed */ +typedef float GLfloat; /* single precision float */ +typedef float GLclampf; /* single precision float in [0,1] */ +typedef double GLdouble; /* double precision float */ +typedef double GLclampd; /* double precision float in [0,1] */ + +// GL.h defines +#define GL_ARB_imaging 1 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_SHININESS 0x1601 +#define GL_EMISSION 0x1600 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_SHADE_MODEL 0x0B54 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_NORMALIZE 0x0BA1 +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM 0x0100 +#define GL_ADD 0x0104 +#define GL_LOAD 0x0101 +#define GL_MULT 0x0103 +#define GL_RETURN 0x0102 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_BLEND 0x0BE2 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_DST 0x0BE0 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FEEDBACK 0x1C01 +#define GL_RENDER 0x1C00 +#define GL_SELECT 0x1C02 +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_FOG 0x0B60 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 +#define GL_LOGIC_OP 0x0BF1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_CLEAR 0x1500 +#define GL_SET 0x150F +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_NOOP 0x1505 +#define GL_INVERT 0x150A +#define GL_AND 0x1501 +#define GL_NAND 0x150E +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_XOR 0x1506 +#define GL_EQUIV 0x1509 +#define GL_AND_REVERSE 0x1502 +#define GL_AND_INVERTED 0x1504 +#define GL_OR_REVERSE 0x150B +#define GL_OR_INVERTED 0x150D +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_INDEX 0x1901 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_NONE 0 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_COLOR_INDEX 0x1900 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_ALPHA_BITS 0x0D55 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_INDEX_BITS 0x0D51 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_READ_BUFFER 0x0C02 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_BITMAP 0x1A00 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_DITHER 0x0BD0 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_RENDER_MODE 0x0C40 +#define GL_RGBA_MODE 0x0C31 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_FOG_HINT 0x0C54 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_SPHERE_MAP 0x2402 +#define GL_DECAL 0x2101 +#define GL_MODULATE 0x2100 +#define GL_NEAREST 0x2600 +#define GL_REPEAT 0x2901 +#define GL_CLAMP 0x2900 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_RESCALE_NORMAL 0x803A +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_BLEND_EQUATION 0x8009 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_COLOR 0x8005 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_ARB_multitexture 1 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_MESA_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_MESA 0x8750 +#define GL_UNSIGNED_INT_24_8_MESA 0x8751 +#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 +#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 +#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 +#define GL_ATI_blend_equation_separate 1 +#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D +#define GL_OES_EGL_image 1 + +#ifdef __cplusplus +} +#endif + +#endif // __NX_GL_H__ diff --git a/include/glsym/switch/nx_glsym.h b/include/glsym/switch/nx_glsym.h new file mode 100644 index 0000000..0b3d0c2 --- /dev/null +++ b/include/glsym/switch/nx_glsym.h @@ -0,0 +1,779 @@ +#ifndef __NX_GLSYM_H__ +#define __NX_GLSYM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +// xglgen missing typedef's / defines +typedef void *GLeglImageOES; +typedef void (APIENTRYP RGLSYMGLTEXIMAGE2DPROC) ( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels ); +typedef void (APIENTRYP RGLSYMGLVIEWPORTPROC)( GLint x, GLint y, + GLsizei width, GLsizei height ); +typedef void (APIENTRYP RGLSYMGLTEXSUBIMAGE2DPROC) ( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels ); +typedef void (APIENTRYP RGLSYMGLREADPIXELSPROC)( GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + GLvoid *pixels ); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIVPROC)( GLenum target, GLenum pname, + const GLint *params ); +typedef void (APIENTRYP RGLSYMGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTS)( GLenum mode, GLsizei count, + GLenum type, const GLvoid *indices ); + +RGLSYMGLREADPIXELSPROC glReadPixels; +RGLSYMGLTEXIMAGE2DPROC glTexImage2D; +RGLSYMGLVIEWPORTPROC glViewport; +RGLSYMGLTEXSUBIMAGE2DPROC glTexSubImage2D; +RGLSYMGLTEXPARAMETERIVPROC glTexParameteriv; +RGLSYMGLDRAWELEMENTS glDrawElements; + +// xglgen generated +typedef void (APIENTRYP RGLSYMGLCLEARINDEXPROC) ( GLfloat c ); +typedef void (APIENTRYP RGLSYMGLCLEARCOLORPROC) ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); +typedef void (APIENTRYP RGLSYMGLCLEARPROC) ( GLbitfield mask ); +typedef void (APIENTRYP RGLSYMGLINDEXMASKPROC) ( GLuint mask ); +typedef void (APIENTRYP RGLSYMGLCOLORMASKPROC) ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); +typedef void (APIENTRYP RGLSYMGLALPHAFUNCPROC) ( GLenum func, GLclampf ref ); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCPROC) ( GLenum sfactor, GLenum dfactor ); +typedef void (APIENTRYP RGLSYMGLLOGICOPPROC) ( GLenum opcode ); +typedef void (APIENTRYP RGLSYMGLCULLFACEPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLFRONTFACEPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLPOINTSIZEPROC) ( GLfloat size ); +typedef void (APIENTRYP RGLSYMGLLINEWIDTHPROC) ( GLfloat width ); +typedef void (APIENTRYP RGLSYMGLLINESTIPPLEPROC) ( GLint factor, GLushort pattern ); +typedef void (APIENTRYP RGLSYMGLPOLYGONMODEPROC) ( GLenum face, GLenum mode ); +typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETPROC) ( GLfloat factor, GLfloat units ); +typedef void (APIENTRYP RGLSYMGLPOLYGONSTIPPLEPROC) ( const GLubyte *mask ); +typedef void (APIENTRYP RGLSYMGLGETPOLYGONSTIPPLEPROC) ( GLubyte *mask ); +typedef void (APIENTRYP RGLSYMGLEDGEFLAGPROC) ( GLboolean flag ); +typedef void (APIENTRYP RGLSYMGLEDGEFLAGVPROC) ( const GLboolean *flag ); +typedef void (APIENTRYP RGLSYMGLSCISSORPROC) ( GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEPROC) ( GLenum plane, const GLdouble *equation ); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEPROC) ( GLenum plane, GLdouble *equation ); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLREADBUFFERPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLENABLEPROC) ( GLenum cap ); +typedef void (APIENTRYP RGLSYMGLDISABLEPROC) ( GLenum cap ); +typedef GLboolean (APIENTRYP RGLSYMGLISENABLEDPROC) ( GLenum cap ); +typedef void (APIENTRYP RGLSYMGLENABLECLIENTSTATEPROC) ( GLenum cap ); +typedef void (APIENTRYP RGLSYMGLDISABLECLIENTSTATEPROC) ( GLenum cap ); +typedef void (APIENTRYP RGLSYMGLGETBOOLEANVPROC) ( GLenum pname, GLboolean *params ); +typedef void (APIENTRYP RGLSYMGLGETDOUBLEVPROC) ( GLenum pname, GLdouble *params ); +typedef void (APIENTRYP RGLSYMGLGETFLOATVPROC) ( GLenum pname, GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLGETINTEGERVPROC) ( GLenum pname, GLint *params ); +typedef void (APIENTRYP RGLSYMGLPUSHATTRIBPROC) ( GLbitfield mask ); +typedef void (APIENTRYP RGLSYMGLPOPATTRIBPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLPUSHCLIENTATTRIBPROC) ( GLbitfield mask ); +typedef void (APIENTRYP RGLSYMGLPOPCLIENTATTRIBPROC) ( void ); +typedef GLint (APIENTRYP RGLSYMGLRENDERMODEPROC) ( GLenum mode ); +typedef GLenum (APIENTRYP RGLSYMGLGETERRORPROC) ( void ); +typedef const GLubyte * (APIENTRYP RGLSYMGLGETSTRINGPROC) ( GLenum name ); +typedef void (APIENTRYP RGLSYMGLFINISHPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLFLUSHPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLHINTPROC) ( GLenum target, GLenum mode ); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHPROC) ( GLclampd depth ); +typedef void (APIENTRYP RGLSYMGLDEPTHFUNCPROC) ( GLenum func ); +typedef void (APIENTRYP RGLSYMGLDEPTHMASKPROC) ( GLboolean flag ); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEPROC) ( GLclampd near_val, GLclampd far_val ); +typedef void (APIENTRYP RGLSYMGLCLEARACCUMPROC) ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); +typedef void (APIENTRYP RGLSYMGLACCUMPROC) ( GLenum op, GLfloat value ); +typedef void (APIENTRYP RGLSYMGLMATRIXMODEPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLPUSHMATRIXPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLPOPMATRIXPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLLOADIDENTITYPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLLOADMATRIXDPROC) ( const GLdouble *m ); +typedef void (APIENTRYP RGLSYMGLLOADMATRIXFPROC) ( const GLfloat *m ); +typedef void (APIENTRYP RGLSYMGLMULTMATRIXDPROC) ( const GLdouble *m ); +typedef void (APIENTRYP RGLSYMGLMULTMATRIXFPROC) ( const GLfloat *m ); +typedef void (APIENTRYP RGLSYMGLSCALEDPROC) ( GLdouble x, GLdouble y, GLdouble z ); +typedef void (APIENTRYP RGLSYMGLSCALEFPROC) ( GLfloat x, GLfloat y, GLfloat z ); +typedef void (APIENTRYP RGLSYMGLTRANSLATEDPROC) ( GLdouble x, GLdouble y, GLdouble z ); +typedef void (APIENTRYP RGLSYMGLTRANSLATEFPROC) ( GLfloat x, GLfloat y, GLfloat z ); +typedef GLboolean (APIENTRYP RGLSYMGLISLISTPROC) ( GLuint list ); +typedef void (APIENTRYP RGLSYMGLDELETELISTSPROC) ( GLuint list, GLsizei range ); +typedef GLuint (APIENTRYP RGLSYMGLGENLISTSPROC) ( GLsizei range ); +typedef void (APIENTRYP RGLSYMGLNEWLISTPROC) ( GLuint list, GLenum mode ); +typedef void (APIENTRYP RGLSYMGLENDLISTPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLCALLLISTPROC) ( GLuint list ); +typedef void (APIENTRYP RGLSYMGLLISTBASEPROC) ( GLuint base ); +typedef void (APIENTRYP RGLSYMGLBEGINPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLENDPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLVERTEX2DPROC) ( GLdouble x, GLdouble y ); +typedef void (APIENTRYP RGLSYMGLVERTEX2FPROC) ( GLfloat x, GLfloat y ); +typedef void (APIENTRYP RGLSYMGLVERTEX2IPROC) ( GLint x, GLint y ); +typedef void (APIENTRYP RGLSYMGLVERTEX2SPROC) ( GLshort x, GLshort y ); +typedef void (APIENTRYP RGLSYMGLVERTEX3DPROC) ( GLdouble x, GLdouble y, GLdouble z ); +typedef void (APIENTRYP RGLSYMGLVERTEX3FPROC) ( GLfloat x, GLfloat y, GLfloat z ); +typedef void (APIENTRYP RGLSYMGLVERTEX3IPROC) ( GLint x, GLint y, GLint z ); +typedef void (APIENTRYP RGLSYMGLVERTEX3SPROC) ( GLshort x, GLshort y, GLshort z ); +typedef void (APIENTRYP RGLSYMGLVERTEX4DPROC) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +typedef void (APIENTRYP RGLSYMGLVERTEX4FPROC) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +typedef void (APIENTRYP RGLSYMGLVERTEX4IPROC) ( GLint x, GLint y, GLint z, GLint w ); +typedef void (APIENTRYP RGLSYMGLVERTEX4SPROC) ( GLshort x, GLshort y, GLshort z, GLshort w ); +typedef void (APIENTRYP RGLSYMGLVERTEX2DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX2FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX2IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX2SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX3DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX3FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX3IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX3SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX4DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX4FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX4IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLVERTEX4SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLNORMAL3BPROC) ( GLbyte nx, GLbyte ny, GLbyte nz ); +typedef void (APIENTRYP RGLSYMGLNORMAL3DPROC) ( GLdouble nx, GLdouble ny, GLdouble nz ); +typedef void (APIENTRYP RGLSYMGLNORMAL3FPROC) ( GLfloat nx, GLfloat ny, GLfloat nz ); +typedef void (APIENTRYP RGLSYMGLNORMAL3IPROC) ( GLint nx, GLint ny, GLint nz ); +typedef void (APIENTRYP RGLSYMGLNORMAL3SPROC) ( GLshort nx, GLshort ny, GLshort nz ); +typedef void (APIENTRYP RGLSYMGLNORMAL3BVPROC) ( const GLbyte *v ); +typedef void (APIENTRYP RGLSYMGLNORMAL3DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLNORMAL3FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLNORMAL3IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLNORMAL3SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLINDEXDPROC) ( GLdouble c ); +typedef void (APIENTRYP RGLSYMGLINDEXFPROC) ( GLfloat c ); +typedef void (APIENTRYP RGLSYMGLINDEXIPROC) ( GLint c ); +typedef void (APIENTRYP RGLSYMGLINDEXSPROC) ( GLshort c ); +typedef void (APIENTRYP RGLSYMGLINDEXUBPROC) ( GLubyte c ); +typedef void (APIENTRYP RGLSYMGLINDEXDVPROC) ( const GLdouble *c ); +typedef void (APIENTRYP RGLSYMGLINDEXFVPROC) ( const GLfloat *c ); +typedef void (APIENTRYP RGLSYMGLINDEXIVPROC) ( const GLint *c ); +typedef void (APIENTRYP RGLSYMGLINDEXSVPROC) ( const GLshort *c ); +typedef void (APIENTRYP RGLSYMGLINDEXUBVPROC) ( const GLubyte *c ); +typedef void (APIENTRYP RGLSYMGLCOLOR3BPROC) ( GLbyte red, GLbyte green, GLbyte blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3DPROC) ( GLdouble red, GLdouble green, GLdouble blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3FPROC) ( GLfloat red, GLfloat green, GLfloat blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3IPROC) ( GLint red, GLint green, GLint blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3SPROC) ( GLshort red, GLshort green, GLshort blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3UBPROC) ( GLubyte red, GLubyte green, GLubyte blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3UIPROC) ( GLuint red, GLuint green, GLuint blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3USPROC) ( GLushort red, GLushort green, GLushort blue ); +typedef void (APIENTRYP RGLSYMGLCOLOR3BVPROC) ( const GLbyte *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3UBVPROC) ( const GLubyte *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3UIVPROC) ( const GLuint *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR3USVPROC) ( const GLushort *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4BVPROC) ( const GLbyte *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4UBVPROC) ( const GLubyte *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4UIVPROC) ( const GLuint *v ); +typedef void (APIENTRYP RGLSYMGLCOLOR4USVPROC) ( const GLushort *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1DPROC) ( GLdouble s ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1FPROC) ( GLfloat s ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1IPROC) ( GLint s ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1SPROC) ( GLshort s ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2DPROC) ( GLdouble s, GLdouble t ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2FPROC) ( GLfloat s, GLfloat t ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2IPROC) ( GLint s, GLint t ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2SPROC) ( GLshort s, GLshort t ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3DPROC) ( GLdouble s, GLdouble t, GLdouble r ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3FPROC) ( GLfloat s, GLfloat t, GLfloat r ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3IPROC) ( GLint s, GLint t, GLint r ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3SPROC) ( GLshort s, GLshort t, GLshort r ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4DPROC) ( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4FPROC) ( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4IPROC) ( GLint s, GLint t, GLint r, GLint q ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4SPROC) ( GLshort s, GLshort t, GLshort r, GLshort q ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2DPROC) ( GLdouble x, GLdouble y ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2FPROC) ( GLfloat x, GLfloat y ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2IPROC) ( GLint x, GLint y ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2SPROC) ( GLshort x, GLshort y ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3DPROC) ( GLdouble x, GLdouble y, GLdouble z ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3FPROC) ( GLfloat x, GLfloat y, GLfloat z ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3IPROC) ( GLint x, GLint y, GLint z ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3SPROC) ( GLshort x, GLshort y, GLshort z ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4DPROC) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4FPROC) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4IPROC) ( GLint x, GLint y, GLint z, GLint w ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4SPROC) ( GLshort x, GLshort y, GLshort z, GLshort w ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4DVPROC) ( const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4FVPROC) ( const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4IVPROC) ( const GLint *v ); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4SVPROC) ( const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLRECTDPROC) ( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); +typedef void (APIENTRYP RGLSYMGLRECTFPROC) ( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); +typedef void (APIENTRYP RGLSYMGLRECTIPROC) ( GLint x1, GLint y1, GLint x2, GLint y2 ); +typedef void (APIENTRYP RGLSYMGLRECTSPROC) ( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); +typedef void (APIENTRYP RGLSYMGLRECTDVPROC) ( const GLdouble *v1, const GLdouble *v2 ); +typedef void (APIENTRYP RGLSYMGLRECTFVPROC) ( const GLfloat *v1, const GLfloat *v2 ); +typedef void (APIENTRYP RGLSYMGLRECTIVPROC) ( const GLint *v1, const GLint *v2 ); +typedef void (APIENTRYP RGLSYMGLRECTSVPROC) ( const GLshort *v1, const GLshort *v2 ); +typedef void (APIENTRYP RGLSYMGLEDGEFLAGPOINTERPROC) ( GLsizei stride, const GLvoid *ptr ); +typedef void (APIENTRYP RGLSYMGLGETPOINTERVPROC) ( GLenum pname, GLvoid **params ); +typedef void (APIENTRYP RGLSYMGLARRAYELEMENTPROC) ( GLint i ); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSPROC) ( GLenum mode, GLint first, GLsizei count ); +typedef void (APIENTRYP RGLSYMGLSHADEMODELPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLLIGHTFPROC) ( GLenum light, GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLLIGHTIPROC) ( GLenum light, GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELFPROC) ( GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELIPROC) ( GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELFVPROC) ( GLenum pname, const GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELIVPROC) ( GLenum pname, const GLint *params ); +typedef void (APIENTRYP RGLSYMGLMATERIALFPROC) ( GLenum face, GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLMATERIALIPROC) ( GLenum face, GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLMATERIALFVPROC) ( GLenum face, GLenum pname, const GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLMATERIALIVPROC) ( GLenum face, GLenum pname, const GLint *params ); +typedef void (APIENTRYP RGLSYMGLGETMATERIALFVPROC) ( GLenum face, GLenum pname, GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLGETMATERIALIVPROC) ( GLenum face, GLenum pname, GLint *params ); +typedef void (APIENTRYP RGLSYMGLCOLORMATERIALPROC) ( GLenum face, GLenum mode ); +typedef void (APIENTRYP RGLSYMGLPIXELZOOMPROC) ( GLfloat xfactor, GLfloat yfactor ); +typedef void (APIENTRYP RGLSYMGLPIXELSTOREFPROC) ( GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLPIXELSTOREIPROC) ( GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERFPROC) ( GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERIPROC) ( GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPFVPROC) ( GLenum map, GLfloat *values ); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPUIVPROC) ( GLenum map, GLuint *values ); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPUSVPROC) ( GLenum map, GLushort *values ); +typedef void (APIENTRYP RGLSYMGLSTENCILFUNCPROC) ( GLenum func, GLint ref, GLuint mask ); +typedef void (APIENTRYP RGLSYMGLSTENCILMASKPROC) ( GLuint mask ); +typedef void (APIENTRYP RGLSYMGLSTENCILOPPROC) ( GLenum fail, GLenum zfail, GLenum zpass ); +typedef void (APIENTRYP RGLSYMGLCLEARSTENCILPROC) ( GLint s ); +typedef void (APIENTRYP RGLSYMGLTEXGENDPROC) ( GLenum coord, GLenum pname, GLdouble param ); +typedef void (APIENTRYP RGLSYMGLTEXGENFPROC) ( GLenum coord, GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLTEXGENIPROC) ( GLenum coord, GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLTEXGENDVPROC) ( GLenum coord, GLenum pname, const GLdouble *params ); +typedef void (APIENTRYP RGLSYMGLTEXGENFVPROC) ( GLenum coord, GLenum pname, const GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLTEXGENIVPROC) ( GLenum coord, GLenum pname, const GLint *params ); +typedef void (APIENTRYP RGLSYMGLGETTEXGENDVPROC) ( GLenum coord, GLenum pname, GLdouble *params ); +typedef void (APIENTRYP RGLSYMGLGETTEXGENFVPROC) ( GLenum coord, GLenum pname, GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLGETTEXGENIVPROC) ( GLenum coord, GLenum pname, GLint *params ); +typedef void (APIENTRYP RGLSYMGLTEXENVFPROC) ( GLenum target, GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLTEXENVIPROC) ( GLenum target, GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLTEXENVFVPROC) ( GLenum target, GLenum pname, const GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLTEXENVIVPROC) ( GLenum target, GLenum pname, const GLint *params ); +typedef void (APIENTRYP RGLSYMGLGETTEXENVFVPROC) ( GLenum target, GLenum pname, GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLGETTEXENVIVPROC) ( GLenum target, GLenum pname, GLint *params ); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERFPROC) ( GLenum target, GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIPROC) ( GLenum target, GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLGENTEXTURESPROC) ( GLsizei n, GLuint *textures ); +typedef void (APIENTRYP RGLSYMGLDELETETEXTURESPROC) ( GLsizei n, const GLuint *textures); +typedef void (APIENTRYP RGLSYMGLBINDTEXTUREPROC) ( GLenum target, GLuint texture ); +typedef GLboolean (APIENTRYP RGLSYMGLISTEXTUREPROC) ( GLuint texture ); +typedef void (APIENTRYP RGLSYMGLGETMAPDVPROC) ( GLenum target, GLenum query, GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLGETMAPFVPROC) ( GLenum target, GLenum query, GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLGETMAPIVPROC) ( GLenum target, GLenum query, GLint *v ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1DPROC) ( GLdouble u ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1FPROC) ( GLfloat u ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1DVPROC) ( const GLdouble *u ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1FVPROC) ( const GLfloat *u ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2DPROC) ( GLdouble u, GLdouble v ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2FPROC) ( GLfloat u, GLfloat v ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2DVPROC) ( const GLdouble *u ); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2FVPROC) ( const GLfloat *u ); +typedef void (APIENTRYP RGLSYMGLMAPGRID1DPROC) ( GLint un, GLdouble u1, GLdouble u2 ); +typedef void (APIENTRYP RGLSYMGLMAPGRID1FPROC) ( GLint un, GLfloat u1, GLfloat u2 ); +typedef void (APIENTRYP RGLSYMGLEVALPOINT1PROC) ( GLint i ); +typedef void (APIENTRYP RGLSYMGLEVALPOINT2PROC) ( GLint i, GLint j ); +typedef void (APIENTRYP RGLSYMGLEVALMESH1PROC) ( GLenum mode, GLint i1, GLint i2 ); +typedef void (APIENTRYP RGLSYMGLEVALMESH2PROC) ( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); +typedef void (APIENTRYP RGLSYMGLFOGFPROC) ( GLenum pname, GLfloat param ); +typedef void (APIENTRYP RGLSYMGLFOGIPROC) ( GLenum pname, GLint param ); +typedef void (APIENTRYP RGLSYMGLFOGFVPROC) ( GLenum pname, const GLfloat *params ); +typedef void (APIENTRYP RGLSYMGLFOGIVPROC) ( GLenum pname, const GLint *params ); +typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERPROC) ( GLsizei size, GLenum type, GLfloat *buffer ); +typedef void (APIENTRYP RGLSYMGLPASSTHROUGHPROC) ( GLfloat token ); +typedef void (APIENTRYP RGLSYMGLSELECTBUFFERPROC) ( GLsizei size, GLuint *buffer ); +typedef void (APIENTRYP RGLSYMGLINITNAMESPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLLOADNAMEPROC) ( GLuint name ); +typedef void (APIENTRYP RGLSYMGLPUSHNAMEPROC) ( GLuint name ); +typedef void (APIENTRYP RGLSYMGLPOPNAMEPROC) ( void ); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) ( GLenum mode ); +typedef void (APIENTRYP RGLSYMGLRESETHISTOGRAMPROC) ( GLenum target ); +typedef void (APIENTRYP RGLSYMGLRESETMINMAXPROC) ( GLenum target ); +typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREPROC) ( GLenum texture ); +typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREPROC) ( GLenum texture ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC) ( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); +typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC) ( GLenum target, GLint lod, GLvoid *img ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DPROC) ( GLenum target, GLdouble s ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DVPROC) ( GLenum target, const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FPROC) ( GLenum target, GLfloat s ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FVPROC) ( GLenum target, const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IPROC) ( GLenum target, GLint s ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IVPROC) ( GLenum target, const GLint *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SPROC) ( GLenum target, GLshort s ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SVPROC) ( GLenum target, const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DPROC) ( GLenum target, GLdouble s, GLdouble t ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DVPROC) ( GLenum target, const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FPROC) ( GLenum target, GLfloat s, GLfloat t ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FVPROC) ( GLenum target, const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IPROC) ( GLenum target, GLint s, GLint t ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IVPROC) ( GLenum target, const GLint *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SPROC) ( GLenum target, GLshort s, GLshort t ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SVPROC) ( GLenum target, const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DPROC) ( GLenum target, GLdouble s, GLdouble t, GLdouble r ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DVPROC) ( GLenum target, const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FPROC) ( GLenum target, GLfloat s, GLfloat t, GLfloat r ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FVPROC) ( GLenum target, const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IPROC) ( GLenum target, GLint s, GLint t, GLint r ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IVPROC) ( GLenum target, const GLint *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SPROC) ( GLenum target, GLshort s, GLshort t, GLshort r ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SVPROC) ( GLenum target, const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DPROC) ( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DVPROC) ( GLenum target, const GLdouble *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FPROC) ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FVPROC) ( GLenum target, const GLfloat *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IPROC) ( GLenum target, GLint s, GLint t, GLint r, GLint q ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IVPROC) ( GLenum target, const GLint *v ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SPROC) ( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SVPROC) ( GLenum target, const GLshort *v ); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDPROC) ( const GLdouble m[16] ); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXFPROC) ( const GLfloat m[16] ); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDPROC) ( const GLdouble m[16] ); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFPROC) ( const GLfloat m[16] ); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEPROC) ( GLclampf value, GLboolean invert ); +typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); + +// xglgen generated +RGLSYMGLCLEARINDEXPROC glClearIndex; +RGLSYMGLCLEARCOLORPROC glClearColor; +RGLSYMGLCLEARPROC glClear; +RGLSYMGLINDEXMASKPROC glIndexMask; +RGLSYMGLCOLORMASKPROC glColorMask; +RGLSYMGLALPHAFUNCPROC glAlphaFunc; +RGLSYMGLBLENDFUNCPROC glBlendFunc; +RGLSYMGLLOGICOPPROC glLogicOp; +RGLSYMGLCULLFACEPROC glCullFace; +RGLSYMGLFRONTFACEPROC glFrontFace; +RGLSYMGLPOINTSIZEPROC glPointSize; +RGLSYMGLLINEWIDTHPROC glLineWidth; +RGLSYMGLLINESTIPPLEPROC glLineStipple; +RGLSYMGLPOLYGONMODEPROC glPolygonMode; +RGLSYMGLPOLYGONOFFSETPROC glPolygonOffset; +RGLSYMGLPOLYGONSTIPPLEPROC glPolygonStipple; +RGLSYMGLGETPOLYGONSTIPPLEPROC glGetPolygonStipple; +RGLSYMGLEDGEFLAGPROC glEdgeFlag; +RGLSYMGLEDGEFLAGVPROC glEdgeFlagv; +RGLSYMGLSCISSORPROC glScissor; +RGLSYMGLCLIPPLANEPROC glClipPlane; +RGLSYMGLGETCLIPPLANEPROC glGetClipPlane; +RGLSYMGLDRAWBUFFERPROC glDrawBuffer; +RGLSYMGLREADBUFFERPROC glReadBuffer; +RGLSYMGLENABLEPROC glEnable; +RGLSYMGLDISABLEPROC glDisable; +RGLSYMGLISENABLEDPROC glIsEnabled; +RGLSYMGLENABLECLIENTSTATEPROC glEnableClientState; +RGLSYMGLDISABLECLIENTSTATEPROC glDisableClientState; +RGLSYMGLGETBOOLEANVPROC glGetBooleanv; +RGLSYMGLGETDOUBLEVPROC glGetDoublev; +RGLSYMGLGETFLOATVPROC glGetFloatv; +RGLSYMGLGETINTEGERVPROC glGetIntegerv; +RGLSYMGLPUSHATTRIBPROC glPushAttrib; +RGLSYMGLPOPATTRIBPROC glPopAttrib; +RGLSYMGLPUSHCLIENTATTRIBPROC glPushClientAttrib; +RGLSYMGLPOPCLIENTATTRIBPROC glPopClientAttrib; +RGLSYMGLRENDERMODEPROC glRenderMode; +RGLSYMGLGETERRORPROC glGetError; +RGLSYMGLGETSTRINGPROC glGetString; +RGLSYMGLFINISHPROC glFinish; +RGLSYMGLFLUSHPROC glFlush; +RGLSYMGLHINTPROC glHint; +RGLSYMGLCLEARDEPTHPROC glClearDepth; +RGLSYMGLDEPTHFUNCPROC glDepthFunc; +RGLSYMGLDEPTHMASKPROC glDepthMask; +RGLSYMGLDEPTHRANGEPROC glDepthRange; +RGLSYMGLCLEARACCUMPROC glClearAccum; +RGLSYMGLACCUMPROC glAccum; +RGLSYMGLMATRIXMODEPROC glMatrixMode; +RGLSYMGLPUSHMATRIXPROC glPushMatrix; +RGLSYMGLPOPMATRIXPROC glPopMatrix; +RGLSYMGLLOADIDENTITYPROC glLoadIdentity; +RGLSYMGLLOADMATRIXDPROC glLoadMatrixd; +RGLSYMGLLOADMATRIXFPROC glLoadMatrixf; +RGLSYMGLMULTMATRIXDPROC glMultMatrixd; +RGLSYMGLMULTMATRIXFPROC glMultMatrixf; +RGLSYMGLSCALEDPROC glScaled; +RGLSYMGLSCALEFPROC glScalef; +RGLSYMGLTRANSLATEDPROC glTranslated; +RGLSYMGLTRANSLATEFPROC glTranslatef; +RGLSYMGLISLISTPROC glIsList; +RGLSYMGLDELETELISTSPROC glDeleteLists; +RGLSYMGLGENLISTSPROC glGenLists; +RGLSYMGLNEWLISTPROC glNewList; +RGLSYMGLENDLISTPROC glEndList; +RGLSYMGLCALLLISTPROC glCallList; +RGLSYMGLLISTBASEPROC glListBase; +RGLSYMGLBEGINPROC glBegin; +RGLSYMGLENDPROC glEnd; +RGLSYMGLVERTEX2DPROC glVertex2d; +RGLSYMGLVERTEX2FPROC glVertex2f; +RGLSYMGLVERTEX2IPROC glVertex2i; +RGLSYMGLVERTEX2SPROC glVertex2s; +RGLSYMGLVERTEX3DPROC glVertex3d; +RGLSYMGLVERTEX3FPROC glVertex3f; +RGLSYMGLVERTEX3IPROC glVertex3i; +RGLSYMGLVERTEX3SPROC glVertex3s; +RGLSYMGLVERTEX4DPROC glVertex4d; +RGLSYMGLVERTEX4FPROC glVertex4f; +RGLSYMGLVERTEX4IPROC glVertex4i; +RGLSYMGLVERTEX4SPROC glVertex4s; +RGLSYMGLVERTEX2DVPROC glVertex2dv; +RGLSYMGLVERTEX2FVPROC glVertex2fv; +RGLSYMGLVERTEX2IVPROC glVertex2iv; +RGLSYMGLVERTEX2SVPROC glVertex2sv; +RGLSYMGLVERTEX3DVPROC glVertex3dv; +RGLSYMGLVERTEX3FVPROC glVertex3fv; +RGLSYMGLVERTEX3IVPROC glVertex3iv; +RGLSYMGLVERTEX3SVPROC glVertex3sv; +RGLSYMGLVERTEX4DVPROC glVertex4dv; +RGLSYMGLVERTEX4FVPROC glVertex4fv; +RGLSYMGLVERTEX4IVPROC glVertex4iv; +RGLSYMGLVERTEX4SVPROC glVertex4sv; +RGLSYMGLNORMAL3BPROC glNormal3b; +RGLSYMGLNORMAL3DPROC glNormal3d; +RGLSYMGLNORMAL3FPROC glNormal3f; +RGLSYMGLNORMAL3IPROC glNormal3i; +RGLSYMGLNORMAL3SPROC glNormal3s; +RGLSYMGLNORMAL3BVPROC glNormal3bv; +RGLSYMGLNORMAL3DVPROC glNormal3dv; +RGLSYMGLNORMAL3FVPROC glNormal3fv; +RGLSYMGLNORMAL3IVPROC glNormal3iv; +RGLSYMGLNORMAL3SVPROC glNormal3sv; +RGLSYMGLINDEXDPROC glIndexd; +RGLSYMGLINDEXFPROC glIndexf; +RGLSYMGLINDEXIPROC glIndexi; +RGLSYMGLINDEXSPROC glIndexs; +RGLSYMGLINDEXUBPROC glIndexub; +RGLSYMGLINDEXDVPROC glIndexdv; +RGLSYMGLINDEXFVPROC glIndexfv; +RGLSYMGLINDEXIVPROC glIndexiv; +RGLSYMGLINDEXSVPROC glIndexsv; +RGLSYMGLINDEXUBVPROC glIndexubv; +RGLSYMGLCOLOR3BPROC glColor3b; +RGLSYMGLCOLOR3DPROC glColor3d; +RGLSYMGLCOLOR3FPROC glColor3f; +RGLSYMGLCOLOR3IPROC glColor3i; +RGLSYMGLCOLOR3SPROC glColor3s; +RGLSYMGLCOLOR3UBPROC glColor3ub; +RGLSYMGLCOLOR3UIPROC glColor3ui; +RGLSYMGLCOLOR3USPROC glColor3us; +RGLSYMGLCOLOR3BVPROC glColor3bv; +RGLSYMGLCOLOR3DVPROC glColor3dv; +RGLSYMGLCOLOR3FVPROC glColor3fv; +RGLSYMGLCOLOR3IVPROC glColor3iv; +RGLSYMGLCOLOR3SVPROC glColor3sv; +RGLSYMGLCOLOR3UBVPROC glColor3ubv; +RGLSYMGLCOLOR3UIVPROC glColor3uiv; +RGLSYMGLCOLOR3USVPROC glColor3usv; +RGLSYMGLCOLOR4BVPROC glColor4bv; +RGLSYMGLCOLOR4DVPROC glColor4dv; +RGLSYMGLCOLOR4FVPROC glColor4fv; +RGLSYMGLCOLOR4IVPROC glColor4iv; +RGLSYMGLCOLOR4SVPROC glColor4sv; +RGLSYMGLCOLOR4UBVPROC glColor4ubv; +RGLSYMGLCOLOR4UIVPROC glColor4uiv; +RGLSYMGLCOLOR4USVPROC glColor4usv; +RGLSYMGLTEXCOORD1DPROC glTexCoord1d; +RGLSYMGLTEXCOORD1FPROC glTexCoord1f; +RGLSYMGLTEXCOORD1IPROC glTexCoord1i; +RGLSYMGLTEXCOORD1SPROC glTexCoord1s; +RGLSYMGLTEXCOORD2DPROC glTexCoord2d; +RGLSYMGLTEXCOORD2FPROC glTexCoord2f; +RGLSYMGLTEXCOORD2IPROC glTexCoord2i; +RGLSYMGLTEXCOORD2SPROC glTexCoord2s; +RGLSYMGLTEXCOORD3DPROC glTexCoord3d; +RGLSYMGLTEXCOORD3FPROC glTexCoord3f; +RGLSYMGLTEXCOORD3IPROC glTexCoord3i; +RGLSYMGLTEXCOORD3SPROC glTexCoord3s; +RGLSYMGLTEXCOORD4DPROC glTexCoord4d; +RGLSYMGLTEXCOORD4FPROC glTexCoord4f; +RGLSYMGLTEXCOORD4IPROC glTexCoord4i; +RGLSYMGLTEXCOORD4SPROC glTexCoord4s; +RGLSYMGLTEXCOORD1DVPROC glTexCoord1dv; +RGLSYMGLTEXCOORD1FVPROC glTexCoord1fv; +RGLSYMGLTEXCOORD1IVPROC glTexCoord1iv; +RGLSYMGLTEXCOORD1SVPROC glTexCoord1sv; +RGLSYMGLTEXCOORD2DVPROC glTexCoord2dv; +RGLSYMGLTEXCOORD2FVPROC glTexCoord2fv; +RGLSYMGLTEXCOORD2IVPROC glTexCoord2iv; +RGLSYMGLTEXCOORD2SVPROC glTexCoord2sv; +RGLSYMGLTEXCOORD3DVPROC glTexCoord3dv; +RGLSYMGLTEXCOORD3FVPROC glTexCoord3fv; +RGLSYMGLTEXCOORD3IVPROC glTexCoord3iv; +RGLSYMGLTEXCOORD3SVPROC glTexCoord3sv; +RGLSYMGLTEXCOORD4DVPROC glTexCoord4dv; +RGLSYMGLTEXCOORD4FVPROC glTexCoord4fv; +RGLSYMGLTEXCOORD4IVPROC glTexCoord4iv; +RGLSYMGLTEXCOORD4SVPROC glTexCoord4sv; +RGLSYMGLRASTERPOS2DPROC glRasterPos2d; +RGLSYMGLRASTERPOS2FPROC glRasterPos2f; +RGLSYMGLRASTERPOS2IPROC glRasterPos2i; +RGLSYMGLRASTERPOS2SPROC glRasterPos2s; +RGLSYMGLRASTERPOS3DPROC glRasterPos3d; +RGLSYMGLRASTERPOS3FPROC glRasterPos3f; +RGLSYMGLRASTERPOS3IPROC glRasterPos3i; +RGLSYMGLRASTERPOS3SPROC glRasterPos3s; +RGLSYMGLRASTERPOS4DPROC glRasterPos4d; +RGLSYMGLRASTERPOS4FPROC glRasterPos4f; +RGLSYMGLRASTERPOS4IPROC glRasterPos4i; +RGLSYMGLRASTERPOS4SPROC glRasterPos4s; +RGLSYMGLRASTERPOS2DVPROC glRasterPos2dv; +RGLSYMGLRASTERPOS2FVPROC glRasterPos2fv; +RGLSYMGLRASTERPOS2IVPROC glRasterPos2iv; +RGLSYMGLRASTERPOS2SVPROC glRasterPos2sv; +RGLSYMGLRASTERPOS3DVPROC glRasterPos3dv; +RGLSYMGLRASTERPOS3FVPROC glRasterPos3fv; +RGLSYMGLRASTERPOS3IVPROC glRasterPos3iv; +RGLSYMGLRASTERPOS3SVPROC glRasterPos3sv; +RGLSYMGLRASTERPOS4DVPROC glRasterPos4dv; +RGLSYMGLRASTERPOS4FVPROC glRasterPos4fv; +RGLSYMGLRASTERPOS4IVPROC glRasterPos4iv; +RGLSYMGLRASTERPOS4SVPROC glRasterPos4sv; +RGLSYMGLRECTDPROC glRectd; +RGLSYMGLRECTFPROC glRectf; +RGLSYMGLRECTIPROC glRecti; +RGLSYMGLRECTSPROC glRects; +RGLSYMGLRECTDVPROC glRectdv; +RGLSYMGLRECTFVPROC glRectfv; +RGLSYMGLRECTIVPROC glRectiv; +RGLSYMGLRECTSVPROC glRectsv; +RGLSYMGLEDGEFLAGPOINTERPROC glEdgeFlagPointer; +RGLSYMGLGETPOINTERVPROC glGetPointerv; +RGLSYMGLARRAYELEMENTPROC glArrayElement; +RGLSYMGLDRAWARRAYSPROC glDrawArrays; +RGLSYMGLSHADEMODELPROC glShadeModel; +RGLSYMGLLIGHTFPROC glLightf; +RGLSYMGLLIGHTIPROC glLighti; +RGLSYMGLLIGHTMODELFPROC glLightModelf; +RGLSYMGLLIGHTMODELIPROC glLightModeli; +RGLSYMGLLIGHTMODELFVPROC glLightModelfv; +RGLSYMGLLIGHTMODELIVPROC glLightModeliv; +RGLSYMGLMATERIALFPROC glMaterialf; +RGLSYMGLMATERIALIPROC glMateriali; +RGLSYMGLMATERIALFVPROC glMaterialfv; +RGLSYMGLMATERIALIVPROC glMaterialiv; +RGLSYMGLGETMATERIALFVPROC glGetMaterialfv; +RGLSYMGLGETMATERIALIVPROC glGetMaterialiv; +RGLSYMGLCOLORMATERIALPROC glColorMaterial; +RGLSYMGLPIXELZOOMPROC glPixelZoom; +RGLSYMGLPIXELSTOREFPROC glPixelStoref; +RGLSYMGLPIXELSTOREIPROC glPixelStorei; +RGLSYMGLPIXELTRANSFERFPROC glPixelTransferf; +RGLSYMGLPIXELTRANSFERIPROC glPixelTransferi; +RGLSYMGLGETPIXELMAPFVPROC glGetPixelMapfv; +RGLSYMGLGETPIXELMAPUIVPROC glGetPixelMapuiv; +RGLSYMGLGETPIXELMAPUSVPROC glGetPixelMapusv; +RGLSYMGLSTENCILFUNCPROC glStencilFunc; +RGLSYMGLSTENCILMASKPROC glStencilMask; +RGLSYMGLSTENCILOPPROC glStencilOp; +RGLSYMGLCLEARSTENCILPROC glClearStencil; +RGLSYMGLTEXGENDPROC glTexGend; +RGLSYMGLTEXGENFPROC glTexGenf; +RGLSYMGLTEXGENIPROC glTexGeni; +RGLSYMGLTEXGENDVPROC glTexGendv; +RGLSYMGLTEXGENFVPROC glTexGenfv; +RGLSYMGLTEXGENIVPROC glTexGeniv; +RGLSYMGLGETTEXGENDVPROC glGetTexGendv; +RGLSYMGLGETTEXGENFVPROC glGetTexGenfv; +RGLSYMGLGETTEXGENIVPROC glGetTexGeniv; +RGLSYMGLTEXENVFPROC glTexEnvf; +RGLSYMGLTEXENVIPROC glTexEnvi; +RGLSYMGLTEXENVFVPROC glTexEnvfv; +RGLSYMGLTEXENVIVPROC glTexEnviv; +RGLSYMGLGETTEXENVFVPROC glGetTexEnvfv; +RGLSYMGLGETTEXENVIVPROC glGetTexEnviv; +RGLSYMGLTEXPARAMETERFPROC glTexParameterf; +RGLSYMGLTEXPARAMETERIPROC glTexParameteri; +RGLSYMGLGENTEXTURESPROC glGenTextures; +RGLSYMGLDELETETEXTURESPROC glDeleteTextures; +RGLSYMGLBINDTEXTUREPROC glBindTexture; +RGLSYMGLISTEXTUREPROC glIsTexture; +RGLSYMGLGETMAPDVPROC glGetMapdv; +RGLSYMGLGETMAPFVPROC glGetMapfv; +RGLSYMGLGETMAPIVPROC glGetMapiv; +RGLSYMGLEVALCOORD1DPROC glEvalCoord1d; +RGLSYMGLEVALCOORD1FPROC glEvalCoord1f; +RGLSYMGLEVALCOORD1DVPROC glEvalCoord1dv; +RGLSYMGLEVALCOORD1FVPROC glEvalCoord1fv; +RGLSYMGLEVALCOORD2DPROC glEvalCoord2d; +RGLSYMGLEVALCOORD2FPROC glEvalCoord2f; +RGLSYMGLEVALCOORD2DVPROC glEvalCoord2dv; +RGLSYMGLEVALCOORD2FVPROC glEvalCoord2fv; +RGLSYMGLMAPGRID1DPROC glMapGrid1d; +RGLSYMGLMAPGRID1FPROC glMapGrid1f; +RGLSYMGLEVALPOINT1PROC glEvalPoint1; +RGLSYMGLEVALPOINT2PROC glEvalPoint2; +RGLSYMGLEVALMESH1PROC glEvalMesh1; +RGLSYMGLEVALMESH2PROC glEvalMesh2; +RGLSYMGLFOGFPROC glFogf; +RGLSYMGLFOGIPROC glFogi; +RGLSYMGLFOGFVPROC glFogfv; +RGLSYMGLFOGIVPROC glFogiv; +RGLSYMGLFEEDBACKBUFFERPROC glFeedbackBuffer; +RGLSYMGLPASSTHROUGHPROC glPassThrough; +RGLSYMGLSELECTBUFFERPROC glSelectBuffer; +RGLSYMGLINITNAMESPROC glInitNames; +RGLSYMGLLOADNAMEPROC glLoadName; +RGLSYMGLPUSHNAMEPROC glPushName; +RGLSYMGLPOPNAMEPROC glPopName; +RGLSYMGLBLENDEQUATIONPROC glBlendEquation; +RGLSYMGLRESETHISTOGRAMPROC glResetHistogram; +RGLSYMGLRESETMINMAXPROC glResetMinmax; +RGLSYMGLACTIVETEXTUREPROC glActiveTexture; +RGLSYMGLCLIENTACTIVETEXTUREPROC glClientActiveTexture; +RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D; +RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D; +RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D; +RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage; +RGLSYMGLMULTITEXCOORD1DPROC glMultiTexCoord1d; +RGLSYMGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv; +RGLSYMGLMULTITEXCOORD1FPROC glMultiTexCoord1f; +RGLSYMGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv; +RGLSYMGLMULTITEXCOORD1IPROC glMultiTexCoord1i; +RGLSYMGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv; +RGLSYMGLMULTITEXCOORD1SPROC glMultiTexCoord1s; +RGLSYMGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv; +RGLSYMGLMULTITEXCOORD2DPROC glMultiTexCoord2d; +RGLSYMGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv; +RGLSYMGLMULTITEXCOORD2FPROC glMultiTexCoord2f; +RGLSYMGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv; +RGLSYMGLMULTITEXCOORD2IPROC glMultiTexCoord2i; +RGLSYMGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv; +RGLSYMGLMULTITEXCOORD2SPROC glMultiTexCoord2s; +RGLSYMGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv; +RGLSYMGLMULTITEXCOORD3DPROC glMultiTexCoord3d; +RGLSYMGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv; +RGLSYMGLMULTITEXCOORD3FPROC glMultiTexCoord3f; +RGLSYMGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv; +RGLSYMGLMULTITEXCOORD3IPROC glMultiTexCoord3i; +RGLSYMGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv; +RGLSYMGLMULTITEXCOORD3SPROC glMultiTexCoord3s; +RGLSYMGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv; +RGLSYMGLMULTITEXCOORD4DPROC glMultiTexCoord4d; +RGLSYMGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv; +RGLSYMGLMULTITEXCOORD4FPROC glMultiTexCoord4f; +RGLSYMGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv; +RGLSYMGLMULTITEXCOORD4IPROC glMultiTexCoord4i; +RGLSYMGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv; +RGLSYMGLMULTITEXCOORD4SPROC glMultiTexCoord4s; +RGLSYMGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv; +RGLSYMGLLOADTRANSPOSEMATRIXDPROC glLoadTransposeMatrixd; +RGLSYMGLLOADTRANSPOSEMATRIXFPROC glLoadTransposeMatrixf; +RGLSYMGLMULTTRANSPOSEMATRIXDPROC glMultTransposeMatrixd; +RGLSYMGLMULTTRANSPOSEMATRIXFPROC glMultTransposeMatrixf; +RGLSYMGLSAMPLECOVERAGEPROC glSampleCoverage; +RGLSYMGLACTIVETEXTUREARBPROC glActiveTextureARB; +RGLSYMGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; +RGLSYMGLMULTITEXCOORD1DARBPROC glMultiTexCoord1dARB; +RGLSYMGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dvARB; +RGLSYMGLMULTITEXCOORD1FARBPROC glMultiTexCoord1fARB; +RGLSYMGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fvARB; +RGLSYMGLMULTITEXCOORD1IARBPROC glMultiTexCoord1iARB; +RGLSYMGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1ivARB; +RGLSYMGLMULTITEXCOORD1SARBPROC glMultiTexCoord1sARB; +RGLSYMGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1svARB; +RGLSYMGLMULTITEXCOORD2DARBPROC glMultiTexCoord2dARB; +RGLSYMGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dvARB; +RGLSYMGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB; +RGLSYMGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fvARB; +RGLSYMGLMULTITEXCOORD2IARBPROC glMultiTexCoord2iARB; +RGLSYMGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2ivARB; +RGLSYMGLMULTITEXCOORD2SARBPROC glMultiTexCoord2sARB; +RGLSYMGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2svARB; +RGLSYMGLMULTITEXCOORD3DARBPROC glMultiTexCoord3dARB; +RGLSYMGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dvARB; +RGLSYMGLMULTITEXCOORD3FARBPROC glMultiTexCoord3fARB; +RGLSYMGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fvARB; +RGLSYMGLMULTITEXCOORD3IARBPROC glMultiTexCoord3iARB; +RGLSYMGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3ivARB; +RGLSYMGLMULTITEXCOORD3SARBPROC glMultiTexCoord3sARB; +RGLSYMGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3svARB; +RGLSYMGLMULTITEXCOORD4DARBPROC glMultiTexCoord4dARB; +RGLSYMGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dvARB; +RGLSYMGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB; +RGLSYMGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; +RGLSYMGLMULTITEXCOORD4IARBPROC glMultiTexCoord4iARB; +RGLSYMGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4ivARB; +RGLSYMGLMULTITEXCOORD4SARBPROC glMultiTexCoord4sARB; +RGLSYMGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4svARB; +RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES; +RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC glEGLImageTargetRenderbufferStorageOES; +RGLSYMGLBINDTEXTURESPROC glBindTextures; + +#ifdef __cplusplus +} +#endif +#endif // __NX_GLSYM_H__ diff --git a/include/retro_stat.h b/include/retro_stat.h new file mode 100644 index 0000000..a6d53ab --- /dev/null +++ b/include/retro_stat.h @@ -0,0 +1,63 @@ +/* Copyright (C) 2010-2016 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_stat.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __RETRO_STAT_H +#define __RETRO_STAT_H + +#include +#include + +#include + +#include + +RETRO_BEGIN_DECLS + +/** + * path_is_directory: + * @path : path + * + * Checks if path is a directory. + * + * Returns: true (1) if path is a directory, otherwise false (0). + */ +bool path_is_directory(const char *path); + +bool path_is_character_special(const char *path); + +bool path_is_valid(const char *path); + +int32_t path_get_size(const char *path); + +/** + * path_mkdir_norecurse: + * @dir : directory + * + * Create directory on filesystem. + * + * Returns: true (1) if directory could be created, otherwise false (0). + **/ +bool mkdir_norecurse(const char *dir); + +RETRO_END_DECLS + +#endif diff --git a/net/net_natt.c b/net/net_natt.c index 33d0865..14dbdee 100644 --- a/net/net_natt.c +++ b/net/net_natt.c @@ -184,7 +184,7 @@ static bool natt_open_port(struct natt_status *status, bool natt_open_port_any(struct natt_status *status, uint16_t port, enum socket_protocol proto) { -#if !defined(HAVE_SOCKET_LEGACY) && !defined(WIIU) +#if !defined(HAVE_SOCKET_LEGACY) && !defined(WIIU) && !defined(SWITCH) size_t i; char port_str[6]; struct net_ifinfo list; diff --git a/rthreads/rsemaphore.c b/rthreads/rsemaphore.c new file mode 100644 index 0000000..eb75631 --- /dev/null +++ b/rthreads/rsemaphore.c @@ -0,0 +1,116 @@ +/* + Copyright 2005 Allen B. Downey + + This file contains an example program from The Little Book of + Semaphores, available from Green Tea Press, greenteapress.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see http://www.gnu.org/licenses/gpl.html + or write to the Free Software Foundation, Inc., 51 Franklin St, + Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* Code taken from http://greenteapress.com/semaphores/semaphore.c + * and changed to use libretro-common's mutexes and conditions. + */ + +#include + +#include +#include + +struct ssem +{ + int value; + int wakeups; + slock_t *mutex; + scond_t *cond; +}; + +ssem_t *ssem_new(int value) +{ + ssem_t *semaphore = (ssem_t*)calloc(1, sizeof(*semaphore)); + + if (!semaphore) + goto error; + + semaphore->value = value; + semaphore->wakeups = 0; + semaphore->mutex = slock_new(); + + if (!semaphore->mutex) + goto error; + + semaphore->cond = scond_new(); + + if (!semaphore->cond) + goto error; + + return semaphore; + +error: + if (semaphore->mutex) + slock_free(semaphore->mutex); + semaphore->mutex = NULL; + if (semaphore) + free((void*)semaphore); + return NULL; +} + +void ssem_free(ssem_t *semaphore) +{ + if (!semaphore) + return; + + scond_free(semaphore->cond); + slock_free(semaphore->mutex); + free((void*)semaphore); +} + +void ssem_wait(ssem_t *semaphore) +{ + if (!semaphore) + return; + + slock_lock(semaphore->mutex); + semaphore->value--; + + if (semaphore->value < 0) + { + do + { + scond_wait(semaphore->cond, semaphore->mutex); + }while (semaphore->wakeups < 1); + + semaphore->wakeups--; + } + + slock_unlock(semaphore->mutex); +} + +void ssem_signal(ssem_t *semaphore) +{ + if (!semaphore) + return; + + slock_lock(semaphore->mutex); + semaphore->value++; + + if (semaphore->value <= 0) + { + semaphore->wakeups++; + scond_signal(semaphore->cond); + } + + slock_unlock(semaphore->mutex); +} diff --git a/rthreads/rthreads.c b/rthreads/rthreads.c index e155075..b8f04f1 100644 --- a/rthreads/rthreads.c +++ b/rthreads/rthreads.c @@ -47,6 +47,8 @@ #endif #elif defined(GEKKO) #include "gx_pthread.h" +#elif defined(HAVE_LIBNX) +#include "switch_pthread.h" #elif defined(_3DS) #include "ctr_pthread.h" #elif defined(__CELLOS_LV2__) diff --git a/rthreads/switch_pthread.h b/rthreads/switch_pthread.h new file mode 100644 index 0000000..53491d9 --- /dev/null +++ b/rthreads/switch_pthread.h @@ -0,0 +1,204 @@ +/* Copyright (C) 2018 - M4xw , RetroArch Team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (switch_pthread.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _SWITCH_PTHREAD_WRAP_ +#define _SWITCH_PTHREAD_WRAP_ + +#include +#include +#include +#include + +#include "../include/retro_inline.h" +#include "../../verbosity.h" + +#define THREADVARS_MAGIC 0x21545624 // !TV$ + +// This structure is exactly 0x20 bytes, if more is needed modify getThreadVars() below +typedef struct +{ + // Magic value used to check if the struct is initialized + u32 magic; + + // Thread handle, for mutexes + Handle handle; + + // Pointer to the current thread (if exists) + Thread *thread_ptr; + + // Pointer to this thread's newlib state + struct _reent *reent; + + // Pointer to this thread's thread-local segment + void *tls_tp; // !! Offset needs to be TLS+0x1F8 for __aarch64_read_tp !! +} ThreadVars; + +static INLINE ThreadVars *getThreadVars(void) +{ + return (ThreadVars *)((u8 *)armGetTls() + 0x1E0); +} + +#define STACKSIZE (128 * 1024) +static uint32_t threadCounter = 1; +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) +{ + u32 prio = 0; + + Thread new_switch_thread; + + svcGetThreadPriority(&prio, CUR_THREAD_HANDLE); + + // Launch threads on Core 1 + int rc = threadCreate(&new_switch_thread, (void (*)(void *))start_routine, arg, STACKSIZE, prio - 1, 1); + + if (R_FAILED(rc)) + { + return EAGAIN; + } + + printf("[Threading]: Starting Thread(#%i)\n", threadCounter); + if (R_FAILED(threadStart(&new_switch_thread))) + { + threadClose(&new_switch_thread); + return -1; + } + + *thread = new_switch_thread; + + return 0; +} + +void pthread_exit(void *retval) +{ + (void)retval; + printf("[Threading]: Exiting Thread\n"); + svcExitThread(); +} + +static INLINE Thread threadGetCurrent(void) +{ + ThreadVars *tv = getThreadVars(); + return *tv->thread_ptr; +} + +static INLINE pthread_t pthread_self(void) +{ + return threadGetCurrent(); +} + +static INLINE int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr) +{ + mutexInit(mutex); + + return 0; +} + +INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) +{ + // Nothing + *mutex = 0; + + return 0; +} + +static INLINE int pthread_mutex_lock(pthread_mutex_t *mutex) +{ + mutexLock(mutex); + return 0; +} + +static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) +{ + mutexUnlock(mutex); + + return 0; +} + +INLINE int pthread_detach(pthread_t thread) +{ + (void)thread; + // Nothing for now + return 0; +} + +static INLINE int pthread_join(pthread_t thread, void **retval) +{ + printf("[Threading]: Waiting for Thread Exit\n"); + threadWaitForExit(&thread); + threadClose(&thread); + + return 0; +} + +static INLINE int pthread_mutex_trylock(pthread_mutex_t *mutex) +{ + return mutexTryLock(mutex) ? 0 : 1; +} + +static INLINE int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + condvarWait(cond, mutex); + + return 0; +} + +static INLINE int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime) +{ + condvarWaitTimeout(cond, mutex, abstime->tv_nsec); + + return 0; +} + +static INLINE int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) +{ + condvarInit(cond); + + return 0; +} + +static INLINE int pthread_cond_signal(pthread_cond_t *cond) +{ + condvarWakeOne(cond); + return 0; +} + +static INLINE int pthread_cond_broadcast(pthread_cond_t *cond) +{ + condvarWakeAll(cond); + return 0; +} + +INLINE int pthread_cond_destroy(pthread_cond_t *cond) +{ + // Nothing + return 0; +} + +INLINE int pthread_equal(pthread_t t1, pthread_t t2) +{ + if (t1.handle == t2.handle) + return 1; + + return 0; +} + +#endif diff --git a/rthreads/wiiu_pthread.h b/rthreads/wiiu_pthread.h new file mode 100644 index 0000000..fa9ec81 --- /dev/null +++ b/rthreads/wiiu_pthread.h @@ -0,0 +1,167 @@ +/* Copyright (C) 2010-2016 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (wiiu_pthread.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _WIIU_PTHREAD_WRAP_WIIU_ +#define _WIIU_PTHREAD_WRAP_WIIU_ + +#include +#include +#include +#include +#include +#define STACKSIZE (8 * 1024) + +typedef OSThread* pthread_t; +typedef OSMutex* pthread_mutex_t; +typedef void* pthread_mutexattr_t; +typedef int pthread_attr_t; +typedef OSCondition* pthread_cond_t; +typedef OSCondition* pthread_condattr_t; + +static INLINE int pthread_create(pthread_t *thread, + const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg) +{ + OSThread *t = memalign(8, sizeof(OSThread)); + void *stack = memalign(32, STACKSIZE); + bool ret = OSCreateThread(t, (OSThreadEntryPointFn)start_routine, + (uint32_t)arg, NULL, (void*)(((uint32_t)stack)+STACKSIZE), STACKSIZE, 8, OS_THREAD_ATTRIB_AFFINITY_ANY); + if(ret == true) + { + OSResumeThread(t); + *thread = t; + } + else + *thread = NULL; + return (ret == true) ? 0 : -1; +} + +static INLINE pthread_t pthread_self(void) +{ + return OSGetCurrentThread(); +} + +static INLINE int pthread_mutex_init(pthread_mutex_t *mutex, + const pthread_mutexattr_t *attr) +{ + OSMutex *m = malloc(sizeof(OSMutex)); + OSInitMutex(m); + *mutex = m; + return 0; +} + +static INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) +{ + if(*mutex) + free(*mutex); + *mutex = NULL; + return 0; +} + +static INLINE int pthread_mutex_lock(pthread_mutex_t *mutex) +{ + OSLockMutex(*mutex); + return 0; +} + +static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) +{ + OSUnlockMutex(*mutex); + return 0; +} + +static INLINE void pthread_exit(void *retval) +{ + (void)retval; + OSExitThread(0); +} + +static INLINE int pthread_detach(pthread_t thread) +{ + OSDetachThread(thread); + return 0; +} + +static INLINE int pthread_join(pthread_t thread, void **retval) +{ + (void)retval; + bool ret = OSJoinThread(thread, NULL); + if(ret == true) + { + free(thread->stackEnd); + free(thread); + } + return (ret == true) ? 0 : -1; +} + +static INLINE int pthread_mutex_trylock(pthread_mutex_t *mutex) +{ + return OSTryLockMutex(*mutex); +} + +static INLINE int pthread_cond_wait(pthread_cond_t *cond, + pthread_mutex_t *mutex) +{ + OSWaitCond(*cond, *mutex); + return 0; +} + +static INLINE int pthread_cond_timedwait(pthread_cond_t *cond, + pthread_mutex_t *mutex, const struct timespec *abstime) +{ + //FIXME: actual timeout needed + (void)abstime; + return pthread_cond_wait(cond, mutex); +} + +static INLINE int pthread_cond_init(pthread_cond_t *cond, + const pthread_condattr_t *attr) +{ + OSCondition *c = malloc(sizeof(OSCondition)); + OSInitCond(c); + *cond = c; + return 0; +} + +static INLINE int pthread_cond_signal(pthread_cond_t *cond) +{ + OSSignalCond(*cond); + return 0; +} + +static INLINE int pthread_cond_broadcast(pthread_cond_t *cond) +{ + //FIXME: no OS equivalent + (void)cond; + return 0; +} + +static INLINE int pthread_cond_destroy(pthread_cond_t *cond) +{ + if(*cond) + free(*cond); + *cond = NULL; + return 0; +} + +extern int pthread_equal(pthread_t t1, pthread_t t2); + +#endif diff --git a/vfs/vfs_implementation.c b/vfs/vfs_implementation.c index 6aa7fb2..3443381 100644 --- a/vfs/vfs_implementation.c +++ b/vfs/vfs_implementation.c @@ -391,7 +391,7 @@ int64_t retro_vfs_file_truncate_impl(libretro_vfs_implementation_file *stream, i #ifdef _WIN32 if(_chsize(_fileno(stream->fp), length) != 0) return -1; -#elif !defined(VITA) && !defined(PSP) +#elif !defined(VITA) && !defined(PSP) && (!defined(SWITCH) || defined(HAVE_LIBNX)) if(ftruncate(fileno(stream->fp), length) != 0) return -1; #endif