From a4850c1b57f5e8a437609b0afec1705a00600901 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 18 Jul 2013 13:27:30 +0200 Subject: [PATCH 001/252] (Android) Don't use JELLY_BEAN_MR1 constant as it wasn't available on prior Android versions - use int keycode instead - also implemented stub onTrimMemory/onLowMemory inside NativeActivity wrapper class --- android/phoenix/AndroidManifest.xml | 5 +++-- .../phoenix/src/org/retroarch/browser/RetroActivity.java | 5 ++++- android/phoenix/src/org/retroarch/browser/RetroArch.java | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 56eebaad22..f6bf73dad8 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -13,7 +13,8 @@ + android:label="@string/app_name" + android:hasCode="true"> @@ -35,7 +36,7 @@ - + diff --git a/android/phoenix/src/org/retroarch/browser/RetroActivity.java b/android/phoenix/src/org/retroarch/browser/RetroActivity.java index dd0e75a31d..177b438459 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroActivity.java +++ b/android/phoenix/src/org/retroarch/browser/RetroActivity.java @@ -2,7 +2,6 @@ package org.retroarch.browser; import android.app.NativeActivity; import android.os.Bundle; -import android.widget.Toast; public class RetroActivity extends NativeActivity { @@ -21,4 +20,8 @@ public class RetroActivity extends NativeActivity public void onLowMemory() { } + + @Override + public void onTrimMemory(int level) { + } } diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 1373a33eff..955a3bf8bc 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -22,6 +22,8 @@ import android.view.ContextMenu.ContextMenuInfo; import android.view.inputmethod.*; import android.graphics.drawable.*; +// JELLY_BEAN_MR1 = 17 + class ModuleWrapper implements IconAdapterItem { public final File file; private ConfigFile config; @@ -352,7 +354,7 @@ public class RetroArch extends Activity implements return "/mnt/sd/retroarch.cfg"; } - @TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) + @TargetApi(17) private int getLowLatencyOptimalSamplingRate() { AudioManager manager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE); return Integer.parseInt(manager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); @@ -360,7 +362,7 @@ public class RetroArch extends Activity implements private int getOptimalSamplingRate() { int ret; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) + if (android.os.Build.VERSION.SDK_INT >= 17) ret = getLowLatencyOptimalSamplingRate(); else ret = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC); From 627c30b10cc748061cc1757082c42d553bb78500 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 18 Jul 2013 19:54:00 +0200 Subject: [PATCH 002/252] Take out GRIFFIN macro hacks --- driver_funcs.h | 91 ------------------------------------------ gfx/gl_common.h | 5 --- griffin/hook_context.h | 38 ------------------ 3 files changed, 134 deletions(-) delete mode 100644 griffin/hook_context.h diff --git a/driver_funcs.h b/driver_funcs.h index 3e57b40cac..69319e2104 100644 --- a/driver_funcs.h +++ b/driver_funcs.h @@ -28,8 +28,6 @@ #define audio_write_avail_func() driver.audio->write_avail(driver.audio_data) #define audio_buffer_size_func() driver.audio->buffer_size(driver.audio_data) -#if !defined(RARCH_CONSOLE) /* Normal */ - #define video_init_func(video_info, input, input_data) \ driver.video->init(video_info, input, input_data) #define video_frame_func(data, width, height, pitch, msg) \ @@ -69,93 +67,4 @@ static inline bool input_key_pressed_func(int key) return ret; } -#else - -/*============================================================ - VIDEO - ============================================================ */ - -#define CONCAT2(A, B) A##B - -#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) /* GL */ -#define MAKENAME_VIDEO(A) CONCAT2(gl, A) - -#define video_set_aspect_ratio_func(aspectratio_idx) gfx_ctx_set_aspect_ratio(driver.video_data, aspectratio_idx) - -#define gfx_ctx_window_has_focus() (true) - -#elif defined(_XBOX) && (defined(HAVE_D3D8) || defined(HAVE_D3D9)) /* D3D */ -#define MAKENAME_VIDEO(A) CONCAT2(xdk_d3d, A) - -#elif defined(XENON) /* XENON */ -#define MAKENAME_VIDEO(A) CONCAT2(xenon360_gfx, A) - -#define video_set_aspect_ratio_func(aspectratio_idx) gfx_ctx_set_aspect_ratio(driver.video_data, aspectratio_idx) - -#define gfx_ctx_window_has_focus() (true) - -#elif defined(GEKKO) /* Gamecube, Wii */ -#define MAKENAME_VIDEO(A) CONCAT2(gx, A) - -#define video_set_aspect_ratio_func(aspectratio_idx) gx_set_aspect_ratio(driver.video_data, aspectratio_idx) -#define video_viewport_size_func(width, height) ((void)0) -#define video_read_viewport_func(buffer) (false) - -//#elif defined(PSP) /* PSP1 */ -//#define MAKENAME_VIDEO(A) CONCAT2(psp, A) -//#define video_set_aspect_ratio_func(aspectratio_idx) (true) - -#else /* NULL */ -#define MAKENAME_VIDEO(A) CONCAT2(nullvideo, A) - -#define video_set_aspect_ratio_func(aspectratio_idx) (true) - -#endif - -#define video_viewport_info_func(info) driver.video->viewport_info(driver.video_data, info) - -#define video_init_func(video_info, input, input_data) MAKENAME_VIDEO(_init)(video_info, input, input_data) -#define video_frame_func(data, width, height, pitch, msg) \ - MAKENAME_VIDEO(_frame)(driver.video_data, data, width, height, pitch, msg) -#define video_alive_func() MAKENAME_VIDEO(_alive)(driver.video_data) -#define video_focus_func() MAKENAME_VIDEO(_focus)(driver.video_data) -#define video_free_func() MAKENAME_VIDEO(_free)(driver.video_data) -#define video_set_nonblock_state_func(state) MAKENAME_VIDEO(_set_nonblock_state)(driver.video_data, state) -#define video_set_rotation_func(rotation) MAKENAME_VIDEO(_set_rotation)(driver.video_data, rotation) -#define video_start_func() MAKENAME_VIDEO(_start)() -#define video_set_shader_func(type, path) MAKENAME_VIDEO(_set_shader)(driver.video_data, type, path) -#define video_xml_shader_func(path) driver.video->xml_shader(driver.video_data, path) - -/*============================================================ - INPUT - ============================================================ */ - -#if defined(_XBOX) && (defined(HAVE_D3D8) || defined(HAVE_D3D9)) /* D3D */ -#define MAKENAME_INPUT(A) CONCAT2(xdk, A) -#elif defined(GEKKO) /* Gamecube, Wii */ -#define MAKENAME_INPUT(A) CONCAT2(gx, A) -#define gfx_ctx_window_has_focus() (true) -#elif defined(__CELLOS_LV2__) /* PS3 */ -#define MAKENAME_INPUT(A) CONCAT2(ps3, A) -#elif defined(ANDROID) /* ANDROID */ -#define MAKENAME_INPUT(A) CONCAT2(android, A) -#elif defined(XENON) /* XENON */ -#define MAKENAME_INPUT(A) CONCAT2(xenon360, A) -#else -#define MAKENAME_INPUT(A) CONCAT2(nullinput, A) -#endif - -#define gfx_ctx_window_has_focus() (true) - -#define input_init_func() MAKENAME_INPUT(_input_init)() -#define input_poll_func() MAKENAME_INPUT(_input_poll)(driver.input_data) -#define input_input_state_func(retro_keybinds, port, device, index, id) \ - MAKENAME_INPUT(_input_state)(driver.input_data, retro_keybinds, port, device, index, id) -#define input_key_pressed_func(key) MAKENAME_INPUT(_input_key_pressed)(driver.input_data, key) -#define input_free_func() MAKENAME_INPUT(_input_free_input)(driver.input_data) - -#define video_overlay_interface_func(iface) driver.video->overlay_interface(driver.video_data, iface) - -#endif - #endif /* _RARCH_DRIVER_FUNCS_H */ diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 42e1313f80..9eeeb50124 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -60,10 +60,6 @@ #include #endif - -#if defined(ANDROID) && defined(HAVE_GRIFFIN) -#include "../griffin/hook_context.h" -#else #define context_get_video_size_func(win, height) gl->ctx_driver->get_video_size(win, height) #define context_update_window_title_func() gl->ctx_driver->update_window_title() #define context_destroy_func() gl->ctx_driver->destroy() @@ -84,7 +80,6 @@ #define context_write_egl_image_func(frame, width, height, pitch, base_size, tex_index, img) \ gl->ctx_driver->write_egl_image(frame, width, height, pitch, base_size, tex_index,img) #endif -#endif static inline bool gl_query_extension(const char *ext) { diff --git a/griffin/hook_context.h b/griffin/hook_context.h deleted file mode 100644 index 0f69a738c3..0000000000 --- a/griffin/hook_context.h +++ /dev/null @@ -1,38 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * - * RetroArch 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 Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch 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 RetroArch. - * If not, see . - */ - -#if defined(ANDROID) -#define context_get_video_size_func(win, height) gfx_ctx_get_video_size(win, height) -#define context_update_window_title_func() gfx_ctx_update_window_title() -#define context_destroy_func() gfx_ctx_destroy() - -#define context_translate_aspect_func(width, height) (device_aspect) -#define context_set_resize_func(width, height) gl->ctx_driver->set_resize(width, height) -#define context_swap_buffers_func() eglSwapBuffers(g_egl_dpy, g_egl_surf) -#define context_swap_interval_func(var) eglSwapInterval(g_egl_dpy, var) -#define context_has_focus_func() (true) -#define context_check_window_func(quit, resize, width, height, frame_count) gfx_ctx_check_window(quit, resize, width, height, frame_count) -#define context_set_video_mode_func(width, height, fullscreen) gfx_ctx_set_video_mode(width, height, fullscreen) -#define context_input_driver_func(input, input_data) gl->ctx_driver->input_driver(input, input_data) -#endif - -#ifdef HAVE_EGL -#define context_init_egl_image_buffer_func(video) gl->ctx_driver->init_egl_image_buffer(video) - -#define context_write_egl_image_func(frame, width, height, pitch, base_size, tex_index, img) gl->ctx_driver->write_egl_image(frame, width, height, pitch, base_size, tex_index,img) -#endif - -#define context_post_render_func(gl) ((void)0) From b23379266cf150f3f6060ce5d638fb7c4975df1e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 19 Jul 2013 16:20:14 +0200 Subject: [PATCH 003/252] PACKAGE_VERSION is defined now in general.h for all versions --- Makefile.psl1ght | 2 +- Makefile.wii.salamander | 2 +- Makefile.win | 2 +- apple/RetroArch_OSX.xcodeproj/project.pbxproj | 1 - apple/RetroArch_iOS.xcodeproj/project.pbxproj | 4 ---- blackberry-qnx/bb10/RetroArch-Cascades.pro | 2 +- configure | 1 - qb/qb.libs.sh | 2 -- qb/qb.params.sh | 1 - 9 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Makefile.psl1ght b/Makefile.psl1ght index 18e89222ba..8ad965e3bf 100644 --- a/Makefile.psl1ght +++ b/Makefile.psl1ght @@ -92,7 +92,7 @@ endif RSXGL_DEFINES = -D__RSX__ -DGL3_PROTOTYPES -SHARED_FLAGS := -DHAVE_FILEBROWSER $(RSXGL_DEFINES) -DHAVE_OPENGL -DHAVE_EGL -DHAVE_OPENGL_MODERN -DHAVE_GLSL -DHAVE_VID_CONTEXT -DHAVE_FBO -DHAVE_MOUSE -DRARCH_CONSOLE -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_GRIFFIN=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DPACKAGE_VERSION=\"0.9.8\" -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts +SHARED_FLAGS := -DHAVE_FILEBROWSER $(RSXGL_DEFINES) -DHAVE_OPENGL -DHAVE_EGL -DHAVE_OPENGL_MODERN -DHAVE_GLSL -DHAVE_VID_CONTEXT -DHAVE_FBO -DHAVE_MOUSE -DRARCH_CONSOLE -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_GRIFFIN=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -Wno-char-subscripts CFLAGS += -std=gnu99 $(SHARED_FLAGS) CXXFLAGS += $(SHARED_FLAGS) diff --git a/Makefile.wii.salamander b/Makefile.wii.salamander index 1356a4ac3b..87049c1d5c 100644 --- a/Makefile.wii.salamander +++ b/Makefile.wii.salamander @@ -53,7 +53,7 @@ CFLAGS += -DHAVE_FILE_LOGGER CFLAGS += -Iconsole/logger endif -CFLAGS += -std=gnu99 -DIS_SALAMANDER -DRARCH_CONSOLE -DHAVE_RARCH_EXEC -DGEKKO -DPACKAGE_VERSION=\"0.9.8\" -Wno-char-subscripts +CFLAGS += -std=gnu99 -DIS_SALAMANDER -DRARCH_CONSOLE -DHAVE_RARCH_EXEC -DGEKKO -Wno-char-subscripts ifeq ($(DEBUG), 1) CFLAGS += -O0 -g diff --git a/Makefile.win b/Makefile.win index 0c5f24d416..862bb534ca 100644 --- a/Makefile.win +++ b/Makefile.win @@ -77,7 +77,7 @@ endif libretro ?= -lretro LIBS = -lm -DEFINES = -I. -DHAVE_SCREENSHOTS -DHAVE_BSV_MOVIE -DPACKAGE_VERSION=\"0.9.9.3\" +DEFINES = -I. -DHAVE_SCREENSHOTS -DHAVE_BSV_MOVIE LDFLAGS = -L. -static-libgcc ifeq ($(TDM_GCC),) diff --git a/apple/RetroArch_OSX.xcodeproj/project.pbxproj b/apple/RetroArch_OSX.xcodeproj/project.pbxproj index 969c109546..e4b16ceb4a 100644 --- a/apple/RetroArch_OSX.xcodeproj/project.pbxproj +++ b/apple/RetroArch_OSX.xcodeproj/project.pbxproj @@ -354,7 +354,6 @@ "-D__LIBRETRO__", "-DRARCH_PERFORMANCE_MODE", "-DRARCH_MOBILE", - "-DPACKAGE_VERSION=\\\"0.9.9.3\\\"", "-DHAVE_COREAUDIO", "-DHAVE_DYNAMIC", "-DHAVE_OVERLAY", diff --git a/apple/RetroArch_iOS.xcodeproj/project.pbxproj b/apple/RetroArch_iOS.xcodeproj/project.pbxproj index 9777b46c4d..15081fd2eb 100644 --- a/apple/RetroArch_iOS.xcodeproj/project.pbxproj +++ b/apple/RetroArch_iOS.xcodeproj/project.pbxproj @@ -365,7 +365,6 @@ "-D__LIBRETRO__", "-DRARCH_PERFORMANCE_MODE", "-DRARCH_MOBILE", - "-DPACKAGE_VERSION=\\\"0.9.9.3\\\"", "-std=gnu99", "-DHAVE_COREAUDIO", "-DHAVE_FBO", @@ -416,7 +415,6 @@ "-D__LIBRETRO__", "-DRARCH_PERFORMANCE_MODE", "-DRARCH_MOBILE", - "-DPACKAGE_VERSION=\\\"0.9.9.3\\\"", "-std=gnu99", "-DHAVE_COREAUDIO", "-DHAVE_FBO", @@ -458,7 +456,6 @@ "-D__LIBRETRO__", "-DRARCH_PERFORMANCE_MODE", "-DRARCH_MOBILE", - "-DPACKAGE_VERSION=\\\"0.9.9.3\\\"", "-DHAVE_COREAUDIO", "-DHAVE_DYNAMIC", "-DHAVE_OVERLAY", @@ -502,7 +499,6 @@ "-D__LIBRETRO__", "-DRARCH_PERFORMANCE_MODE", "-DRARCH_MOBILE", - "-DPACKAGE_VERSION=\\\"0.9.9.3\\\"", "-DHAVE_COREAUDIO", "-DHAVE_DYNAMIC", "-DHAVE_OVERLAY", diff --git a/blackberry-qnx/bb10/RetroArch-Cascades.pro b/blackberry-qnx/bb10/RetroArch-Cascades.pro index 5b81e367d5..1f9eb1dfba 100644 --- a/blackberry-qnx/bb10/RetroArch-Cascades.pro +++ b/blackberry-qnx/bb10/RetroArch-Cascades.pro @@ -9,7 +9,7 @@ DEFINES += HAVE_RGUI HAVE_NEON RARCH_MOBILE \ SINC_LOWER_QUALITY HAVE_RARCH_MAIN_IMPLEMENTATION \ HAVE_VID_CONTEXT HAVE_FBO HAVE_GRIFFIN __LIBRETRO__ \ HAVE_DYNAMIC HAVE_ZLIB __BLACKBERRY_QNX__ HAVE_OPENGLES \ - PACKAGE_VERSION=\"0.9.9\" HAVE_OPENGLES2 HAVE_NULLINPUT \ + HAVE_OPENGLES2 HAVE_NULLINPUT \ HAVE_AL HAVE_THREADS WANT_MINIZ HAVE_OVERLAY HAVE_GLSL \ USING_GL20 HAVE_OPENGL __STDC_CONSTANT_MACROS HAVE_BB10 diff --git a/configure b/configure index 5edfff9e4f..3d6cb624c0 100755 --- a/configure +++ b/configure @@ -1,7 +1,6 @@ #!/bin/sh PACKAGE_NAME=retroarch -PACKAGE_VERSION=0.9.9 cat /dev/null > config.log diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index f2d22642cd..f58ede455c 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -200,7 +200,6 @@ create_config_header() echo "#define $name" echo "" echo "#define PACKAGE_NAME \"$PACKAGE_NAME\"" - echo "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" while [ "$1" ]; do case $(eval echo \$HAVE_$1) in @@ -234,7 +233,6 @@ create_config_make() echo "INCLUDE_DIRS = $INCLUDE_DIRS" echo "LIBRARY_DIRS = $LIBRARY_DIRS" echo "PACKAGE_NAME = $PACKAGE_NAME" - echo "PACKAGE_VERSION = $PACKAGE_VERSION" echo "PREFIX = $PREFIX" while [ "$1" ]; do diff --git a/qb/qb.params.sh b/qb/qb.params.sh index 2ef9233891..9f8f180072 100644 --- a/qb/qb.params.sh +++ b/qb/qb.params.sh @@ -5,7 +5,6 @@ print_help() Quickbuild script ==================== Package: $PACKAGE_NAME -Version: $PACKAGE_VERSION General environment variables: CC: C compiler From f346bedf952d164d563894ead1555b949612292a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 20 Jul 2013 00:01:18 +0200 Subject: [PATCH 004/252] Add instancingviewer .info module file --- apple/modules/instancingviewer_libretro.info | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 apple/modules/instancingviewer_libretro.info diff --git a/apple/modules/instancingviewer_libretro.info b/apple/modules/instancingviewer_libretro.info new file mode 100644 index 0000000000..5f2a20f83b --- /dev/null +++ b/apple/modules/instancingviewer_libretro.info @@ -0,0 +1,5 @@ +display_name = "InstancingViewer" +recommended_extensions = "png" +corename = "InstancingViewer" +manufacturer = "Various" +systemname = "Instantiation of objects" From 95b1e71d8fdb44f349eb1184e5df7fe0049f66aa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 23 Jul 2013 22:08:20 +0200 Subject: [PATCH 005/252] (OSX) AppleGameview - going to implement mousecontrols through GLKView's mouseDown/mouseUp/mouseMoved --- apple/RetroArch/RAGameView.m | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apple/RetroArch/RAGameView.m b/apple/RetroArch/RAGameView.m index a1630092d6..4f87f560f1 100644 --- a/apple/RetroArch/RAGameView.m +++ b/apple/RetroArch/RAGameView.m @@ -91,6 +91,18 @@ static float g_screen_scale = 1.0f; { } +- (void)mouseDown:(NSEvent*)theEvent +{ +} + +- (void)mouseUp:(NSEvent*)theEvent +{ +} + +- (void)mouseMoved:(NSEvent *)theEvent +{ +} + #elif defined(IOS) // < iOS Pause menu and lifecycle - (id)init { From 1056b0b6b14e32b196faedee8b11bdd961b6ec0b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 24 Jul 2013 16:50:22 +0200 Subject: [PATCH 006/252] (rontend.c) Remove FIXME --- frontend/frontend.c | 1 - frontend/frontend_android.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index e18cb79eb2..3d90d1c41f 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -148,7 +148,6 @@ static void rarch_get_environment(int argc, char *argv[]) config_load(); - /* FIXME - when dummy loading becomes possible perhaps change this param */ init_libretro_sym(false); rarch_init_system_info(); diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 846d58f73b..a1b26f45f2 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -59,8 +59,6 @@ static void print_cur_config (void *data) AConfiguration_getUiModeNight(android_app->config)); } -#define MAX_ARGS 32 - static bool android_run_events (void *data) { int id = ALooper_pollOnce(-1, NULL, NULL, NULL); From 15498667035299ae00bce79d34901bbc98607ef1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 24 Jul 2013 16:51:24 +0200 Subject: [PATCH 007/252] (frontend.c) Remove another FIXME --- frontend/frontend.c | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 3d90d1c41f..d576c9c232 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -429,7 +429,6 @@ int rarch_main(int argc, char *argv[]) system_shutdown(); -// FIXME - should this be 1 for RARCH_CONSOLE? return 0; } From 69381c2735e3e4a7fa1cce6e6cb3c98eac07d2df Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 26 Jul 2013 20:58:47 +0200 Subject: [PATCH 008/252] Add frontend_context.c - use for all console platform ports (and other possible ports in future) --- Makefile.ps3.salamander | 2 +- frontend/frontend.c | 30 ++++++++++++++---- frontend/frontend_context.c | 52 ++++++++++++++++++++++++++++++++ frontend/frontend_context.h | 48 +++++++++++++++++++++++++++++ frontend/frontend_salamander.c | 24 +++++++++++++-- frontend/platform/platform_gx.c | 12 ++++++-- frontend/platform/platform_ps3.c | 11 +++++++ griffin/griffin.c | 4 +++ 8 files changed, 171 insertions(+), 12 deletions(-) create mode 100644 frontend/frontend_context.c create mode 100644 frontend/frontend_context.h diff --git a/Makefile.ps3.salamander b/Makefile.ps3.salamander index 06261f962b..7fa10f2b61 100644 --- a/Makefile.ps3.salamander +++ b/Makefile.ps3.salamander @@ -19,7 +19,7 @@ endif STRIP = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-strip.exe PPU_CFLAGS += -I. -D__CELLOS_LV2__ -DIS_SALAMANDER -DRARCH_CONSOLE -DHAVE_SYSUTILS -DHAVE_SYSMODULES -DHAVE_RARCH_EXEC -PPU_SRCS = frontend/frontend_salamander.c file_path.c compat/compat.c conf/config_file.c +PPU_SRCS = frontend/frontend_salamander.c frontend/frontend_context.c file_path.c compat/compat.c conf/config_file.c ifeq ($(HAVE_LOGGER), 1) PPU_CFLAGS += -DHAVE_LOGGER -Iconsole/logger diff --git a/frontend/frontend.c b/frontend/frontend.c index d576c9c232..bae4dcdbaa 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -24,6 +24,11 @@ #include "menu/rmenu.h" #endif +#if defined(RARCH_CONSOLE) +#include "frontend_context.h" +frontend_ctx_driver_t *frontend_ctx; +#endif + #if defined(__QNX__) #include #elif defined(__CELLOS_LV2__) @@ -108,13 +113,13 @@ static bool libretro_install_core(const char *path_prefix, } #endif -static void rarch_preinit(void) +static void system_preinit(void) { #if defined(__QNX__) && !defined(HAVE_BB10) //Initialize BPS libraries bps_initialize(); #elif defined(RARCH_CONSOLE) - system_init(); + frontend_ctx->init(); #endif } @@ -196,6 +201,16 @@ static void system_shutdown(void) #endif } +static int system_ctx_init(void) +{ +#ifdef RARCH_CONSOLE + if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) + return -1; +#endif + + return 0; +} + #if defined(__APPLE__) static pthread_mutex_t apple_event_queue_lock = PTHREAD_MUTEX_INITIALIZER; @@ -252,7 +267,10 @@ void* rarch_main(void* args) int rarch_main(int argc, char *argv[]) #endif { - rarch_preinit(); + if (system_ctx_init() != 0) + return 0; + + system_preinit(); #if !defined(__APPLE__) rarch_main_clear_state(); @@ -290,7 +308,7 @@ int rarch_main(int argc, char *argv[]) menu_init(); #ifdef RARCH_CONSOLE - system_process_args(argc, argv); + frontend_ctx->process_args(argc, argv); g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; #else g_extern.lifecycle_mode_state |= 1ULL << MODE_GAME; @@ -419,10 +437,10 @@ int rarch_main(int argc, char *argv[]) fclose(g_extern.log_file); g_extern.log_file = NULL; #endif - system_deinit(); + frontend_ctx->deinit(); if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN)) - system_exitspawn(); + frontend_ctx->exitspawn(); #endif rarch_main_clear_state(); diff --git a/frontend/frontend_context.c b/frontend/frontend_context.c new file mode 100644 index 0000000000..9b766a9cae --- /dev/null +++ b/frontend/frontend_context.c @@ -0,0 +1,52 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include "frontend_context.h" +#include + +#ifdef HAVE_CONFIG_H +#include "../config.h" +#endif + +static const frontend_ctx_driver_t *frontend_ctx_drivers[] = { +#if defined(__CELLOS_LV2__) + &frontend_ctx_ps3, +#endif +#if defined(_XBOX) + &frontend_ctx_xdk, +#endif +#if defined(GEKKO) + &frontend_ctx_gx, +#endif +}; + +const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) +{ + for (unsigned i = 0; i < sizeof(frontend_ctx_drivers) / sizeof(frontend_ctx_drivers[0]); i++) + { + if (strcmp(frontend_ctx_drivers[i]->ident, ident) == 0) + return frontend_ctx_drivers[i]; + } + + return NULL; +} + +const frontend_ctx_driver_t *frontend_ctx_init_first(void) +{ + for (unsigned i = 0; i < sizeof(frontend_ctx_drivers) / sizeof(frontend_ctx_drivers[0]); i++) + return frontend_ctx_drivers[i]; + + return NULL; +} diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h new file mode 100644 index 0000000000..0325f90db6 --- /dev/null +++ b/frontend/frontend_context.h @@ -0,0 +1,48 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#ifndef __FRONTEND_CONTEXT_H +#define __FRONTEND_CONTEXT_H + +#include "../boolean.h" +#include "../driver.h" + +#ifdef HAVE_CONFIG_H +#include "../config.h" +#endif + +typedef struct frontend_ctx_driver +{ + void (*get_environment_settings)(int argc, char *argv[]); + + void (*init)(void); + void (*deinit)(void); + void (*exitspawn)(void); + + int (*process_args)(int argc, char *argv[]); + + // Human readable string. + const char *ident; +} frontend_ctx_driver_t; + +extern const frontend_ctx_driver_t frontend_ctx_gx; +extern const frontend_ctx_driver_t frontend_ctx_ps3; +extern const frontend_ctx_driver_t frontend_ctx_xdk; + +const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. +const frontend_ctx_driver_t *frontend_ctx_init_first(void); // Finds first suitable driver and initializes. + +#endif diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 3cf707cbef..5d884b4350 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -22,6 +22,11 @@ #include "../file_ext.h" #include "frontend_salamander.h" +#if defined(RARCH_CONSOLE) +#include "frontend_context.h" +frontend_ctx_driver_t *frontend_ctx; +#endif + #if defined(__CELLOS_LV2__) #include "platform/platform_ps3_exec.c" #include "platform/platform_ps3.c" @@ -86,13 +91,26 @@ static void find_first_libretro_core(char *first_file, dir_list_free(list); } +static int system_ctx_init(void) +{ +#ifdef RARCH_CONSOLE + if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) + return -1; +#endif + + return 0; +} + int main(int argc, char *argv[]) { - system_init(); + if (system_ctx_init() != 0) + return 0; + + frontend_ctx->init(); get_environment_settings(argc, argv); salamander_init_settings(); - system_deinit(); - system_exitspawn(); + frontend_ctx->deinit(); + frontend_ctx->exitspawn(); return 1; } diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 73e9a7328e..1bacd779f1 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -338,11 +338,11 @@ static void system_deinit(void) #endif } -#ifndef IS_SALAMANDER static int system_process_args(int argc, char *argv[]) { int ret = 0; +#ifndef IS_SALAMANDER // a big hack: sometimes salamander doesn't save the new core it loads on first boot, // so we make sure g_settings.libretro is set here if (!g_settings.libretro[0] && argc >= 1 && strrchr(argv[0], '/')) @@ -354,8 +354,16 @@ static int system_process_args(int argc, char *argv[]) "%s%s", argv[1], argv[2]); ret = 1; } +#endif return ret; } -#endif +const frontend_ctx_driver_t frontend_ctx_gx = { + get_environment_settings, + system_init, + system_deinit, + system_exitspawn, + system_process_args, + "gx", +}; diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 3136ee67c6..337a2b5f3e 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -342,12 +342,14 @@ static void system_init(void) static int system_process_args(int argc, char *argv[]) { +#ifndef IS_SALAMANDER if (argc > 1) { RARCH_LOG("Auto-start game %s.\n", argv[1]); strlcpy(g_extern.fullpath, argv[1], sizeof(g_extern.fullpath)); return 1; } +#endif return 0; } @@ -414,3 +416,12 @@ static void system_exitspawn(void) #endif } + +const frontend_ctx_driver_t frontend_ctx_ps3 = { + get_environment_settings, + system_init, + system_deinit, + system_exitspawn, + system_process_args, + "ps3", +}; diff --git a/griffin/griffin.c b/griffin/griffin.c index 3206fd7aad..4f165f6359 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -440,6 +440,10 @@ REWIND ============================================================ */ #include "../rewind.c" +#if defined(RARCH_CONSOLE) +#include "../frontend/frontend_context.c" +#endif + /*============================================================ MAIN ============================================================ */ From 2650bec79819ed993d1ea13e8bc98524142d9595 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 00:32:56 +0200 Subject: [PATCH 009/252] Setup platform_xdk as context as well --- frontend/platform/platform_xdk.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 186d17e766..60ec8e63d9 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -313,3 +313,12 @@ static void system_exitspawn(void) rarch_console_exec(g_settings.libretro, should_load_game); #endif } + +const frontend_ctx_driver_t frontend_ctx_xdk = { + get_environment_settings, + system_init, + system_deinit, + system_exitspawn, + system_process_args, + "xdk", +}; From 1e70a46dd82c720e19a846a6b9ec28bd3513eb56 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 03:59:01 +0200 Subject: [PATCH 010/252] Merge platform_ files with platform_exec.c files --- frontend/frontend.c | 5 - frontend/frontend_context.h | 1 + frontend/frontend_salamander.c | 5 - frontend/platform/platform_gx.c | 156 ++++++++++++++++++++++++ frontend/platform/platform_gx_exec.c | 165 -------------------------- frontend/platform/platform_ps3.c | 56 ++++++++- frontend/platform/platform_ps3_exec.c | 64 ---------- frontend/platform/platform_psp.c | 10 ++ frontend/platform/platform_xdk.c | 38 ++++++ frontend/platform/platform_xdk_exec.c | 52 -------- 10 files changed, 259 insertions(+), 293 deletions(-) delete mode 100644 frontend/platform/platform_gx_exec.c delete mode 100644 frontend/platform/platform_ps3_exec.c delete mode 100644 frontend/platform/platform_xdk_exec.c diff --git a/frontend/frontend.c b/frontend/frontend.c index bae4dcdbaa..7fa70d6514 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -32,15 +32,10 @@ frontend_ctx_driver_t *frontend_ctx; #if defined(__QNX__) #include #elif defined(__CELLOS_LV2__) -#include "platform/platform_ps3_exec.c" #include "platform/platform_ps3.c" #elif defined(GEKKO) -#ifdef HW_RVL -#include "platform/platform_gx_exec.c" -#endif #include "platform/platform_gx.c" #elif defined(_XBOX) -#include "platform/platform_xdk_exec.c" #include "platform/platform_xdk.c" #elif defined(PSP) #include "platform/platform_psp.c" diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index 0325f90db6..eeaacf2e8e 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -33,6 +33,7 @@ typedef struct frontend_ctx_driver void (*exitspawn)(void); int (*process_args)(int argc, char *argv[]); + void (*exec)(const char *, bool); // Human readable string. const char *ident; diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 5d884b4350..80542bd696 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -28,15 +28,10 @@ frontend_ctx_driver_t *frontend_ctx; #endif #if defined(__CELLOS_LV2__) -#include "platform/platform_ps3_exec.c" #include "platform/platform_ps3.c" #elif defined(GEKKO) -#ifdef HW_RVL -#include "platform/platform_gx_exec.c" -#endif #include "platform/platform_gx.c" #elif defined(_XBOX) -#include "platform/platform_xdk_exec.c" #include "platform/platform_xdk.c" #elif defined(PSP) #include "platform/platform_psp.c" diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 1bacd779f1..9e39b9aee3 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -359,11 +359,167 @@ static int system_process_args(int argc, char *argv[]) return ret; } +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#define EXECUTE_ADDR ((uint8_t *) 0x91800000) +#define BOOTER_ADDR ((uint8_t *) 0x93000000) +#define ARGS_ADDR ((uint8_t *) 0x93200000) + +extern uint8_t _binary_wii_app_booter_app_booter_bin_start[]; +extern uint8_t _binary_wii_app_booter_app_booter_bin_end[]; +#define booter_start _binary_wii_app_booter_app_booter_bin_start +#define booter_end _binary_wii_app_booter_app_booter_bin_end + +#include "../../retroarch_logger.h" +#include "../../file.h" + +#ifdef IS_SALAMANDER +char gx_rom_path[PATH_MAX]; +#endif + +#ifdef HW_RVL +static void dol_copy_argv_path(const char *dolpath, const char *argpath) +{ + char tmp[PATH_MAX]; + size_t len, t_len; + struct __argv *argv = (struct __argv *) ARGS_ADDR; + memset(ARGS_ADDR, 0, sizeof(struct __argv)); + char *cmdline = (char *) ARGS_ADDR + sizeof(struct __argv); + argv->argvMagic = ARGV_MAGIC; + argv->commandLine = cmdline; + len = 0; + + // a device-less fullpath + if (dolpath[0] == '/') + { + char *dev = strchr(__system_argv->argv[0], ':'); + t_len = dev - __system_argv->argv[0] + 1; + memcpy(cmdline, __system_argv->argv[0], t_len); + len += t_len; + } + // a relative path + else if (strstr(dolpath, "sd:/") != dolpath && strstr(dolpath, "usb:/") != dolpath && + strstr(dolpath, "carda:/") != dolpath && strstr(dolpath, "cardb:/") != dolpath) + { + fill_pathname_parent_dir(tmp, __system_argv->argv[0], sizeof(tmp)); + t_len = strlen(tmp); + memcpy(cmdline, tmp, t_len); + len += t_len; + } + + t_len = strlen(dolpath); + memcpy(cmdline + len, dolpath, t_len); + len += t_len; + cmdline[len++] = 0; + + // file must be split into two parts, the path and the actual filename + // done to be compatible with loaders + if (argpath && strrchr(argpath, '/') != NULL) + { + // basedir + fill_pathname_parent_dir(tmp, argpath, sizeof(tmp)); + t_len = strlen(tmp); + memcpy(cmdline + len, tmp, t_len); + len += t_len; + cmdline[len++] = 0; + + // filename + char *name = strrchr(argpath, '/') + 1; + t_len = strlen(name); + memcpy(cmdline + len, name, t_len); + len += t_len; + cmdline[len++] = 0; + } + + cmdline[len++] = 0; + argv->length = len; + DCFlushRange(ARGS_ADDR, sizeof(struct __argv) + argv->length); +} + +// WARNING: after we move any data into EXECUTE_ADDR, we can no longer use any +// heap memory and are restricted to the stack only +static void system_exec(const char *path, bool should_load_game) +{ + char game_path[PATH_MAX]; + + RARCH_LOG("Attempt to load executable: [%s] %d.\n", path, sizeof(game_path)); + + // copy heap info into stack so it survives us moving the .dol into MEM2 + if (should_load_game) + { +#ifdef IS_SALAMANDER + strlcpy(game_path, gx_rom_path, sizeof(game_path)); +#else + strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); +#endif + } + + FILE * fp = fopen(path, "rb"); + if (fp == NULL) + { + RARCH_ERR("Could not open DOL file %s.\n", path); + return; + } + + fseek(fp, 0, SEEK_END); + size_t size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + // try to allocate a buffer for it. if we can't, fail + void *dol = malloc(size); + if (!dol) + { + RARCH_ERR("Could not execute DOL file %s.\n", path); + fclose(fp); + return; + } + + fread(dol, 1, size, fp); + fclose(fp); + + fatUnmount("carda:"); + fatUnmount("cardb:"); + fatUnmount("sd:"); + fatUnmount("usb:"); + __io_wiisd.shutdown(); + __io_usbstorage.shutdown(); + + // luckily for us, newlib's memmove doesn't allocate a seperate buffer for + // copying in situations of overlap, so it's safe to do this + memmove(EXECUTE_ADDR, dol, size); + DCFlushRange(EXECUTE_ADDR, size); + + dol_copy_argv_path(path, should_load_game ? game_path : NULL); + + size_t booter_size = booter_end - booter_start; + memcpy(BOOTER_ADDR, booter_start, booter_size); + DCFlushRange(BOOTER_ADDR, booter_size); + + RARCH_LOG("jumping to %08x\n", (unsigned) BOOTER_ADDR); + SYS_ResetSystem(SYS_SHUTDOWN,0,0); + __lwp_thread_stopmultitasking((void (*)(void)) BOOTER_ADDR); +} +#endif + const frontend_ctx_driver_t frontend_ctx_gx = { get_environment_settings, system_init, system_deinit, system_exitspawn, system_process_args, +#ifdef HW_RVL + system_exec, +#else + NULL, +#endif "gx", }; diff --git a/frontend/platform/platform_gx_exec.c b/frontend/platform/platform_gx_exec.c deleted file mode 100644 index 0d1ad4e0be..0000000000 --- a/frontend/platform/platform_gx_exec.c +++ /dev/null @@ -1,165 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * Copyright (C) 2012-2013 - Michael Lelli - * - * RetroArch 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 Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch 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 RetroArch. - * If not, see . - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#define EXECUTE_ADDR ((uint8_t *) 0x91800000) -#define BOOTER_ADDR ((uint8_t *) 0x93000000) -#define ARGS_ADDR ((uint8_t *) 0x93200000) - -extern uint8_t _binary_wii_app_booter_app_booter_bin_start[]; -extern uint8_t _binary_wii_app_booter_app_booter_bin_end[]; -#define booter_start _binary_wii_app_booter_app_booter_bin_start -#define booter_end _binary_wii_app_booter_app_booter_bin_end - -#include "../../retroarch_logger.h" -#include "../../file.h" - -#ifdef IS_SALAMANDER -char gx_rom_path[PATH_MAX]; -#endif - -static void dol_copy_argv_path(const char *dolpath, const char *argpath) -{ - char tmp[PATH_MAX]; - size_t len, t_len; - struct __argv *argv = (struct __argv *) ARGS_ADDR; - memset(ARGS_ADDR, 0, sizeof(struct __argv)); - char *cmdline = (char *) ARGS_ADDR + sizeof(struct __argv); - argv->argvMagic = ARGV_MAGIC; - argv->commandLine = cmdline; - len = 0; - - // a device-less fullpath - if (dolpath[0] == '/') - { - char *dev = strchr(__system_argv->argv[0], ':'); - t_len = dev - __system_argv->argv[0] + 1; - memcpy(cmdline, __system_argv->argv[0], t_len); - len += t_len; - } - // a relative path - else if (strstr(dolpath, "sd:/") != dolpath && strstr(dolpath, "usb:/") != dolpath && - strstr(dolpath, "carda:/") != dolpath && strstr(dolpath, "cardb:/") != dolpath) - { - fill_pathname_parent_dir(tmp, __system_argv->argv[0], sizeof(tmp)); - t_len = strlen(tmp); - memcpy(cmdline, tmp, t_len); - len += t_len; - } - - t_len = strlen(dolpath); - memcpy(cmdline + len, dolpath, t_len); - len += t_len; - cmdline[len++] = 0; - - // file must be split into two parts, the path and the actual filename - // done to be compatible with loaders - if (argpath && strrchr(argpath, '/') != NULL) - { - // basedir - fill_pathname_parent_dir(tmp, argpath, sizeof(tmp)); - t_len = strlen(tmp); - memcpy(cmdline + len, tmp, t_len); - len += t_len; - cmdline[len++] = 0; - - // filename - char *name = strrchr(argpath, '/') + 1; - t_len = strlen(name); - memcpy(cmdline + len, name, t_len); - len += t_len; - cmdline[len++] = 0; - } - - cmdline[len++] = 0; - argv->length = len; - DCFlushRange(ARGS_ADDR, sizeof(struct __argv) + argv->length); -} - -// WARNING: after we move any data into EXECUTE_ADDR, we can no longer use any -// heap memory and are restricted to the stack only -static void rarch_console_exec(const char *path, bool should_load_game) -{ - char game_path[PATH_MAX]; - - RARCH_LOG("Attempt to load executable: [%s] %d.\n", path, sizeof(game_path)); - - // copy heap info into stack so it survives us moving the .dol into MEM2 - if (should_load_game) - { -#ifdef IS_SALAMANDER - strlcpy(game_path, gx_rom_path, sizeof(game_path)); -#else - strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); -#endif - } - - FILE * fp = fopen(path, "rb"); - if (fp == NULL) - { - RARCH_ERR("Could not open DOL file %s.\n", path); - return; - } - - fseek(fp, 0, SEEK_END); - size_t size = ftell(fp); - fseek(fp, 0, SEEK_SET); - - // try to allocate a buffer for it. if we can't, fail - void *dol = malloc(size); - if (!dol) - { - RARCH_ERR("Could not execute DOL file %s.\n", path); - fclose(fp); - return; - } - - fread(dol, 1, size, fp); - fclose(fp); - - fatUnmount("carda:"); - fatUnmount("cardb:"); - fatUnmount("sd:"); - fatUnmount("usb:"); - __io_wiisd.shutdown(); - __io_usbstorage.shutdown(); - - // luckily for us, newlib's memmove doesn't allocate a seperate buffer for - // copying in situations of overlap, so it's safe to do this - memmove(EXECUTE_ADDR, dol, size); - DCFlushRange(EXECUTE_ADDR, size); - - dol_copy_argv_path(path, should_load_game ? game_path : NULL); - - size_t booter_size = booter_end - booter_start; - memcpy(BOOTER_ADDR, booter_start, booter_size); - DCFlushRange(BOOTER_ADDR, booter_size); - - RARCH_LOG("jumping to %08x\n", (unsigned) BOOTER_ADDR); - SYS_ResetSystem(SYS_SHUTDOWN,0,0); - __lwp_thread_stopmultitasking((void (*)(void)) BOOTER_ADDR); -} diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 337a2b5f3e..636f777d7b 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -385,12 +385,14 @@ static void system_deinit(void) #endif } +static void system_exec(const char *path, bool should_load_game); + static void system_exitspawn(void) { #ifdef HAVE_RARCH_EXEC #ifdef IS_SALAMANDER - rarch_console_exec(default_paths.libretro_path, false); + system_exec(default_paths.libretro_path, false); cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_GAME); cellSysmoduleLoadModule(CELL_SYSMODULE_FS); @@ -410,18 +412,68 @@ static void system_exitspawn(void) if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN_START_GAME)) should_load_game = true; - rarch_console_exec(core_launch, should_load_game); + system_exec(core_launch, should_load_game); #endif #endif } +#include + +#include +#include +#include +#include +#include +#include + +#include "../../retroarch_logger.h" + +static void system_exec(const char *path, bool should_load_game) +{ + (void)should_load_game; + + RARCH_LOG("Attempt to load executable: [%s].\n", path); + char spawn_data[256]; + char game_path[256]; + (void)game_path; + for(unsigned int i = 0; i < sizeof(spawn_data); ++i) + spawn_data[i] = i & 0xff; + +#ifndef IS_SALAMANDER + if (should_load_game) + strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); +#endif + + const char * const spawn_argv[] = { +#ifndef IS_SALAMANDER + game_path, +#endif + NULL + }; + + SceNpDrmKey * k_licensee = NULL; + int ret = sceNpDrmProcessExitSpawn2(k_licensee, path, (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); + + if(ret < 0) + { + RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n"); + sys_game_process_exitspawn(path, (const char** const)spawn_argv, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); + } + + sceNpTerm(); + sys_net_finalize_network(); + cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP); + cellSysmoduleUnloadModule(CELL_SYSMODULE_NET); +} + const frontend_ctx_driver_t frontend_ctx_ps3 = { get_environment_settings, system_init, system_deinit, system_exitspawn, system_process_args, + system_exec, "ps3", }; diff --git a/frontend/platform/platform_ps3_exec.c b/frontend/platform/platform_ps3_exec.c deleted file mode 100644 index 49007225de..0000000000 --- a/frontend/platform/platform_ps3_exec.c +++ /dev/null @@ -1,64 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * - * RetroArch 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 Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch 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 RetroArch. - * If not, see . - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include "../../retroarch_logger.h" - -static void rarch_console_exec(const char *path, bool should_load_game) -{ - (void)should_load_game; - - RARCH_LOG("Attempt to load executable: [%s].\n", path); - char spawn_data[256]; - char game_path[256]; - (void)game_path; - for(unsigned int i = 0; i < sizeof(spawn_data); ++i) - spawn_data[i] = i & 0xff; - -#ifndef IS_SALAMANDER - if (should_load_game) - strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); -#endif - - const char * const spawn_argv[] = { -#ifndef IS_SALAMANDER - game_path, -#endif - NULL - }; - - SceNpDrmKey * k_licensee = NULL; - int ret = sceNpDrmProcessExitSpawn2(k_licensee, path, (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - - if(ret < 0) - { - RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n"); - sys_game_process_exitspawn(path, (const char** const)spawn_argv, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - } - - sceNpTerm(); - sys_net_finalize_network(); - cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP); - cellSysmoduleUnloadModule(CELL_SYSMODULE_NET); -} diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index d0a902b253..071ccc1c90 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -112,3 +112,13 @@ static void system_deinit(void) static void system_exitspawn(void) { } + +const frontend_ctx_driver_t frontend_ctx_xdk = { + get_environment_settings, + system_init, + system_deinit, + system_exitspawn, + system_process_args, + NULL, + "psp", +}; diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 60ec8e63d9..10a29aaeed 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -314,11 +314,49 @@ static void system_exitspawn(void) #endif } +#include + +#include + +#include "../../retroarch_logger.h" + +static void system_exec(const char *path, bool should_load_game) +{ + (void)should_load_game; + + RARCH_LOG("Attempt to load executable: [%s].\n", path); +#ifdef IS_SALAMANDER + XLaunchNewImage(path, NULL); +#else +#if defined(_XBOX1) + LAUNCH_DATA ptr; + memset(&ptr, 0, sizeof(ptr)); + if (should_load_game) + { + snprintf((char*)ptr.Data, sizeof(ptr.Data), "%s", g_extern.fullpath); + XLaunchNewImage(path, &ptr); + } + else + XLaunchNewImage(path, NULL); +#elif defined(_XBOX360) + char game_path[1024]; + if (should_load_game) + { + strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); + XSetLaunchData(game_path, MAX_LAUNCH_DATA_SIZE); + } + XLaunchNewImage(path, NULL); +#endif +#endif + +} + const frontend_ctx_driver_t frontend_ctx_xdk = { get_environment_settings, system_init, system_deinit, system_exitspawn, system_process_args, + system_exec, "xdk", }; diff --git a/frontend/platform/platform_xdk_exec.c b/frontend/platform/platform_xdk_exec.c deleted file mode 100644 index 89ae0146a2..0000000000 --- a/frontend/platform/platform_xdk_exec.c +++ /dev/null @@ -1,52 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * - * RetroArch 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 Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch 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 RetroArch. - * If not, see . - */ - -#include - -#include - -#include "../../retroarch_logger.h" - -static void rarch_console_exec(const char *path, bool should_load_game) -{ - (void)should_load_game; - - RARCH_LOG("Attempt to load executable: [%s].\n", path); -#ifdef IS_SALAMANDER - XLaunchNewImage(path, NULL); -#else -#if defined(_XBOX1) - LAUNCH_DATA ptr; - memset(&ptr, 0, sizeof(ptr)); - if (should_load_game) - { - snprintf((char*)ptr.Data, sizeof(ptr.Data), "%s", g_extern.fullpath); - XLaunchNewImage(path, &ptr); - } - else - XLaunchNewImage(path, NULL); -#elif defined(_XBOX360) - char game_path[1024]; - if (should_load_game) - { - strlcpy(game_path, g_extern.fullpath, sizeof(game_path)); - XSetLaunchData(game_path, MAX_LAUNCH_DATA_SIZE); - } - XLaunchNewImage(path, NULL); -#endif -#endif - -} From 4eb283b7e30dc5b4c89d57b5914a7001de09bc76 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 12:59:23 +0200 Subject: [PATCH 011/252] Cleanups to frontend_ctx --- frontend/frontend.c | 25 +++++++------------------ frontend/frontend_context.h | 6 ++++++ frontend/platform/platform_xdk.c | 1 - griffin/griffin.c | 14 ++++++++++++++ 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 7fa70d6514..c25f1edfcb 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -18,12 +18,6 @@ #include "../conf/config_file.h" #include "../file.h" -#if defined(HAVE_RGUI) -#include "menu/rgui.h" -#elif defined(HAVE_RMENU) -#include "menu/rmenu.h" -#endif - #if defined(RARCH_CONSOLE) #include "frontend_context.h" frontend_ctx_driver_t *frontend_ctx; @@ -31,14 +25,6 @@ frontend_ctx_driver_t *frontend_ctx; #if defined(__QNX__) #include -#elif defined(__CELLOS_LV2__) -#include "platform/platform_ps3.c" -#elif defined(GEKKO) -#include "platform/platform_gx.c" -#elif defined(_XBOX) -#include "platform/platform_xdk.c" -#elif defined(PSP) -#include "platform/platform_psp.c" #elif defined(__APPLE__) #include #include @@ -114,7 +100,8 @@ static void system_preinit(void) //Initialize BPS libraries bps_initialize(); #elif defined(RARCH_CONSOLE) - frontend_ctx->init(); + if (frontend_ctx->init) + frontend_ctx->init(); #endif } @@ -303,7 +290,8 @@ int rarch_main(int argc, char *argv[]) menu_init(); #ifdef RARCH_CONSOLE - frontend_ctx->process_args(argc, argv); + if (frontend_ctx->process_args) + frontend_ctx->process_args(argc, argv); g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; #else g_extern.lifecycle_mode_state |= 1ULL << MODE_GAME; @@ -432,9 +420,10 @@ int rarch_main(int argc, char *argv[]) fclose(g_extern.log_file); g_extern.log_file = NULL; #endif - frontend_ctx->deinit(); + if (frontend_ctx->deinit) + frontend_ctx->deinit(); - if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN)) + if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN) && frontend_ctx->exitspawn) frontend_ctx->exitspawn(); #endif diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index eeaacf2e8e..c4b5ab720e 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -24,6 +24,12 @@ #include "../config.h" #endif +#if defined(HAVE_RGUI) +#include "menu/rgui.h" +#elif defined(HAVE_RMENU) +#include "menu/rmenu.h" +#endif + typedef struct frontend_ctx_driver { void (*get_environment_settings)(int argc, char *argv[]); diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 10a29aaeed..a6c53cf282 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -348,7 +348,6 @@ static void system_exec(const char *path, bool should_load_game) XLaunchNewImage(path, NULL); #endif #endif - } const frontend_ctx_driver_t frontend_ctx_xdk = { diff --git a/griffin/griffin.c b/griffin/griffin.c index 4f165f6359..a20f74cd0d 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -440,10 +440,24 @@ REWIND ============================================================ */ #include "../rewind.c" +/*============================================================ +FRONTEND +============================================================ */ + #if defined(RARCH_CONSOLE) #include "../frontend/frontend_context.c" #endif +#if defined(__CELLOS_LV2__) +#include "../frontend/platform/platform_ps3.c" +#elif defined(GEKKO) +#include "../frontend/platform/platform_gx.c" +#elif defined(_XBOX) +#include "../frontend/platform/platform_xdk.c" +#elif defined(PSP) +#include "../frontend/platform/platform_psp.c" +#endif + /*============================================================ MAIN ============================================================ */ From 78f757e0dc51894f8eaa3478489b6affb83ed10c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 13:07:26 +0200 Subject: [PATCH 012/252] Have get_environment_settings call go through frontend_ctx function pointer --- frontend/frontend.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index c25f1edfcb..8410ae43f9 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -125,7 +125,8 @@ static void rarch_get_environment(int argc, char *argv[]) #endif g_extern.verbose = true; - get_environment_settings(argc, argv); + if (frontend_ctx->get_environment_settings) + frontend_ctx->get_environment_settings(argc, argv); MAKE_DIR(default_paths.port_dir, "port_dir"); MAKE_DIR(default_paths.system_dir, "system_dir"); From 40d5fcc4720b923cf48669b4df82c23f9f9533da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 16:36:55 +0200 Subject: [PATCH 013/252] Add shutdown to frontend_context.c - bake frontend_context in for all versions --- Makefile | 1 + Makefile.win | 1 + frontend/frontend.c | 53 +++++++++++--------------------- frontend/frontend_context.h | 1 + frontend/platform/platform_gx.c | 21 ++++++------- frontend/platform/platform_ps3.c | 17 +++++----- frontend/platform/platform_psp.c | 17 +++++----- frontend/platform/platform_xdk.c | 15 +++++---- 8 files changed, 52 insertions(+), 74 deletions(-) diff --git a/Makefile b/Makefile index af0873898a..184f81b194 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ include config.mk TARGET = retroarch tools/retroarch-joyconfig tools/retrolaunch/retrolaunch OBJ = frontend/frontend.o \ + frontend/frontend_context.o \ retroarch.o \ file.o \ file_path.o \ diff --git a/Makefile.win b/Makefile.win index 862bb534ca..780ba3fb8c 100644 --- a/Makefile.win +++ b/Makefile.win @@ -2,6 +2,7 @@ TARGET = retroarch.exe JTARGET = tools/retroarch-joyconfig.exe OBJ = frontend/frontend.o \ + frontend/frontend_context.o \ retroarch.o \ file.o \ file_path.o \ diff --git a/frontend/frontend.c b/frontend/frontend.c index 8410ae43f9..bb7f5880a8 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -18,10 +18,8 @@ #include "../conf/config_file.h" #include "../file.h" -#if defined(RARCH_CONSOLE) #include "frontend_context.h" frontend_ctx_driver_t *frontend_ctx; -#endif #if defined(__QNX__) #include @@ -94,17 +92,6 @@ static bool libretro_install_core(const char *path_prefix, } #endif -static void system_preinit(void) -{ -#if defined(__QNX__) && !defined(HAVE_BB10) - //Initialize BPS libraries - bps_initialize(); -#elif defined(RARCH_CONSOLE) - if (frontend_ctx->init) - frontend_ctx->init(); -#endif -} - static void rarch_get_environment(int argc, char *argv[]) { #if defined(__QNX__) && !defined(HAVE_BB10) @@ -125,7 +112,7 @@ static void rarch_get_environment(int argc, char *argv[]) #endif g_extern.verbose = true; - if (frontend_ctx->get_environment_settings) + if (frontend_ctx && frontend_ctx->get_environment_settings) frontend_ctx->get_environment_settings(argc, argv); MAKE_DIR(default_paths.port_dir, "port_dir"); @@ -184,16 +171,6 @@ static void system_shutdown(void) #endif } -static int system_ctx_init(void) -{ -#ifdef RARCH_CONSOLE - if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) - return -1; -#endif - - return 0; -} - #if defined(__APPLE__) static pthread_mutex_t apple_event_queue_lock = PTHREAD_MUTEX_INITIALIZER; @@ -250,10 +227,16 @@ void* rarch_main(void* args) int rarch_main(int argc, char *argv[]) #endif { - if (system_ctx_init() != 0) - return 0; + if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) + RARCH_WARN("Could not find valid frontend context.\n"); - system_preinit(); +#if defined(__QNX__) && !defined(HAVE_BB10) + //Initialize BPS libraries + bps_initialize(); +#endif + + if (frontend_ctx && frontend_ctx->init) + frontend_ctx->init(); #if !defined(__APPLE__) rarch_main_clear_state(); @@ -290,9 +273,10 @@ int rarch_main(int argc, char *argv[]) menu_init(); -#ifdef RARCH_CONSOLE - if (frontend_ctx->process_args) + if (frontend_ctx && frontend_ctx->process_args) frontend_ctx->process_args(argc, argv); + +#ifdef RARCH_CONSOLE g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; #else g_extern.lifecycle_mode_state |= 1ULL << MODE_GAME; @@ -336,10 +320,9 @@ int rarch_main(int argc, char *argv[]) { #ifdef RARCH_CONSOLE driver.input->poll(NULL); - +#endif if (driver.video_poke->set_aspect_ratio) driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); -#endif while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate()) { @@ -413,7 +396,6 @@ int rarch_main(int argc, char *argv[]) rarch_perf_log(); #endif -#ifdef RARCH_CONSOLE #if defined(HAVE_LOGGER) logger_shutdown(); #elif defined(HAVE_FILE_LOGGER) @@ -421,12 +403,13 @@ int rarch_main(int argc, char *argv[]) fclose(g_extern.log_file); g_extern.log_file = NULL; #endif - if (frontend_ctx->deinit) + + if (frontend_ctx && frontend_ctx->deinit) frontend_ctx->deinit(); - if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN) && frontend_ctx->exitspawn) + if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN) && frontend_ctx + && frontend_ctx->exitspawn) frontend_ctx->exitspawn(); -#endif rarch_main_clear_state(); diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index c4b5ab720e..0a417da946 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -40,6 +40,7 @@ typedef struct frontend_ctx_driver int (*process_args)(int argc, char *argv[]); void (*exec)(const char *, bool); + void (*shutdown)(bool); // Human readable string. const char *ident; diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 9e39b9aee3..7844c5952d 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -444,11 +444,13 @@ static void dol_copy_argv_path(const char *dolpath, const char *argpath) argv->length = len; DCFlushRange(ARGS_ADDR, sizeof(struct __argv) + argv->length); } +#endif // WARNING: after we move any data into EXECUTE_ADDR, we can no longer use any // heap memory and are restricted to the stack only static void system_exec(const char *path, bool should_load_game) { +#ifdef HW_RVL char game_path[PATH_MAX]; RARCH_LOG("Attempt to load executable: [%s] %d.\n", path, sizeof(game_path)); @@ -507,19 +509,16 @@ static void system_exec(const char *path, bool should_load_game) RARCH_LOG("jumping to %08x\n", (unsigned) BOOTER_ADDR); SYS_ResetSystem(SYS_SHUTDOWN,0,0); __lwp_thread_stopmultitasking((void (*)(void)) BOOTER_ADDR); -} #endif +} const frontend_ctx_driver_t frontend_ctx_gx = { - get_environment_settings, - system_init, - system_deinit, - system_exitspawn, - system_process_args, -#ifdef HW_RVL - system_exec, -#else - NULL, -#endif + get_environment_settings, /* get_environment_settings */ + system_init, /* init */ + system_deinit, /* deinit */ + system_exitspawn, /* exitspawn */ + system_process_args, /* process_args */ + system_exec, /* exec */ + NULL, /* shutdown */ "gx", }; diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 636f777d7b..3928aaf1fb 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -110,13 +110,9 @@ static void salamander_init_settings(void) } if (!config_file_exists || !strcmp(default_paths.libretro_path, "")) - { find_and_set_first_file(); - } else - { RARCH_LOG("Start [%s] found in retroarch.cfg.\n", default_paths.libretro_path); - } if (!config_file_exists) { @@ -469,11 +465,12 @@ static void system_exec(const char *path, bool should_load_game) } const frontend_ctx_driver_t frontend_ctx_ps3 = { - get_environment_settings, - system_init, - system_deinit, - system_exitspawn, - system_process_args, - system_exec, + get_environment_settings, /* get_environment_settings */ + system_init, /* init */ + system_deinit, /* deinit */ + system_exitspawn, /* exitspawn */ + system_process_args, /* process_args */ + system_exec, /* exec */ + NULL, /* shutdown */ "ps3", }; diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index 071ccc1c90..c8a90f6fe9 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -109,16 +109,13 @@ static void system_deinit(void) sceKernelExitGame(); } -static void system_exitspawn(void) -{ -} - const frontend_ctx_driver_t frontend_ctx_xdk = { - get_environment_settings, - system_init, - system_deinit, - system_exitspawn, - system_process_args, - NULL, + get_environment_settings, /* get_environment_settings */ + system_init, /* init */ + system_deinit, /* deinit */ + NULL, /* exitspawn */ + system_process_args, /* process_args */ + NULL, /* exec */ + NULL, /* shutdown */ "psp", }; diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index a6c53cf282..2182fcb0bb 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -299,8 +299,6 @@ static int system_process_args(int argc, char *argv[]) return 0; } -static void system_deinit(void) {} - static void system_exitspawn(void) { #ifdef IS_SALAMANDER @@ -351,11 +349,12 @@ static void system_exec(const char *path, bool should_load_game) } const frontend_ctx_driver_t frontend_ctx_xdk = { - get_environment_settings, - system_init, - system_deinit, - system_exitspawn, - system_process_args, - system_exec, + get_environment_settings, /* get_environment_settings */ + system_init, /* init */ + NULL, /* deinit */ + system_exitspawn, /* exitspawn */ + system_process_args, /* process_args */ + system_exec, /* exec */ + NULL, /* shutdown */ "xdk", }; From 2c7986f4fcc8f9251da8a8e4ed8b42192397e1b3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:02:13 +0200 Subject: [PATCH 014/252] Add frontend_context.c to MSVC solution as well --- msvc/msvc-2010/RetroArch-msvc2010.vcxproj | 2 + .../RetroArch-msvc2010.vcxproj.filters | 254 ------------------ 2 files changed, 2 insertions(+), 254 deletions(-) delete mode 100644 msvc/msvc-2010/RetroArch-msvc2010.vcxproj.filters diff --git a/msvc/msvc-2010/RetroArch-msvc2010.vcxproj b/msvc/msvc-2010/RetroArch-msvc2010.vcxproj index 0df57f9551..17c46dec6d 100644 --- a/msvc/msvc-2010/RetroArch-msvc2010.vcxproj +++ b/msvc/msvc-2010/RetroArch-msvc2010.vcxproj @@ -262,6 +262,8 @@ + + diff --git a/msvc/msvc-2010/RetroArch-msvc2010.vcxproj.filters b/msvc/msvc-2010/RetroArch-msvc2010.vcxproj.filters deleted file mode 100644 index 83ab26421d..0000000000 --- a/msvc/msvc-2010/RetroArch-msvc2010.vcxproj.filters +++ /dev/null @@ -1,254 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {ddc648c9-0965-4fbf-bfcd-4ece568acebe} - - - {547c32fb-8ea0-46d7-a80c-9dad57f9893e} - - - {67110ea9-781d-4a95-a61e-79864b7a8cec} - - - {7aabbafd-18bf-4c51-abf8-01cefd46b2e3} - - - {51dd4d92-c39d-4eb3-83a1-54ebb63bcf00} - - - {7ca1fa21-74fe-4fc2-afff-92b1c2fd15ed} - - - {7b1aab1c-310c-48fd-b699-e3a6e69b0b8c} - - - {9c758b58-d6ce-4b66-8b17-8cc7ceb78c82} - - - {eaaf6f28-b845-41f3-8211-e069a1ac1063} - - - {ae4f70af-fc87-4c8d-84a5-b2c4cd57e722} - - - {a1975595-d469-4d96-81bf-d6a4f0be32f5} - - - {a1302353-aa00-4f85-a62f-3c40160a5fa3} - - - {a3ec9cd6-b3f2-4711-9585-e09c8dbb63ef} - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\audio - - - Source Files\audio - - - Source Files\audio - - - Source Files\gfx\context - - - Source Files\gfx - - - Source Files\gfx - - - Source Files\gfx - - - Source Files\gfx - - - Source Files\gfx - - - Source Files\input - - - Source Files\input - - - Source Files\conf - - - Source Files\compat - - - Source Files\gfx\scaler - - - Source Files\gfx\scaler - - - Source Files\gfx\scaler - - - Source Files\gfx\scaler - - - Source Files\gfx\math - - - Source Files\gfx\math - - - Source Files\gfx\d3d9 - - - Source Files\gfx\d3d9 - - - Source Files\gfx - - - Source Files\gfx\fonts - - - Source Files\audio - - - Source Files\gfx\fonts - - - Source Files\gfx\fonts - - - Source Files\gfx\fonts - - - Source Files\audio - - - Source Files\compat - - - Source Files\audio - - - Source Files - - - Source Files\gfx - - - Source Files - - - Source Files\gfx\rpng - - - Source Files\deps - - - Source Files\gfx - - - Source Files\input - - - Source Files - - - Source Files\gfx - - - Source Files - - - Source Files\rgui - - - Source Files\rgui - - - Source Files - - - Source Files\rgui - - - - - Header Files - - - - - Resource Files - - - \ No newline at end of file From 003635499ffc2c1cd29b71df8fc7df3102c65ab6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:16:46 +0200 Subject: [PATCH 015/252] Add QNX frontend context file --- frontend/frontend.c | 67 ++++++++++++-------------------- frontend/frontend_context.c | 3 ++ frontend/frontend_context.h | 7 +++- frontend/platform/platform_gx.c | 8 ++++ frontend/platform/platform_ps3.c | 8 ++++ frontend/platform/platform_psp.c | 17 ++++---- frontend/platform/platform_qnx.c | 59 ++++++++++++++++++++++++++++ frontend/platform/platform_xdk.c | 8 ++++ griffin/griffin.c | 2 + 9 files changed, 127 insertions(+), 52 deletions(-) create mode 100644 frontend/platform/platform_qnx.c diff --git a/frontend/frontend.c b/frontend/frontend.c index bb7f5880a8..256f71f0ca 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -21,9 +21,7 @@ #include "frontend_context.h" frontend_ctx_driver_t *frontend_ctx; -#if defined(__QNX__) -#include -#elif defined(__APPLE__) +#if defined(__APPLE__) #include #include #include "../apple/RetroArch/rarch_wrapper.h" @@ -76,53 +74,40 @@ static bool libretro_install_core(const char *path_prefix, return true; } -#define MAKE_DIR(x, name) { \ - RARCH_LOG("Checking directory name %s [%s]\n", name, x); \ - if (strlen(x) > 0) \ - { \ - if (!path_is_directory((x)) )\ - { \ - RARCH_WARN("Directory \"%s\" does not exists, creating\n", (x)); \ - if (mkdir((x), 0777) != 0) \ - { \ - RARCH_ERR("Could not create directory \"%s\"\n", (x)); \ - } \ - } \ - } \ +#endif + +#ifdef RARCH_CONSOLE +void rarch_make_dir(const char *x, const char *name) +{ + RARCH_LOG("Checking directory name %s [%s]\n", name, x); + if (strlen(x) > 0) + { + if (!path_is_directory(x)) + { + RARCH_WARN("Directory \"%s\" does not exists, creating\n", x); + if (mkdir((x), 0777) != 0) + RARCH_ERR("Could not create directory \"%s\"\n", x); + } + } } #endif static void rarch_get_environment(int argc, char *argv[]) { -#if defined(__QNX__) && !defined(HAVE_BB10) - strlcpy(g_settings.libretro, "app/native/lib", sizeof(g_settings.libretro)); - strlcpy(g_extern.config_path, "app/native/retroarch.cfg", sizeof(g_extern.config_path)); - strlcpy(g_settings.video.shader_dir, "app/native/shaders_glsl", sizeof(g_settings.video.shader_dir)); - - config_load(); - g_extern.verbose = true; -#elif defined(RARCH_CONSOLE) + #if defined(HAVE_LOGGER) - g_extern.verbose = true; logger_init(); #elif defined(HAVE_FILE_LOGGER) - g_extern.verbose = true; g_extern.log_file = fopen("/retroarch-log.txt", "w"); #endif - g_extern.verbose = true; - if (frontend_ctx && frontend_ctx->get_environment_settings) - frontend_ctx->get_environment_settings(argc, argv); - - MAKE_DIR(default_paths.port_dir, "port_dir"); - MAKE_DIR(default_paths.system_dir, "system_dir"); - MAKE_DIR(default_paths.savestate_dir, "savestate_dir"); - MAKE_DIR(default_paths.sram_dir, "sram_dir"); - MAKE_DIR(default_paths.input_presets_dir, "input_presets_dir"); + if (frontend_ctx && frontend_ctx->environment_get) + frontend_ctx->environment_get(argc, argv); config_load(); +#if defined(RARCH_CONSOLE) init_libretro_sym(false); rarch_init_system_info(); @@ -164,9 +149,10 @@ static void rarch_get_environment(int argc, char *argv[]) static void system_shutdown(void) { -#if defined(__QNX__) - bps_shutdown(); -#elif defined(__APPLE__) + if (frontend_ctx && frontend_ctx->shutdown) + frontend_ctx->shutdown(true); + +#if defined(__APPLE__) dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); #endif } @@ -230,11 +216,6 @@ int rarch_main(int argc, char *argv[]) if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) RARCH_WARN("Could not find valid frontend context.\n"); -#if defined(__QNX__) && !defined(HAVE_BB10) - //Initialize BPS libraries - bps_initialize(); -#endif - if (frontend_ctx && frontend_ctx->init) frontend_ctx->init(); diff --git a/frontend/frontend_context.c b/frontend/frontend_context.c index 9b766a9cae..1b51d9a90f 100644 --- a/frontend/frontend_context.c +++ b/frontend/frontend_context.c @@ -30,6 +30,9 @@ static const frontend_ctx_driver_t *frontend_ctx_drivers[] = { #if defined(GEKKO) &frontend_ctx_gx, #endif +#if defined(__QNX__) + &frontend_ctx_qnx, +#endif }; const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index 0a417da946..19c42c8934 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -32,7 +32,7 @@ typedef struct frontend_ctx_driver { - void (*get_environment_settings)(int argc, char *argv[]); + void (*environment_get)(int argc, char *argv[]); void (*init)(void); void (*deinit)(void); @@ -49,8 +49,13 @@ typedef struct frontend_ctx_driver extern const frontend_ctx_driver_t frontend_ctx_gx; extern const frontend_ctx_driver_t frontend_ctx_ps3; extern const frontend_ctx_driver_t frontend_ctx_xdk; +extern const frontend_ctx_driver_t frontend_ctx_qnx; const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. const frontend_ctx_driver_t *frontend_ctx_init_first(void); // Finds first suitable driver and initializes. +#ifdef RARCH_CONSOLE +extern void rarch_make_dir(const char *x, const char *name); +#endif + #endif diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 7844c5952d..09fe66d390 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -265,6 +265,14 @@ static void get_environment_settings(int argc, char *argv[]) else gx_rom_path[0] = '\0'; #endif + +#ifndef IS_SALAMANDER + rarch_make_dir(default_paths.port_dir, "port_dir"); + rarch_make_dir(default_paths.system_dir, "system_dir"); + rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); + rarch_make_dir(default_paths.sram_dir, "sram_dir"); + rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); +#endif } extern void __exception_setreload(int t); diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 3928aaf1fb..70a29ba855 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -277,6 +277,14 @@ static void get_environment_settings(int argc, char *argv[]) snprintf(g_extern.config_path, sizeof(g_extern.config_path), "%s/retroarch.cfg", default_paths.port_dir); #endif } + +#ifndef IS_SALAMANDER + rarch_make_dir(default_paths.port_dir, "port_dir"); + rarch_make_dir(default_paths.system_dir, "system_dir"); + rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); + rarch_make_dir(default_paths.sram_dir, "sram_dir"); + rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); +#endif } static void system_init(void) diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index c8a90f6fe9..83e5caaf46 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -67,6 +67,14 @@ static void get_environment_settings(int argc, char *argv[]) snprintf(default_paths.input_presets_dir, sizeof(default_paths.input_presets_dir), "%s/presets", default_paths.core_dir); snprintf(default_paths.border_dir, sizeof(default_paths.border_dir), "%s/borders", default_paths.core_dir); snprintf(g_extern.config_path, sizeof(g_extern.config_path), "%s/retroarch.cfg", default_paths.port_dir); + +#ifndef IS_SALAMANDER + rarch_make_dir(default_paths.port_dir, "port_dir"); + rarch_make_dir(default_paths.system_dir, "system_dir"); + rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); + rarch_make_dir(default_paths.sram_dir, "sram_dir"); + rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); +#endif } int callback_thread(SceSize args, void *argp) @@ -97,13 +105,6 @@ static void system_init(void) setup_callback(); } -static int system_process_args(int argc, char *argv[]) -{ - (void)argc; - (void)argv; - return 0; -} - static void system_deinit(void) { sceKernelExitGame(); @@ -114,7 +115,7 @@ const frontend_ctx_driver_t frontend_ctx_xdk = { system_init, /* init */ system_deinit, /* deinit */ NULL, /* exitspawn */ - system_process_args, /* process_args */ + NULL, /* process_args */ NULL, /* exec */ NULL, /* shutdown */ "psp", diff --git a/frontend/platform/platform_qnx.c b/frontend/platform/platform_qnx.c new file mode 100644 index 0000000000..b8dee63622 --- /dev/null +++ b/frontend/platform/platform_qnx.c @@ -0,0 +1,59 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include + +#include +#include "../../boolean.h" +#include +#include + +static void get_environment_settings(int argc, char *argv[]) +{ + (void)argc; + (void)argv; + +/* FIXME - should this apply for both BB10 and PB? */ +#if defined(__QNX__) && !defined(HAVE_BB10) + strlcpy(g_settings.libretro, "app/native/lib", sizeof(g_settings.libretro)); + strlcpy(g_extern.config_path, "app/native/retroarch.cfg", sizeof(g_extern.config_path)); + strlcpy(g_settings.video.shader_dir, "app/native/shaders_glsl", sizeof(g_settings.video.shader_dir)); +#endif +} + +static void system_init(void) +{ +/* FIXME - should this apply for both BB10 and PB? */ +#if defined(__QNX__) && !defined(HAVE_BB10) + bps_initialize(); +#endif +} + +static void system_shutdown(void) +{ + bps_shutdown(); +} + +const frontend_ctx_driver_t frontend_ctx_xdk = { + get_environment_settings, /* get_environment_settings */ + system_init, /* init */ + NULL, /* deinit */ + NULL, /* exitspawn */ + NULL, /* process_args */ + NULL, /* exec */ + system_shutdown, /* shutdown */ + "qnx", +}; diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 2182fcb0bb..17c9ff7eec 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -247,6 +247,14 @@ static void get_environment_settings(int argc, char *argv[]) strlcpy(default_paths.system_dir, "game:\\system", sizeof(default_paths.system_dir)); strlcpy(default_paths.filebrowser_startup_dir, "game:", sizeof(default_paths.filebrowser_startup_dir)); #endif + +#ifndef IS_SALAMANDER + rarch_make_dir(default_paths.port_dir, "port_dir"); + rarch_make_dir(default_paths.system_dir, "system_dir"); + rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); + rarch_make_dir(default_paths.sram_dir, "sram_dir"); + rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); +#endif } static void system_init(void) diff --git a/griffin/griffin.c b/griffin/griffin.c index a20f74cd0d..3ccaaea4b0 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -456,6 +456,8 @@ FRONTEND #include "../frontend/platform/platform_xdk.c" #elif defined(PSP) #include "../frontend/platform/platform_psp.c" +#elif defined(__QNX__) +#include "../frontend/platform/platform_qnx.c" #endif /*============================================================ From ad7884e441a70da52e61a007b028328d8c07f390 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:18:18 +0200 Subject: [PATCH 016/252] frontend.c - cut down on one ifdef --- frontend/frontend.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 256f71f0ca..f40252ae3e 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -74,9 +74,6 @@ static bool libretro_install_core(const char *path_prefix, return true; } -#endif - -#ifdef RARCH_CONSOLE void rarch_make_dir(const char *x, const char *name) { RARCH_LOG("Checking directory name %s [%s]\n", name, x); @@ -90,6 +87,7 @@ void rarch_make_dir(const char *x, const char *name) } } } + #endif static void rarch_get_environment(int argc, char *argv[]) From 484c5b83413a25ad123e1ab38b765eb601dd97c1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:30:05 +0200 Subject: [PATCH 017/252] frontend.c - cleanups --- frontend/frontend.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index f40252ae3e..5b161db490 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -145,16 +145,6 @@ static void rarch_get_environment(int argc, char *argv[]) #endif } -static void system_shutdown(void) -{ - if (frontend_ctx && frontend_ctx->shutdown) - frontend_ctx->shutdown(true); - -#if defined(__APPLE__) - dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); -#endif -} - #if defined(__APPLE__) static pthread_mutex_t apple_event_queue_lock = PTHREAD_MUTEX_INITIALIZER; @@ -211,8 +201,7 @@ void* rarch_main(void* args) int rarch_main(int argc, char *argv[]) #endif { - if ((frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first()) == NULL) - RARCH_WARN("Could not find valid frontend context.\n"); + frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first(); if (frontend_ctx && frontend_ctx->init) frontend_ctx->init(); @@ -392,7 +381,12 @@ int rarch_main(int argc, char *argv[]) rarch_main_clear_state(); - system_shutdown(); + if (frontend_ctx && frontend_ctx->shutdown) + frontend_ctx->shutdown(true); + +#if defined(__APPLE__) + dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); +#endif return 0; } From a9dd629fe6423149c01dddab2fbf390e7f43b8b1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:32:15 +0200 Subject: [PATCH 018/252] Uniquely name each frontend context driver --- frontend/platform/platform_psp.c | 2 +- frontend/platform/platform_qnx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index 83e5caaf46..02b419601b 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -110,7 +110,7 @@ static void system_deinit(void) sceKernelExitGame(); } -const frontend_ctx_driver_t frontend_ctx_xdk = { +const frontend_ctx_driver_t frontend_ctx_psp = { get_environment_settings, /* get_environment_settings */ system_init, /* init */ system_deinit, /* deinit */ diff --git a/frontend/platform/platform_qnx.c b/frontend/platform/platform_qnx.c index b8dee63622..3f3533c65a 100644 --- a/frontend/platform/platform_qnx.c +++ b/frontend/platform/platform_qnx.c @@ -47,7 +47,7 @@ static void system_shutdown(void) bps_shutdown(); } -const frontend_ctx_driver_t frontend_ctx_xdk = { +const frontend_ctx_driver_t frontend_ctx_qnx = { get_environment_settings, /* get_environment_settings */ system_init, /* init */ NULL, /* deinit */ From ac8f57e679662163b5a1db6cf071c631f8b29c81 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:40:21 +0200 Subject: [PATCH 019/252] Add platform_apple.c frontend driver --- frontend/frontend.c | 80 +++---------------------- frontend/frontend_context.c | 3 + frontend/frontend_context.h | 1 + frontend/platform/platform_apple.c | 95 ++++++++++++++++++++++++++++++ griffin/griffin.c | 2 + 5 files changed, 109 insertions(+), 72 deletions(-) create mode 100644 frontend/platform/platform_apple.c diff --git a/frontend/frontend.c b/frontend/frontend.c index 5b161db490..8c3ab8ab8f 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -21,12 +21,6 @@ #include "frontend_context.h" frontend_ctx_driver_t *frontend_ctx; -#if defined(__APPLE__) -#include -#include -#include "../apple/RetroArch/rarch_wrapper.h" -#endif - #if defined(HAVE_RGUI) || defined(HAVE_RMENU) || defined(HAVE_RMENU_XUI) #define HAVE_MENU #else @@ -146,56 +140,6 @@ static void rarch_get_environment(int argc, char *argv[]) } #if defined(__APPLE__) -static pthread_mutex_t apple_event_queue_lock = PTHREAD_MUTEX_INITIALIZER; - -static struct -{ - void (*function)(void*); - void* userdata; -} apple_event_queue[16]; - -static uint32_t apple_event_queue_size; - -void apple_frontend_post_event(void (*fn)(void*), void* userdata) -{ - pthread_mutex_lock(&apple_event_queue_lock); - - if (apple_event_queue_size < 16) - { - apple_event_queue[apple_event_queue_size].function = fn; - apple_event_queue[apple_event_queue_size].userdata = userdata; - apple_event_queue_size ++; - } - - pthread_mutex_unlock(&apple_event_queue_lock); -} - -static void apple_free_main_wrap(struct rarch_main_wrap* wrap) -{ - if (wrap) - { - free((char*)wrap->libretro_path); - free((char*)wrap->rom_path); - free((char*)wrap->sram_path); - free((char*)wrap->state_path); - free((char*)wrap->config_path); - } - - free(wrap); -} - -static void process_events(void) -{ - pthread_mutex_lock(&apple_event_queue_lock); - - for (int i = 0; i < apple_event_queue_size; i ++) - apple_event_queue[i].function(apple_event_queue[i].userdata); - - apple_event_queue_size = 0; - - pthread_mutex_unlock(&apple_event_queue_lock); -} - void* rarch_main(void* args) #else int rarch_main(int argc, char *argv[]) @@ -273,11 +217,9 @@ int rarch_main(int argc, char *argv[]) #if defined(RARCH_CONSOLE) || defined(__QNX__) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); #else -#if defined(__APPLE__) - // This needs to be here to tell the GUI thread that the emulator loop has stopped, - // the (void*)1 makes it display the 'Failed to load game' message. - dispatch_async_f(dispatch_get_main_queue(), (void*)1, apple_rarch_exited); -#endif + if (frontend_ctx && frontend_ctx->shutdown) + frontend_ctx->shutdown(true); + return 1; #endif } @@ -294,9 +236,8 @@ int rarch_main(int argc, char *argv[]) while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate()) { -#if defined(__APPLE__) - process_events(); -#endif + if (frontend_ctx && frontend_ctx->process_events) + frontend_ctx->process_events(); if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME))) break; @@ -314,9 +255,8 @@ int rarch_main(int argc, char *argv[]) while (!g_extern.system.shutdown && menu_iterate()) { -#if defined(__APPLE__) - process_events(); -#endif + if (frontend_ctx && frontend_ctx->process_events) + frontend_ctx->process_events(); if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU))) break; @@ -382,11 +322,7 @@ int rarch_main(int argc, char *argv[]) rarch_main_clear_state(); if (frontend_ctx && frontend_ctx->shutdown) - frontend_ctx->shutdown(true); - -#if defined(__APPLE__) - dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); -#endif + frontend_ctx->shutdown(false); return 0; } diff --git a/frontend/frontend_context.c b/frontend/frontend_context.c index 1b51d9a90f..24fa1dd161 100644 --- a/frontend/frontend_context.c +++ b/frontend/frontend_context.c @@ -33,6 +33,9 @@ static const frontend_ctx_driver_t *frontend_ctx_drivers[] = { #if defined(__QNX__) &frontend_ctx_qnx, #endif +#if defined(IOS) || defined(OSX) + &frontend_ctx_apple, +#endif }; const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index 19c42c8934..f5334412c6 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -50,6 +50,7 @@ extern const frontend_ctx_driver_t frontend_ctx_gx; extern const frontend_ctx_driver_t frontend_ctx_ps3; extern const frontend_ctx_driver_t frontend_ctx_xdk; extern const frontend_ctx_driver_t frontend_ctx_qnx; +extern const frontend_ctx_driver_t frontend_ctx_apple; const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. const frontend_ctx_driver_t *frontend_ctx_init_first(void); // Finds first suitable driver and initializes. diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c new file mode 100644 index 0000000000..49f0b418c7 --- /dev/null +++ b/frontend/platform/platform_apple.c @@ -0,0 +1,95 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include +#include +#include "../apple/RetroArch/rarch_wrapper.h" + +#include +#include "../../boolean.h" +#include +#include + +static pthread_mutex_t apple_event_queue_lock = PTHREAD_MUTEX_INITIALIZER; + +static struct +{ + void (*function)(void*); + void* userdata; +} apple_event_queue[16]; + +static uint32_t apple_event_queue_size; + +void apple_frontend_post_event(void (*fn)(void*), void* userdata) +{ + pthread_mutex_lock(&apple_event_queue_lock); + + if (apple_event_queue_size < 16) + { + apple_event_queue[apple_event_queue_size].function = fn; + apple_event_queue[apple_event_queue_size].userdata = userdata; + apple_event_queue_size ++; + } + + pthread_mutex_unlock(&apple_event_queue_lock); +} + +static void apple_free_main_wrap(struct rarch_main_wrap* wrap) +{ + if (wrap) + { + free((char*)wrap->libretro_path); + free((char*)wrap->rom_path); + free((char*)wrap->sram_path); + free((char*)wrap->state_path); + free((char*)wrap->config_path); + } + + free(wrap); +} + +static void process_events(void) +{ + pthread_mutex_lock(&apple_event_queue_lock); + + for (int i = 0; i < apple_event_queue_size; i ++) + apple_event_queue[i].function(apple_event_queue[i].userdata); + + apple_event_queue_size = 0; + + pthread_mutex_unlock(&apple_event_queue_lock); +} + +static void system_shutdown(bool force) +{ + /* force set to true makes it display the 'Failed to load game' message. */ + if (force) + dispatch_async_f(dispatch_get_main_queue(), (void*)1, apple_rarch_exited); + else + dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); +} + +const frontend_ctx_driver_t frontend_ctx_apple = { + NULL, /* get_environment_settings */ + NULL, /* init */ + NULL, /* deinit */ + NULL, /* exitspawn */ + NULL, /* process_args */ + process_events, /* process_events */ + NULL, /* exec */ + system_shutdown, /* shutdown */ + "apple", +}; diff --git a/griffin/griffin.c b/griffin/griffin.c index 3ccaaea4b0..83a206f2d1 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -458,6 +458,8 @@ FRONTEND #include "../frontend/platform/platform_psp.c" #elif defined(__QNX__) #include "../frontend/platform/platform_qnx.c" +#elif defined(OSX) || defined(IOS) +#include "../frontend/platform/platform_apple.c" #endif /*============================================================ From e19d2320b25c0cd752c5ff990c309feb7d3e53e0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:42:09 +0200 Subject: [PATCH 020/252] (frontend_context) Implement process_events --- frontend/frontend_context.h | 1 + frontend/platform/platform_gx.c | 1 + frontend/platform/platform_ps3.c | 1 + frontend/platform/platform_psp.c | 1 + frontend/platform/platform_qnx.c | 1 + frontend/platform/platform_xdk.c | 1 + 6 files changed, 6 insertions(+) diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index f5334412c6..d9d290de59 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -39,6 +39,7 @@ typedef struct frontend_ctx_driver void (*exitspawn)(void); int (*process_args)(int argc, char *argv[]); + int (*process_events)(void); void (*exec)(const char *, bool); void (*shutdown)(bool); diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 09fe66d390..cb313af8ba 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -526,6 +526,7 @@ const frontend_ctx_driver_t frontend_ctx_gx = { system_deinit, /* deinit */ system_exitspawn, /* exitspawn */ system_process_args, /* process_args */ + NULL, /* process_events */ system_exec, /* exec */ NULL, /* shutdown */ "gx", diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 70a29ba855..95e3d0ad1d 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -478,6 +478,7 @@ const frontend_ctx_driver_t frontend_ctx_ps3 = { system_deinit, /* deinit */ system_exitspawn, /* exitspawn */ system_process_args, /* process_args */ + NULL, /* process_events */ system_exec, /* exec */ NULL, /* shutdown */ "ps3", diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index 02b419601b..aa2b04c10c 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -116,6 +116,7 @@ const frontend_ctx_driver_t frontend_ctx_psp = { system_deinit, /* deinit */ NULL, /* exitspawn */ NULL, /* process_args */ + NULL, /* process_events */ NULL, /* exec */ NULL, /* shutdown */ "psp", diff --git a/frontend/platform/platform_qnx.c b/frontend/platform/platform_qnx.c index 3f3533c65a..b83f4e30cf 100644 --- a/frontend/platform/platform_qnx.c +++ b/frontend/platform/platform_qnx.c @@ -53,6 +53,7 @@ const frontend_ctx_driver_t frontend_ctx_qnx = { NULL, /* deinit */ NULL, /* exitspawn */ NULL, /* process_args */ + NULL, /* process_events */ NULL, /* exec */ system_shutdown, /* shutdown */ "qnx", diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 17c9ff7eec..d021b8230b 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -362,6 +362,7 @@ const frontend_ctx_driver_t frontend_ctx_xdk = { NULL, /* deinit */ system_exitspawn, /* exitspawn */ system_process_args, /* process_args */ + NULL, /* process_events */ system_exec, /* exec */ NULL, /* shutdown */ "xdk", From 29b13676c5682639cf618c67838f95331c7c0714 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 17:45:56 +0200 Subject: [PATCH 021/252] (Apple) Implement environment_get in Apple frontend context driver --- frontend/frontend.c | 10 ---------- frontend/platform/platform_apple.c | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 8c3ab8ab8f..39a092d28b 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -150,11 +150,8 @@ int rarch_main(int argc, char *argv[]) if (frontend_ctx && frontend_ctx->init) frontend_ctx->init(); -#if !defined(__APPLE__) rarch_main_clear_state(); rarch_get_environment(argc, argv); -#endif - #if !defined(RARCH_CONSOLE) #if defined(__APPLE__) @@ -176,13 +173,6 @@ int rarch_main(int argc, char *argv[]) #endif #ifdef HAVE_MENU -#ifdef IOS - char* system_directory = ios_get_rarch_system_directory(); - strlcpy(g_extern.savestate_dir, system_directory, sizeof(g_extern.savestate_dir)); - strlcpy(g_extern.savefile_dir, system_directory, sizeof(g_extern.savefile_dir)); - free(system_directory); -#endif - menu_init(); if (frontend_ctx && frontend_ctx->process_args) diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index 49f0b418c7..d3f1381c6c 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -9,8 +9,7 @@ * RetroArch 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 RetroArch. + * * You should have received a copy of the GNU General Public License along with RetroArch. * If not, see . */ @@ -82,8 +81,21 @@ static void system_shutdown(bool force) dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); } +static void environment_get(int argc, char *argv[]) +{ + (void)argc; + (void)argv; + +#ifdef IOS + char* system_directory = ios_get_rarch_system_directory(); + strlcpy(g_extern.savestate_dir, system_directory, sizeof(g_extern.savestate_dir)); + strlcpy(g_extern.savefile_dir, system_directory, sizeof(g_extern.savefile_dir)); + free(system_directory); +#endif +} + const frontend_ctx_driver_t frontend_ctx_apple = { - NULL, /* get_environment_settings */ + environment_get, /* environment_get */ NULL, /* init */ NULL, /* deinit */ NULL, /* exitspawn */ From 248d4e8084492c71fe90493cd119d5ecd388e6f2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:12:46 +0200 Subject: [PATCH 022/252] Get rid of MODE_OSK_DRAW --- frontend/menu/rmenu.c | 4 ++-- general.h | 1 - ps3/ps3_input.c | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 5436468499..0d63d14b12 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -743,7 +743,7 @@ static bool osk_callback_enter_rsound(void *data) return false; do_exit: - g_extern.lifecycle_mode_state &= ~((1ULL << MODE_OSK_DRAW) | (1ULL << MODE_OSK_ENTRY_SUCCESS) | + g_extern.lifecycle_mode_state &= ~((1ULL << MODE_OSK_ENTRY_SUCCESS) | (1ULL << MODE_OSK_ENTRY_FAIL)); return true; } @@ -797,7 +797,7 @@ static bool osk_callback_enter_filename(void *data) return false; do_exit: - g_extern.lifecycle_mode_state &= ~((1ULL << MODE_OSK_DRAW) | (1ULL << MODE_OSK_ENTRY_SUCCESS) | + g_extern.lifecycle_mode_state &= ~((1ULL << MODE_OSK_ENTRY_SUCCESS) | (1ULL << MODE_OSK_ENTRY_FAIL)); return true; } diff --git a/general.h b/general.h index 4b191fc2e4..6aa9edb74a 100644 --- a/general.h +++ b/general.h @@ -130,7 +130,6 @@ enum menu_enums MODE_VIDEO_PAL_TEMPORAL_ENABLE, MODE_VIDEO_PAL_VSYNC_BLOCK, MODE_AUDIO_CUSTOM_BGM_ENABLE, - MODE_OSK_DRAW, MODE_OSK_ENTRY_SUCCESS, MODE_OSK_ENTRY_FAIL, }; diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index 8fd719383a..0995219d8f 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -366,7 +366,6 @@ bool oskutil_start(oskutil_params *params) goto do_deinit; params->flags |= OSK_IN_USE; - g_extern.lifecycle_mode_state |= (1ULL << MODE_OSK_DRAW); return true; From 3e3e6ed97604dd1c2a9759785b0442ca773a3de4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:14:29 +0200 Subject: [PATCH 023/252] Get rid of MODE_VIDEO_PAL_VSYNC_BLOCK --- frontend/menu/rmenu.c | 4 ---- general.h | 1 - 2 files changed, 5 deletions(-) diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 0d63d14b12..f7c537c13c 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -847,7 +847,6 @@ static int set_setting_action(uint8_t menu_type, unsigned switchvalue, uint64_t { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_ENABLE); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_TEMPORAL_ENABLE); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK); } @@ -863,12 +862,10 @@ static int set_setting_action(uint8_t menu_type, unsigned switchvalue, uint64_t if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_TEMPORAL_ENABLE)) { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_TEMPORAL_ENABLE); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK); } else { g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_PAL_TEMPORAL_ENABLE); - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK); } driver.video->restart(); @@ -881,7 +878,6 @@ static int set_setting_action(uint8_t menu_type, unsigned switchvalue, uint64_t if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_ENABLE)) { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_TEMPORAL_ENABLE); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK); driver.video->restart(); rgui_init_textures(); diff --git a/general.h b/general.h index 6aa9edb74a..e5ebba7264 100644 --- a/general.h +++ b/general.h @@ -128,7 +128,6 @@ enum menu_enums MODE_VIDEO_SOFT_FILTER_ENABLE, MODE_VIDEO_PAL_ENABLE, MODE_VIDEO_PAL_TEMPORAL_ENABLE, - MODE_VIDEO_PAL_VSYNC_BLOCK, MODE_AUDIO_CUSTOM_BGM_ENABLE, MODE_OSK_ENTRY_SUCCESS, MODE_OSK_ENTRY_FAIL, From 2323cee6a72baeed1e3de368c539b86f33ab0710 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:34:06 +0200 Subject: [PATCH 024/252] Get rid of MODE_EXIT --- frontend/menu/menu_common.c | 1 - frontend/menu/rgui.c | 4 ---- frontend/menu/rmenu.c | 6 ------ frontend/menu/rmenu_xui.cpp | 2 -- frontend/platform/platform_ps3.c | 1 - general.h | 1 - retroarch.c | 6 ------ 7 files changed, 21 deletions(-) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index f075683262..0b73efc303 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -458,7 +458,6 @@ void load_menu_game_history(unsigned game_index) #if !defined( HAVE_DYNAMIC) && defined(RARCH_CONSOLE) g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN_START_GAME); #elif defined(HAVE_DYNAMIC) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 918cb1c543..2093953cd6 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -246,7 +246,6 @@ rgui_handle_t *rgui_init(void) /* TODO - should be refactored - perhaps don't do rarch_fail but instead * exit program */ g_extern.lifecycle_mode_state &= ~((1ULL << MODE_MENU) | (1ULL << MODE_GAME)); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); return NULL; } @@ -1063,7 +1062,6 @@ static int rgui_settings_toggle_setting(rgui_handle_t *rgui, unsigned setting, r sizeof(g_extern.fullpath)); #endif g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); return -1; } @@ -1079,7 +1077,6 @@ static int rgui_settings_toggle_setting(rgui_handle_t *rgui, unsigned setting, r if (action == RGUI_ACTION_OK) { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); return -1; } break; @@ -2654,7 +2651,6 @@ int rgui_iterate(rgui_handle_t *rgui) fill_pathname_join(g_extern.fullpath, default_paths.core_dir, SALAMANDER_FILE, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); ret = -1; #endif diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index f7c537c13c..289adde983 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -564,7 +564,6 @@ static int select_file(void *data, uint64_t input) if (rgui->menu_type == LIBRETRO_CHOICE) { strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); return -1; } @@ -1451,7 +1450,6 @@ static int set_setting_action(uint8_t menu_type, unsigned switchvalue, uint64_t { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME_EXIT); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN_MULTIMAN); return -1; @@ -1462,7 +1460,6 @@ static int set_setting_action(uint8_t menu_type, unsigned switchvalue, uint64_t if (input & (1ULL << DEVICE_NAV_B)) { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME_EXIT); return -1; } @@ -2894,10 +2891,7 @@ int rgui_input_postprocess(void *data, uint64_t old_state) device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count); if (quit) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); ret = -1; - } if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME_EXIT)) { diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index b06f3eb58a..8b41252f44 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -1224,7 +1224,6 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { snprintf(g_settings.libretro, sizeof(g_settings.libretro), "%s\\%s", rgui->browser->current_dir.directory_path, str_buffer); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); process_input_ret = -1; } @@ -1409,7 +1408,6 @@ HRESULT CRetroArchMain::OnControlNavigate(XUIMessageControlNavigate *pControlNav if (input == XUI_CONTROL_NAVIGATE_OK) { g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); process_input_ret = -1; } break; diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 95e3d0ad1d..cba95985e4 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -148,7 +148,6 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat case CELL_SYSUTIL_REQUEST_EXITGAME: gl->quitting = true; g_extern.lifecycle_mode_state &= ~((1ULL << MODE_MENU) | (1ULL << MODE_GAME)); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); break; #ifdef HAVE_OSKUTIL case CELL_SYSUTIL_OSKDIALOG_LOADED: diff --git a/general.h b/general.h index e5ebba7264..ea34936330 100644 --- a/general.h +++ b/general.h @@ -118,7 +118,6 @@ enum menu_enums MODE_INFO_DRAW, MODE_FPS_DRAW, MODE_EXTLAUNCH_MULTIMAN, - MODE_EXIT, MODE_EXITSPAWN, MODE_EXITSPAWN_START_GAME, MODE_EXITSPAWN_MULTIMAN, diff --git a/retroarch.c b/retroarch.c index 7005d50d06..ecd6bf9d6d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2985,17 +2985,11 @@ bool rarch_main_iterate(void) // SHUTDOWN on consoles should exit RetroArch completely. if (g_extern.system.shutdown) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); return false; - } // Time to drop? if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); return false; - } if (check_enter_rgui()) return false; // Enter menu, don't exit. From dea236a5692352488538e6cb191e48ca7ea2b495 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:40:02 +0200 Subject: [PATCH 025/252] Get rid of MODE_INIT --- general.h | 1 - 1 file changed, 1 deletion(-) diff --git a/general.h b/general.h index ea34936330..89834a87ba 100644 --- a/general.h +++ b/general.h @@ -109,7 +109,6 @@ enum menu_enums { MODE_GAME = 0, MODE_LOAD_GAME, - MODE_INIT, MODE_MENU, MODE_MENU_WIDESCREEN, MODE_MENU_HD, From 31ea0a78cda9b054b8ded7a559b9db8685f01e19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:46:21 +0200 Subject: [PATCH 026/252] (Vita) Remove this as long as it's useless --- vita/vita_video.c | 534 ---------------------------------------------- 1 file changed, 534 deletions(-) delete mode 100644 vita/vita_video.c diff --git a/vita/vita_video.c b/vita/vita_video.c deleted file mode 100644 index fd5fa91fd5..0000000000 --- a/vita/vita_video.c +++ /dev/null @@ -1,534 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * - * RetroArch 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 Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch 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 RetroArch. - * If not, see . - */ - -/* DONE: - * - Context creation (mostly) - * TODO: - * - Shader code - * - Texture reinitialization (16bpp support, etc) - * - Viewports - * - Implement video frame logic inbetween Begin/End - * - Actually run and test this to make sure it does work - */ - -#include "../psp/sdk_defines.h" -#include "../general.h" -#include "../driver.h" - -#define MALLOC_PARAMS_FRAGMENT_FLAG (1 << 0) -#define MALLOC_PARAMS_VERTEX_FLAG (1 << 1) - -#define GXM_ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) - -#define DISPLAY_BUFFER_COUNT 3 -#define DISPLAY_BUFFER_SIZE (GXM_ALIGN(PSP_PITCH_PIXELS * PSP_FB_HEIGHT * 4, 1024 * 1024)) -#define DISPLAY_MAX_PENDING_SWAPS 2 - -typedef struct vita_video -{ - SceGxmContext *gxm_ctx; - void *context_host_mem; - void *disp_buf_data[DISPLAY_BUFFER_COUNT]; - SceUID disp_buf_uid[DISPLAY_BUFFER_COUNT]; - SceGxmColorSurface disp_surface[DISPLAY_BUFFER_COUNT]; - SceGxmSyncObject *disp_buf_sync[DISPLAY_BUFFER_COUNT]; - SceGxmShaderPatcher *shader_patcher; - SceGxmRenderTarget *rt; - SceUID vid_rb_uid; - SceUID vtx_rb_uid; - SceUID fp_rb_uid; - SceUID patcher_buf_id; - SceUID patcher_vertex_usse_uid; - SceUID patcher_fragment_usse_uid; - SceUID shader_patcher; - SceUID fp_usse_rb_uid; - SceUID patcher_buf_uid; - unsigned disp_back_buf_index; - unsigned disp_front_buf_index; -} vita_video_t; - -typedef struct -{ - uint32_t *address; -} DisplayData; - -static void *malloc_gpu(SceKernelMemBlockType type, uint32_t size, - uint32_t attribs, SceUID *uid, uint32_t params, uint32_t *offset) -{ - int ret = SCE_OK; - - if (type == SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RWDATA) - size = GXM_ALIGN(size, 262144); - else - size = GXM_ALIGN(size, 4096); - - if(((params & MALLOC_PARAMS_FRAGMENT_FLAG) == MALLOC_PARAMS_FRAGMENT_FLAG) || - ((params & MALLOC_PARAMS_VERTEX_FLAG) == MALLOC_PARAMS_VERTEX_FLAG)) - type = SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE; - - *uid = sceKernelAllocMemBlock("basic", type, size, NULL); - - if (uid != SCE_OK) - goto error; - - void *mem = NULL; - - ret = sceKernelGetMemBlockBase(*uid, &mem); - - if (ret != SCE_OK) - goto error; - - if((params & MALLOC_PARAMS_FRAGMENT_FLAG) == MALLOC_PARAMS_FRAGMENT_FLAG) - ret = sceGxmMapFragmentUsseMemory(mem, size, offset); - else if((params & MALLOC_PARAMS_VERTEX_FLAG) == MALLOC_PARAMS_VERTEX_FLAG) - ret = sceGxmMapVertexUsseMemory(mem, size, offset); - else - ret = sceGxmMapMemory(mem, size, attribs); - - if (ret != SCE_OK) - goto error; - - return mem; -error: - RARCH_ERR("Error during GPU memory allocation.\n"); - return NULL; -} - -static void free_gpu(SceUID uid, uint32_t params) -{ - int ret = SCE_OK; - - void *mem = NULL; - ret = sceKernelGetMemBlockBase(uid, &mem); - - if (ret != SCE_OK) - goto error; - - if((params & MALLOC_PARAMS_FRAGMENT_FLAG) == MALLOC_PARAMS_FRAGMENT_FLAG) - ret = sceGxmUnmapFragmentUsseMemory(mem); - else if((params & MALLOC_PARAMS_VERTEX_FLAG) == MALLOC_PARAMS_VERTEX_FLAG) - ret = sceGxmUnmapVertexUsseMemory(mem); - else - ret = sceGxmUnmapMemory(mem); - - if (ret != SCE_OK) - goto error; - - ret = sceKernelFreeMemBlock(uid); - - if (ret != SCE_OK) - goto error; - -error: - RARCH_ERR("Error during GPU memory deallocation.\n"); -} - -static void vita_gfx_init_fbo(void *data, const video_info_t *video) -{ - vita_video_t *vid = (vita_video_t*)driver.video_data; - - SceGxmRenderTargetParams rtparams; - memset(&rtparams, 0, sizeof(SceGxmRenderTargetParams)); - - rtparams.flags = 0; - rtparams.width = PSP_FB_WIDTH; - rtparams.height = PSP_FB_HEIGHT; - rtparams.scenesPerFrame = 1; - rtparams.multisampleMode = SCE_GXM_MULTISAMPLE_NONE; - rtparams.multisampleLocations = 0; - rtparams.hostMem = NULL; - rtparams.hostMemSize = 0; - rtparams.driverMemBlock = -1; - - // compute size - uint32_t host_mem_size, driver_mem_size; - sceGxmGetRenderTargetMemSizes(&rtparams, &host_mem_size, &driver_mem_size); - - rtparams.hostMem = malloc(host_mem_size); - rtparams.hostMemSize = host_mem_size; - rtparams.driverMemBlock = sceKernelAllocMemBlock( - "SampleRT", - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - driver_mem_sie, NULL); - - int ret = sceGxmCreateRenderTarget(&rtparams, &vid->rt); - - return ret; -} - -static void disp_callback(const void *callback_data) -{ - int ret = SCE_OK; - -#if defined(SN_TARGET_PSP2) - SceDisplayFrameBuf framebuf; - - const DisplayData *display_data = (const DisplayData*)callback_data; - - memset(&framebuf, 0, sizeof(SceDisplayFrameBuf)); - - framebuf.size = sizeof(SceDisplayFrameBuf); - framebuf.base = display_data->address; - framebuf.pitch = PSP_PITCH_PIXELS; - framebuf.pixelformat = PSP_DISPLAY_PIXELFORMAT_8888; - framebuf.width = PSP_FB_WIDTH; - framebuf.height = PSP_FB_HEIGHT; - - ret = DisplaySetFrameBuf(&framebuf, PSP_FB_WIDTH, PSP_DISPLAY_PIXELFORMAT_8888, SCE_DISPLAY_UPDATETIMING_NEXTVSYNC); -#elif defined(PSP) - ret = DisplaySetFrameBuf(&display_data->address, PSP_FB_WIDTH, PSP_DISPLAY_PIXELFORMAT_8888, SCE_DISPLAY_UPDATETIMING_NEXTVSYNC); -#endif - - /* TODO - Don't bother with error checking for now in here */ - - // Block until swap has occurred and the old buffer is no longer displayed - ret = sceDisplayWaitSetFrameBuf(); -} - -static void *patcher_host_alloc(void *user_data, uint32_t size) -{ - (void)user_data; - return malloc(size); -} - -static void patcher_host_free(void *user_data, void *mem) -{ - (void)user_data; - free(mem); -} - -static int vita_gfx_init_shader_patcher(const video_info_t *video) -{ - ps2p_video_t *vid = (vita_video_t*)driver.video_data; - - SceGxmShaderPatcherParams patcher_params; - uint32_t patcherVertexUsseOffset, patcherFragmentUsseOffset; - - memset(&patcher_params, 0, sizeof(SceGxmShaderPatcherParams)); - patcher_params.userData = NULL; - patcher_params.hostAllocCallback = &patcher_host_alloc; - patcher_params.hostFreeCallback = &patcher_host_free; - patcher_params.bufferAllocCallback = NULL; - patcher_params.bufferreeCallback = NULL; - patcher_params.bufferMem = malloc_gpu( - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - 64 * 1024, - SCE_GXM_MEMORY_ATTRIB_READ | SCE_GXM_MEMORY_ATTRIB_WRITE, - &vid->patcher_buf_uid, 0, NULL); - patcher_params.bufferMemSize = 64 * 1024; - patcher_params.vertexUsseAllocCallback = NULL; - patcher_params.vertexUsseFreeCallback = NULL; - patcher_params.vertexUsseMem = malloc_gpu( - 0, - 64 * 1024, - 0, - &vid->patcher_vertex_usse_uid, - MALLOC_PARAMS_VERTEX_FLAG, - &patcherVertexUsseOffset); - patcher_params.vertexUsseMemSize = 64 * 1024; - patcher_params.vertexUsseOffset = patcherVertexUsseOffset; - patcher_params.fragmentUsseAllocCallback = NULL; - patcher_params.fragmentUsseFreeCallback = NULL; - patcher_params.fragmentUsseMem = malloc_gpu( - 0, - 64 * 1024, - 0, - &vid->patcher_fragment_usse_uid, - MALLOC_PARAMS_FRAGMENT_FLAG, - &patcherFragmentUsseOffset); - patcher_params.fragmentUsseMemSize = 64 * 1024; - patcher_params.fragmentUsseOffset = patcherFragmentUsseOffset; - - int ret = sceGxmShaderPatcherCreate(&patcher_params, &vid->shader_patcher); - - return ret; -} - -static void vita_gfx_init_sync_objects(const video_info_t *video) -{ - vita_video_t *vid = (vita_video_t*)driver.video_data; - - for (unsigned i = 0; i < DISPLAY_BUFFER_COUNT; ++i) - { - vid->disp_buf_data[i] = malloc_gpu( - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - DISPLAY_BUFFER_SIZE, - SCE_GXM_MEMORY_ATTRIB_READ | SCE_GXM_MEMORY_ATTRIB_WRITE, - &vid->disp_buf_uid[i], 0, NULL); - - int ret = sceGxmColorSurfaceInit( - &vid->disp_surface[i], - SCE_GXM_COLOR_FORMAT_A8B8G8R8, //TODO - Add toggle between 16bpp and 32bpp here - SCE_GXM_COLOR_SURFACE_LINEAR, - SCE_GXM_COLOR_SURFACE_SCALE_NONE, - SCE_GXM_OUTPUT_REGISTER_SIZE_32BIT, - PSP_FB_WIDTH, - PSP_FB_HEIGHT, - PSP_PITCH_PIXELS, - vid->disp_buf_data[i]); - - if(ret != SCE_OK) - { - RARCH_ERR("Initialization of color surface %d failed.\n", i); - } - else - { - ret = sceGxmSyncObjectCreate(&vid->disp_buffer_sync[i]); - - if(ret != SCE_OK) - RARCH_ERR("Initialization of sync object %d failed.\n"); - } - } -} - -static void *vita_gfx_init(const video_info_t *video, - const input_driver_t **input, void **input_data) -{ - *input = NULL; - *input_data = NULL; - (void)video; - - if (driver.video_data) - { - vita_video_t *vid = (vita_video_t*)driver.video_data; - - /* TODO - Reinitialize textures here */ - - return driver.video_data; - } - - vita_video_t *vid = (vita_video_t*)calloc(1, sizeof(vita_video_t)); - - if (!vid) - goto error; - - driver.video_data = vid; - - int ret; - SceGxmInitializeParams params; - memset(¶ms, 0, sizeof(SceGxmInitializeParams)); - - params.flags = 0; - params.displayQueueMaxPendingCount = DISPLAY_MAX_PENDING_SWAPS; - params.displayQueueCallback = disp_callback; - params.displayQueueCallbackDataSize = sizeof(DisplayData); - params.parameterBufferSize = SCE_GXM_DEFAULT_PARAMETER_BUFFER_SIZE; - - ret = sceGxmInitialize(¶ms); - - if(ret != SCE_OK) - goto error; - - SceGxmContextParams ctx_params; - memset(&ctx_params, 0, sizeof(SceGxmContextParams)); - - uint32_t fp_usse_ring_buffer_offset; - - vid->context_host_mem = malloc(SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE); - - ctx_params.hostMem = vid->context_host_mem; - ctx_params.hostMemSize = SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE; - ctx_params.vdmRingBufferMem = malloc_gpu( - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - SCE_GXM_DEFAULT_VDM_RING_BUFFER_SIZE, - SCE_GXM_MEMORY_ATTRIB_READ, - &vid->rb_uid, 0, NULL); - ctx_params.vdmRingBufferMemSize = SCE_GXM_DEFAULT_VDM_RING_BUFFER_SIZE; - ctx_params.vertexRingBufferMem = malloc_gpu( - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - SCE_GXM_DEFAULT_VERTEX_RING_BUFFER_SIZE, - SCE_GXM_MEMORY_ATTRIB_READ, - &vid->vtx_rb_uid, 0, NULL); - ctx_params.vertexRingBufferMemSize = SCE_GXM_DEFAULT_VERTEX_RING_BUFFER_SIZE; - ctx_params.fragmentRingBufferMem = malloc_gpu( - SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE, - SCE_GXM_DEFAULT_FRAGMENT_RING_BUFFER_SIZE, - SCE_GXM_MEMORY_ATTRIB_READ, - &vid->fp_rb_uid, 0, NULL); - ctx_params.fragmentRingBufferMemSize = SCE_GXM_DEFAULT_FRAGMENT_RING_BUFFER_SIZE; - ctx_params.fragmentUsseRingBufferMem = malloc_gpu( - 0, - SCE_GXM_DEFAULT_FRAGMENT_USSE_RING_BUFFER_SIZE, - 0, - &vid->fp_usse_rb_uid, - MALLOC_PARAMS_FRAGMENT_FLAG, - &fp_usse_ring_buffer_offset); - ctx_params.fragmentUsseRingBufferMemSize = SCE_GXM_DEFAULT_FRAGMENT_USSE_RING_BUFFER_SIZE; - ctx_params.fragmentUsseRingBufferOffset = vid->fp_rb_uid; - - vid->gxm_ctx = NULL; - - ret = sceGxmCreateContext(&ctx_params, &vid->gxm_ctx); - - if (ret != SCE_OK) - goto error; - - if((vita_gfx_init_fbo()) != SCE_OK) - goto error; - else - RARCH_LOG("FBO initialized successfully.\n"); - - if((vita_gfx_init_shader_patcher()) != SCE_OK) - goto error; - else - RARCH_LOG("Shader patcher initialized successfully.\n"); - - vita_gfx_init_sync_objects(video); - - /* Clear display buffer for first swap */ - memset(vid->disp_buf_data[vid>disp_front_buf_index], 0x00, DISPLAY_BUFFER_SIZE); - - /* Swap to the current front buffer with Vsync */ - disp_callback(NULL); - - return vid; -error: - RARCH_ERR("Vita libgxm video could not be initialized.\n"); - return (void*)-1; -} - -static inline void vita_gfx_swap(void) -{ - vita_video_t *vid = (vita_video_t*)driver.video_data; - - DisplayData display_data; - - display_data.address = vid->disp_buf_data[vid->disp_back_buf_index]; - - /* queue swap for this frame */ - - int ret = sceGxmDisplayQueueAddEntry( - vid->disp_buffer_sync[vid->disp_front_buf_index], - vid->disp_buffer_sync[vid->disp_back_buf_index], - &display_data); - - vid->disp_front_buf_index = vid->disp_back_buf_index; - vid->disp_back_buf_index = (vid->disp_back_buf_index + 1) & DISPLAY_BUFFER_COUNT; -} - -static bool vita_gfx_frame(void *data, const void *frame, - unsigned width, unsigned height, unsigned pitch, const char *msg) -{ - (void)data; - (void)frame; - (void)width; - (void)height; - (void)pitch; - (void)msg; - - vita_video_t *vid = (vita_video_t*)data; - - sceGxmBeginScene(vid->gcm_ctx, 0, vid->rt, NULL, - NULL, vid->disp_buf_sync[vid->disp_back_buf_index]); - - /* TODO - code comes inbetween */ - - sceGxmEndScene(vid->gxm_ctx, NULL, NULL); - - /* notify end of frame */ - sceGxmPadHeartBeat(&vid->disp_surface[vid->disp_back_buf_index], vid->disp_buf_sync[vid->disp_back_buf_index]); - - vita_gfx_swap(); - - return true; -} - -static void vita_gfx_set_nonblock_state(void *data, bool toggle) -{ - (void)data; - (void)toggle; -} - -static bool vita_gfx_alive(void *data) -{ - (void)data; - return true; -} - -static bool vita_gfx_focus(void *data) -{ - (void)data; - return true; -} - -static void vita_gfx_free(void *data) -{ - (void)data; - void *hostmem; - int ret; - SceUID drivermemblock; - - /* TDO: error checking */ - - vita_video_t *vid = (vita_video_t*)driver.video_data; - - sceGxmFinish(vid->gxm_ctx); - - ret = sceGxmRenderTargetGetHostMem(vid->rt, &hostmem); - - ret = sceGxmRenderTargetGetDriverMemBlock(vid->rt, &drivermemblock); - - ret = sceGxmDestroyRenderTarget(vid->rt); - - sceKernelFreeMemBlock(drivermemblock); - free(hostmem); - - // wait until display queue is finished before deallocating display buffers - int ret = sceGxmDisplayQueueFinish(); - - for (int i = 0; i < DISPLAY_BUFFER_COUNT; ++i) - { - free_gpu(vid->disp_buf_uid[i], 0); - ret = sceGxmSyncObjectDestroy(vid->disp_buf_sync[i]); - } - - ret = sceGxmShaderPatcherDestroy(vid->shader_patcher); - - free_gpu(vid->patcher_fragment_usse_uid, MALLOC_PARAMS_FRAGMENT_FLAG); - free_gpu(vid->patcher_vertex_usse_uid, MALLOC_PARAMS_VERTEX_FLAG); - free_gpu(vid->patcher_buf_uid, 0); - - ret = sceGxmDestroyContext(vid->gxm_ctx); - - free_gpu(vid->fp_rb_uid, MALLOC_PARAMS_FRAGMENT_FLAG); - free_gpu(vid->vtx_rb_uid, MALLOC_PARAMS_VERTEX_FLAG); - free_gpu(vid->vid_rb_uid, 0); - - free(vid->context_host_mem, 0); - - sceGxmTerminate(); -} - -#ifdef RARCH_CONSOLE -static void vita_gfx_start(void) {} -static void vita_gfx_restart(void) {} -#endif - -const video_driver_t video_vita = { - vita_gfx_init, - vita_gfx_frame, - vita_gfx_set_nonblock_state, - vita_gfx_alive, - vita_gfx_focus, - NULL, - vita_gfx_free, - "vita", - -#ifdef RARCH_CONSOLE - vita_gfx_start, - vita_gfx_restart, -#endif -}; From 46e7cb4f7a821463674b7363929d85edbf7dc491 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 20:47:00 +0200 Subject: [PATCH 027/252] (Vita) Remove Vita stub --- griffin/griffin.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/griffin/griffin.c b/griffin/griffin.c index 83a206f2d1..fd5e28a352 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -210,10 +210,8 @@ VIDEO DRIVER #if defined(GEKKO) #include "../gx/gx_video.c" -#elif defined(SN_TARGET_PSP2) -#include "../vita/vita_video.c" -//#elif defined(PSP) -//#include "../psp1/psp1_video.c" +#elif defined(PSP) +#include "../psp1/psp1_video.c" #elif defined(XENON) #include "../xenon/xenon360_video.c" #endif From db9462bc495114e3ec1679651e47393362ee3bb8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 21:38:38 +0200 Subject: [PATCH 028/252] (GX) Build fixes --- frontend/platform/platform_gx.c | 8 +++++--- frontend/platform/platform_xdk.c | 6 ++++-- gx/gx_video.c | 11 ----------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index cb313af8ba..25a2454092 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -316,20 +316,22 @@ static void system_init(void) #endif } +static void system_exec(const char *path, bool should_load_game); + static void system_exitspawn(void) { #if defined(IS_SALAMANDER) - rarch_console_exec(default_paths.libretro_path, gx_rom_path[0] != '\0' ? true : false); + system_exec(default_paths.libretro_path, gx_rom_path[0] != '\0' ? true : false); #elif defined(HW_RVL) bool should_load_game = false; if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN_START_GAME)) should_load_game = true; - rarch_console_exec(g_settings.libretro, should_load_game); + system_exec(g_settings.libretro, should_load_game); // direct loading failed (out of memory), try to jump to salamander then load the correct core char boot_dol[PATH_MAX]; snprintf(boot_dol, sizeof(boot_dol), "%s/boot.dol", default_paths.core_dir); - rarch_console_exec(boot_dol, should_load_game); + system_exec(boot_dol, should_load_game); #endif } diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index d021b8230b..3f9ce746f4 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -307,16 +307,18 @@ static int system_process_args(int argc, char *argv[]) return 0; } +static void system_exec(const char *path, bool should_load_game); + static void system_exitspawn(void) { #ifdef IS_SALAMANDER - rarch_console_exec(default_paths.libretro_path, false); + system_exec(default_paths.libretro_path, false); #else bool should_load_game = false; if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN_START_GAME)) should_load_game = true; - rarch_console_exec(g_settings.libretro, should_load_game); + system_exec(g_settings.libretro, should_load_game); #endif } diff --git a/gx/gx_video.c b/gx/gx_video.c index 1c8024097b..27190521c2 100644 --- a/gx/gx_video.c +++ b/gx/gx_video.c @@ -1012,17 +1012,6 @@ static void gx_set_rotation(void *data, unsigned orientation) gx->should_resize = true; } -static bool gx_set_shader(void *data, enum rarch_shader_type type, const char *path) -{ - (void)data; - (void)type; - (void)path; - (void)index; - - RARCH_WARN("Shader support is not implemented for GX.\n"); - return false; -} - static void gx_set_texture_frame(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha) { From 806e07db5d2a552333d242daf5903005b1fe7433 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 21:50:20 +0200 Subject: [PATCH 029/252] (Salamander) GX build fix --- Makefile.wii.salamander | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.wii.salamander b/Makefile.wii.salamander index 87049c1d5c..fa303bd71c 100644 --- a/Makefile.wii.salamander +++ b/Makefile.wii.salamander @@ -39,7 +39,7 @@ LIBS := -lfat -lwiiuse -logc -lbte APP_BOOTER_DIR = wii/app_booter -OBJ = frontend/frontend_salamander.o file_path.o compat/compat.o conf/config_file.o $(APP_BOOTER_DIR)/app_booter.binobj +OBJ = frontend/frontend_salamander.o frontend/frontend_context.o file_path.o compat/compat.o conf/config_file.o $(APP_BOOTER_DIR)/app_booter.binobj ifeq ($(HAVE_LOGGER), 1) CFLAGS += -DHAVE_LOGGER From a5e62bbfdada28f2203b9bddec8322c8e3991e14 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jul 2013 21:52:53 +0200 Subject: [PATCH 030/252] Add frontend_context to Salamander MSVC solutions --- .../RetroArch-Salamander.vcxproj | 1 + .../RetroArch-Salamander.vcxproj.filters | 7 ++-- .../RetroArch-Salamander.vcproj | 33 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj index 81806c2062..22deb9854c 100644 --- a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj +++ b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj @@ -267,6 +267,7 @@ + diff --git a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj.filters b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj.filters index a6d585dc89..a91550e51c 100644 --- a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj.filters +++ b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj.filters @@ -26,8 +26,11 @@ Source Files - + + Source Files + + Source Files - \ No newline at end of file + diff --git a/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj b/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj index b3d6dc0dfd..7478eec73c 100644 --- a/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj +++ b/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj @@ -404,6 +404,39 @@ CompileAs="2"/> + + + + + + + + + + + + + + + + + Date: Sat, 27 Jul 2013 22:33:57 +0200 Subject: [PATCH 031/252] (PS3) Fix core loading --- frontend/platform/platform_ps3.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index cba95985e4..d7e28c6991 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -440,7 +440,8 @@ static void system_exec(const char *path, bool should_load_game) RARCH_LOG("Attempt to load executable: [%s].\n", path); char spawn_data[256]; char game_path[256]; - (void)game_path; + game_path[0] = '\0'; + for(unsigned int i = 0; i < sizeof(spawn_data); ++i) spawn_data[i] = i & 0xff; From 49f3078e729d23068cbdb5ef7120791a8953d8cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 01:34:29 +0200 Subject: [PATCH 032/252] (RGL PS3) Dehardcode some magic numbers --- ps3/rgl/src/ps3/include/rgl-inline.h | 46 ++++++++++++++-------------- ps3/rgl/src/ps3/rgl_ps3.cpp | 2 +- ps3/rgl/src/ps3/rgl_ps3_raster.cpp | 4 +-- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/ps3/rgl/src/ps3/include/rgl-inline.h b/ps3/rgl/src/ps3/include/rgl-inline.h index cfa65241af..24c09a2856 100644 --- a/ps3/rgl/src/ps3/include/rgl-inline.h +++ b/ps3/rgl/src/ps3/include/rgl-inline.h @@ -27,41 +27,41 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) #define SUBPIXEL_ADJUST (0.5/(1<current[0] = (((4) << (18)) | ((0x00001c00) + (index) * 16)); \ + thisContext->current[0] = (((4) << (18)) | (CELL_GCM_NV4097_SET_VERTEX_DATA4F_M + (index) * 16)); \ __builtin_memcpy(&thisContext->current[1], v, sizeof(float)*4); \ thisContext->current += 5; #define rglGcmSetVertexDataArray(thisContext, index, frequency, stride, size, type, location, offset) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001740) + ((index)) * 4)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_VERTEX_DATA_ARRAY_FORMAT + ((index)) * 4)); \ (thisContext->current)[1] = ((((frequency)) << 16) | (((stride)) << 8) | (((size)) << 4) | ((type))); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001680) + ((index)) * 4)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_VERTEX_DATA_ARRAY_OFFSET + ((index)) * 4)); \ (thisContext->current)[1] = ((((location)) << 31) | (offset)); \ (thisContext->current) += 2; #define rglGcmSetInlineTransferPointer(thisContext, offset, count, pointer) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x0000630C))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_OFFSET_DESTIN); \ (thisContext->current)[1] = (offset & ~63); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((2) << (18)) | ((0x00006300))); \ + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV3062_SET_COLOR_FORMAT); \ (thisContext->current)[1] = (CELL_GCM_TRANSFER_SURFACE_FORMAT_Y32); \ (thisContext->current)[2] = ((0x1000) | ((0x1000) << 16)); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((3) << (18)) | ((0x0000A304))); \ + (thisContext->current)[0] = (((3) << (18)) | CELL_GCM_NV308A_POINT); \ (thisContext->current)[1] = (((0) << 16) | ((offset & 63) >> 2)); \ (thisContext->current)[2] = (((1) << 16) | (count)); \ (thisContext->current)[3] = (((1) << 16) | (count)); \ (thisContext->current) += 4; \ - thisContext->current[0] = ((((count + 1) & ~1) << (18)) | ((0x0000A400))); \ + thisContext->current[0] = ((((count + 1) & ~1) << (18)) | CELL_GCM_NV308A_COLOR); \ thisContext->current += 1; \ pointer = thisContext->current; \ thisContext->current += ((count + 1) & ~1); #define rglGcmSetWriteBackEndLabel(thisContext, index, value) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d6c))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SEMAPHORE_OFFSET); \ (thisContext->current)[1] = 0x10 * index; /* offset */ \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d70))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_BACK_END_WRITE_SEMAPHORE_RELEASE); \ (thisContext->current)[1] = ( value & 0xff00ff00) | ((value >> 16) & 0xff) | (((value >> 0 ) & 0xff) << 16); \ (thisContext->current) += 2; @@ -74,21 +74,21 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current) += 2; #define rglGcmSetInvalidateVertexCache(thisContext) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001710))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_CACHE_FILE); \ (thisContext->current)[1] = 0; \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001714))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_FILE); \ (thisContext->current)[1] = 0; \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001714))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_FILE); \ (thisContext->current)[1] = 0; \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001714))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_FILE); \ (thisContext->current)[1] = 0; \ (thisContext->current) += 2; #define rglGcmSetClearSurface(thisContext, mask) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d94))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_CLEAR_SURFACE); \ (thisContext->current)[1] = (mask); \ (thisContext->current) += 2; \ (thisContext->current)[0] = (((1) << (18)) | ((0x00000100))); \ @@ -111,13 +111,13 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current) += 2; #define rglGcmInlineTransfer(thisContext, dstOffset, srcAdr, sizeInWords, location) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00006188))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_CONTEXT_DMA_IMAGE_DESTIN); \ (thisContext->current)[1] = ((0xFEED0000) + location); \ (thisContext->current) += 2; \ cellGcmSetInlineTransferUnsafeInline(thisContext, dstOffset, srcAdr, sizeInWords); #define rglGcmSetClearColor(thisContext, color) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d90))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_COLOR_CLEAR_VALUE); \ (thisContext->current)[1] = (color); \ (thisContext->current) += 2; @@ -205,7 +205,7 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current) += 2; #define rglGcmSetZMinMaxControl(thisContext, cullNearFarEnable, zclampEnable, cullIgnoreW) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d78))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_ZMIN_MAX_CONTROL); \ (thisContext->current)[1] = ((cullNearFarEnable) | ((zclampEnable) << 4) | ((cullIgnoreW)<<8)); \ (thisContext->current) += 2; @@ -295,7 +295,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC uint32_t texMaskCentroid; uint32_t i; - (thisContext->current)[0] = (((1) << (18)) | ((0x000008e4))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SHADER_PROGRAM); (thisContext->current)[1] = ((location+1) | (rawData)); (thisContext->current) += 2; @@ -312,7 +312,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC for(i=0; texMask; i++) { - if (texMask&1) + if (texMask & 1) { uint32_t hwTexCtrl = (texMask2D & 1) | ((texMaskCentroid & 1) << 4); (thisContext->current)[0] = (((1) << (18)) | ((0x00000b40) + (i) * 4)); @@ -785,7 +785,7 @@ static inline void rglGcmTransferData GLuint dstOffset = gmmIdToOffset(dstId) + dstIdOffset; GLuint srcOffset = gmmIdToOffset(srcId) + srcIdOffset; - (thisContext->current)[0] = (((2) << (18)) | ((0x00002184))); + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV0039_SET_CONTEXT_DMA_BUFFER_IN); (thisContext->current)[1] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ (thisContext->current)[2] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ (thisContext->current) += 3; @@ -811,7 +811,7 @@ static inline void rglGcmTransferData { cols = (colCount > CL0039_MAX_LINES) ? CL0039_MAX_LINES : colCount; - (thisContext->current)[0] = (((8) << (18)) | ((0x0000230C))); + (thisContext->current)[0] = (((8) << (18)) | CELL_GCM_NV0039_OFFSET_IN); (thisContext->current)[1] = (srcOffset + (bytesPerRow - colCount)); (thisContext->current)[2] = (dstOffset + (bytesPerRow - colCount)); (thisContext->current)[3] = (0); @@ -837,7 +837,7 @@ static inline void rglGcmTransferData { cols = (colCount > CL0039_MAX_LINES) ? CL0039_MAX_LINES : colCount; - (thisContext->current)[0] = (((8) << (18)) | ((0x0000230C))); + (thisContext->current)[0] = (((8) << (18)) | CELL_GCM_NV0039_OFFSET_IN); (thisContext->current)[1] = (srcOffset + (bytesPerRow - colCount)); (thisContext->current)[2] = (dstOffset + (bytesPerRow - colCount)); (thisContext->current)[3] = (srcPitch); @@ -854,7 +854,7 @@ static inline void rglGcmTransferData } } - (thisContext->current)[0] = (((1) << (18)) | ((0x00002310))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV0039_OFFSET_OUT); (thisContext->current)[1] = (0); (thisContext->current) += 2; } diff --git a/ps3/rgl/src/ps3/rgl_ps3.cpp b/ps3/rgl/src/ps3/rgl_ps3.cpp index 9326970e05..f28b8e1c4d 100644 --- a/ps3/rgl/src/ps3/rgl_ps3.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3.cpp @@ -3130,7 +3130,7 @@ GLAPI void RGL_EXPORT psglSwap (void) rglGcmDriver *driver = (rglGcmDriver*)_CurrentDevice->rasterDriver; float * __restrict v = (float*)driver->sharedVPConstants; - thisContext->current[0] = (((33) << (18)) | ((0x00001efc))); + thisContext->current[0] = (((33) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_CONSTANT_LOAD); thisContext->current[1] = 0; __builtin_memcpy(&thisContext->current[2], v, sizeof(float)*16); diff --git a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp index 9451b18ca5..793045fd77 100644 --- a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp @@ -188,7 +188,7 @@ template static void setVectorTypeSharedvpIndex (void *data, const voi memcpy(driver->sharedVPConstants + resource * 4 * sizeof( float ), dst, 4 * sizeof(float)); - thisContext->current[0] = (((5) << (18)) | ((0x00001efc))); + thisContext->current[0] = (((5) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_CONSTANT_LOAD); thisContext->current[1] = resource; thisContext->current += 2; @@ -214,7 +214,7 @@ template static void setVectorTypeSharedvpIndexArray (void *data, cons memcpy(driver->sharedVPConstants + resource * 4 * sizeof( float ), dst, 4 * sizeof(float)); - thisContext->current[0] = (((5) << (18)) | ((0x00001efc))); + thisContext->current[0] = (((5) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_CONSTANT_LOAD); thisContext->current[1] = resource; thisContext->current += 2; From bdf9c5eecdc67e07b291e3e392b73f65f68f2965 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 02:31:21 +0200 Subject: [PATCH 033/252] (RGL PS3) More magic number dehardcoding --- ps3/rgl/src/ps3/include/rgl-inline.h | 122 +++++++++++++-------------- ps3/rgl/src/ps3/rgl_ps3_raster.cpp | 15 +++- 2 files changed, 73 insertions(+), 64 deletions(-) diff --git a/ps3/rgl/src/ps3/include/rgl-inline.h b/ps3/rgl/src/ps3/include/rgl-inline.h index 24c09a2856..63ac4228c5 100644 --- a/ps3/rgl/src/ps3/include/rgl-inline.h +++ b/ps3/rgl/src/ps3/include/rgl-inline.h @@ -91,28 +91,28 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_CLEAR_SURFACE); \ (thisContext->current)[1] = (mask); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000100))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_NO_OPERATION); \ (thisContext->current)[1] = 0; \ (thisContext->current) += 2; #define rglGcmSetTextureControl(thisContext, index, enable, minlod, maxlod, maxaniso) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001a0c) + 0x20 * ((index)))); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_CONTROL0 + 0x20 * ((index)))); \ (thisContext->current)[1] = ((((0) << 2) | ((maxaniso)) << 4) | (((maxlod)) << 7) | (((minlod)) << 19) | ((enable) << 31)); \ (thisContext->current) += 2; #define rglGcmSetTextureRemap(thisContext, index, remap) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001a10) + ((index)) * 32)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_CONTROL1 + ((index)) * 32)); \ (thisContext->current)[1] = (remap); \ (thisContext->current) += 2; #define rglGcmSetTransferLocation(thisContext, location) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00006188))); \ - (thisContext->current)[1] = ((0xFEED0000) + location); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_CONTEXT_DMA_IMAGE_DESTIN); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + location); \ (thisContext->current) += 2; #define rglGcmInlineTransfer(thisContext, dstOffset, srcAdr, sizeInWords, location) \ (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_CONTEXT_DMA_IMAGE_DESTIN); \ - (thisContext->current)[1] = ((0xFEED0000) + location); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + location); \ (thisContext->current) += 2; \ cellGcmSetInlineTransferUnsafeInline(thisContext, dstOffset, srcAdr, sizeInWords); @@ -128,27 +128,27 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) imagerect = texture->height | (texture->width << 16); \ control1 = texture->remap; \ control3 = texture->pitch | (texture->depth << 20); \ - (thisContext->current)[0] = (((2) << (18)) | ((0x00001a00) + ((index)) * 32)); \ + (thisContext->current)[0] = (((2) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_OFFSET + ((index)) * 32)); \ (thisContext->current)[1] = (offset); \ (thisContext->current)[2] = (format); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001a18) + ((index)) * 32)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_IMAGE_RECT + ((index)) * 32)); \ (thisContext->current)[1] = (imagerect); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001840) + ((index)) * 4)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_CONTROL3 + ((index)) * 4)); \ (thisContext->current)[1] = (control3); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001a10) + ((index)) * 32)); \ + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEXTURE_CONTROL1 + ((index)) * 32)); \ (thisContext->current)[1] = (control1); \ (thisContext->current) += 2; #define rglGcmSetUserClipPlaneControl(thisContext, plane0, plane1, plane2, plane3, plane4, plane5) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001478))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_USER_CLIP_PLANE_CONTROL); \ (thisContext->current)[1] = ((plane0) | ((plane1) << 4) | ((plane2) << 8) | ((plane3) << 12) | ((plane4) << 16) | ((plane5) << 20)); \ (thisContext->current) += 2; #define rglGcmSetInvalidateTextureCache(thisContext, value) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001fd8))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_INVALIDATE_L2); \ (thisContext->current)[1] = (value); \ (thisContext->current) += 2; @@ -165,15 +165,15 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) s[1].f = scale[1]; \ s[2].f = scale[2]; \ s[3].f = scale[3]; \ - (thisContext->current)[0] = (((2) << (18)) | ((0x00000a00))); \ + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV4097_SET_VIEWPORT_HORIZONTAL); \ (thisContext->current)[1] = (((x)) | (((w)) << 16)); \ (thisContext->current)[2] = (((y)) | (((h)) << 16)); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((2) << (18)) | ((0x00000394))); \ + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV4097_SET_CLIP_MIN); \ (thisContext->current)[1] = (d0.u); \ (thisContext->current)[2] = (d1.u); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((8) << (18)) | ((0x00000a20))); \ + (thisContext->current)[0] = (((8) << (18)) | CELL_GCM_NV4097_SET_VIEWPORT_OFFSET); \ (thisContext->current)[1] = (o[0].u); \ (thisContext->current)[2] = (o[1].u); \ (thisContext->current)[3] = (o[2].u); \ @@ -183,7 +183,7 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current)[7] = (s[2].u); \ (thisContext->current)[8] = (s[3].u); \ (thisContext->current) += 9; \ - (thisContext->current)[0] = (((8) << (18)) | ((0x00000a20))); \ + (thisContext->current)[0] = (((8) << (18)) | CELL_GCM_NV4097_SET_VIEWPORT_OFFSET); \ (thisContext->current)[1] = (o[0].u); \ (thisContext->current)[2] = (o[1].u); \ (thisContext->current)[3] = (o[2].u); \ @@ -195,12 +195,12 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current) += 9; #define rglGcmSetDitherEnable(thisContext, enable) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000300))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_DITHER_ENABLE); \ (thisContext->current)[1] = (enable); \ (thisContext->current) += 2; #define rglGcmSetReferenceCommand(thisContext, ref) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000050))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV406E_SET_REFERENCE); \ (thisContext->current)[1] = (ref); \ (thisContext->current) += 2; @@ -210,7 +210,7 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current) += 2; #define rglGcmSetVertexAttribOutputMask(thisContext, mask) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001ff4))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_VERTEX_ATTRIB_OUTPUT_MASK); \ (thisContext->current)[1] = (mask); \ (thisContext->current) += 2; @@ -220,7 +220,7 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) thisContext->current += count; #define rglGcmSetAntiAliasingControl(thisContext, enable, alphaToCoverage, alphaToOne, sampleMask) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d7c))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_ANTI_ALIASING_CONTROL); \ (thisContext->current)[1] = ((enable) | ((alphaToCoverage) << 4) | ((alphaToOne) << 8) | ((sampleMask) << 16)); \ (thisContext->current) += 2; @@ -240,20 +240,20 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) fifo->lastSWReferenceFlushed = fifo->lastSWReferenceWritten; #define rglGcmSetSurface(thisContext, surface, origin, pixelCenter, log2Width, log2Height) \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000194))); \ - (thisContext->current)[1] = ((0xFEED0000)+surface->colorLocation[0]); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_CONTEXT_DMA_COLOR_A); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + surface->colorLocation[0]); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x0000018c))); \ - (thisContext->current)[1] = ((0xFEED0000)+surface->colorLocation[1]); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_CONTEXT_DMA_COLOR_B); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + surface->colorLocation[1]); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((2) << (18)) | ((0x000001b4))); \ - (thisContext->current)[1] = ((0xFEED0000)+surface->colorLocation[2]); \ - (thisContext->current)[2] = ((0xFEED0000)+surface->colorLocation[3]); \ + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV4097_SET_CONTEXT_DMA_COLOR_C); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + surface->colorLocation[2]); \ + (thisContext->current)[2] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + surface->colorLocation[3]); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000198))); \ - (thisContext->current)[1] = ((0xFEED0000)+surface->depthLocation); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_CONTEXT_DMA_ZETA); \ + (thisContext->current)[1] = (CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER + surface->depthLocation); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((6) << (18)) | ((0x00000208))); \ + (thisContext->current)[0] = (((6) << (18)) | CELL_GCM_NV4097_SET_SURFACE_FORMAT); \ (thisContext->current)[1] = ((surface->colorFormat) | ((surface->depthFormat) << 5) | ((surface->type) << 8) | ((surface->antialias) << 12) | ((log2Width) << 16) | ((log2Height) << 24)); \ (thisContext->current)[2] = (surface->colorPitch[0]); \ (thisContext->current)[3] = (surface->colorOffset[0]); \ @@ -261,26 +261,26 @@ static inline GLuint rglPlatformGetBitsPerPixel (GLenum internalFormat) (thisContext->current)[5] = (surface->colorOffset[1]); \ (thisContext->current)[6] = (surface->colorPitch[1]); \ (thisContext->current) += 7; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x0000022c))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SURFACE_PITCH_Z); \ (thisContext->current)[1] = (surface->depthPitch); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((4) << (18)) | ((0x00000280))); \ + (thisContext->current)[0] = (((4) << (18)) | CELL_GCM_NV4097_SET_SURFACE_PITCH_C); \ (thisContext->current)[1] = (surface->colorPitch[2]); \ (thisContext->current)[2] = (surface->colorPitch[3]); \ (thisContext->current)[3] = (surface->colorOffset[2]); \ (thisContext->current)[4] = (surface->colorOffset[3]); \ (thisContext->current) += 5; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00000220))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SURFACE_COLOR_TARGET); \ (thisContext->current)[1] = ((surface->colorTarget)); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x000002b8))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_WINDOW_OFFSET); \ (thisContext->current)[1] = ((surface->x) | ((surface->y) << 16)); \ (thisContext->current) += 2; \ - (thisContext->current)[0] = (((2) << (18)) | ((0x00000200))); \ + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV4097_SET_SURFACE_CLIP_HORIZONTAL); \ (thisContext->current)[1] = ((surface->x) | ((surface->width) << 16)); \ (thisContext->current)[2] = ((surface->y) | ((surface->height) << 16)); \ (thisContext->current) += 3; \ - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d88))); \ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SHADER_WINDOW); \ (thisContext->current)[1] = ((surface->height - (((surface->height) & 0x1000) >> 12)) | ((origin) << 12) | ((pixelCenter) << 16)); \ (thisContext->current) += 2; @@ -301,7 +301,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC inMask = conf->attributeInputMask; - (thisContext->current)[0] = (((1) << (18)) | ((0x00001ff4))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_VERTEX_ATTRIB_OUTPUT_MASK); (thisContext->current)[1] = (inMask); (thisContext->current) += 2; @@ -315,7 +315,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC if (texMask & 1) { uint32_t hwTexCtrl = (texMask2D & 1) | ((texMaskCentroid & 1) << 4); - (thisContext->current)[0] = (((1) << (18)) | ((0x00000b40) + (i) * 4)); + (thisContext->current)[0] = (((1) << (18)) | (CELL_GCM_NV4097_SET_TEX_COORD_CONTROL + (i) * 4)); (thisContext->current)[1] = (hwTexCtrl); (thisContext->current) += 2; } @@ -331,7 +331,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC registerCount = 2; shCtrl0 = conf->fragmentControl | (registerCount << 24); - (thisContext->current)[0] = (((1) << (18)) | ((0x00001d60))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_SHADER_CONTROL); (thisContext->current)[1] = (shCtrl0); (thisContext->current) += 2; } @@ -349,16 +349,16 @@ static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, u loop = count / (2047); rest = count % (2047); - (thisContext->current)[0] = (((3) << (18)) | ((0x00001714)) | (0x40000000)); + (thisContext->current)[0] = (((3) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_FILE | (0x40000000)); (thisContext->current)[1] = 0; (thisContext->current)[2] = 0; (thisContext->current)[3] = 0; ; (thisContext->current) += 4; - (thisContext->current)[0] = (((1) << (18)) | ((0x00001808))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_BEGIN_END); (thisContext->current)[1] = ((mode)); (thisContext->current) += 2; - (thisContext->current)[0] = (((1) << (18)) | ((0x00001814))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_DRAW_ARRAYS); (thisContext->current)[1] = ((first) | ((lcount)<<24)); (thisContext->current) += 2; first += lcount + 1; @@ -367,7 +367,7 @@ static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, u for(i=0;icurrent[0] = ((((2047)) << (18)) | ((0x00001814)) | (0x40000000)); + thisContext->current[0] = ((((2047)) << (18)) | CELL_GCM_NV4097_DRAW_ARRAYS | (0x40000000)); thisContext->current++; for(j=0;j<(2047);j++) @@ -380,7 +380,7 @@ static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, u if(rest) { - thisContext->current[0] = (((rest) << (18)) | ((0x00001814)) | (0x40000000)); + thisContext->current[0] = (((rest) << (18)) | CELL_GCM_NV4097_DRAW_ARRAYS | (0x40000000)); thisContext->current++; for(j=0;jcurrent)[0] = (((1) << (18)) | ((0x00001808))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_BEGIN_END); (thisContext->current)[1] = (0); (thisContext->current) += 2; } @@ -410,7 +410,7 @@ static inline void rglGcmSetVertexProgramLoad(struct CellGcmContextData *thisCon loop = instCount / 8; rest = (instCount % 8) * 4; - (thisContext->current)[0] = (((2) << (18)) | ((0x00001e9c))); + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_PROGRAM_LOAD); (thisContext->current)[1] = (instIndex); (thisContext->current)[2] = (instIndex); (thisContext->current) += 3; @@ -419,7 +419,7 @@ static inline void rglGcmSetVertexProgramLoad(struct CellGcmContextData *thisCon for (i = 0; i < loop; i++) { - thisContext->current[0] = (((32) << (18)) | ((0x00000b80))); + thisContext->current[0] = (((32) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_PROGRAM); __builtin_memcpy(&thisContext->current[1], &rawData[0], sizeof(uint32_t)*16); __builtin_memcpy(&thisContext->current[17], &rawData[16], sizeof(uint32_t)*16); @@ -430,18 +430,18 @@ static inline void rglGcmSetVertexProgramLoad(struct CellGcmContextData *thisCon if (rest > 0) { - thisContext->current[0] = (((rest) << (18)) | ((0x00000b80))); + thisContext->current[0] = (((rest) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_PROGRAM); for (j = 0; j < rest; j++) thisContext->current[j+1] = rawData[j]; thisContext->current += (1 + rest); } - (thisContext->current)[0] = (((1) << (18)) | ((0x00001ff0))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_VERTEX_ATTRIB_INPUT_MASK); (thisContext->current)[1] = ((conf->attributeInputMask)); (thisContext->current) += 2; - (thisContext->current)[0] = (((1) << (18)) | ((0x00001ef8))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_TRANSFORM_TIMEOUT); if (conf->registerCount <= 32) (thisContext->current)[1] = ((0xFFFF) | ((32) << 16)); @@ -523,16 +523,16 @@ static inline void rglGcmFifoGlViewport(void *data, GLclampf zNear, GLclampf zFa static inline void rglGcmSetTransferImage(struct CellGcmContextData *thisContext, uint8_t mode, uint32_t dstOffset, uint32_t dstPitch, uint32_t dstX, uint32_t dstY, uint32_t srcOffset, uint32_t srcPitch, uint32_t srcX, uint32_t srcY, uint32_t width, uint32_t height, uint32_t bytesPerPixel) { - (thisContext->current)[0] = (((1) << (18)) | ((0x00006188))); - (thisContext->current)[1] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_CONTEXT_DMA_IMAGE_DESTIN); + (thisContext->current)[1] = CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ (thisContext->current) += 2; - (thisContext->current)[0] = (((1) << (18)) | ((0x0000C184))); - (thisContext->current)[1] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3089_SET_CONTEXT_DMA_IMAGE); + (thisContext->current)[1] = CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ (thisContext->current) += 2; - (thisContext->current)[0] = (((1) << (18)) | ((0x0000C198))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3089_SET_CONTEXT_SURFACE); (thisContext->current)[1] = ((0x313371C3)); (thisContext->current) += 2; @@ -574,16 +574,16 @@ static inline void rglGcmSetTransferImage(struct CellGcmContextData *thisContext uint32_t srcBlockOffset = bytesPerPixel * (srcX + x-dstX) + srcPitch * (srcY + y-dstY); uint32_t safeDstBltWidth = (dstBltWidth < 16) ? 16 : (dstBltWidth + 1) & ~1; - (thisContext->current)[0] = (((1) << (18)) | ((0x0000630C))); + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV3062_SET_OFFSET_DESTIN); (thisContext->current)[1] = dstOffset + dstBlockOffset; (thisContext->current) += 2; - (thisContext->current)[0] = (((2) << (18)) | ((0x00006300))); + (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV3062_SET_COLOR_FORMAT); (thisContext->current)[1] = (dstFormat); (thisContext->current)[2] = ((dstPitch) | ((dstPitch) << 16)); (thisContext->current) += 3; - (thisContext->current)[0] = (((9) << (18)) | ((0x0000C2FC))); + (thisContext->current)[0] = (((9) << (18)) | CELL_GCM_NV3089_SET_COLOR_CONVERSION); (thisContext->current)[1] = (CELL_GCM_TRANSFER_CONVERSION_TRUNCATE); (thisContext->current)[2] = (srcFormat); (thisContext->current)[3] = (CELL_GCM_TRANSFER_OPERATION_SRCCOPY); @@ -595,7 +595,7 @@ static inline void rglGcmSetTransferImage(struct CellGcmContextData *thisContext (thisContext->current)[9] = 1048576; (thisContext->current) += 10; - (thisContext->current)[0] = (((4) << (18)) | ((0x0000C400))); + (thisContext->current)[0] = (((4) << (18)) | CELL_GCM_NV3089_IMAGE_IN_SIZE); (thisContext->current)[1] = (((dstBltHeight) << 16) | (safeDstBltWidth)); (thisContext->current)[2] = ((srcPitch) | ((CELL_GCM_TRANSFER_ORIGIN_CORNER) << 16) | ((CELL_GCM_TRANSFER_INTERPOLATOR_ZOH) << 24)); (thisContext->current)[3] = (srcOffset + srcBlockOffset); @@ -786,8 +786,8 @@ static inline void rglGcmTransferData GLuint srcOffset = gmmIdToOffset(srcId) + srcIdOffset; (thisContext->current)[0] = (((2) << (18)) | CELL_GCM_NV0039_SET_CONTEXT_DMA_BUFFER_IN); - (thisContext->current)[1] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ - (thisContext->current)[2] = 0xFEED0000; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ + (thisContext->current)[1] = CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ + (thisContext->current)[2] = CELL_GCM_CONTEXT_DMA_MEMORY_FRAME_BUFFER; /* CELL_GCM_TRANSFER_LOCAL_TO_LOCAL */ (thisContext->current) += 3; uint32_t colCount; diff --git a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp index 793045fd77..d8b3e9236f 100644 --- a/ps3/rgl/src/ps3/rgl_ps3_raster.cpp +++ b/ps3/rgl/src/ps3/rgl_ps3_raster.cpp @@ -1814,9 +1814,18 @@ GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count) // set 3 consts { GLfloat v2[12]; - v2[0] = value[0];v2[1] = value[3];v2[2] = value[6];v2[3] = 0; - v2[4] = value[1];v2[5] = value[4];v2[6] = value[7];v2[7] = 0; - v2[8] = value[2];v2[9] = value[5];v2[10] = value[8];v2[11] = 0; + v2[0] = value[0]; + v2[1] = value[3]; + v2[2] = value[6]; + v2[3] = 0; + v2[4] = value[1]; + v2[5] = value[4]; + v2[6] = value[7]; + v2[7] = 0; + v2[8] = value[2]; + v2[9] = value[5]; + v2[10] = value[8]; + v2[11] = 0; GCM_FUNC( cellGcmSetVertexProgramParameterBlock, parameterResource->resource, 3, v2 ); } break; From 29f0fd27bf0c679b4e1783128b775899ea44816c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 02:51:47 +0200 Subject: [PATCH 034/252] (RGL PS3) Speedhacked render path for rglGcmSetDrawArrays --- ps3/rgl/src/ps3/include/rgl-inline.h | 30 +++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/ps3/rgl/src/ps3/include/rgl-inline.h b/ps3/rgl/src/ps3/include/rgl-inline.h index 63ac4228c5..d7479fd8bc 100644 --- a/ps3/rgl/src/ps3/include/rgl-inline.h +++ b/ps3/rgl/src/ps3/include/rgl-inline.h @@ -336,7 +336,7 @@ static inline void rglGcmSetFragmentProgramLoad(struct CellGcmContextData *thisC (thisContext->current) += 2; } -static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, uint8_t mode, +static void rglGcmSetDrawArraysSlow(struct CellGcmContextData *thisContext, uint8_t mode, uint32_t first, uint32_t count) { uint32_t lcount; @@ -396,6 +396,34 @@ static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, u (thisContext->current) += 2; } +static inline void rglGcmSetDrawArrays(struct CellGcmContextData *thisContext, uint8_t mode, + uint32_t first, uint32_t count) +{ + if (mode == GL_TRIANGLE_STRIP && first == 0 && count == 4) + { + (thisContext->current)[0] = (((3) << (18)) | CELL_GCM_NV4097_INVALIDATE_VERTEX_FILE | (0x40000000)); + (thisContext->current)[1] = 0; + (thisContext->current)[2] = 0; + (thisContext->current)[3] = 0; + (thisContext->current) += 4; + + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_BEGIN_END); + (thisContext->current)[1] = ((mode)); + (thisContext->current) += 2; + + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_DRAW_ARRAYS); + (thisContext->current)[1] = ((first) | (3 <<24)); + (thisContext->current) += 2; + first += 4; + + (thisContext->current)[0] = (((1) << (18)) | CELL_GCM_NV4097_SET_BEGIN_END); + (thisContext->current)[1] = (0); + (thisContext->current) += 2; + } + else + rglGcmSetDrawArraysSlow(thisContext, mode, first, count); +} + static inline void rglGcmSetVertexProgramLoad(struct CellGcmContextData *thisContext, const CellCgbVertexProgramConfiguration *conf, const void *ucode) { const uint32_t *rawData; From 52a160a74448d3e0be92647476aacf4a21471ed3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 04:51:55 +0200 Subject: [PATCH 035/252] (RMenu) Cleanups in select_file --- frontend/menu/rmenu.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 289adde983..691232bad3 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -559,20 +559,14 @@ static int select_file(void *data, uint64_t input) driver.video_poke->set_texture_frame(driver.video_data, menu_texture->pixels, true, menu_texture->width, menu_texture->height, 1.0f); break; - } - - if (rgui->menu_type == LIBRETRO_CHOICE) - { - strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); - return -1; + case LIBRETRO_CHOICE: + strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); + g_extern.lifecycle_mode_state |= (1ULL << MODE_EXITSPAWN); + return -1; } pop_menu_stack = true; } - - if (!ret) - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch.", 1, 180); } else if ((input & (1ULL << DEVICE_NAV_X)) || (input & (1ULL << DEVICE_NAV_MENU))) pop_menu_stack = true; From 9fbece1f1c0d0d99a87ef2a9fa99cfe9394796e6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 17:59:35 +0200 Subject: [PATCH 036/252] (Android) Change some autodetection logic --- android/native/jni/input_android.c | 4 +- android/native/jni/input_autodetect.c | 281 +++++++++++++------------- 2 files changed, 142 insertions(+), 143 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index df11f8dd5f..6ac23ba591 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1623,7 +1623,9 @@ static void android_input_poll(void *data) state_id = pads_connected; state_device_ids[pads_connected++] = id; - input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); + if (g_settings.input.autodetect_enable) + input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); + long_msg_enable = true; } diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 079128a453..8f7050daa4 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -101,150 +101,147 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } - if (g_settings.input.autodetect_enable) + device = 0; + + if (strstr(name_buf,"Logitech") && strstr(name_buf, "RumblePad 2")) + device = DEVICE_LOGITECH_RUMBLEPAD2; + else if (strstr(name_buf, "Logitech") && strstr(name_buf, "Dual Action")) + device = DEVICE_LOGITECH_DUAL_ACTION; + else if (strstr(name_buf, "Logitech") && strstr(name_buf, "Precision")) + device = DEVICE_LOGITECH_PRECISION_GAMEPAD; + else if (strstr(name_buf, "iControlPad-")) // followed by a 4 (hex) char HW id + device = DEVICE_ICONTROLPAD_HID_JOYSTICK; + else if (strstr(name_buf, "SEGA VIRTUA STICK High Grade")) + device = DEVICE_SEGA_VIRTUA_STICK_HIGH_GRADE; + else if (strstr(name_buf, "TTT THT Arcade console 2P USB Play")) + device = DEVICE_TTT_THT_ARCADE; + else if (strstr(name_buf, "TOMMO NEOGEOX Arcade Stick")) + device = DEVICE_TOMMO_NEOGEOX_ARCADE; + else if (strstr(name_buf, "Onlive Wireless Controller")) + device = DEVICE_ONLIVE_WIRELESS_CONTROLLER; + else if (strstr(name_buf, "MadCatz") && strstr(name_buf, "PC USB Wired Stick")) + device = DEVICE_MADCATZ_PC_USB_STICK; + else if (strstr(name_buf, "Logicool") && strstr(name_buf, "RumblePad 2")) + device = DEVICE_LOGICOOL_RUMBLEPAD2; + else if (strstr(name_buf, "Sun4i-keypad")) + device = DEVICE_IDROID_X360; + else if (strstr(name_buf, "Zeemote") && strstr(name_buf, "Steelseries free")) + device = DEVICE_ZEEMOTE_STEELSERIES; + else if (strstr(name_buf, "HuiJia USB GamePad")) + device = DEVICE_HUIJIA_USB_SNES; + else if (strstr(name_buf, "Smartjoy Family Super Smartjoy 2")) + device = DEVICE_SUPER_SMARTJOY; + else if (strstr(name_buf, "Jess Tech Dual Analog Rumble Pad")) + device = DEVICE_SAITEK_RUMBLE_P480; + else if (strstr(name_buf, "Microsoft")) { - device = 0; - - if (strstr(name_buf,"Logitech") && strstr(name_buf, "RumblePad 2")) - device = DEVICE_LOGITECH_RUMBLEPAD2; - else if (strstr(name_buf, "Logitech") && strstr(name_buf, "Dual Action")) - device = DEVICE_LOGITECH_DUAL_ACTION; - else if (strstr(name_buf, "Logitech") && strstr(name_buf, "Precision")) - device = DEVICE_LOGITECH_PRECISION_GAMEPAD; - else if (strstr(name_buf, "iControlPad-")) // followed by a 4 (hex) char HW id - device = DEVICE_ICONTROLPAD_HID_JOYSTICK; - else if (strstr(name_buf, "SEGA VIRTUA STICK High Grade")) - device = DEVICE_SEGA_VIRTUA_STICK_HIGH_GRADE; - else if (strstr(name_buf, "TTT THT Arcade console 2P USB Play")) - device = DEVICE_TTT_THT_ARCADE; - else if (strstr(name_buf, "TOMMO NEOGEOX Arcade Stick")) - device = DEVICE_TOMMO_NEOGEOX_ARCADE; - else if (strstr(name_buf, "Onlive Wireless Controller")) - device = DEVICE_ONLIVE_WIRELESS_CONTROLLER; - else if (strstr(name_buf, "MadCatz") && strstr(name_buf, "PC USB Wired Stick")) - device = DEVICE_MADCATZ_PC_USB_STICK; - else if (strstr(name_buf, "Logicool") && strstr(name_buf, "RumblePad 2")) - device = DEVICE_LOGICOOL_RUMBLEPAD2; - else if (strstr(name_buf, "Sun4i-keypad")) - device = DEVICE_IDROID_X360; - else if (strstr(name_buf, "Zeemote") && strstr(name_buf, "Steelseries free")) - device = DEVICE_ZEEMOTE_STEELSERIES; - else if (strstr(name_buf, "HuiJia USB GamePad")) - device = DEVICE_HUIJIA_USB_SNES; - else if (strstr(name_buf, "Smartjoy Family Super Smartjoy 2")) - device = DEVICE_SUPER_SMARTJOY; - else if (strstr(name_buf, "Jess Tech Dual Analog Rumble Pad")) - device = DEVICE_SAITEK_RUMBLE_P480; - else if (strstr(name_buf, "Microsoft")) - { - if (strstr(name_buf, "Dual Strike")) - device = DEVICE_MS_SIDEWINDER_DUAL_STRIKE; - else if (strstr(name_buf, "SideWinder")) - device = DEVICE_MS_SIDEWINDER; - else if (strstr(name_buf, "X-Box 360") || strstr(name_buf, "X-Box") - || strstr(name_buf, "Xbox 360 Wireless Receiver")) - device = DEVICE_MS_XBOX; - } - else if (strstr(name_buf, "WiseGroup")) - { - if (strstr(name_buf, "TigerGame") || strstr(name_buf, "Game Controller Adapter") - || strstr(name_buf, "JC-PS102U") || strstr(name_buf, "Dual USB Joypad")) - { - if (strstr(name_buf, "WiseGroup")) - device = DEVICE_WISEGROUP_PLAYSTATION2; - else if (strstr(name_buf, "JC-PS102U")) - device = DEVICE_JCPS102_PLAYSTATION2; - else - device = DEVICE_GENERIC_PLAYSTATION2_CONVERTER; - } - } - else if (strstr(name_buf, "PLAYSTATION(R)3") || strstr(name_buf, "Dualshock3") - || strstr(name_buf,"Sixaxis") || strstr(name_buf, "Gasia,Co") || - (strstr(name_buf, "Gamepad 0") || strstr(name_buf, "Gamepad 1") || - strstr(name_buf, "Gamepad 2") || strstr(name_buf, "Gamepad 3"))) - { - if (strstr(name_buf, "Gamepad 0") || strstr(name_buf, "Gamepad 1") || - strstr(name_buf, "Gamepad 2") || strstr(name_buf, "Gamepad 3")) - device = DEVICE_PLAYSTATION3_VERSION1; - else - device = DEVICE_PLAYSTATION3_VERSION2; - } - else if (strstr(name_buf, "MOGA")) - device = DEVICE_MOGA; - else if (strstr(name_buf, "Sony Navigation Controller")) - device = DEVICE_PSMOVE_NAVI; - else if (strstr(name_buf, "OUYA Game Controller")) - device = DEVICE_OUYA; - else if (strstr(name_buf, "adc joystick")) - device = DEVICE_JXD_S7300B; - else if (strstr(name_buf, "idroid:con")) - device = DEVICE_IDROID_CON; - else if (strstr(name_buf, "NYKO PLAYPAD PRO")) - device = DEVICE_NYKO_PLAYPAD_PRO; - else if (strstr(name_buf, "2-Axis, 8-Button")) - device = DEVICE_GENIUS_MAXFIRE_G08XU; - else if (strstr(name_buf, "USB,2-axis 8-button gamepad")) - device = DEVICE_USB_2_AXIS_8_BUTTON_GAMEPAD; - else if (strstr(name_buf, "BUFFALO BGC-FC801")) - device = DEVICE_BUFFALO_BGC_FC801; - else if (strstr(name_buf, "RetroUSB.com RetroPad")) - device = DEVICE_RETROUSB_RETROPAD; - else if (strstr(name_buf, "RetroUSB.com SNES RetroPort")) - device = DEVICE_RETROUSB_SNES_RETROPORT; - else if (strstr(name_buf, "CYPRESS USB")) - device = DEVICE_CYPRESS_USB; - else if (strstr(name_buf, "Mayflash Wii Classic")) - device = DEVICE_MAYFLASH_WII_CLASSIC; - else if (strstr(name_buf, "SZMy-power LTD CO. Dual Box WII")) - device = DEVICE_SZMY_POWER_DUAL_BOX_WII; - else if (strstr(name_buf, "Toodles 2008 ChImp")) - device = DEVICE_TOODLES_2008_CHIMP; - else if (strstr(name_buf, "joy_key")) - device = DEVICE_ARCHOS_GAMEPAD; - else if (strstr(name_buf, "matrix_keyboard")) - device = DEVICE_JXD_S5110; - else if (strstr(name_buf, "keypad-zeus") || (strstr(name_buf, "keypad-game-zeus"))) - device = DEVICE_XPERIA_PLAY; - else if (strstr(name_buf, "Broadcom Bluetooth HID")) - device = DEVICE_BROADCOM_BLUETOOTH_HID; - else if (strstr(name_buf, "USB Gamepad")) - device = DEVICE_THRUST_PREDATOR; - else if (strstr(name_buf, "DragonRise")) - device = DEVICE_DRAGONRISE; - else if (strstr(name_buf, "Thrustmaster T Mini")) - device = DEVICE_THRUSTMASTER_T_MINI; - else if (strstr(name_buf, "2Axes 11Keys Game Pad")) - device = DEVICE_TOMEE_NES_USB; - else if (strstr(name_buf, "rk29-keypad") || strstr(name_buf, "GAMEMID")) - device = DEVICE_GAMEMID; - else if (strstr(name_buf, "USB Gamepad")) - device = DEVICE_DEFENDER_GAME_RACER_CLASSIC; - else if (strstr(name_buf, "HOLTEK JC - U912F vibration game")) - device = DEVICE_HOLTEK_JC_U912F; - - if (strstr(current_ime, "net.obsidianx.android.mogaime")) - { - device = DEVICE_MOGA_IME; - snprintf(name_buf, sizeof(name_buf), "MOGA IME"); - } - else if (strstr(current_ime, "com.ccpcreations.android.WiiUseAndroid")) - { - device = DEVICE_CCPCREATIONS_WIIUSE_IME; - snprintf(name_buf, sizeof(name_buf), "ccpcreations WiiUse"); - } - else if (strstr(current_ime, "com.hexad.bluezime")) - { - device = DEVICE_ICONTROLPAD_BLUEZ_IME; - snprintf(name_buf, sizeof(name_buf), "iControlpad SPP mode (using Bluez IME)"); - } - - if (source == AINPUT_SOURCE_KEYBOARD && device != DEVICE_XPERIA_PLAY) - device = DEVICE_KEYBOARD_RETROPAD; - - if (driver.input->set_keybinds) - driver.input->set_keybinds(driver.input_data, device, port, id, - (1ULL << KEYBINDS_ACTION_SET_DEFAULT_BINDS)); + if (strstr(name_buf, "Dual Strike")) + device = DEVICE_MS_SIDEWINDER_DUAL_STRIKE; + else if (strstr(name_buf, "SideWinder")) + device = DEVICE_MS_SIDEWINDER; + else if (strstr(name_buf, "X-Box 360") || strstr(name_buf, "X-Box") + || strstr(name_buf, "Xbox 360 Wireless Receiver")) + device = DEVICE_MS_XBOX; } + else if (strstr(name_buf, "WiseGroup")) + { + if (strstr(name_buf, "TigerGame") || strstr(name_buf, "Game Controller Adapter") + || strstr(name_buf, "JC-PS102U") || strstr(name_buf, "Dual USB Joypad")) + { + if (strstr(name_buf, "WiseGroup")) + device = DEVICE_WISEGROUP_PLAYSTATION2; + else if (strstr(name_buf, "JC-PS102U")) + device = DEVICE_JCPS102_PLAYSTATION2; + else + device = DEVICE_GENERIC_PLAYSTATION2_CONVERTER; + } + } + else if (strstr(name_buf, "PLAYSTATION(R)3") || strstr(name_buf, "Dualshock3") + || strstr(name_buf,"Sixaxis") || strstr(name_buf, "Gasia,Co") || + (strstr(name_buf, "Gamepad 0") || strstr(name_buf, "Gamepad 1") || + strstr(name_buf, "Gamepad 2") || strstr(name_buf, "Gamepad 3"))) + { + if (strstr(name_buf, "Gamepad 0") || strstr(name_buf, "Gamepad 1") || + strstr(name_buf, "Gamepad 2") || strstr(name_buf, "Gamepad 3")) + device = DEVICE_PLAYSTATION3_VERSION1; + else + device = DEVICE_PLAYSTATION3_VERSION2; + } + else if (strstr(name_buf, "MOGA")) + device = DEVICE_MOGA; + else if (strstr(name_buf, "Sony Navigation Controller")) + device = DEVICE_PSMOVE_NAVI; + else if (strstr(name_buf, "OUYA Game Controller")) + device = DEVICE_OUYA; + else if (strstr(name_buf, "adc joystick")) + device = DEVICE_JXD_S7300B; + else if (strstr(name_buf, "idroid:con")) + device = DEVICE_IDROID_CON; + else if (strstr(name_buf, "NYKO PLAYPAD PRO")) + device = DEVICE_NYKO_PLAYPAD_PRO; + else if (strstr(name_buf, "2-Axis, 8-Button")) + device = DEVICE_GENIUS_MAXFIRE_G08XU; + else if (strstr(name_buf, "USB,2-axis 8-button gamepad")) + device = DEVICE_USB_2_AXIS_8_BUTTON_GAMEPAD; + else if (strstr(name_buf, "BUFFALO BGC-FC801")) + device = DEVICE_BUFFALO_BGC_FC801; + else if (strstr(name_buf, "RetroUSB.com RetroPad")) + device = DEVICE_RETROUSB_RETROPAD; + else if (strstr(name_buf, "RetroUSB.com SNES RetroPort")) + device = DEVICE_RETROUSB_SNES_RETROPORT; + else if (strstr(name_buf, "CYPRESS USB")) + device = DEVICE_CYPRESS_USB; + else if (strstr(name_buf, "Mayflash Wii Classic")) + device = DEVICE_MAYFLASH_WII_CLASSIC; + else if (strstr(name_buf, "SZMy-power LTD CO. Dual Box WII")) + device = DEVICE_SZMY_POWER_DUAL_BOX_WII; + else if (strstr(name_buf, "Toodles 2008 ChImp")) + device = DEVICE_TOODLES_2008_CHIMP; + else if (strstr(name_buf, "joy_key")) + device = DEVICE_ARCHOS_GAMEPAD; + else if (strstr(name_buf, "matrix_keyboard")) + device = DEVICE_JXD_S5110; + else if (strstr(name_buf, "keypad-zeus") || (strstr(name_buf, "keypad-game-zeus"))) + device = DEVICE_XPERIA_PLAY; + else if (strstr(name_buf, "Broadcom Bluetooth HID")) + device = DEVICE_BROADCOM_BLUETOOTH_HID; + else if (strstr(name_buf, "USB Gamepad")) + device = DEVICE_THRUST_PREDATOR; + else if (strstr(name_buf, "DragonRise")) + device = DEVICE_DRAGONRISE; + else if (strstr(name_buf, "Thrustmaster T Mini")) + device = DEVICE_THRUSTMASTER_T_MINI; + else if (strstr(name_buf, "2Axes 11Keys Game Pad")) + device = DEVICE_TOMEE_NES_USB; + else if (strstr(name_buf, "rk29-keypad") || strstr(name_buf, "GAMEMID")) + device = DEVICE_GAMEMID; + else if (strstr(name_buf, "USB Gamepad")) + device = DEVICE_DEFENDER_GAME_RACER_CLASSIC; + else if (strstr(name_buf, "HOLTEK JC - U912F vibration game")) + device = DEVICE_HOLTEK_JC_U912F; + + if (strstr(current_ime, "net.obsidianx.android.mogaime")) + { + device = DEVICE_MOGA_IME; + snprintf(name_buf, sizeof(name_buf), "MOGA IME"); + } + else if (strstr(current_ime, "com.ccpcreations.android.WiiUseAndroid")) + { + device = DEVICE_CCPCREATIONS_WIIUSE_IME; + snprintf(name_buf, sizeof(name_buf), "ccpcreations WiiUse"); + } + else if (strstr(current_ime, "com.hexad.bluezime")) + { + device = DEVICE_ICONTROLPAD_BLUEZ_IME; + snprintf(name_buf, sizeof(name_buf), "iControlpad SPP mode (using Bluez IME)"); + } + + if (source == AINPUT_SOURCE_KEYBOARD && device != DEVICE_XPERIA_PLAY) + device = DEVICE_KEYBOARD_RETROPAD; + + if (driver.input->set_keybinds) + driver.input->set_keybinds(driver.input_data, device, port, id, + (1ULL << KEYBINDS_ACTION_SET_DEFAULT_BINDS)); if (name_buf[0] != 0) snprintf(msg, sizeof_msg, "Port %d: %s.\n", port, name_buf); From f7622d3294fe3920d4ace69b1b202584b8e547ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 18:37:31 +0200 Subject: [PATCH 037/252] Add OMAP graphics driver (Tobias Jakobi) --- AUTHORS | 3 + Makefile | 4 + config.def.h | 1 + driver.c | 3 + driver.h | 1 + gfx/fbdev.c | 319 ++++++++++++++++++ gfx/fbdev.h | 24 ++ gfx/omap_gfx.c | 860 +++++++++++++++++++++++++++++++++++++++++++++++++ gfx/omapfb.h | 427 ++++++++++++++++++++++++ settings.c | 2 + 10 files changed, 1644 insertions(+) create mode 100644 gfx/fbdev.c create mode 100644 gfx/fbdev.h create mode 100644 gfx/omap_gfx.c create mode 100644 gfx/omapfb.h diff --git a/AUTHORS b/AUTHORS index 810f48d305..9129bbd2d5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -20,6 +20,9 @@ Daniel De Matteis - - Blackberry 10/Playbook port - iOS port patches +Tobias Jakobi - + - OMAP graphics driver + Jason Fetters - - Phoenix Java frontend - Android port patches diff --git a/Makefile b/Makefile index 184f81b194..0096d7ec30 100644 --- a/Makefile +++ b/Makefile @@ -186,6 +186,10 @@ ifeq ($(HAVE_SDL), 1) LIBS += $(SDL_LIBS) endif +ifeq ($(HAVE_OMAP), 1) + OBJ += gfx/omap_gfx.o gfx/fbdev.o +endif + ifeq ($(HAVE_OPENGL), 1) OBJ += gfx/gl.o \ gfx/gfx_context.o \ diff --git a/config.def.h b/config.def.h index 0d647ad290..6dcc5238b5 100644 --- a/config.def.h +++ b/config.def.h @@ -44,6 +44,7 @@ enum VIDEO_D3D9, VIDEO_VG, VIDEO_NULL, + VIDEO_OMAP, AUDIO_RSOUND, AUDIO_OSS, diff --git a/driver.c b/driver.c index 790e23e1f6..44ae437dc8 100644 --- a/driver.c +++ b/driver.c @@ -122,6 +122,9 @@ static const video_driver_t *video_drivers[] = { #ifdef HAVE_NULLVIDEO &video_null, #endif +#ifdef HAVE_OMAP + &video_omap, +#endif }; static const input_driver_t *input_drivers[] = { diff --git a/driver.h b/driver.h index 975ea7f29f..944b51889c 100644 --- a/driver.h +++ b/driver.h @@ -516,6 +516,7 @@ extern const video_driver_t video_xdk_d3d; extern const video_driver_t video_sdl; extern const video_driver_t video_vg; extern const video_driver_t video_null; +extern const video_driver_t video_omap; extern const input_driver_t input_android; extern const input_driver_t input_sdl; extern const input_driver_t input_dinput; diff --git a/gfx/fbdev.c b/gfx/fbdev.c new file mode 100644 index 0000000000..57f56b1197 --- /dev/null +++ b/gfx/fbdev.c @@ -0,0 +1,319 @@ +/* + * (C) Gražvydas "notaz" Ignotas, 2009-2010 + * + * This work is licensed under the terms of any of these licenses + * (at your option): + * - GNU GPL, version 2 or later. + * - GNU LGPL, version 2.1 or later. + * See the COPYING file in the top-level directory. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fbdev.h" + +#define PFX "fbdev: " + +struct vout_fbdev { + int fd; + void *mem; + size_t mem_size; + struct fb_var_screeninfo fbvar_old; + struct fb_var_screeninfo fbvar_new; + int buffer_write; + int fb_size; + int buffer_count; + int top_border, bottom_border; + void *mem_saved; + size_t mem_saved_size; +}; + +void *vout_fbdev_flip(struct vout_fbdev *fbdev) +{ + int draw_buf; + + if (fbdev->buffer_count < 2) + return fbdev->mem; + + draw_buf = fbdev->buffer_write; + fbdev->buffer_write++; + if (fbdev->buffer_write >= fbdev->buffer_count) + fbdev->buffer_write = 0; + + fbdev->fbvar_new.yoffset = + (fbdev->top_border + fbdev->fbvar_new.yres + fbdev->bottom_border) * draw_buf + + fbdev->top_border; + + ioctl(fbdev->fd, FBIOPAN_DISPLAY, &fbdev->fbvar_new); + + return (char *)fbdev->mem + fbdev->fb_size * fbdev->buffer_write; +} + +void vout_fbdev_wait_vsync(struct vout_fbdev *fbdev) +{ + int arg = 0; + ioctl(fbdev->fd, FBIO_WAITFORVSYNC, &arg); +} + +/* it is recommended to call vout_fbdev_clear() before this */ +void *vout_fbdev_resize(struct vout_fbdev *fbdev, int w, int h, int bpp, + int left_border, int right_border, int top_border, int bottom_border, int buffer_cnt) +{ + int w_total = left_border + w + right_border; + int h_total = top_border + h + bottom_border; + size_t mem_size; + int ret; + + // unblank to be sure the mode is really accepted + ioctl(fbdev->fd, FBIOBLANK, FB_BLANK_UNBLANK); + + if (fbdev->fbvar_new.bits_per_pixel != bpp || + fbdev->fbvar_new.xres != w || + fbdev->fbvar_new.yres != h || + fbdev->fbvar_new.xres_virtual != w_total|| + fbdev->fbvar_new.yres_virtual < h_total || + fbdev->fbvar_new.xoffset != left_border || + fbdev->buffer_count != buffer_cnt) + { + if (fbdev->fbvar_new.bits_per_pixel != bpp || + w != fbdev->fbvar_new.xres || h != fbdev->fbvar_new.yres) + printf(PFX "switching to %dx%d@%d\n", w, h, bpp); + + fbdev->fbvar_new.xres = w; + fbdev->fbvar_new.yres = h; + fbdev->fbvar_new.xres_virtual = w_total; + fbdev->fbvar_new.yres_virtual = h_total * buffer_cnt; + fbdev->fbvar_new.xoffset = left_border; + fbdev->fbvar_new.yoffset = top_border; + fbdev->fbvar_new.bits_per_pixel = bpp; + fbdev->fbvar_new.nonstd = 0; // can set YUV here on omapfb + fbdev->buffer_count = buffer_cnt; + fbdev->buffer_write = buffer_cnt > 1 ? 1 : 0; + + // seems to help a bit to avoid glitches + vout_fbdev_wait_vsync(fbdev); + + ret = ioctl(fbdev->fd, FBIOPUT_VSCREENINFO, &fbdev->fbvar_new); + if (ret == -1) { + // retry with no multibuffering + fbdev->fbvar_new.yres_virtual = h_total; + ret = ioctl(fbdev->fd, FBIOPUT_VSCREENINFO, &fbdev->fbvar_new); + if (ret == -1) { + perror(PFX "FBIOPUT_VSCREENINFO ioctl"); + return NULL; + } + fbdev->buffer_count = 1; + fbdev->buffer_write = 0; + fprintf(stderr, PFX "Warning: failed to increase virtual resolution, " + "multibuffering disabled\n"); + } + + } + + fbdev->fb_size = w_total * h_total * bpp / 8; + fbdev->top_border = top_border; + fbdev->bottom_border = bottom_border; + + mem_size = fbdev->fb_size * fbdev->buffer_count; + if (fbdev->mem_size >= mem_size) + goto out; + + if (fbdev->mem != NULL) + munmap(fbdev->mem, fbdev->mem_size); + + fbdev->mem = mmap(0, mem_size, PROT_WRITE|PROT_READ, MAP_SHARED, fbdev->fd, 0); + if (fbdev->mem == MAP_FAILED && fbdev->buffer_count > 1) { + fprintf(stderr, PFX "Warning: can't map %zd bytes, doublebuffering disabled\n", mem_size); + fbdev->buffer_count = 1; + fbdev->buffer_write = 0; + mem_size = fbdev->fb_size; + fbdev->mem = mmap(0, mem_size, PROT_WRITE|PROT_READ, MAP_SHARED, fbdev->fd, 0); + } + if (fbdev->mem == MAP_FAILED) { + fbdev->mem = NULL; + fbdev->mem_size = 0; + perror(PFX "mmap framebuffer"); + return NULL; + } + + fbdev->mem_size = mem_size; + +out: + return (char *)fbdev->mem + fbdev->fb_size * fbdev->buffer_write; +} + +void vout_fbdev_clear(struct vout_fbdev *fbdev) +{ + memset(fbdev->mem, 0, fbdev->mem_size); +} + +void vout_fbdev_clear_lines(struct vout_fbdev *fbdev, int y, int count) +{ + int stride = fbdev->fbvar_new.xres_virtual * fbdev->fbvar_new.bits_per_pixel / 8; + int i; + + if (y + count > fbdev->top_border + fbdev->fbvar_new.yres) + count = fbdev->top_border + fbdev->fbvar_new.yres - y; + + if (y >= 0 && count > 0) + for (i = 0; i < fbdev->buffer_count; i++) + memset((char *)fbdev->mem + fbdev->fb_size * i + y * stride, 0, stride * count); +} + +void *vout_fbdev_get_active_mem(struct vout_fbdev *fbdev) +{ + int i; + + i = fbdev->buffer_write - 1; + if (i < 0) + i = fbdev->buffer_count - 1; + + return (char *)fbdev->mem + fbdev->fb_size * i; +} + +int vout_fbdev_get_fd(struct vout_fbdev *fbdev) +{ + if (fbdev == NULL) return -1; + + return fbdev->fd; +} + +struct vout_fbdev *vout_fbdev_preinit(int fbdev_fd) +{ + struct vout_fbdev *fbdev; + + fbdev = calloc(1, sizeof(*fbdev)); + if (fbdev == NULL) return NULL; + + fbdev->fd = fbdev_fd; + + return fbdev; +} + +int vout_fbdev_init(struct vout_fbdev *fbdev, int *w, int *h, int bpp, int buffer_cnt) +{ + int req_w, req_h; + void *pret; + int ret; + + ret = ioctl(fbdev->fd, FBIOGET_VSCREENINFO, &fbdev->fbvar_old); + if (ret == -1) { + perror(PFX "FBIOGET_VSCREENINFO ioctl"); + return -1; + } + + fbdev->fbvar_new = fbdev->fbvar_old; + + req_w = fbdev->fbvar_new.xres; + if (*w != 0) + req_w = *w; + req_h = fbdev->fbvar_new.yres; + if (*h != 0) + req_h = *h; + + pret = vout_fbdev_resize(fbdev, req_w, req_h, bpp, 0, 0, 0, 0, buffer_cnt); + if (pret == NULL) + return -1; + + printf(PFX "%ix%i@%d\n", fbdev->fbvar_new.xres, + fbdev->fbvar_new.yres, fbdev->fbvar_new.bits_per_pixel); + *w = fbdev->fbvar_new.xres; + *h = fbdev->fbvar_new.yres; + + memset(fbdev->mem, 0, fbdev->mem_size); + + // some checks + ret = 0; + ret = ioctl(fbdev->fd, FBIO_WAITFORVSYNC, &ret); + if (ret != 0) + fprintf(stderr, PFX "Warning: vsync doesn't seem to be supported\n"); + + if (fbdev->buffer_count > 1) { + fbdev->buffer_write = 0; + fbdev->fbvar_new.yoffset = fbdev->fbvar_new.yres * (fbdev->buffer_count - 1); + ret = ioctl(fbdev->fd, FBIOPAN_DISPLAY, &fbdev->fbvar_new); + if (ret != 0) { + fbdev->buffer_count = 1; + fprintf(stderr, PFX "Warning: can't pan display, doublebuffering disabled\n"); + } + } + + printf("fbdev initialized.\n"); + return 0; +} + +void vout_fbdev_release(struct vout_fbdev *fbdev) +{ + if (fbdev->mem == NULL) return; + + ioctl(fbdev->fd, FBIOPUT_VSCREENINFO, &fbdev->fbvar_old); + if (fbdev->mem != MAP_FAILED) + munmap(fbdev->mem, fbdev->mem_size); + fbdev->mem = NULL; +} + +int vout_fbdev_save(struct vout_fbdev *fbdev) +{ + void *tmp; + + if (fbdev == NULL || fbdev->mem == NULL || fbdev->mem == MAP_FAILED) { + fprintf(stderr, PFX "bad args for save\n"); + return -1; + } + + if (fbdev->mem_saved_size < fbdev->mem_size) { + tmp = realloc(fbdev->mem_saved, fbdev->mem_size); + if (tmp == NULL) + return -1; + fbdev->mem_saved = tmp; + } + memcpy(fbdev->mem_saved, fbdev->mem, fbdev->mem_size); + fbdev->mem_saved_size = fbdev->mem_size; + + vout_fbdev_release(fbdev); + return 0; +} + +int vout_fbdev_restore(struct vout_fbdev *fbdev) +{ + int ret; + + if (fbdev == NULL || fbdev->mem != NULL) { + fprintf(stderr, PFX "bad args/state for restore\n"); + return -1; + } + + fbdev->mem = mmap(0, fbdev->mem_size, PROT_WRITE|PROT_READ, MAP_SHARED, fbdev->fd, 0); + if (fbdev->mem == MAP_FAILED) { + perror(PFX "restore: memory restore failed"); + return -1; + } + memcpy(fbdev->mem, fbdev->mem_saved, fbdev->mem_size); + + ret = ioctl(fbdev->fd, FBIOPUT_VSCREENINFO, &fbdev->fbvar_new); + if (ret == -1) { + perror(PFX "restore: FBIOPUT_VSCREENINFO"); + return -1; + } + + return 0; +} + +void vout_fbdev_teardown(struct vout_fbdev* fbdev) +{ + if (fbdev == NULL) return; + + if (fbdev->fd >= 0) close(fbdev->fd); + fbdev->fd = -1; + free(fbdev); +} diff --git a/gfx/fbdev.h b/gfx/fbdev.h new file mode 100644 index 0000000000..a821cbee44 --- /dev/null +++ b/gfx/fbdev.h @@ -0,0 +1,24 @@ +#ifndef _FBDEV_H +#define _FBDEV_H + +struct vout_fbdev; + +struct vout_fbdev *vout_fbdev_preinit(int fbdev_fd); +int vout_fbdev_init(struct vout_fbdev *fbdev, int *w, int *h, int bpp, int buffer_cnt); + +void *vout_fbdev_flip(struct vout_fbdev *fbdev); +void vout_fbdev_wait_vsync(struct vout_fbdev *fbdev); +void *vout_fbdev_resize(struct vout_fbdev *fbdev, int w, int h, int bpp, + int left_border, int right_border, int top_border, int bottom_border, + int buffer_count); +void vout_fbdev_clear(struct vout_fbdev *fbdev); +void vout_fbdev_clear_lines(struct vout_fbdev *fbdev, int y, int count); +int vout_fbdev_get_fd(struct vout_fbdev *fbdev); +void *vout_fbdev_get_active_mem(struct vout_fbdev *fbdev); +int vout_fbdev_save(struct vout_fbdev *fbdev); +int vout_fbdev_restore(struct vout_fbdev *fbdev); + +void vout_fbdev_release(struct vout_fbdev *fbdev); +void vout_fbdev_teardown(struct vout_fbdev* fbdev); + +#endif diff --git a/gfx/omap_gfx.c b/gfx/omap_gfx.c new file mode 100644 index 0000000000..147c465bb1 --- /dev/null +++ b/gfx/omap_gfx.c @@ -0,0 +1,860 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2013 - Tobias Jakobi + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include "../driver.h" +#include +#include +#include "../general.h" +#include "scaler/scaler.h" +#include "gfx_common.h" +#include "gfx_context.h" +#include "fonts/fonts.h" + +#include +#include +#include +#include +#include +#include + +#include "omapfb.h" +#include "fbdev.h" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define MIN(a, b) ( ((a) < (b)) ? (a) : (b) ) + +enum omap_layer_size { + OMAP_LAYER_UNSCALED, + OMAP_LAYER_FULLSCREEN, + OMAP_LAYER_SCALED, + OMAP_LAYER_PIXELPERFECT, + OMAP_LAYER_CUSTOM +}; + +typedef struct omapfb_state { + struct omapfb_plane_info pi; + struct omapfb_mem_info mi; + struct omapfb_plane_info pi_old; + struct omapfb_mem_info mi_old; +} omapfb_state_t; + +typedef struct osdl_data +{ + struct vout_fbdev *fbdev; + void *front_buffer; + void *saved_layer; + /* physical/native screen size */ + int phys_w, phys_h; + /* layer */ + int layer_x, layer_y, layer_w, layer_h; + enum omap_layer_size layer_size; + bool vsync; +} osdl_data_t; + +static const char *get_fb_device(void) +{ + const char *fbname = getenv("OMAP_FBDEV"); + if (fbname == NULL) + fbname = "/dev/fb1"; + + return fbname; +} + +static int osdl_setup_omapfb(struct omapfb_state *ostate, int fd, int enabled, + int x, int y, int w, int h, int mem, int buffer_count) +{ + struct omapfb_plane_info pi; + struct omapfb_mem_info mi; + unsigned int size_cur; + int ret; + + RARCH_LOG("in osdl_setup_omapfb\n"); + + memset(&pi, 0, sizeof(pi)); + memset(&mi, 0, sizeof(mi)); + + ret = ioctl(fd, OMAPFB_QUERY_PLANE, &pi); + if (ret != 0) { + RARCH_ERR("omapfb: QUERY_PLANE\n"); + return -1; + } + + ret = ioctl(fd, OMAPFB_QUERY_MEM, &mi); + if (ret != 0) { + RARCH_ERR("omapfb: QUERY_MEM\n"); + return -1; + } + size_cur = mi.size; + + /* must disable when changing stuff */ + if (pi.enabled) { + pi.enabled = 0; + ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi); + if (ret != 0) + RARCH_ERR("SETUP_PLANE\n"); + } + + /* if needed increase memory allocation */ + if (size_cur < mem * buffer_count) { + mi.size = mem * buffer_count; + ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi); + if (ret != 0) { + RARCH_ERR("omapfb: SETUP_MEM\n"); + RARCH_ERR("Failed to allocate %d bytes of vram.\n", mem * buffer_count); + return -1; + } + } + + pi.pos_x = x; + pi.pos_y = y; + pi.out_width = w; + pi.out_height = h; + pi.enabled = enabled; + + ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi); + if (ret != 0) { + RARCH_ERR("omapfb: SETUP_PLANE (%d %d %d %d)\n", x, y, w, h); + return -1; + } + + ostate->pi = pi; + ostate->mi = mi; + + return 0; +} + +static int osdl_setup_omapfb_enable(struct omapfb_state *ostate, + int fd, int enabled) +{ + int ret; + + ostate->pi.enabled = enabled; + ret = ioctl(fd, OMAPFB_SETUP_PLANE, &ostate->pi); + if (ret != 0) RARCH_ERR("omapfb: SETUP_PLANE\n"); + + return ret; +} + +static int read_sysfs(const char *fname, char *buff, size_t size) +{ + FILE *f; + int ret; + + f = fopen(fname, "r"); + if (f == NULL) { + RARCH_ERR("video_omap: open %s failed\n", fname); + return -1; + } + + ret = fread(buff, 1, size - 1, f); + fclose(f); + if (ret <= 0) { + RARCH_ERR("video_omap: read %s failed\n", fname); + return -1; + } + + buff[ret] = 0; + for (ret--; ret >= 0 && isspace(buff[ret]); ret--) + buff[ret] = 0; + + return 0; +} + +static int osdl_fbdev_init(struct osdl_data *pdata, int fd) +{ + pdata->fbdev = vout_fbdev_preinit(fd); + + if (pdata->fbdev == NULL) return -1; + + return 0; +} + +static int osdl_video_detect_screen(struct osdl_data *pdata, const char *fbname) +{ + int fb_id, overlay_id = -1, display_id = -1; + char buff[64], manager_name[64], display_name[64]; + struct stat status; + int fd, i, ret; + int w, h; + FILE *f; + + pdata->phys_w = pdata->phys_h = 0; + + /* Figure out screen resolution, we need to know default + * resolution for centering stuff. + * The only way to achieve this seems to be walking some sysfs files.. */ + ret = stat(fbname, &status); + if (ret != 0) { + RARCH_ERR("video_omap: can't stat %s\n", fbname); + return -1; + } + fb_id = minor(status.st_rdev); + + snprintf(buff, sizeof(buff), "/sys/class/graphics/fb%d/overlays", fb_id); + f = fopen(buff, "r"); + if (f == NULL) { + RARCH_ERR("video_omap: can't open %s\n", buff); + return -1; + } + + ret = fscanf(f, "%d", &overlay_id); + fclose(f); + if (ret != 1) { + RARCH_ERR("video_omap: can't parse %s\n", buff); + return -1; + } + + snprintf(buff, sizeof(buff), "/sys/devices/platform/omapdss/overlay%d/manager", overlay_id); + ret = read_sysfs(buff, manager_name, sizeof(manager_name)); + if (ret < 0) { + RARCH_ERR("video_omap: can't read manager name\n"); + return -1; + } + + for (i = 0; ; i++) { + snprintf(buff, sizeof(buff), "/sys/devices/platform/omapdss/manager%d/name", i); + ret = read_sysfs(buff, buff, sizeof(buff)); + if (ret < 0) break; + + if (strcmp(manager_name, buff) == 0) { + snprintf(buff, sizeof(buff), "/sys/devices/platform/omapdss/manager%d/display", i); + ret = read_sysfs(buff, display_name, sizeof(display_name)); + + if (ret < 0) { + RARCH_ERR("video_omap: can't read display name\n"); + return -1; + } + + break; + } + } + + if (ret < 0) { + RARCH_ERR("video_omap: couldn't find manager\n"); + return -1; + } + + for (i = 0; ; i++) { + snprintf(buff, sizeof(buff), "/sys/devices/platform/omapdss/display%d/name", i); + ret = read_sysfs(buff, buff, sizeof(buff)); + if (ret < 0) break; + + if (strcmp(display_name, buff) == 0) { + display_id = i; + break; + } + } + + if (display_id < 0) { + RARCH_ERR("video_omap: couldn't find display\n"); + return -1; + } + + snprintf(buff, sizeof(buff), "/sys/devices/platform/omapdss/display%d/timings", display_id); + f = fopen(buff, "r"); + if (f == NULL) { + RARCH_ERR("video_omap: can't open %s\n", buff); + return -1; + } + + ret = fscanf(f, "%*d,%d/%*d/%*d/%*d,%d/%*d/%*d/%*d", &w, &h); + fclose(f); + if (ret != 2) { + RARCH_ERR("video_omap: can't parse %s (%d)\n", buff, ret); + return -1; + } + + RARCH_LOG("video_omap: detected %dx%d '%s' (%d) display attached to fb %d and overlay %d\n", + w, h, display_name, display_id, fb_id, overlay_id); + + pdata->phys_w = w; + pdata->phys_h = h; + + return 0; +} + +static int osdl_init(struct osdl_data *pdata) +{ + const char *fbname; + int ret, fb; + + fbname = get_fb_device(); + ret = osdl_video_detect_screen(pdata, fbname); + + if (ret != 0) return ret; + + fb = open(fbname, O_RDWR); + if (fb == -1) { + RARCH_ERR("video_omap: can't open fb device\n"); + return -1; + } + + ret = osdl_fbdev_init(pdata, fb); + + return ret; +} + +static int osdl_setup_omap_layer(struct osdl_data *pdata, int width, + int height, int bpp, int buffer_count) +{ + int x = 0, y = 0, w = width, h = height; /* layer size and pos */ + int screen_w = w, screen_h = h; + int tmp_w, tmp_h; + const char *tmp; + int retval = -1; + int ret; + + RARCH_LOG("in osdl_setup_omap_layer\n"); + + const int fd = vout_fbdev_get_fd(pdata->fbdev); + + if (fd == -1) { + RARCH_ERR("got no fbdev fd\n"); + } + + pdata->layer_x = pdata->layer_y = pdata->layer_w = pdata->layer_h = 0; + + if (pdata->phys_w != 0) + screen_w = pdata->phys_w; + if (pdata->phys_h != 0) + screen_h = pdata->phys_h; + + /* FIXME: assuming layer doesn't change here */ + if (pdata->saved_layer == NULL) { + struct omapfb_state *slayer; + slayer = calloc(1, sizeof(*slayer)); + if (slayer == NULL) + goto out; + + ret = ioctl(fd, OMAPFB_QUERY_PLANE, &slayer->pi_old); + if (ret != 0) { + RARCH_ERR("omapfb: QUERY_PLANE\n"); + goto out; + } + + ret = ioctl(fd, OMAPFB_QUERY_MEM, &slayer->mi_old); + if (ret != 0) { + RARCH_ERR("omapfb: QUERY_MEM\n"); + goto out; + } + + pdata->saved_layer = slayer; + } + + switch (pdata->layer_size) { + case OMAP_LAYER_FULLSCREEN: + { + w = screen_w, h = screen_h; + } + break; + + case OMAP_LAYER_SCALED: + { + const float factor = MIN(((float)screen_w) / width, ((float)screen_h) / height); + w = (int)(factor*width), h = (int)(factor*height); + } + break; + + case OMAP_LAYER_PIXELPERFECT: + { + const float factor = MIN(((float)screen_w) / width, ((float)screen_h) / height); + w = ((int)factor) * width, h = ((int)factor) * height; + /* factor < 1.f => 0x0 layer, so fall back to 'scaled' */ + if (!w || !h) { + w = (int)(factor * width), h = (int)(factor * height); + } + } + break; + + // TODO: use g_settings.video.fullscreen_x for this! + case OMAP_LAYER_CUSTOM: + { + tmp = getenv("OMAP_LAYER_SIZE"); + + if (tmp != NULL && sscanf(tmp, "%dx%d", &tmp_w, &tmp_h) == 2) { + w = tmp_w, h = tmp_h; + } else { + RARCH_ERR("omap_video: custom layer size specified incorrectly, " + "should be like 800x480\n"); + } + } + break; + + default: + break; + } + + /* the layer can't be set larger than screen */ + tmp_w = w, tmp_h = h; + if (w > screen_w) w = screen_w; + if (h > screen_h) h = screen_h; + if (w != tmp_w || h != tmp_h) + RARCH_LOG("omap_video: layer resized %dx%d -> %dx%d to fit screen\n", tmp_w, tmp_h, w, h); + + x = screen_w / 2 - w / 2; + y = screen_h / 2 - h / 2; + ret = osdl_setup_omapfb(pdata->saved_layer, fd, 0, x, y, w, h, + width * height * ((bpp + 7) / 8), buffer_count); + + if (ret == 0) { + pdata->layer_x = x; + pdata->layer_y = y; + pdata->layer_w = w; + pdata->layer_h = h; + } + + retval = ret; + +out: + return retval; +} + +static void *osdl_video_flip(struct osdl_data *pdata) +{ + void *ret; + + if (pdata->fbdev == NULL) + return NULL; + + ret = vout_fbdev_flip(pdata->fbdev); + + if (pdata->vsync) + vout_fbdev_wait_vsync(pdata->fbdev); + + return ret; +} + +void osdl_video_finish(struct osdl_data *pdata) +{ + vout_fbdev_release(pdata->fbdev); + + /* restore the OMAP layer */ + if (pdata->saved_layer != NULL) { + struct omapfb_state *slayer = pdata->saved_layer; + int fd = vout_fbdev_get_fd(pdata->fbdev); + + int enabled = slayer->pi_old.enabled; + + /* be sure to disable while setting up */ + slayer->pi_old.enabled = 0; + ioctl(fd, OMAPFB_SETUP_PLANE, &slayer->pi_old); + ioctl(fd, OMAPFB_SETUP_MEM, &slayer->mi_old); + if (enabled) { + slayer->pi_old.enabled = enabled; + ioctl(fd, OMAPFB_SETUP_PLANE, &slayer->pi_old); + } + + free(slayer); + pdata->saved_layer = NULL; + } + + vout_fbdev_teardown(pdata->fbdev); + pdata->fbdev = NULL; +} + +static void *osdl_video_set_mode(struct osdl_data *pdata, int width, + int height, int bpp) +{ + int num_buffers; + void *result; + int ret; + + RARCH_LOG("osdl: setting video mode\n"); + + vout_fbdev_release(pdata->fbdev); + + /* always use triple buffering for reduced chance of tearing */ + num_buffers = 3; + + RARCH_LOG("width = %d, height = %d\n", width, height); + + ret = osdl_setup_omap_layer(pdata, width, height, bpp, num_buffers); + if (ret < 0) + goto fail; + + ret = vout_fbdev_init(pdata->fbdev, &width, &height, bpp, num_buffers); + if (ret == -1) + goto fail; + + result = osdl_video_flip(pdata); + if (result == NULL) + goto fail; + + ret = osdl_setup_omapfb_enable(pdata->saved_layer, + vout_fbdev_get_fd(pdata->fbdev), 1); + if (ret != 0) { + RARCH_ERR("video_omap: layer enable failed\n"); + goto fail; + } + + return result; + +fail: + osdl_video_finish(pdata); + return NULL; +} + +void *osdl_video_get_active_buffer(struct osdl_data *pdata) +{ + if (pdata->fbdev == NULL) return NULL; + + return vout_fbdev_get_active_mem(pdata->fbdev); +} + +int osdl_video_pause(struct osdl_data *pdata, int is_pause) +{ + struct omapfb_state *state = pdata->saved_layer; + struct omapfb_plane_info pi; + struct omapfb_mem_info mi; + int enabled; + int fd = -1; + int ret; + + if (pdata->fbdev != NULL) + fd = vout_fbdev_get_fd(pdata->fbdev); + if (fd == -1) { + RARCH_ERR("bad fd %d", fd); + return -1; + } + if (state == NULL) { + RARCH_ERR("missing layer state\n"); + return -1; + } + + if (is_pause) { + ret = vout_fbdev_save(pdata->fbdev); + if (ret != 0) + return ret; + pi = state->pi_old; + mi = state->mi_old; + enabled = pi.enabled; + } else { + pi = state->pi; + mi = state->mi; + enabled = 1; + } + pi.enabled = 0; + ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi); + if (ret != 0) { + RARCH_ERR("SETUP_PLANE"); + return -1; + } + + ret = ioctl(fd, OMAPFB_SETUP_MEM, &mi); + if (ret != 0) + RARCH_ERR("SETUP_MEM"); + + if (!is_pause) { + ret = vout_fbdev_restore(pdata->fbdev); + if (ret != 0) { + RARCH_ERR("fbdev_restore failed\n"); + return ret; + } + } + + if (enabled) { + pi.enabled = 1; + ret = ioctl(fd, OMAPFB_SETUP_PLANE, &pi); + if (ret != 0) { + RARCH_ERR("SETUP_PLANE"); + return -1; + } + } + + return 0; +} + + +typedef struct omap_video +{ + struct osdl_data osdl; + void* pixels; + + void *font; + const font_renderer_driver_t *font_driver; + uint8_t font_r; + uint8_t font_g; + uint8_t font_b; + + /* current settings */ + unsigned width; + unsigned height; + unsigned bytes_per_pixel; +} omap_video_t; + +static void omap_gfx_free(void *data) +{ + omap_video_t *vid = (omap_video_t*)data; + if (!vid) return; + + osdl_video_finish(&vid->osdl); + + if (vid->font) vid->font_driver->free(vid->font); + + free(vid); +} + +static void omap_init_font(omap_video_t *vid, const char *font_path, unsigned font_size) +{ + if (!g_settings.video.font_enable) return; + + if (font_renderer_create_default(&vid->font_driver, &vid->font)) { + int r = g_settings.video.msg_color_r * 255; + int g = g_settings.video.msg_color_g * 255; + int b = g_settings.video.msg_color_b * 255; + + r = r < 0 ? 0 : (r > 255 ? 255 : r); + g = g < 0 ? 0 : (g > 255 ? 255 : g); + b = b < 0 ? 0 : (b > 255 ? 255 : b); + + vid->font_r = r; + vid->font_g = g; + vid->font_b = b; + } else { + RARCH_LOG("Could not initialize fonts.\n"); + } +} + +/*static void omap_render_msg(omap_video_t *vid, SDL_Surface *buffer, + const char *msg, unsigned width, unsigned height, const SDL_PixelFormat *fmt) +{ + if (!vid->font) return; + + struct font_output_list out; + vid->font_driver->render_msg(vid->font, msg, &out); + struct font_output *head = out.head; + + int msg_base_x = g_settings.video.msg_pos_x * width; + int msg_base_y = (1.0 - g_settings.video.msg_pos_y) * height; + + unsigned rshift = fmt->Rshift; + unsigned gshift = fmt->Gshift; + unsigned bshift = fmt->Bshift; + + for (; head; head = head->next) + { + int base_x = msg_base_x + head->off_x; + int base_y = msg_base_y - head->off_y - head->height; + + int glyph_width = head->width; + int glyph_height = head->height; + + const uint8_t *src = head->output; + + if (base_x < 0) + { + src -= base_x; + glyph_width += base_x; + base_x = 0; + } + + if (base_y < 0) + { + src -= base_y * (int)head->pitch; + glyph_height += base_y; + base_y = 0; + } + + int max_width = width - base_x; + int max_height = height - base_y; + + if (max_width <= 0 || max_height <= 0) + continue; + + if (glyph_width > max_width) + glyph_width = max_width; + if (glyph_height > max_height) + glyph_height = max_height; + + uint32_t *out = (uint32_t*)buffer->pixels + base_y * (buffer->pitch >> 2) + base_x; + + for (int y = 0; y < glyph_height; y++, src += head->pitch, out += buffer->pitch >> 2) + { + for (int x = 0; x < glyph_width; x++) + { + unsigned blend = src[x]; + unsigned out_pix = out[x]; + unsigned r = (out_pix >> rshift) & 0xff; + unsigned g = (out_pix >> gshift) & 0xff; + unsigned b = (out_pix >> bshift) & 0xff; + + unsigned out_r = (r * (256 - blend) + vid->font_r * blend) >> 8; + unsigned out_g = (g * (256 - blend) + vid->font_g * blend) >> 8; + unsigned out_b = (b * (256 - blend) + vid->font_b * blend) >> 8; + out[x] = (out_r << rshift) | (out_g << gshift) | (out_b << bshift); + } + } + } + + vid->font_driver->free_output(vid->font, &out); +}*/ + +static void *omap_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) +{ + void* ret = NULL; + + omap_video_t *vid = (omap_video_t*)calloc(1, sizeof(*vid)); + if (!vid) return NULL; + + if (osdl_init(&vid->osdl) != 0) { + goto fail; + } + + RARCH_LOG("Detecting native resolution %ux%u.\n", + vid->osdl.phys_w, vid->osdl.phys_h); + + if (!video->fullscreen) + RARCH_LOG("Creating unscaled output @ %ux%u.\n", video->width, video->height); + + if (video->fullscreen) { + vid->osdl.layer_size = video->force_aspect ? + OMAP_LAYER_SCALED : OMAP_LAYER_FULLSCREEN; + } else { + vid->osdl.layer_size = OMAP_LAYER_UNSCALED; + } + + vid->osdl.vsync = video->vsync; + vid->bytes_per_pixel = video->rgb32 ? 4 : 2; + + // TODO: use geom from geom->base_width / geom->base_height + // const struct retro_game_geometry *geom = &g_extern.system.av_info.geometry; + + RARCH_LOG("calling osdl_video_set_mode with width = %d, height = %d\n", video->width, video->height); + + // TODO: handle width = height = 0 + + ret = osdl_video_set_mode(&vid->osdl, video->width, video->height, + vid->bytes_per_pixel * 8); + + if (ret == NULL) { + goto fail; + } + + vid->width = video->width; + vid->height = video->height; + vid->pixels = ret; + + if (input && input_data) { + *input = NULL; + //input_data = NULL; + } + + omap_init_font(vid, g_settings.video.font_path, g_settings.video.font_size); + + return vid; + +fail: + RARCH_ERR("Failed to init OMAP video output.\n"); + omap_gfx_free(vid); + return NULL; +} + +static void omap_blit_frame(omap_video_t *video, const void *src, + unsigned src_pitch) +{ + unsigned i; + const unsigned pitch = video->width * video->bytes_per_pixel; + + RARCH_LOG("in omap_blit_frame\n"); + + for (i = 0; i < video->height; i++) { + memcpy(video->pixels + pitch * i, src + src_pitch * i, pitch); + } +} + +static bool omap_gfx_frame(void *data, const void *frame, unsigned width, + unsigned height, unsigned pitch, const char *msg) +{ + if (!frame) return true; + + omap_video_t *vid = (omap_video_t*)data; + + if (width != vid->width || height != vid->height) { + void* pixels; + + RARCH_LOG("Dimensions changed -> OMAP reinit\n"); + pixels = osdl_video_set_mode(&vid->osdl, width, height, + vid->bytes_per_pixel * 8); + + if (pixels == NULL) { + RARCH_ERR("OMAP reinit failed\n"); + return false; + } + + vid->width = width; + vid->height = height; + } + + omap_blit_frame(vid, frame, pitch); + + /*if (msg) + omap_render_msg(vid, vid->screen, msg, vid->screen->w, vid->screen->h, vid->screen->format);*/ + + vid->pixels = osdl_video_flip(&vid->osdl); + g_extern.frame_count++; + + return true; +} + +static void omap_gfx_set_nonblock_state(void *data, bool state) +{ + (void)data; /* NOP */ + (void)state; +} + +static bool omap_gfx_alive(void *data) +{ + (void)data; + return true; /* always alive */ +} + +static bool omap_gfx_focus(void *data) +{ + (void)data; + return true; /* fb device always has focus */ +} + +static void omap_gfx_viewport_info(void *data, struct rarch_viewport *vp) +{ + omap_video_t *vid = (omap_video_t*)data; + vp->x = vp->y = 0; + + // TODO: maybe set full_width,height to phys_w,h + vp->width = vp->full_width = vid->width; + vp->height = vp->full_height = vid->height; +} + +const video_driver_t video_omap = { + omap_gfx_init, + omap_gfx_frame, + omap_gfx_set_nonblock_state, + omap_gfx_alive, + omap_gfx_focus, + NULL, + omap_gfx_free, + "omap", + +#ifdef HAVE_RGUI + NULL, + NULL, +#endif + + NULL, + omap_gfx_viewport_info, +}; diff --git a/gfx/omapfb.h b/gfx/omapfb.h new file mode 100644 index 0000000000..f156e3a14d --- /dev/null +++ b/gfx/omapfb.h @@ -0,0 +1,427 @@ +/* + * File: arch/arm/plat-omap/include/mach/omapfb.h + * + * Framebuffer driver for TI OMAP boards + * + * Copyright (C) 2004 Nokia Corporation + * Author: Imre Deak + * + * 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, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __OMAPFB_H +#define __OMAPFB_H + +#include +#include + +/* IOCTL commands. */ + +#define OMAP_IOW(num, dtype) _IOW('O', num, dtype) +#define OMAP_IOR(num, dtype) _IOR('O', num, dtype) +#define OMAP_IOWR(num, dtype) _IOWR('O', num, dtype) +#define OMAP_IO(num) _IO('O', num) + +#define OMAPFB_MIRROR OMAP_IOW(31, int) +#define OMAPFB_SYNC_GFX OMAP_IO(37) +#define OMAPFB_VSYNC OMAP_IO(38) +#define OMAPFB_SET_UPDATE_MODE OMAP_IOW(40, int) +#define OMAPFB_GET_CAPS OMAP_IOR(42, struct omapfb_caps) +#define OMAPFB_GET_UPDATE_MODE OMAP_IOW(43, int) +#define OMAPFB_LCD_TEST OMAP_IOW(45, int) +#define OMAPFB_CTRL_TEST OMAP_IOW(46, int) +#define OMAPFB_UPDATE_WINDOW_OLD OMAP_IOW(47, struct omapfb_update_window_old) +#define OMAPFB_SET_COLOR_KEY OMAP_IOW(50, struct omapfb_color_key) +#define OMAPFB_GET_COLOR_KEY OMAP_IOW(51, struct omapfb_color_key) +#define OMAPFB_SETUP_PLANE OMAP_IOW(52, struct omapfb_plane_info) +#define OMAPFB_QUERY_PLANE OMAP_IOW(53, struct omapfb_plane_info) +#define OMAPFB_UPDATE_WINDOW OMAP_IOW(54, struct omapfb_update_window) +#define OMAPFB_SETUP_MEM OMAP_IOW(55, struct omapfb_mem_info) +#define OMAPFB_QUERY_MEM OMAP_IOW(56, struct omapfb_mem_info) +#define OMAPFB_WAITFORVSYNC OMAP_IO(57) +#define OMAPFB_MEMORY_READ OMAP_IOR(58, struct omapfb_memory_read) + +#ifndef FBIO_WAITFORVSYNC +#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) +#endif + +#define OMAPFB_CAPS_GENERIC_MASK 0x00000fff +#define OMAPFB_CAPS_LCDC_MASK 0x00fff000 +#define OMAPFB_CAPS_PANEL_MASK 0xff000000 + +#define OMAPFB_CAPS_MANUAL_UPDATE 0x00001000 +#define OMAPFB_CAPS_TEARSYNC 0x00002000 +#define OMAPFB_CAPS_PLANE_RELOCATE_MEM 0x00004000 +#define OMAPFB_CAPS_PLANE_SCALE 0x00008000 +#define OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE 0x00010000 +#define OMAPFB_CAPS_WINDOW_SCALE 0x00020000 +#define OMAPFB_CAPS_WINDOW_OVERLAY 0x00040000 +#define OMAPFB_CAPS_WINDOW_ROTATE 0x00080000 +#define OMAPFB_CAPS_SET_BACKLIGHT 0x01000000 + +/* Values from DSP must map to lower 16-bits */ +#define OMAPFB_FORMAT_MASK 0x00ff +#define OMAPFB_FORMAT_FLAG_DOUBLE 0x0100 +#define OMAPFB_FORMAT_FLAG_TEARSYNC 0x0200 +#define OMAPFB_FORMAT_FLAG_FORCE_VSYNC 0x0400 +#define OMAPFB_FORMAT_FLAG_ENABLE_OVERLAY 0x0800 +#define OMAPFB_FORMAT_FLAG_DISABLE_OVERLAY 0x1000 + +#define OMAPFB_EVENT_READY 1 +#define OMAPFB_EVENT_DISABLED 2 + +#define OMAPFB_MEMTYPE_SDRAM 0 +#define OMAPFB_MEMTYPE_SRAM 1 +#define OMAPFB_MEMTYPE_MAX 1 + +enum omapfb_color_format { + OMAPFB_COLOR_RGB565 = 0, + OMAPFB_COLOR_YUV422, + OMAPFB_COLOR_YUV420, + OMAPFB_COLOR_CLUT_8BPP, + OMAPFB_COLOR_CLUT_4BPP, + OMAPFB_COLOR_CLUT_2BPP, + OMAPFB_COLOR_CLUT_1BPP, + OMAPFB_COLOR_RGB444, + OMAPFB_COLOR_YUY422, + + OMAPFB_COLOR_ARGB16, + OMAPFB_COLOR_RGB24U, /* RGB24, 32-bit container */ + OMAPFB_COLOR_RGB24P, /* RGB24, 24-bit container */ + OMAPFB_COLOR_ARGB32, + OMAPFB_COLOR_RGBA32, + OMAPFB_COLOR_RGBX32, +}; + +struct omapfb_update_window { + __u32 x, y; + __u32 width, height; + __u32 format; + __u32 out_x, out_y; + __u32 out_width, out_height; + __u32 reserved[8]; +}; + +struct omapfb_update_window_old { + __u32 x, y; + __u32 width, height; + __u32 format; +}; + +enum omapfb_plane { + OMAPFB_PLANE_GFX = 0, + OMAPFB_PLANE_VID1, + OMAPFB_PLANE_VID2, +}; + +enum omapfb_channel_out { + OMAPFB_CHANNEL_OUT_LCD = 0, + OMAPFB_CHANNEL_OUT_DIGIT, +}; + +struct omapfb_plane_info { + __u32 pos_x; + __u32 pos_y; + __u8 enabled; + __u8 channel_out; + __u8 mirror; + __u8 reserved1; + __u32 out_width; + __u32 out_height; + __u32 reserved2[12]; +}; + +struct omapfb_mem_info { + __u32 size; + __u8 type; + __u8 reserved[3]; +}; + +struct omapfb_caps { + __u32 ctrl; + __u32 plane_color; + __u32 wnd_color; +}; + +enum omapfb_color_key_type { + OMAPFB_COLOR_KEY_DISABLED = 0, + OMAPFB_COLOR_KEY_GFX_DST, + OMAPFB_COLOR_KEY_VID_SRC, +}; + +struct omapfb_color_key { + __u8 channel_out; + __u32 background; + __u32 trans_key; + __u8 key_type; +}; + +enum omapfb_update_mode { + OMAPFB_UPDATE_DISABLED = 0, + OMAPFB_AUTO_UPDATE, + OMAPFB_MANUAL_UPDATE +}; + +struct omapfb_memory_read { + __u16 x; + __u16 y; + __u16 w; + __u16 h; + size_t buffer_size; + void *buffer; +}; + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +#include + +#define OMAP_LCDC_INV_VSYNC 0x0001 +#define OMAP_LCDC_INV_HSYNC 0x0002 +#define OMAP_LCDC_INV_PIX_CLOCK 0x0004 +#define OMAP_LCDC_INV_OUTPUT_EN 0x0008 +#define OMAP_LCDC_HSVS_RISING_EDGE 0x0010 +#define OMAP_LCDC_HSVS_OPPOSITE 0x0020 + +#define OMAP_LCDC_SIGNAL_MASK 0x003f + +#define OMAP_LCDC_PANEL_TFT 0x0100 + +#define OMAPFB_PLANE_XRES_MIN 8 +#define OMAPFB_PLANE_YRES_MIN 8 + +#ifdef CONFIG_ARCH_OMAP1 +#define OMAPFB_PLANE_NUM 1 +#else +#define OMAPFB_PLANE_NUM 3 +#endif + +struct omapfb_device; + +struct lcd_panel { + const char *name; + int config; /* TFT/STN, signal inversion */ + int bpp; /* Pixel format in fb mem */ + int data_lines; /* Lines on LCD HW interface */ + + int x_res, y_res; + int pixel_clock; /* In kHz */ + int hsw; /* Horizontal synchronization + pulse width */ + int hfp; /* Horizontal front porch */ + int hbp; /* Horizontal back porch */ + int vsw; /* Vertical synchronization + pulse width */ + int vfp; /* Vertical front porch */ + int vbp; /* Vertical back porch */ + int acb; /* ac-bias pin frequency */ + int pcd; /* pixel clock divider. + Obsolete use pixel_clock instead */ + + int (*init) (struct lcd_panel *panel, + struct omapfb_device *fbdev); + void (*cleanup) (struct lcd_panel *panel); + int (*enable) (struct lcd_panel *panel); + void (*disable) (struct lcd_panel *panel); + unsigned long (*get_caps) (struct lcd_panel *panel); + int (*set_bklight_level)(struct lcd_panel *panel, + unsigned int level); + unsigned int (*get_bklight_level)(struct lcd_panel *panel); + unsigned int (*get_bklight_max) (struct lcd_panel *panel); + int (*run_test) (struct lcd_panel *panel, int test_num); +}; + +struct extif_timings { + int cs_on_time; + int cs_off_time; + int we_on_time; + int we_off_time; + int re_on_time; + int re_off_time; + int we_cycle_time; + int re_cycle_time; + int cs_pulse_width; + int access_time; + + int clk_div; + + u32 tim[5]; /* set by extif->convert_timings */ + + int converted; +}; + +struct lcd_ctrl_extif { + int (*init) (struct omapfb_device *fbdev); + void (*cleanup) (void); + void (*get_clk_info) (u32 *clk_period, u32 *max_clk_div); + unsigned long (*get_max_tx_rate)(void); + int (*convert_timings) (struct extif_timings *timings); + void (*set_timings) (const struct extif_timings *timings); + void (*set_bits_per_cycle)(int bpc); + void (*write_command) (const void *buf, unsigned int len); + void (*read_data) (void *buf, unsigned int len); + void (*write_data) (const void *buf, unsigned int len); + void (*transfer_area) (int width, int height, + void (callback)(void * data), void *data); + int (*setup_tearsync) (unsigned pin_cnt, + unsigned hs_pulse_time, unsigned vs_pulse_time, + int hs_pol_inv, int vs_pol_inv, int div); + int (*enable_tearsync) (int enable, unsigned line); + + unsigned long max_transmit_size; +}; + +struct omapfb_notifier_block { + struct notifier_block nb; + void *data; + int plane_idx; +}; + +typedef int (*omapfb_notifier_callback_t)(struct notifier_block *, + unsigned long event, + void *fbi); + +struct omapfb_mem_region { + u32 paddr; + void __iomem *vaddr; + unsigned long size; + u8 type; /* OMAPFB_PLANE_MEM_* */ + enum omapfb_color_format format;/* OMAPFB_COLOR_* */ + unsigned format_used:1; /* Must be set when format is set. + * Needed b/c of the badly chosen 0 + * base for OMAPFB_COLOR_* values + */ + unsigned alloc:1; /* allocated by the driver */ + unsigned map:1; /* kernel mapped by the driver */ +}; + +struct omapfb_mem_desc { + int region_cnt; + struct omapfb_mem_region region[OMAPFB_PLANE_NUM]; +}; + +struct lcd_ctrl { + const char *name; + void *data; + + int (*init) (struct omapfb_device *fbdev, + int ext_mode, + struct omapfb_mem_desc *req_md); + void (*cleanup) (void); + void (*bind_client) (struct omapfb_notifier_block *nb); + void (*get_caps) (int plane, struct omapfb_caps *caps); + int (*set_update_mode)(enum omapfb_update_mode mode); + enum omapfb_update_mode (*get_update_mode)(void); + int (*setup_plane) (int plane, int channel_out, + unsigned long offset, + int screen_width, + int pos_x, int pos_y, int width, + int height, int color_mode); + int (*set_rotate) (int angle); + int (*setup_mem) (int plane, size_t size, + int mem_type, unsigned long *paddr); + int (*mmap) (struct fb_info *info, + struct vm_area_struct *vma); + int (*set_scale) (int plane, + int orig_width, int orig_height, + int out_width, int out_height); + int (*enable_plane) (int plane, int enable); + int (*update_window) (struct fb_info *fbi, + struct omapfb_update_window *win, + void (*callback)(void *), + void *callback_data); + void (*sync) (void); + void (*suspend) (void); + void (*resume) (void); + int (*run_test) (int test_num); + int (*setcolreg) (u_int regno, u16 red, u16 green, + u16 blue, u16 transp, + int update_hw_mem); + int (*set_color_key) (struct omapfb_color_key *ck); + int (*get_color_key) (struct omapfb_color_key *ck); +}; + +enum omapfb_state { + OMAPFB_DISABLED = 0, + OMAPFB_SUSPENDED= 99, + OMAPFB_ACTIVE = 100 +}; + +struct omapfb_plane_struct { + int idx; + struct omapfb_plane_info info; + enum omapfb_color_format color_mode; + struct omapfb_device *fbdev; +}; + +struct omapfb_device { + int state; + int ext_lcdc; /* Using external + LCD controller */ + struct mutex rqueue_mutex; + + int palette_size; + u32 pseudo_palette[17]; + + struct lcd_panel *panel; /* LCD panel */ + const struct lcd_ctrl *ctrl; /* LCD controller */ + const struct lcd_ctrl *int_ctrl; /* internal LCD ctrl */ + struct lcd_ctrl_extif *ext_if; /* LCD ctrl external + interface */ + struct device *dev; + struct fb_var_screeninfo new_var; /* for mode changes */ + + struct omapfb_mem_desc mem_desc; + struct fb_info *fb_info[OMAPFB_PLANE_NUM]; +}; + +struct omapfb_platform_data { + struct omap_lcd_config lcd; + struct omapfb_mem_desc mem_desc; + void *ctrl_platform_data; +}; + +#ifdef CONFIG_ARCH_OMAP1 +extern struct lcd_ctrl omap1_lcd_ctrl; +#else +extern struct lcd_ctrl omap2_disp_ctrl; +#endif + +extern void omapfb_set_platform_data(struct omapfb_platform_data *data); + +extern void omapfb_reserve_sdram(void); +extern void omapfb_register_panel(struct lcd_panel *panel); +extern void omapfb_write_first_pixel(struct omapfb_device *fbdev, u16 pixval); +extern void omapfb_notify_clients(struct omapfb_device *fbdev, + unsigned long event); +extern int omapfb_register_client(struct omapfb_notifier_block *nb, + omapfb_notifier_callback_t callback, + void *callback_data); +extern int omapfb_unregister_client(struct omapfb_notifier_block *nb); +extern int omapfb_update_window_async(struct fb_info *fbi, + struct omapfb_update_window *win, + void (*callback)(void *), + void *callback_data); + +/* in arch/arm/plat-omap/fb.c */ +extern void omapfb_set_ctrl_platform_data(void *pdata); + +#endif /* __KERNEL__ */ + +#endif /* __OMAPFB_H */ diff --git a/settings.c b/settings.c index 1c6d656016..bc245c76e0 100644 --- a/settings.c +++ b/settings.c @@ -102,6 +102,8 @@ const char *config_get_default_video(void) return "vg"; case VIDEO_NULL: return "null"; + case VIDEO_OMAP: + return "omap"; default: return NULL; } From 749b9c0945a52fb80f7d0eab4a9add749bc4db3a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 19:11:22 +0200 Subject: [PATCH 038/252] (GX) Don't use WPAD_Probe every frame --- gx/gx_input.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/gx/gx_input.c b/gx/gx_input.c index 4254031036..cf01ea416b 100644 --- a/gx/gx_input.c +++ b/gx/gx_input.c @@ -38,6 +38,9 @@ #define MAX_PADS 4 +static u32 pad_connect[MAX_PADS]; +static u32 pad_type[MAX_PADS]; +static u32 pad_detect_pending[MAX_PADS]; static uint64_t pad_state[MAX_PADS]; static int16_t analog_state[MAX_PADS][2][2]; @@ -446,10 +449,19 @@ static void gx_input_set_keybinds(void *data, unsigned device, unsigned port, strlcpy(ret->desc, "Unknown", sizeof(ret->desc)); } } + + pad_detect_pending[port] = 1; } static void *gx_input_init(void) { + for (unsigned i = 0; i < MAX_PADS; i++) + { + pad_connect[i] = 0; + pad_type[i] = 0; + pad_detect_pending[i] = 1; + } + PAD_Init(); #ifdef HW_RVL WPAD_Init(); @@ -518,9 +530,17 @@ static void gx_input_poll(void *data) uint64_t *state_cur = &pad_state[port]; #ifdef HW_RVL - uint32_t type = 0; + if (pad_detect_pending[port]) + { + u32 *ptype = &pad_type[port]; + pad_connect[port] = WPAD_Probe(port, ptype); + pad_detect_pending[port] = 0; + } + + uint32_t connected = pad_connect[port]; + uint32_t type = pad_type[port]; - if (WPAD_Probe(port, &type) == WPAD_ERR_NONE) + if (connected == WPAD_ERR_NONE) { WPADData *wpaddata = WPAD_Data(port); @@ -636,7 +656,6 @@ static void gx_input_poll(void *data) *state_cur |= (y > WII_JOYSTICK_THRESHOLD) ? GX_NUNCHUK_DOWN : 0; } } - #endif if (SI_GetType(port) & SI_TYPE_GC) From 3e9fc928f8d0d470ad96d58baa700f95fa4d109b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 19:55:18 +0200 Subject: [PATCH 039/252] (Griffin) Add HAVE_OMAP to griffin --- griffin/griffin.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/griffin/griffin.c b/griffin/griffin.c index fd5e28a352..1c9af30e96 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -111,6 +111,11 @@ VIDEO CONTEXT #include "../gfx/context/apple_gl_ctx.c" #endif +#ifdef HAVE_OMAP +#include "../gfx/omap_gfx.c" +#include "../gfx/fbdev.c" +#endif + #if defined(HAVE_OPENGL) #if defined(HAVE_KMS) From 12b3cfbcc464906d265fa0259489db5203a49c03 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 19:56:35 +0200 Subject: [PATCH 040/252] (Griffin) Move HAVE_OMAP ifdef to video drivers --- griffin/griffin.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/griffin/griffin.c b/griffin/griffin.c index 1c9af30e96..2da701417b 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -111,10 +111,6 @@ VIDEO CONTEXT #include "../gfx/context/apple_gl_ctx.c" #endif -#ifdef HAVE_OMAP -#include "../gfx/omap_gfx.c" -#include "../gfx/fbdev.c" -#endif #if defined(HAVE_OPENGL) @@ -191,6 +187,11 @@ VIDEO DRIVER #include "../gfx/math/matrix_3x3.c" #endif +#ifdef HAVE_OMAP +#include "../gfx/omap_gfx.c" +#include "../gfx/fbdev.c" +#endif + #ifdef HAVE_DYLIB #include "../gfx/ext_gfx.c" #endif From 237c55dbabc600912842713a21936513b7e7ce55 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 20:04:11 +0200 Subject: [PATCH 041/252] (Griffin) Change ifdef for linuxraw input --- griffin/griffin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/griffin/griffin.c b/griffin/griffin.c index 2da701417b..91a96d1ce9 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -294,7 +294,7 @@ INPUT #include "../blackberry-qnx/qnx_input.c" #endif -#if defined(PANDORA) +#if defined(__linux__) && !defined(ANDROID) #include "../input/linuxraw_input.c" #include "../input/linuxraw_joypad.c" #endif From 4888dc51c47fa014cfb2738f07a745ea7277fe82 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 20:15:26 +0200 Subject: [PATCH 042/252] (Griffin) Take out ifndef HW_RVL out of ngc/ssaram.c - already guarded against in griffin --- ngc/ssaram.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/ngc/ssaram.c b/ngc/ssaram.c index 2b59f5af9b..908cffc33e 100644 --- a/ngc/ssaram.c +++ b/ngc/ssaram.c @@ -4,7 +4,6 @@ /**************************************************************************** * SSARAM ***************************************************************************/ -#ifndef HW_RVL #include #include #include @@ -103,4 +102,3 @@ void ARAMFetch(char *dst, char *src, int len) AR_StartDMA(ARAM_READ, (u32) dst, (u32) src, len); while (AR_GetDMAStatus()); } -#endif From 56974007ada42975ad4786b357dedd8f4473a9ba Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 20:57:49 +0200 Subject: [PATCH 043/252] (frontend) Cleanups to frontend.c --- frontend/frontend.c | 17 +++-------------- frontend/platform/platform_ps3.c | 2 ++ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 39a092d28b..8e97033344 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -81,7 +81,6 @@ void rarch_make_dir(const char *x, const char *name) } } } - #endif static void rarch_get_environment(int argc, char *argv[]) @@ -139,10 +138,10 @@ static void rarch_get_environment(int argc, char *argv[]) #endif } -#if defined(__APPLE__) +#if defined(IOS) || defined(OSX) void* rarch_main(void* args) #else -int rarch_main(int argc, char *argv[]) +int main(int argc, char *argv[]) #endif { frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first(); @@ -277,17 +276,14 @@ int rarch_main(int argc, char *argv[]) config_save_keybinds(g_extern.input_config_path); #endif - if (g_extern.main_is_init) - rarch_main_deinit(); - #ifdef RARCH_CONSOLE global_uninit_drivers(); #endif #else while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate()); - rarch_main_deinit(); #endif + rarch_main_deinit(); rarch_deinit_msg_queue(); #ifdef PERF_TEST @@ -316,10 +312,3 @@ int rarch_main(int argc, char *argv[]) return 0; } - -#ifndef __APPLE__ -int main(int argc, char *argv[]) -{ - return rarch_main(argc, argv); -} -#endif diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index d7e28c6991..bddccc1b68 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -439,8 +439,10 @@ static void system_exec(const char *path, bool should_load_game) RARCH_LOG("Attempt to load executable: [%s].\n", path); char spawn_data[256]; +#ifndef IS_SALAMANDER char game_path[256]; game_path[0] = '\0'; +#endif for(unsigned int i = 0; i < sizeof(spawn_data); ++i) spawn_data[i] = i & 0xff; From c7d3c9e955d1e2ea4402cd8da0c4dfa62e8a47ee Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 28 Jul 2013 23:01:16 +0200 Subject: [PATCH 044/252] (Apple) Fix build --- frontend/frontend.c | 4 ++++ frontend/platform/platform_apple.c | 4 +++- griffin/griffin.c | 2 -- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 8e97033344..8437c9fdaf 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -150,7 +150,9 @@ int main(int argc, char *argv[]) frontend_ctx->init(); rarch_main_clear_state(); +#ifndef __APPLE__ rarch_get_environment(argc, argv); +#endif #if !defined(RARCH_CONSOLE) #if defined(__APPLE__) @@ -174,8 +176,10 @@ int main(int argc, char *argv[]) #ifdef HAVE_MENU menu_init(); +#ifndef __APPLE__ if (frontend_ctx && frontend_ctx->process_args) frontend_ctx->process_args(argc, argv); +#endif #ifdef RARCH_CONSOLE g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index d3f1381c6c..13dcfe13a1 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -15,7 +15,9 @@ #include #include -#include "../apple/RetroArch/rarch_wrapper.h" +#include "../../apple/RetroArch/rarch_wrapper.h" + +#include "../frontend_context.h" #include #include "../../boolean.h" diff --git a/griffin/griffin.c b/griffin/griffin.c index 91a96d1ce9..af60c99afa 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -448,9 +448,7 @@ REWIND FRONTEND ============================================================ */ -#if defined(RARCH_CONSOLE) #include "../frontend/frontend_context.c" -#endif #if defined(__CELLOS_LV2__) #include "../frontend/platform/platform_ps3.c" From 32ca64e3a30f2ab67654ed4af94ac69bb2e416fc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Jul 2013 15:13:02 +0200 Subject: [PATCH 045/252] Attempt to solve Android ANR issues - found this - https://developer.nvidia.com/content/nativeactivity-input-crashes-and-anrs-simple-fix-dangerous-bug --- android/native/jni/input_android.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 6ac23ba591..193dae7530 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1585,20 +1585,21 @@ static void android_input_poll(void *data) // Read all pending events. while (AInputQueue_hasEvents(android_app->inputQueue)) { - if (AInputQueue_getEvent(android_app->inputQueue, &event) >= 0) + int processed = 0; + while (AInputQueue_getEvent(android_app->inputQueue, &event) >= 0) { bool long_msg_enable = false; int32_t handled = 1; int action = 0; char msg[128]; int source, id, keycode, type_event, state_id; - //int predispatched; + int predispatched; msg[0] = 0; - //predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event); + predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event); - //if (predispatched) - //continue; + if (predispatched) + continue; source = AInputEvent_getSource(event); id = AInputEvent_getDeviceId(event); @@ -1747,7 +1748,10 @@ static void android_input_poll(void *data) msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30); AInputQueue_finishEvent(android_app->inputQueue, event, handled); + processed = 1; } + if (processed == 0) + RARCH_WARN("Failure reading next input event: %s\n", strerror(errno)); } } else if (ident == LOOPER_ID_MAIN) From fa5e58ffb844f4bdcd3c9e00286d3364e589d8f5 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 29 Jul 2013 22:53:34 +0200 Subject: [PATCH 046/252] Fixup manifest. Crashed with full org.retroarch. path. --- android/phoenix/AndroidManifest.xml | 28 +++++++++---------- .../org/retroarch/browser/RetroActivity.java | 24 +++++++--------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index f6bf73dad8..2ac947973a 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -15,28 +15,28 @@ android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:hasCode="true"> - + - - - - - - + + + + + + - - - - - - + + + + + + - + diff --git a/android/phoenix/src/org/retroarch/browser/RetroActivity.java b/android/phoenix/src/org/retroarch/browser/RetroActivity.java index 177b438459..38a3fb1cbd 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroActivity.java +++ b/android/phoenix/src/org/retroarch/browser/RetroActivity.java @@ -3,25 +3,21 @@ package org.retroarch.browser; import android.app.NativeActivity; import android.os.Bundle; -public class RetroActivity extends NativeActivity -{ - public RetroActivity() - { +public class RetroActivity extends NativeActivity { + public RetroActivity() { super(); } - + @Override - public void onCreate(Bundle savedInstance) - { + public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance); } - + @Override - public void onLowMemory() - { + public void onLowMemory() { + } + + @Override + public void onTrimMemory(int level) { } - - @Override - public void onTrimMemory(int level) { - } } From 222fa8317a66012bc7547150e2c975eaccea6f26 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 31 Jul 2013 19:04:28 +0200 Subject: [PATCH 047/252] Initial support for nVidia Shield. --- android/native/jni/input_android.c | 117 +++++++++++++++++++++----- android/native/jni/input_autodetect.c | 8 +- android/native/jni/input_autodetect.h | 2 +- driver.h | 2 + 4 files changed, 106 insertions(+), 23 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 193dae7530..d7ac140604 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -33,6 +33,12 @@ typedef struct float dzone_max; } dpad_values_t; +typedef struct +{ + int16_t lx, ly; + int16_t rx, ry; +} analog_t; + #define PRESSED_UP(x, y) ((y <= dzone_min)) #define PRESSED_DOWN(x, y) ((y >= dzone_max)) #define PRESSED_LEFT(x, y) ((x <= dzone_min)) @@ -43,7 +49,7 @@ static int state_device_ids[MAX_PADS]; static uint64_t state[MAX_PADS]; static uint64_t keycode_lut[LAST_KEYCODE]; dpad_values_t dpad_state[MAX_PADS]; - +analog_t analog_state[MAX_PADS]; struct input_pointer { @@ -61,10 +67,12 @@ enum AXIS_Z = 11, AXIS_RZ = 14, AXIS_HAT_X = 15, - AXIS_HAT_Y = 16 + AXIS_HAT_Y = 16, + AXIS_LTRIGGER = 17, + AXIS_RTRIGGER = 18, }; -void (*engine_handle_dpad)(AInputEvent*, size_t, int, char*, size_t, int, bool); +void (*engine_handle_dpad)(AInputEvent*, size_t, int, char*, size_t, int, bool, unsigned); extern float AMotionEvent_getAxisValue(const AInputEvent* motion_event, int32_t axis, size_t pointer_index); @@ -183,7 +191,7 @@ void engine_handle_cmd(void) static void engine_handle_dpad_default(AInputEvent *event, size_t motion_pointer, int state_id, char *msg, size_t msg_sizeof, - int source, bool debug_enable) + int source, bool debug_enable, unsigned emulation) { uint64_t *state_cur = &state[state_id]; float dzone_min = dpad_state[state_id].dzone_min; @@ -194,10 +202,14 @@ static void engine_handle_dpad_default(AInputEvent *event, *state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)); - *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; - *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; - *state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; - *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; + + if (emulation == ANALOG_DPAD_LSTICK) + { + *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; + *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; + *state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; + *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; + } if (debug_enable) snprintf(msg, msg_sizeof, "Pad %d : x = %.2f, y = %.2f, src %d.\n", @@ -206,7 +218,7 @@ static void engine_handle_dpad_default(AInputEvent *event, static void engine_handle_dpad_getaxisvalue(AInputEvent *event, size_t motion_pointer, int state_id, char *msg, size_t msg_sizeof, int source, - bool debug_enable) + bool debug_enable, unsigned emulation) { uint64_t *state_cur = &state[state_id]; float dzone_min = dpad_state[state_id].dzone_min; @@ -217,20 +229,23 @@ static void engine_handle_dpad_getaxisvalue(AInputEvent *event, float rz = AMotionEvent_getAxisValue(event, AXIS_RZ, motion_pointer); float hatx = AMotionEvent_getAxisValue(event, AXIS_HAT_X, motion_pointer); float haty = AMotionEvent_getAxisValue(event, AXIS_HAT_Y, motion_pointer); + float ltrig = AMotionEvent_getAxisValue(event, AXIS_LTRIGGER, motion_pointer); + float rtrig = AMotionEvent_getAxisValue(event, AXIS_RTRIGGER, motion_pointer); *state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | + (1ULL << RETRO_DEVICE_ID_JOYPAD_L2) | (1ULL << RETRO_DEVICE_ID_JOYPAD_R2) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)); /* On some devices the dpad sends AXIS_HAT_X / AXIS_HAT_Y events, use those first if the returned values are nonzero */ - if (fabs(hatx) > 0.0001 || fabs(haty) > 0.0001) + if (fabsf(hatx) > 0.0001f || fabsf(haty) > 0.0001f) { *state_cur |= PRESSED_LEFT(hatx, haty) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; *state_cur |= PRESSED_RIGHT(hatx, haty) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; *state_cur |= PRESSED_UP(hatx, haty) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; *state_cur |= PRESSED_DOWN(hatx, haty) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; } - else + else if (emulation == ANALOG_DPAD_LSTICK) { *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; @@ -238,6 +253,19 @@ static void engine_handle_dpad_getaxisvalue(AInputEvent *event, *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; } + if (ltrig > 0.5f) + *state_cur |= 1ULL << RETRO_DEVICE_ID_JOYPAD_L2; + if (rtrig > 0.5f) + *state_cur |= 1ULL << RETRO_DEVICE_ID_JOYPAD_R2; + + if (emulation == ANALOG_DPAD_DUALANALOG) + { + analog_state[state_id].lx = x * 0x7fff; + analog_state[state_id].ly = y * 0x7fff; + analog_state[state_id].rx = z * 0x7fff; + analog_state[state_id].ry = rz * 0x7fff; + } + if (debug_enable) snprintf(msg, msg_sizeof, "Pad %d : x %.2f, y %.2f, z %.2f, rz %.2f, src %d.\n", state_id, x, y, z, rz, source); @@ -248,7 +276,7 @@ static void *android_input_init(void) unsigned i, j, k; pads_connected = 0; - for(j = 0; j < LAST_KEYCODE; j++) + for (j = 0; j < LAST_KEYCODE; j++) keycode_lut[j] = 0; if (!g_settings.input.autodetect_enable) @@ -267,9 +295,9 @@ static void *android_input_init(void) } } - for(i = 0; i < MAX_PADS; i++) + for (i = 0; i < MAX_PADS; i++) { - for(j = 0; j < RARCH_FIRST_META_KEY; j++) + for (j = 0; j < RARCH_FIRST_META_KEY; j++) { g_settings.input.binds[i][j].id = i; g_settings.input.binds[i][j].joykey = 0; @@ -1447,6 +1475,20 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_BUTTON_L1]|= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1]|= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); break; + case DEVICE_NVIDIA_SHIELD: + g_settings.input.device[port] = device; + strlcpy(g_settings.input.device_names[port], "NVIDIA Shield", + sizeof(g_settings.input.device_names[port])); + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; + keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + break; case DEVICE_CCPCREATIONS_WIIUSE_IME: g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "ccpCreations WiiUse IME", @@ -1596,7 +1638,7 @@ static void android_input_poll(void *data) int predispatched; msg[0] = 0; - predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event); + predispatched = AInputQueue_preDispatchEvent(android_app->inputQueue,event); if (predispatched) continue; @@ -1622,10 +1664,24 @@ static void android_input_poll(void *data) if (state_id < 0) { state_id = pads_connected; - state_device_ids[pads_connected++] = id; - if (g_settings.input.autodetect_enable) - input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); + { + bool primary = false; + input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source, &primary); + + if (primary) + { + RARCH_LOG("Found primary input device.\n"); + memmove(state_device_ids + 1, state_device_ids, pads_connected * sizeof(state_device_ids[0])); + state_id = 0; + state_device_ids[0] = id; + pads_connected++; + } + else + state_device_ids[pads_connected++] = id; + } + else + state_device_ids[pads_connected++] = id; long_msg_enable = true; } @@ -1677,7 +1733,8 @@ static void android_input_poll(void *data) if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE)) { if (g_settings.input.dpad_emulation[state_id] != ANALOG_DPAD_NONE) - engine_handle_dpad(event, motion_pointer, state_id, msg, sizeof(msg), source, debug_enable); + engine_handle_dpad(event, motion_pointer, state_id, msg, sizeof(msg), source, debug_enable, + g_settings.input.dpad_emulation[state_id]); } else { @@ -1745,7 +1802,11 @@ static void android_input_poll(void *data) } if (msg[0] != 0) + { + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30); + RARCH_LOG("Input debug: %s\n", msg); + } AInputQueue_finishEvent(android_app->inputQueue, event, handled); processed = 1; @@ -1765,8 +1826,22 @@ static int16_t android_input_state(void *data, const struct retro_keybind **bind { case RETRO_DEVICE_JOYPAD: return ((state[port] & binds[port][id].joykey) && (port < pads_connected)); + case RETRO_DEVICE_ANALOG: + if (port < pads_connected) + return 0; + switch ((index << 1) || id) + { + case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: + return analog_state[port].lx; + case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y: + return analog_state[port].ly; + case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X: + return analog_state[port].rx; + case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: + return analog_state[port].ry; + } case RETRO_DEVICE_POINTER: - switch(id) + switch (id) { case RETRO_DEVICE_ID_POINTER_X: return pointer[index].x; @@ -1778,7 +1853,7 @@ static int16_t android_input_state(void *data, const struct retro_keybind **bind return 0; } case RARCH_DEVICE_POINTER_SCREEN: - switch(id) + switch (id) { case RETRO_DEVICE_ID_POINTER_X: return pointer[index].full_x; diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 8f7050daa4..0e82f8be30 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -67,7 +67,7 @@ end: (*vm)->DetachCurrentThread(vm); } -void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source) +void input_autodetect_setup(void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source, bool *primary) { struct android_app *android_app = (struct android_app*)data; @@ -219,6 +219,12 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned device = DEVICE_DEFENDER_GAME_RACER_CLASSIC; else if (strstr(name_buf, "HOLTEK JC - U912F vibration game")) device = DEVICE_HOLTEK_JC_U912F; + else if (strstr(name_buf, "NVIDIA Controller")) + { + device = DEVICE_NVIDIA_SHIELD; + port = 0; // Shield is always player 1. + *primary = true; + } if (strstr(current_ime, "net.obsidianx.android.mogaime")) { diff --git a/android/native/jni/input_autodetect.h b/android/native/jni/input_autodetect.h index 2763d74b2d..6c85008825 100644 --- a/android/native/jni/input_autodetect.h +++ b/android/native/jni/input_autodetect.h @@ -81,7 +81,7 @@ enum { #define LAST_KEYCODE AKEYCODE_ASSIST -void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source); +void input_autodetect_setup(void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source, bool *primary); /* Xperia Play externs */ extern unsigned zeus_port; diff --git a/driver.h b/driver.h index 944b51889c..d51e37bc0d 100644 --- a/driver.h +++ b/driver.h @@ -270,6 +270,7 @@ enum input_devices DEVICE_GAMEMID, DEVICE_DEFENDER_GAME_RACER_CLASSIC, DEVICE_HOLTEK_JC_U912F, + DEVICE_NVIDIA_SHIELD, #elif defined(GEKKO) DEVICE_GAMECUBE = 0, #ifdef HW_RVL @@ -301,6 +302,7 @@ enum analog_dpad_bind_enums ANALOG_DPAD_NONE = 0, ANALOG_DPAD_LSTICK, ANALOG_DPAD_RSTICK, + ANALOG_DPAD_DUALANALOG, ANALOG_DPAD_LAST }; From b51fca84116f0f27e33e4cf0456501a0754add68 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 31 Jul 2013 20:19:53 +0200 Subject: [PATCH 048/252] Fix X/Y on Shield. --- android/native/jni/input_android.c | 4 ++-- frontend/menu/menu_common.c | 2 +- frontend/menu/rgui.c | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index d7ac140604..a986e1dc3a 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1482,8 +1482,8 @@ static void android_input_set_keybinds(void *data, unsigned device, g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); - keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 0b73efc303..a543b4adef 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -834,7 +834,7 @@ bool menu_iterate(void) // Throttle in case VSync is broken (avoid 1000+ FPS RGUI). time = rarch_get_time_usec(); delta = (time - rgui->last_time) / 1000; - target_msec = 1000 / g_settings.video.refresh_rate; + target_msec = 750 / g_settings.video.refresh_rate; // Try to sleep less, so we can hopefully rely on FPS logger. sleep_msec = target_msec - delta; if (sleep_msec > 0) rarch_sleep(sleep_msec); diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 2093953cd6..b95cea36e7 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -792,6 +792,9 @@ static void render_text(rgui_handle_t *rgui) case ANALOG_DPAD_LSTICK: strlcpy(type_str, "Left Stick", sizeof(type_str)); break; + case ANALOG_DPAD_DUALANALOG: + strlcpy(type_str, "Dual Analog", sizeof(type_str)); + break; case ANALOG_DPAD_RSTICK: strlcpy(type_str, "Right Stick", sizeof(type_str)); break; From 681d24ee3a75392385d1a497953993df7c2ee648 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 31 Jul 2013 21:12:09 +0200 Subject: [PATCH 049/252] Reword XML shaders to GLSL shaders. --- android/phoenix/res/xml/prefs.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 887300489e..ccb8cca9b8 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -124,21 +124,21 @@ android:targetPackage="org.retroarch" /> - + Date: Wed, 31 Jul 2013 21:17:50 +0200 Subject: [PATCH 050/252] Fix Shield analogs. --- android/native/jni/input_android.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index a986e1dc3a..aad91c8f33 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1827,9 +1827,9 @@ static int16_t android_input_state(void *data, const struct retro_keybind **bind case RETRO_DEVICE_JOYPAD: return ((state[port] & binds[port][id].joykey) && (port < pads_connected)); case RETRO_DEVICE_ANALOG: - if (port < pads_connected) + if (port >= pads_connected) return 0; - switch ((index << 1) || id) + switch ((index << 1) | id) { case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: return analog_state[port].lx; From 0c491e41e3530a1fef2def2a8897f4af1ec03233 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Aug 2013 01:20:04 +0200 Subject: [PATCH 051/252] (Shield) Bind proper Start button --- android/native/jni/input_android.c | 2 +- android/phoenix/.classpath | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index aad91c8f33..6471982f35 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1486,8 +1486,8 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); break; case DEVICE_CCPCREATIONS_WIIUSE_IME: g_settings.input.device[port] = device; diff --git a/android/phoenix/.classpath b/android/phoenix/.classpath index 0b08408342..c06dfcb8e5 100644 --- a/android/phoenix/.classpath +++ b/android/phoenix/.classpath @@ -2,8 +2,8 @@ + - From 4443201dc9d5be3fe71abcc0ad47994d8f642456 Mon Sep 17 00:00:00 2001 From: Themaister Date: Thu, 1 Aug 2013 21:20:44 +0200 Subject: [PATCH 052/252] Use data dir and not cache dir. Cache dir is volatile and can be cleaned out by OS at any minute. --- .../retroarch/browser/OverlayActivity.java | 2 +- .../src/org/retroarch/browser/RetroArch.java | 26 +++++++++++-------- .../org/retroarch/browser/ShaderActivity.java | 2 +- settings.c | 4 +-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java index 0d93209c06..5f76afd53e 100644 --- a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java +++ b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java @@ -7,7 +7,7 @@ import android.os.Bundle; public class OverlayActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - File overlayDir = new File(getCacheDir(), "Overlays"); + File overlayDir = new File(getBaseContext().getApplicationInfo().dataDir, "Overlays"); if (overlayDir.exists()) super.setStartDirectory(overlayDir.getAbsolutePath()); diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 955a3bf8bc..d6aceb4c55 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -131,24 +131,24 @@ public class RetroArch extends Activity implements return buf; } - private void extractAssets(AssetManager manager, String cacheDir, String relativePath, int level) throws IOException { + private void extractAssets(AssetManager manager, String dataDir, String relativePath, int level) throws IOException { final String[] paths = manager.list(relativePath); if (paths != null && paths.length > 0) { // Directory //Log.d(TAG, "Extracting assets directory: " + relativePath); for (final String path : paths) - extractAssets(manager, cacheDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); + extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); } else { // File, extract. //Log.d(TAG, "Extracting assets file: " + relativePath); String parentPath = new File(relativePath).getParent(); if (parentPath != null) { - File parentFile = new File(cacheDir, parentPath); + File parentFile = new File(dataDir, parentPath); parentFile.mkdirs(); // Doesn't throw. } byte[] asset = loadAsset(relativePath); BufferedOutputStream writer = new BufferedOutputStream( - new FileOutputStream(new File(cacheDir, relativePath))); + new FileOutputStream(new File(dataDir, relativePath))); writer.write(asset, 0, asset.length); writer.flush(); @@ -166,8 +166,8 @@ public class RetroArch extends Activity implements try { AssetManager assets = getAssets(); - String cacheDir = getCacheDir().getAbsolutePath(); - File cacheVersion = new File(cacheDir, ".cacheversion"); + String dataDir = getDataDir(); + File cacheVersion = new File(dataDir, ".cacheversion"); if (cacheVersion != null && cacheVersion.isFile() && cacheVersion.canRead() && cacheVersion.canWrite()) { DataInputStream cacheStream = new DataInputStream(new FileInputStream(cacheVersion)); @@ -188,14 +188,14 @@ public class RetroArch extends Activity implements //extractAssets(assets, cacheDir, "", 0); Log.i("ASSETS", "Extracting shader assets now ..."); try { - extractAssets(assets, cacheDir, "Shaders", 1); + extractAssets(assets, dataDir, "Shaders", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract shaders ..."); } Log.i("ASSETS", "Extracting overlay assets now ..."); try { - extractAssets(assets, cacheDir, "Overlays", 1); + extractAssets(assets, dataDir, "Overlays", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract overlays ..."); } @@ -326,6 +326,10 @@ public class RetroArch extends Activity implements startActivityForResult(myIntent, ACTIVITY_LOAD_ROM); } + private String getDataDir() { + return getApplicationInfo().dataDir; + } + private String getDefaultConfigPath() { String internal = System.getenv("INTERNAL_STORAGE"); String external = System.getenv("EXTERNAL_STORAGE"); @@ -348,8 +352,8 @@ public class RetroArch extends Activity implements return internal + File.separator + "retroarch.cfg"; else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) return external + File.separator + "retroarch.cfg"; - else if (getCacheDir() != null && getCacheDir().getAbsolutePath() != null) - return getCacheDir().getAbsolutePath() + File.separator + "retroarch.cfg"; + else if (getDataDir() != null) + return getDataDir() + File.separator + "retroarch.cfg"; else // emergency fallback, all else failed return "/mnt/sd/retroarch.cfg"; } @@ -420,7 +424,7 @@ public class RetroArch extends Activity implements boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); if (useOverlay) { - String overlayPath = prefs.getString("input_overlay", getCacheDir() + "/Overlays/snes-landscape.cfg"); + String overlayPath = prefs.getString("input_overlay", getDataDir() + "/Overlays/snes-landscape.cfg"); config.setString("input_overlay", overlayPath); config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); } else { diff --git a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java index eeabe60638..3a2d2d16c5 100644 --- a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java +++ b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java @@ -7,7 +7,7 @@ import android.os.Bundle; public class ShaderActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - File shaderDir = new File(getCacheDir(), "Shaders"); + File shaderDir = new File(getBaseContext().getApplicationInfo().dataDir, "Shaders"); if (shaderDir.exists()) super.setStartDirectory(shaderDir.getAbsolutePath()); diff --git a/settings.c b/settings.c index bc245c76e0..c35863cc41 100644 --- a/settings.c +++ b/settings.c @@ -304,7 +304,7 @@ void config_set_defaults(void) #elif defined(IOS) strlcpy(g_extern.overlay_dir, "/Applications/RetroArch.app/overlays/", sizeof(g_extern.overlay_dir)); #elif defined(ANDROID) - strlcpy(g_extern.overlay_dir, "/data/data/org.retroarch/cache/Overlays/", sizeof(g_extern.overlay_dir)); + strlcpy(g_extern.overlay_dir, "/data/data/org.retroarch/Overlays/", sizeof(g_extern.overlay_dir)); #endif #endif @@ -314,7 +314,7 @@ void config_set_defaults(void) #elif defined(IOS) strlcpy(g_settings.video.shader_dir, "/Applications/RetroArch.app/shaders_glsl/", sizeof(g_settings.video.shader_dir)); #elif defined(ANDROID) - strlcpy(g_settings.video.shader_dir, "/data/data/org.retroarch/cache/Shaders/", sizeof(g_settings.video.shader_dir)); + strlcpy(g_settings.video.shader_dir, "/data/data/org.retroarch/Shaders/", sizeof(g_settings.video.shader_dir)); #endif #endif From 3202057c3f78a0e8029beaac2621b2d81239aea3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Aug 2013 01:34:31 +0200 Subject: [PATCH 053/252] (Shield) Bind R3 button --- android/native/jni/input_android.c | 1 + 1 file changed, 1 insertion(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 6471982f35..198750b406 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1488,6 +1488,7 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift); break; case DEVICE_CCPCREATIONS_WIIUSE_IME: g_settings.input.device[port] = device; From 5699a63091058765a7ffb592e36a95eedf4096f2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Aug 2013 11:01:37 +0200 Subject: [PATCH 054/252] (Shield) Bind Start button to RGUI toggle --- android/native/jni/input_android.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 198750b406..0ed9b91805 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1486,9 +1486,9 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); - keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_BUTTON_START] |= ((RARCH_MENU_TOGGLE+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift); + keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); break; case DEVICE_CCPCREATIONS_WIIUSE_IME: g_settings.input.device[port] = device; From 66b45102371901e5a32c5892c338a979937d35d4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Aug 2013 14:58:51 +0200 Subject: [PATCH 055/252] (Android/Shield) Add optimal settings option --- android/phoenix/res/menu/context_menu.xml | 1 + android/phoenix/res/values/strings.xml | 1 + .../src/org/retroarch/browser/RetroArch.java | 39 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/android/phoenix/res/menu/context_menu.xml b/android/phoenix/res/menu/context_menu.xml index 8a0a6a6176..c916dc89ce 100644 --- a/android/phoenix/res/menu/context_menu.xml +++ b/android/phoenix/res/menu/context_menu.xml @@ -8,4 +8,5 @@ + diff --git a/android/phoenix/res/values/strings.xml b/android/phoenix/res/values/strings.xml index bb44ca812e..fcfc178403 100644 --- a/android/phoenix/res/values/strings.xml +++ b/android/phoenix/res/values/strings.xml @@ -18,5 +18,6 @@ Report IME Report Refresh Rate Detect + Optimal device settings diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index d6aceb4c55..836735ee9a 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -292,6 +292,38 @@ public class RetroArch extends Activity implements } } + boolean detectDevice(boolean show_dialog) + { + Log.i("Device MODEL", android.os.Build.MODEL); + if (android.os.Build.MODEL.equals("SHIELD")) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("NVidia Shield detected") + .setMessage("Would you like to set up the ideal configuration options for your device?") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + prefs.edit().putBoolean("video_threaded", true).commit(); + prefs.edit().putBoolean("input_autodetect_enable", true).commit(); + prefs.edit().putBoolean("input_overlay_enable", false).commit(); + prefs.edit().putFloat("refresh_rate", Float.parseFloat("59.6")).commit(); + } + }) + .setNegativeButton("No", null); + alert.show(); + return true; + } + + if (show_dialog) { + Toast.makeText(this, + "Device either not detected in list or doesn't have any optimal settings in our database.", + Toast.LENGTH_SHORT).show(); + } + + return false; + } + @Override protected void onStart() { super.onStart(); @@ -300,6 +332,9 @@ public class RetroArch extends Activity implements if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { prefs.edit().putBoolean("first_time_refreshrate_calculate", true).commit(); + + if (!detectDevice(false)) + { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Calculate Refresh Rate") .setMessage("It is highly recommended you run the refresh rate calibration test before you use RetroArch. Do you want to run it now?\n\nIf you choose No, you can run it at any time in the video preferences.\n\nIf you get performance problems even after calibration, please try threaded video driver in video preferences.") @@ -312,6 +347,7 @@ public class RetroArch extends Activity implements }) .setNegativeButton("No", null); alert.show(); + } } } @@ -570,6 +606,9 @@ public class RetroArch extends Activity implements Intent mguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.org/documents/overlay.pdf")); startActivity(mguide); return true; + case R.id.optimal_settings_device: + detectDevice(true); + return true; default: return false; } From 8dc60fc3d58622ee6d7a4f3bdf6d2971c3acd51d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Aug 2013 15:17:41 +0200 Subject: [PATCH 056/252] (Android/Shield) Improve device detection/autoconfiguration - refresh rate still not set correctly I think --- .../src/org/retroarch/browser/RetroArch.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 836735ee9a..da51bd2af8 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -303,11 +303,17 @@ public class RetroArch extends Activity implements .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - prefs.edit().putBoolean("video_threaded", true).commit(); - prefs.edit().putBoolean("input_autodetect_enable", true).commit(); - prefs.edit().putBoolean("input_overlay_enable", false).commit(); - prefs.edit().putFloat("refresh_rate", Float.parseFloat("59.6")).commit(); + config.setBoolean("video_threaded", true); + config.setBoolean("input_autodetect_enable", true); + config.setBoolean("input_overlay_enable", false); + config.setDouble("video_refresh_rate", 59.6); + + String confPath = getDefaultConfigPath(); + try { + config.write(new File(confPath)); + } catch (IOException e) { + Log.e(TAG, "Failed to save config file to: " + confPath); + } } }) .setNegativeButton("No", null); From 51b17039d40d2c8ad5ed3e5cfceb8435c714db79 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 2 Aug 2013 22:55:48 +0200 Subject: [PATCH 057/252] Completely new approach for threaded video. Allows a good compromise between jitter and avoiding audio stutter. --- autosave.c | 2 +- gfx/thread_wrapper.c | 48 +++++++++++++++++++++++++++++++++----------- thread.c | 14 ++++++------- thread.h | 3 ++- 4 files changed, 46 insertions(+), 21 deletions(-) diff --git a/autosave.c b/autosave.c index 752bec58ef..dc7e817af1 100644 --- a/autosave.c +++ b/autosave.c @@ -77,7 +77,7 @@ static void autosave_thread(void *data) slock_lock(save->cond_lock); if (!save->quit) - scond_wait_timeout(save->cond, save->cond_lock, save->interval * 1000); + scond_wait_timeout(save->cond, save->cond_lock, save->interval * 1000000LL); slock_unlock(save->cond_lock); } } diff --git a/gfx/thread_wrapper.c b/gfx/thread_wrapper.c index 1b18b09100..380fefe6e5 100644 --- a/gfx/thread_wrapper.c +++ b/gfx/thread_wrapper.c @@ -30,7 +30,6 @@ enum thread_cmd CMD_ALIVE, // Blocking alive check. Used when paused. CMD_SET_ROTATION, CMD_READ_VIEWPORT, - CMD_SET_NONBLOCK, #ifdef HAVE_OVERLAY CMD_OVERLAY_ENABLE, @@ -88,6 +87,12 @@ typedef struct thread_video bool alive; bool focus; + bool nonblock; + + rarch_time_t last_time; + rarch_time_t target_frame_time; + unsigned hit_count; + unsigned miss_count; enum thread_cmd send_cmd; enum thread_cmd reply_cmd; @@ -191,11 +196,6 @@ static void thread_loop(void *data) thread_reply(thr, CMD_FREE); return; - case CMD_SET_NONBLOCK: - thr->driver->set_nonblock_state(thr->driver_data, thr->cmd_data.b); - thread_reply(thr, CMD_SET_NONBLOCK); - break; - case CMD_SET_ROTATION: thr->driver->set_rotation(thr->driver_data, thr->cmd_data.i); thread_reply(thr, CMD_SET_ROTATION); @@ -397,6 +397,24 @@ static bool thread_frame(void *data, const void *frame_, uint8_t *dst = thr->frame.buffer; slock_lock(thr->lock); + + if (!thr->nonblock) + { + rarch_time_t target = thr->last_time + thr->target_frame_time; + // Ideally, use absolute time, but that is only a good idea on POSIX. + while (thr->frame.updated) + { + rarch_time_t current = rarch_get_time_usec(); + rarch_time_t delta = target - current; + + if (delta <= 0) + break; + + if (!scond_wait_timeout(thr->cond_cmd, thr->lock, delta)) + break; + } + } + // Drop frame if updated flag is still set, as thread is still working on last frame. if (!thr->frame.updated) { @@ -418,9 +436,6 @@ static bool thread_frame(void *data, const void *frame_, scond_signal(thr->cond_thread); - // If we are going to render menu, - // we'll want to block to avoid stepping menu - // at crazy speeds. #if defined(HAVE_RGUI) || defined(HAVE_RMENU) if (thr->texture.enable) { @@ -428,20 +443,23 @@ static bool thread_frame(void *data, const void *frame_, scond_wait(thr->cond_cmd, thr->lock); } #endif + thr->hit_count++; } + else + thr->miss_count++; + slock_unlock(thr->lock); RARCH_PERFORMANCE_STOP(thread_frame); + thr->last_time = rarch_get_time_usec(); return true; } static void thread_set_nonblock_state(void *data, bool state) { thread_video_t *thr = (thread_video_t*)data; - thr->cmd_data.b = state; - thread_send_cmd(thr, CMD_SET_NONBLOCK); - thread_wait_reply(thr, CMD_SET_NONBLOCK); + thr->nonblock = state; } static bool thread_init(thread_video_t *thr, const video_info_t *info, const input_driver_t **input, @@ -466,6 +484,9 @@ static bool thread_init(thread_video_t *thr, const video_info_t *info, const inp memset(thr->frame.buffer, 0x80, max_size); + thr->target_frame_time = (rarch_time_t)roundf(1000000LL / g_settings.video.refresh_rate); + thr->last_time = rarch_get_time_usec(); + thr->thread = sthread_create(thread_loop, thr); if (!thr->thread) return false; @@ -534,6 +555,9 @@ static void thread_free(void *data) scond_free(thr->cond_cmd); scond_free(thr->cond_thread); + RARCH_LOG("Threaded video stats: Frames pushed: %u, Frames dropped: %u.\n", + thr->hit_count, thr->miss_count); + free(thr); } diff --git a/thread.c b/thread.c index e0f1e211b8..9d92a4e79f 100644 --- a/thread.c +++ b/thread.c @@ -152,12 +152,12 @@ void scond_wait(scond_t *cond, slock_t *lock) slock_lock(lock); } -bool scond_wait_timeout(scond_t *cond, slock_t *lock, unsigned timeout_ms) +bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us) { WaitForSingleObject(cond->event, 0); slock_unlock(lock); - DWORD res = WaitForSingleObject(cond->event, timeout_ms); + DWORD res = WaitForSingleObject(cond->event, timeout_us / 1000); slock_lock(lock); return res == WAIT_OBJECT_0; @@ -289,7 +289,7 @@ void scond_wait(scond_t *cond, slock_t *lock) } #ifndef RARCH_CONSOLE -bool scond_wait_timeout(scond_t *cond, slock_t *lock, unsigned timeout_ms) +bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us) { struct timespec now; @@ -305,11 +305,11 @@ bool scond_wait_timeout(scond_t *cond, slock_t *lock, unsigned timeout_ms) clock_gettime(CLOCK_REALTIME, &now); #endif - now.tv_sec += timeout_ms / 1000; - now.tv_nsec += timeout_ms * 1000000L; + now.tv_sec += timeout_us / 1000000LL; + now.tv_nsec += timeout_us * 1000LL; - now.tv_sec += now.tv_nsec / 1000000000L; - now.tv_nsec = now.tv_nsec % 1000000000L; + now.tv_sec += now.tv_nsec / 1000000000LL; + now.tv_nsec = now.tv_nsec % 1000000000LL; int ret = pthread_cond_timedwait(&cond->cond, &lock->lock, &now); return ret == 0; diff --git a/thread.h b/thread.h index 661779b343..6dbf42098e 100644 --- a/thread.h +++ b/thread.h @@ -17,6 +17,7 @@ #define THREAD_H__ #include "boolean.h" +#include // Implements the bare minimum needed for RetroArch. :) @@ -43,7 +44,7 @@ void scond_free(scond_t *cond); void scond_wait(scond_t *cond, slock_t *lock); #ifndef RARCH_CONSOLE -bool scond_wait_timeout(scond_t *cond, slock_t *lock, unsigned timeout_ms); +bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us); #endif void scond_signal(scond_t *cond); From c84a61d83fcca3b8381a2f1cd1a6b60aa380698b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 5 Aug 2013 23:00:01 +0200 Subject: [PATCH 058/252] (Android Java) Add more core descriptions (Android Java) Take out non-working Shield autoconfiguration stuff for now --- android/phoenix/assets/libretro_cores.cfg | 7 ++++++- .../src/org/retroarch/browser/RetroArch.java | 13 +------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/android/phoenix/assets/libretro_cores.cfg b/android/phoenix/assets/libretro_cores.cfg index 9da2e2eb2e..468fbf0ae3 100644 --- a/android/phoenix/assets/libretro_cores.cfg +++ b/android/phoenix/assets/libretro_cores.cfg @@ -4,18 +4,23 @@ libretro_fceumm = "FCEUmm (Nintendo NES)" libretro_mednafen_vb = "Mednafen VB (Virtual Boy)" libretro_fba = "Final Burn Alpha (Arcade)" libretro_mednafen_ngp = "Mednafen NGP (Neo-Geo Pocket)" +libretro_mednafen_psx = "Mednafen PSX (PlayStation1)" libretro_gambatte = "Gambatte (GameBoy/GameBoy Color)" libretro_genesis_plus_gx = "Genesis Plus GX (Sega Genesis/Sega CD/Master System)" libretro_picodrive = "Picodrive (Sega Genesis/Sega CD/Master System/32X)" libretro_vba_next = "VBA Next (GameBoy Advance)" libretro_prboom = "PrBoom (DOOM)" -libretro_snes9x_next = "Snes9x-Next (Nintendo SNES)" +libretro_snes9x = "SNES9x (Nintendo SNES)" +libretro_snes9x_next = "SNES9x Next (Nintendo SNES)" libretro_nestopia = "Nestopia (Nintendo NES)" libretro_pcsx_rearmed-neon = "PCSX-reARMed (PlayStation1) [NEON]" libretro_pcsx_rearmed = "PCSX-reARMed (PlayStation1)" libretro_nxengine = "NXEngine (Cave Story/Doukutsu Monogatari)" libretro_quicknes = "QuickNES (Nintendo NES)" libretro_tyrquake = "TyrQuake (Quake 1)" +libretro_instancingviewer = "InstancingViewer (Images)" +libretro_desmume = "Desmume (Nintendo DS)" +libretro_stella = "Stella (Atari 2600)" libretro_scenewalker = "SceneWalker (Objects)" libretro_modelviewer = "ModelViewer (Objects)" libretro_mame078 = "MAME 2003 [0.78] (Arcade)" diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index da51bd2af8..98d192615c 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -299,21 +299,10 @@ public class RetroArch extends Activity implements { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("NVidia Shield detected") - .setMessage("Would you like to set up the ideal configuration options for your device?") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - config.setBoolean("video_threaded", true); - config.setBoolean("input_autodetect_enable", true); - config.setBoolean("input_overlay_enable", false); - config.setDouble("video_refresh_rate", 59.6); - - String confPath = getDefaultConfigPath(); - try { - config.write(new File(confPath)); - } catch (IOException e) { - Log.e(TAG, "Failed to save config file to: " + confPath); - } } }) .setNegativeButton("No", null); From 9a2ca1eb9efd3406dc56284e5f49f059b9a16e78 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 5 Aug 2013 23:56:59 +0200 Subject: [PATCH 059/252] (Shield) Autoconfigures 60Hz refreshrate, input ovelay disable and input autodetect enable correctly now --- android/phoenix/src/org/retroarch/browser/RetroArch.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 98d192615c..ce50a131eb 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -136,7 +136,7 @@ public class RetroArch extends Activity implements if (paths != null && paths.length > 0) { // Directory //Log.d(TAG, "Extracting assets directory: " + relativePath); for (final String path : paths) - extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); + extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); } else { // File, extract. //Log.d(TAG, "Extracting assets file: " + relativePath); @@ -303,6 +303,12 @@ public class RetroArch extends Activity implements .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putString("video_refresh_rate", Double.valueOf(60.00d).toString()); + edit.putBoolean("input_overlay_enable", false); + edit.putBoolean("input_autodetect_enable", true); + edit.commit(); } }) .setNegativeButton("No", null); From f72488754f739bf83aef01412118bc5608ca5b27 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 6 Aug 2013 18:38:09 +0200 Subject: [PATCH 060/252] (PS3 Ver. 2) Swap X/Y buttons --- android/native/jni/input_android.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 0ed9b91805..264cda279f 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -885,12 +885,12 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_MENU_TOGGLE+1) << shift); - keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); - keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); - keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); From 2c2b8b3a3e2211f7949f19e7e7efac3880554bd0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 6 Aug 2013 23:14:24 +0200 Subject: [PATCH 061/252] (Android) 360 pad should now have working true analog support - also fixed back button from not invoking AKEYCODE_BACK --- android/native/jni/input_android.c | 2 ++ android/native/jni/input_autodetect.h | 1 + deps/miniz/miniz.c | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 264cda279f..e1a26bea4b 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -737,6 +737,8 @@ static void android_input_set_keybinds(void *data, unsigned device, sizeof(g_settings.input.device_names[port])); /* TODO: left and right triggers for Xbox 1*/ + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; + keycode_lut[AKEYCODE_BACK] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_L3+1) << shift); diff --git a/android/native/jni/input_autodetect.h b/android/native/jni/input_autodetect.h index 6c85008825..0354163edf 100644 --- a/android/native/jni/input_autodetect.h +++ b/android/native/jni/input_autodetect.h @@ -60,6 +60,7 @@ enum { AKEYCODE_NUMPAD_7 = 151, AKEYCODE_NUMPAD_8 = 152, AKEYCODE_NUMPAD_9 = 153, + AKEYCODE_WINDOW = 171, AKEYCODE_BUTTON_1 = 188, AKEYCODE_BUTTON_2 = 189, AKEYCODE_BUTTON_3 = 190, diff --git a/deps/miniz/miniz.c b/deps/miniz/miniz.c index b07db85b88..0801b52d5c 100644 --- a/deps/miniz/miniz.c +++ b/deps/miniz/miniz.c @@ -706,7 +706,7 @@ struct mz_zip_internal_state_tag #define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size #define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] -static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) +static void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) { def_free_func(pZip->m_pAlloc_opaque, pArray->m_p); memset(pArray, 0, sizeof(mz_zip_array)); @@ -721,7 +721,7 @@ static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array * return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) +static mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) { if (new_size > pArray->m_capacity) { if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) return MZ_FALSE; } pArray->m_size = new_size; @@ -748,7 +748,7 @@ static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint32 flags return MZ_TRUE; } -static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) +static mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) { const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); From 646c387d3948cc3bbbaa8363420566656111dc90 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 6 Aug 2013 23:57:50 +0200 Subject: [PATCH 062/252] (Android) Logitech Rumblepad 2 - Have analogs work --- android/native/jni/input_android.c | 1 + 1 file changed, 1 insertion(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index e1a26bea4b..4b2752b920 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -379,6 +379,7 @@ static void android_input_set_keybinds(void *data, unsigned device, strlcpy(g_settings.input.device_names[port], "Logitech Rumblepad 2", sizeof(g_settings.input.device_names[port])); + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_9] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); From a12558d554c853f0f750d05c0ddc3ede343d85b3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 00:19:55 +0200 Subject: [PATCH 063/252] (Android) Add DUALANALOG for WiseGroup PS2 pads --- android/native/jni/input_android.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 4b2752b920..b0029afb1a 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -737,7 +737,6 @@ static void android_input_set_keybinds(void *data, unsigned device, strlcpy(g_settings.input.device_names[port], "Xbox", sizeof(g_settings.input.device_names[port])); - /* TODO: left and right triggers for Xbox 1*/ g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; keycode_lut[AKEYCODE_BACK] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); @@ -756,6 +755,7 @@ static void android_input_set_keybinds(void *data, unsigned device, strlcpy(g_settings.input.device_names[port], "WiseGroup PlayStation2", sizeof(g_settings.input.device_names[port])); + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; keycode_lut[AKEYCODE_BUTTON_13] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_BUTTON_15] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_BUTTON_16] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); From 95cf04f1e15cc119b8da81b24af318267b4c2a5f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 01:12:46 +0200 Subject: [PATCH 064/252] (Android) Add iPega PG9017 Mode 2 autodetection --- android/native/jni/input_android.c | 16 ++++++++++++++++ android/native/jni/input_autodetect.h | 1 + android/phoenix/res/values/array.xml | 2 ++ 3 files changed, 19 insertions(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index b0029afb1a..3b91bd94f5 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1354,6 +1354,22 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); keycode_lut[AKEYCODE_DPAD_RIGHT]|= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); break; + case ICADE_PROFILE_IPEGA_PG9017_MODE2: + strlcpy(g_settings.input.device_names[port], "iPega PG-9017 (Mode2)", + sizeof(g_settings.input.device_names[port])); + keycode_lut[AKEYCODE_M] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_J] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_K] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_I] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_Q] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_P] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_R] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_Y] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); + keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); + keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); + keycode_lut[AKEYCODE_DPAD_RIGHT]|= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); + break; case ICADE_PROFILE_GAMESTOP_WIRELESS: strlcpy(g_settings.input.device_names[port], "Gamestop Wireless", sizeof(g_settings.input.device_names[port])); diff --git a/android/native/jni/input_autodetect.h b/android/native/jni/input_autodetect.h index 0354163edf..65e8b5787d 100644 --- a/android/native/jni/input_autodetect.h +++ b/android/native/jni/input_autodetect.h @@ -24,6 +24,7 @@ enum { ICADE_PROFILE_RED_SAMURAI = 0, ICADE_PROFILE_IPEGA_PG9017, + ICADE_PROFILE_IPEGA_PG9017_MODE2, ICADE_PROFILE_GAMESTOP_WIRELESS, } icade_profile_enums; diff --git a/android/phoenix/res/values/array.xml b/android/phoenix/res/values/array.xml index 7cfc73e0e0..823710ca5f 100644 --- a/android/phoenix/res/values/array.xml +++ b/android/phoenix/res/values/array.xml @@ -33,6 +33,7 @@ Red Samurai iPega PG-9017 + iPega PG-9017 (Mode 2) Gamestop Wireless @@ -40,6 +41,7 @@ 0 1 2 + 3 From 528b499817497e9b20cde2ec539f988be317ec19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 01:21:00 +0200 Subject: [PATCH 065/252] (Android) Add "ideal" refresh rate autoconfigure for Nexus 7 2013 --- .../src/org/retroarch/browser/RetroArch.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index ce50a131eb..dafa5acfb1 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -315,6 +315,24 @@ public class RetroArch extends Activity implements alert.show(); return true; } + else if (android.os.Build.ID.equals("JSS15J")) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("Nexus 7 2013 detected") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putString("video_refresh_rate", Double.valueOf(59.65).toString()); + edit.commit(); + } + }) + .setNegativeButton("No", null); + alert.show(); + return true; + } if (show_dialog) { Toast.makeText(this, From 0c6c7bf743b562296c9da37c9b9af68061c70a6b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 03:32:54 +0200 Subject: [PATCH 066/252] (Android) Bump up version --- android/phoenix/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 2ac947973a..4f99ae0ba5 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="18" + android:versionName="0.9.9.4" > Date: Wed, 7 Aug 2013 03:33:58 +0200 Subject: [PATCH 067/252] Add showToastAlert from Tegra Subactivity --- .../org/retroarch/browser/RetroActivity.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/RetroActivity.java b/android/phoenix/src/org/retroarch/browser/RetroActivity.java index 38a3fb1cbd..8a666d8e5c 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroActivity.java +++ b/android/phoenix/src/org/retroarch/browser/RetroActivity.java @@ -2,6 +2,7 @@ package org.retroarch.browser; import android.app.NativeActivity; import android.os.Bundle; +import android.widget.Toast; public class RetroActivity extends NativeActivity { public RetroActivity() { @@ -20,4 +21,20 @@ public class RetroActivity extends NativeActivity { @Override public void onTrimMemory(int level) { } + + // We call this function from native to display a toast string + public void showToastAlert(String text) + { + // We need to use a runnable here to ensure that when the spawned + // native_app_glue thread calls, we actually post the work to the UI + // thread. Otherwise, we'll likely get exceptions because there's no + // prepared Looper on the native_app_glue main thread. + final String finalText = text; + runOnUiThread(new Runnable() { + public void run() + { + Toast.makeText(getApplicationContext(), finalText, Toast.LENGTH_SHORT).show(); + } + }); + } } From 992815a28c98ffc985d6bd002925b85d757f4982 Mon Sep 17 00:00:00 2001 From: Nick Messenger Date: Fri, 2 Aug 2013 15:20:22 -0400 Subject: [PATCH 068/252] .gitignore dependencies Windows build instructions say to put these in your retroarch directory, where they will clutter up git status. --- .gitignore | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.gitignore b/.gitignore index 0c2ecdafe2..fe66a7a22c 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,14 @@ DerivedData apple/tmp apple/modules/*.dylib apple/*.mobileprovision +/Cg/ +/GL/ +/SDL/ +/ffmpeg/ +/freetype2/ +/ft2build.h +/iconv.h +/libxml2/ +/phoenix/ +/python/ +/rsound.h From 44e5accc9b060ddd2601fee780a84a3c51718d31 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 06:34:50 +0200 Subject: [PATCH 069/252] (Android) Threaded video now default option, static syncing secondary --- .../src/org/retroarch/browser/RetroArch.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index dafa5acfb1..e6d14537e6 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -294,12 +294,17 @@ public class RetroArch extends Activity implements boolean detectDevice(boolean show_dialog) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", true); + edit.commit(); + Log.i("Device MODEL", android.os.Build.MODEL); if (android.os.Build.MODEL.equals("SHIELD")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("NVidia Shield detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.\n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -319,7 +324,7 @@ public class RetroArch extends Activity implements { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Nexus 7 2013 detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu. \n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -355,16 +360,28 @@ public class RetroArch extends Activity implements if (!detectDevice(false)) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Calculate Refresh Rate") - .setMessage("It is highly recommended you run the refresh rate calibration test before you use RetroArch. Do you want to run it now?\n\nIf you choose No, you can run it at any time in the video preferences.\n\nIf you get performance problems even after calibration, please try threaded video driver in video preferences.") - .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + .setTitle("Two modes of play") + .setMessage("RetroArch has two modes of play: synchronize to refreshrate, and threaded video.\n\nSynchronize to refreshrate gives the most accurate results and can produce the smoothest results. However, it is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this.\n\nChoose which of the two you want to use. (If you don't know, go for Threaded video). ") + .setPositiveButton("Threaded video", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", true); + edit.commit(); + } + }) + .setNegativeButton("Synchronize to refreshrate", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", false); + edit.commit(); Intent i = new Intent(getBaseContext(), DisplayRefreshRateTest.class); startActivity(i); } - }) - .setNegativeButton("No", null); + }); alert.show(); } } From 16d618a4d609801af664e1e3c1ea98df2ea6faf2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 7 Aug 2013 06:36:47 +0200 Subject: [PATCH 070/252] (Android Phoenix) Change name 'Two modes of play - pick one' --- android/phoenix/src/org/retroarch/browser/RetroArch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index e6d14537e6..fd101e96a2 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -360,7 +360,7 @@ public class RetroArch extends Activity implements if (!detectDevice(false)) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Two modes of play") + .setTitle("Two modes of play - pick one") .setMessage("RetroArch has two modes of play: synchronize to refreshrate, and threaded video.\n\nSynchronize to refreshrate gives the most accurate results and can produce the smoothest results. However, it is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this.\n\nChoose which of the two you want to use. (If you don't know, go for Threaded video). ") .setPositiveButton("Threaded video", new DialogInterface.OnClickListener() { @Override From 314947844d2747d4c9b160d864468d0de0d06ab1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 8 Aug 2013 00:33:07 +0200 Subject: [PATCH 071/252] (Android) Last v0.9.9.4 push --- android/phoenix/AndroidManifest.xml | 2 +- .../phoenix/res/layout/faq_sound_choppy.xml | 2 +- .../phoenix/res/layout/faq_supported_pads.xml | 2 +- .../res/layout/faq_system_requirements.xml | 1 + android/phoenix/res/layout/faq_whats_new.xml | 24 +++++++++++++++++++ .../src/org/retroarch/browser/RetroArch.java | 6 ++--- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 4f99ae0ba5..4c91b2e1ea 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/android/phoenix/res/layout/faq_sound_choppy.xml b/android/phoenix/res/layout/faq_sound_choppy.xml index 37d26e9b4c..2c8686fbb1 100644 --- a/android/phoenix/res/layout/faq_sound_choppy.xml +++ b/android/phoenix/res/layout/faq_sound_choppy.xml @@ -9,5 +9,5 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="40px" - android:text="There can be two reasons for this:\n\na) Either your device is not powerful enough to run the core you've selected at fullspeed.\n\nb) The refresh rate of the screen that your device reports is wrong. More on b) below.\n\n== REFRESH RATES AND RETROARCH ==\n\nUnlike other emulators, RetroArch does not use frameskipping. To get smooth gameplay and sound that are remotely close to the original hardware, RetroArch Android uses static synchronization. If you notice any skipping music or 'jerkiness' - rest assured it's not our code - it's likely that your device reports a wrong refreshrate to the OS (Android in this case). For instance, certain devices like the Note 2 have refresh rates below 60Hz.\n\nTo get any decent audio and video out of any application, you will have to synchronize the game's refresh rate with that of your screen - if the refresh rate cannot be properly synchronized, you will get bad audio pops and video glitchiness.\n\nThe problem is that a good many Android devices 'report' the wrong refresh rate to Android. The Samsung Galaxy S3 is known for doing this - it reports a 60Hz refresh rate when it isn't (the Note 2 for instance has a 58Hz screen but at least reports it correctly). So, because it 'reports' a wrong refresh rate, RetroArch will not yield good results.\n\nIf you experience any audio pops on cores that should be running fullspeed on your device, you should go with manual synchronization. To do this, you can start by calcuating your screens refresh rate with the 'Calibrate refresh rate' setting. This option can give a good guess, but for best results you should edit the value it returns in the 'Forced refresh rate (Hz)' option and set it manually - start at the value it returns and if it still audio pops/crackles, raise or lower the value (0.01 intervals is a good place to start) until you hit a sweet spot.\n\nIf you think your device reports the correct value, you can use that instead by selecting the 'Set OS-reported refresh rate' option instead.\n\nWith a bit of experimentation you can get this right easily - I am running games on a single-core Cortex A8 device (1.2GHz - Allwinner A10) and I get no sound pops or any video glitchiness at all in most cores. So this is entirely a refresh rate issue that you can overcome easily on most devices by doing what I state above." /> + android:text="There can be a couple of reasons for this:\n\na) Either your device is not powerful enough to run the core you've selected at fullspeed.\n\nb) The refresh rate of the screen that your device reports is wrong. More on b) below.\n\nc) Just turn on 'Threaded video' to save yourself all the trouble of trying to get static syncing to work right on your device.\n\n== REFRESH RATES AND RETROARCH ==\n\nUnlike other emulators, RetroArch does not use frameskipping. To get smooth gameplay and sound that are remotely close to the original hardware, RetroArch Android uses static synchronization. If you notice any skipping music or 'jerkiness' - rest assured it's not our code - it's likely that your device reports a wrong refreshrate to the OS (Android in this case). For instance, certain devices like the Note 2 have refresh rates below 60Hz.\n\nTo get any decent audio and video out of any application, you will have to synchronize the game's refresh rate with that of your screen - if the refresh rate cannot be properly synchronized, you will get bad audio pops and video glitchiness.\n\nThe problem is that a good many Android devices 'report' the wrong refresh rate to Android. The Samsung Galaxy S3 is known for doing this - it reports a 60Hz refresh rate when it isn't (the Note 2 for instance has a 58Hz screen but at least reports it correctly). So, because it 'reports' a wrong refresh rate, RetroArch will not yield good results.\n\nIf you experience any audio pops on cores that should be running fullspeed on your device, you should go with manual synchronization. To do this, you can start by calcuating your screens refresh rate with the 'Calibrate refresh rate' setting. This option can give a good guess, but for best results you should edit the value it returns in the 'Forced refresh rate (Hz)' option and set it manually - start at the value it returns and if it still audio pops/crackles, raise or lower the value (0.01 intervals is a good place to start) until you hit a sweet spot.\n\nIf you think your device reports the correct value, you can use that instead by selecting the 'Set OS-reported refresh rate' option instead.\n\nWith a bit of experimentation you can get this right easily - I am running games on a single-core Cortex A8 device (1.2GHz - Allwinner A10) and I get no sound pops or any video glitchiness at all in most cores. So this is entirely a refresh rate issue that you can overcome easily on most devices by doing what I state above." /> diff --git a/android/phoenix/res/layout/faq_supported_pads.xml b/android/phoenix/res/layout/faq_supported_pads.xml index b2c813ab32..82f877789f 100644 --- a/android/phoenix/res/layout/faq_supported_pads.xml +++ b/android/phoenix/res/layout/faq_supported_pads.xml @@ -9,5 +9,5 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="40px" - android:text="The following pads have been added to the autodetection list:\n\n* Logitech/Logicool Rumblepad 2\n* Microsoft Sidewinder USB (ISSUE - diagonals not working).\n* Microsoft Xbox 360 Wired/Wireless (ISSUE - diagonals not working).\n* PS3 Sixaxis/DualShock 3 (using either USB or Dancingpixelstudios' IME app)\n* MOGA (using either 'root' gamepad mode or official IME app)\n* JXD S5110\n* Snakebyte idroid\n* Logitech Dual Action\n* Mayflash Super Joy Box 3 Pro\n* RetroUSB SNES RetroPort\n* RetroUSB NES RetroPad\n* Buffalo SNES Pad\n* Elecom PS1/PS2 to USB\n* Archos gamepad\n* Xbox 1 (Titanium X-Joy Converter) (ISSUE - diagonals not working).\n* Red Samurai (IME app Bluetooth or gamepad mode)\n* Xperia Play\n* Trust Raptor\n* Logitech F710\n* DragonRise USB\n* Madcatz PS3 fighting stick\n* iControlPad (HID joystick profile or SPP profile in tandem with Bluez IME)\n* iPega (gamepad mode, select it in iCade profile)\n* PC2JAMMA-USB (TODO - TEST)\n* Genius MaxFire G-08XU\n* Zeemote Steelseries\n* Saitek Rumblepad\n* Super Smart Joy\n* Groupwise PS2 to USB converter\n* Toodles 2008 Chimp\n* Sega Saturn USB pad\n* Mayflash Wii Classic\n* Mayflash PS2 to USB\n* Nintendo Wii (using ccpcreations.WiiUse IME app)\n* Nyko Playpad Pro" /> + android:text="The following pads have been added to the autodetection list:\n\n* Logitech/Logicool Rumblepad 2\n* Microsoft Sidewinder USB (ISSUE - diagonals not working).\n* Microsoft Xbox 360 Wired/Wireless.\n* PS3 Sixaxis/DualShock 3 (using either USB or Dancingpixelstudios' IME app)\n* MOGA (using either 'root' gamepad mode or official IME app)\n* JXD S5110\n* Snakebyte idroid\n* Logitech Dual Action\n* Mayflash Super Joy Box 3 Pro\n* RetroUSB SNES RetroPort\n* RetroUSB NES RetroPad\n* Buffalo SNES Pad\n* Elecom PS1/PS2 to USB\n* Archos gamepad\n* Xbox 1 (Titanium X-Joy Converter) (ISSUE - diagonals not working).\n* Red Samurai (IME app Bluetooth or gamepad mode)\n* Xperia Play\n* Trust Raptor\n* Logitech F710\n* DragonRise USB\n* Madcatz PS3 fighting stick\n* iControlPad (HID joystick profile or SPP profile in tandem with Bluez IME)\n* iPega (gamepad mode, select it in iCade profile)\n* PC2JAMMA-USB (TODO - TEST)\n* Genius MaxFire G-08XU\n* Zeemote Steelseries\n* Saitek Rumblepad\n* Super Smart Joy\n* Groupwise PS2 to USB converter\n* Toodles 2008 Chimp\n* Sega Saturn USB pad\n* Mayflash Wii Classic\n* Mayflash PS2 to USB\n* Nintendo Wii (using ccpcreations.WiiUse IME app)\n* Nyko Playpad Pro\n*Nvidia Shield" /> diff --git a/android/phoenix/res/layout/faq_system_requirements.xml b/android/phoenix/res/layout/faq_system_requirements.xml index 089c085489..036db90164 100644 --- a/android/phoenix/res/layout/faq_system_requirements.xml +++ b/android/phoenix/res/layout/faq_system_requirements.xml @@ -25,5 +25,6 @@ * Mednafen Virtual Boy [Virtual Boy] : Dual-core ARM Cortex A9 CPU or higher.\n * Mednafen PC Engine [PC Engine] : Has been tested to run at fullspeed on an ARM Cortex A8 single-core CPU.\n * TyrQuake [Quake 1] : Has been tested to run around give or take 55-60fps at 320x240 resolution on an ARM Cortex A8 single-core CPU.\n + * Picodrive : Has been tested to run at fullspeed with Knuckles Chaotix [a 32X game] on an ARM Cortex A8 single-core CPU.\n " /> diff --git a/android/phoenix/res/layout/faq_whats_new.xml b/android/phoenix/res/layout/faq_whats_new.xml index 0347b5dd56..6465cc312d 100644 --- a/android/phoenix/res/layout/faq_whats_new.xml +++ b/android/phoenix/res/layout/faq_whats_new.xml @@ -10,6 +10,30 @@ android:layout_height="wrap_content" android:layout_margin="40px" android:text=" + r18 (August 7, 2013)\n\n + * [Android] ANR issues fixed - Google bug (as ever).\n + * [Android] Input autodetection expanded -\n + - NVidia Shield\n + - iControlPad changes\n + - Logitech Rumblepad 2 (added RETRO_DEVICE_ID_ANALOG support)\n + - Xbox 360 (D-pad should be fixed, added RETRO_DEVICE_ID_ANALOG support, triggers should work)\n + * [RGUI] Throttle with timers - no more irrational super-fast menu with threaded video.\n + * [Android] Appeal to low-latency audio Android devices for OpenSL (Android 4.1 and up)\n + * [Android] Look for the optimal sampling rate instead of assuming 48KHz as default - should fix Nexus 10\n + * [Android] Added 'Optimal Device Settings' and added support for both Nexus 7 2013 and Nvidia Shield\n + * [Android] Added adaptive jittering for threaded video option. Should now be much more tolerable.\n + * [Android] Enable threaded video by default - leave static syncing for expert users.\n + * (LIBRETRO) Added Picodrive (PC/Android/iOS/Blackberry)\n + * (LIBRETRO) Added SNES9x mainline.\n + * (LIBRETRO) Added Stella.\n + * (LIBRETRO) Added Desmume.\n + * [TyrQuake] Added dual analog core option.\n + * [NEStopia] Add Core Options for blargg NTSC.\n + * [FBA core] Prevent diagnostics at startup from being enabled to avoid crash.\n + * [Stella] 2 players should work now.\n + * [Genesis Plus GX] Updated to latest version.\n + * [VBA Next] Start sanitizing some code back to VBA-M proper.\n + * [NX Engine/Cave Story] Fixed big-endian bug on scrolling backgrounds.\n r17 (June 28, 2013)\n\n * [Android] Input autodetection expanded -\n - Xperia Play controls fixed once and for all (thanks to littleguy77)\n diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index fd101e96a2..b888932359 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -629,17 +629,17 @@ public class RetroArch extends Activity implements return true; case R.id.retroarch_guide: - Intent rguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.org/documents/retroarch-manual.pdf")); + Intent rguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/retroarch-manual.pdf")); startActivity(rguide); return true; case R.id.cores_guide: - Intent cguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.org/documents/retroarch-cores-manual.pdf")); + Intent cguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/retroarch-cores-manual.pdf")); startActivity(cguide); return true; case R.id.overlay_guide: - Intent mguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.org/documents/overlay.pdf")); + Intent mguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/overlay.pdf")); startActivity(mguide); return true; case R.id.optimal_settings_device: From 271db20cf8a58465826e06630ab6d456b28f6a01 Mon Sep 17 00:00:00 2001 From: CatalystG Date: Sun, 7 Jul 2013 14:49:50 -0400 Subject: [PATCH 072/252] (BlackBery10) Button Map clean up, and add support for up to 4 players. --- blackberry-qnx/bb10/assets/Controllers.qml | 21 +- blackberry-qnx/bb10/src/ButtonMap.cpp | 191 +++++++++--------- blackberry-qnx/bb10/src/ButtonMap.h | 11 +- .../bb10/src/RetroArch-Cascades.cpp | 45 ++--- blackberry-qnx/bb10/src/RetroArch-Cascades.h | 5 +- blackberry-qnx/qnx_input.c | 54 ++--- 6 files changed, 162 insertions(+), 165 deletions(-) diff --git a/blackberry-qnx/bb10/assets/Controllers.qml b/blackberry-qnx/bb10/assets/Controllers.qml index 367536bb69..8e45433ef7 100644 --- a/blackberry-qnx/bb10/assets/Controllers.qml +++ b/blackberry-qnx/bb10/assets/Controllers.qml @@ -28,6 +28,11 @@ Page value: 3 } ] + + onSelectedValueChanged: + { + ButtonMap.refreshButtonMap(selectedValue) + } } actions: [ @@ -36,7 +41,7 @@ Page ActionBar.placement: ActionBarPlacement.OnBar imageSource: "asset:///images/search.png" onTriggered: { - RetroArch.discoverController(); + RetroArch.discoverController(players.selectedValue); } } ] @@ -52,13 +57,18 @@ Page { objectName: "dropdown_devices" title: "Device" + + onSelectedValueChanged: + { + ButtonMap.mapDevice(selectedValue, players.selectedValue); + } } ListView { id: buttonMapList objectName: "buttonMapList" - + listItemComponents: [ ListItemComponent { @@ -109,14 +119,13 @@ Page } } ] - - //TODO: Map specific devices instead of 0. + onTriggered: { var sym, data; data = dataModel.data(indexPath); - sym = RetroArch.mapButton(0, players.selectedValue, data["index"]); - data["button"] = RetroArch.buttonToString(0, sym); + sym = ButtonMap.mapButton(0, players.selectedValue, data["index"]); + data["button"] = ButtonMap.buttonToString(players.selectedValue, sym); dataModel.replace(indexPath, data); } diff --git a/blackberry-qnx/bb10/src/ButtonMap.cpp b/blackberry-qnx/bb10/src/ButtonMap.cpp index 537db71bdc..feb80570d9 100644 --- a/blackberry-qnx/bb10/src/ButtonMap.cpp +++ b/blackberry-qnx/bb10/src/ButtonMap.cpp @@ -65,7 +65,7 @@ ButtonMap::ButtonMap(screen_context_t screen_ctx, QString groupId, int coid) buttonDataModel = new ArrayDataModel(); - refreshButtonMap(); + refreshButtonMap(0); } ButtonMap::~ButtonMap() @@ -78,100 +78,75 @@ QString ButtonMap::getLabel(int button) return QString((uint)platform_keys[button].joykey); } -//pass in RARCH button enum for button, map to g_setting - int ButtonMap::mapNextButtonPressed() - { - bps_event_t *event = NULL; - int sym; +int ButtonMap::mapNextButtonPressed() +{ + bps_event_t *event = NULL; + int sym; - //use in frontend run loop, get key pressed back, and map - int z = 10; - if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &z) != 0) - { - return -1; - } + //use in frontend run loop, get key pressed back, and map + int z = 10; + if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &z) != 0) + { + return -1; + } - screen_post_window(screen_win, screen_buf, 1, screen_resolution, 0); + screen_post_window(screen_win, screen_buf, 1, screen_resolution, 0); - while(1){ - if (BPS_SUCCESS != bps_get_event(&event, -1)) - { - fprintf(stderr, "bps_get_event failed\n"); - break; - } + while(1) + { + if (BPS_SUCCESS != bps_get_event(&event, -1)) + { + fprintf(stderr, "bps_get_event failed\n"); + break; + } - if (event) - { - int domain = bps_event_get_domain(event); + if (event) + { + int domain = bps_event_get_domain(event); - if (domain == screen_get_domain()) - { - screen_event_t screen_event = screen_event_get_event(event); - int screen_val; - screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &screen_val); + if (domain == screen_get_domain()) + { + screen_event_t screen_event = screen_event_get_event(event); + int screen_val; + screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &screen_val); - //TODO: Should we only let the buttons through that we are trying to map? - if(screen_val == SCREEN_EVENT_MTOUCH_TOUCH) - { - //This is touch screen event - sym = -1; - break; - } - else if(screen_val == SCREEN_EVENT_KEYBOARD) - { - screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_KEY_SYM, &sym); - sym &= 0xFF; - break; - } - else if( (screen_val == SCREEN_EVENT_GAMEPAD) || (screen_val == SCREEN_EVENT_JOYSTICK) ) - { - screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_BUTTONS, &sym); - break; - } - } - } - } + //TODO: Should we only let the buttons through that we are trying to map? + if(screen_val == SCREEN_EVENT_MTOUCH_TOUCH) + { + //This is touch screen event + sym = NO_BTN; + break; + } + else if(screen_val == SCREEN_EVENT_KEYBOARD) + { + screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_KEY_SYM, &sym); + sym &= 0xFF; + break; + } + else if( (screen_val == SCREEN_EVENT_GAMEPAD) || (screen_val == SCREEN_EVENT_JOYSTICK) ) + { + screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_BUTTONS, &sym); + break; + } + } + } + } - z = -10; - if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &z) != 0) { - return -1; - } + z = -10; + if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &z) != 0) + { + return -1; + } - screen_post_window(screen_win, screen_buf, 1, screen_resolution, 0); + screen_post_window(screen_win, screen_buf, 1, screen_resolution, 0); - return (g_settings.input.binds[player][button].joykey = sym); - } + return (g_settings.input.binds[player][button].joykey = sym); +} - int ButtonMap::getButtonMapping(int player, int button) - { - return g_settings.input.binds[player][button].joykey; - } - - QString ButtonMap::buttonToString(int button) - { - for(int i=0;i<20;++i) - { - if(platform_keys[i].joykey == (uint)button) - { - return QString(platform_keys[i].desc); - } - } - - return (button!=NO_BTN) ? QString(button) : QString("Not Mapped"); - } - - int ButtonMap::requestButtonMapping(screen_device_t device, int player, int button) - { - //Send message to run thread to start mapping, wait for reply. - recv_msg msg; - msg.code = RETROARCH_BUTTON_MAP; - - this->device = device; - this->player = player; - this->button = button; - - return MsgSend(coid, (void*)&msg, sizeof(msg), (void*)NULL, 0); - } +int ButtonMap::getButtonMapping(int player, int button) +{ + return g_settings.input.binds[player][button].joykey; +} void ButtonMap::mapDevice(int index, int player) { @@ -179,16 +154,16 @@ void ButtonMap::mapDevice(int index, int player) input_qnx.set_keybinds((void*)&devices[index], devices[index].device, player, 0, (1ULL << KEYBINDS_ACTION_SET_DEFAULT_BINDS)); - refreshButtonMap(); + refreshButtonMap(player); } - void ButtonMap::refreshButtonMap() - { +void ButtonMap::refreshButtonMap(int player) +{ QVariantMap map; buttonDataModel->clear(); - for(int i=0; i<16; ++i) + for (int i=0; i<16; ++i) { QString desc = QString(input_config_bind_map[i].desc); int index = desc.indexOf("("); @@ -198,15 +173,47 @@ void ButtonMap::mapDevice(int index, int player) } map.insert("label",QVariant(desc)); - map.insert("button", buttonToString(g_settings.input.binds[0][i].joykey)); + map.insert("button", buttonToString(player, g_settings.input.binds[player][i].joykey)); map.insert("type", QVariant("item")); map.insert("index", QVariant(i)); buttonDataModel->append(map); } map.insert("label",QVariant("RetroArch Menu")); - map.insert("button", buttonToString(g_settings.input.binds[0][RARCH_MENU_TOGGLE].joykey)); + map.insert("button", buttonToString(player, g_settings.input.binds[player][RARCH_MENU_TOGGLE].joykey)); map.insert("type", QVariant("item")); map.insert("index", QVariant(RARCH_MENU_TOGGLE)); buttonDataModel->append(map); - } +} + +//Button map +int ButtonMap::mapButton(int player, int button) +{ + recv_msg msg; + msg.code = RETROARCH_BUTTON_MAP; + + this->player = player; + this->button = button; + + return MsgSend(coid, (void*)&msg, sizeof(msg), (void*)NULL, 0); +} + +QString ButtonMap::buttonToString(int player, int button) +{ + if(g_settings.input.device[player] == DEVICE_KEYPAD || g_settings.input.device[player] == DEVICE_KEYBOARD) + { + return QString(button); + } + else + { + for(int i=0;i<20;++i) + { + if(platform_keys[i].joykey == (uint)button) + { + return QString(platform_keys[i].desc); + } + } + + return (button!=NO_BTN) ? QString(button) : QString("Not Mapped"); + } +} diff --git a/blackberry-qnx/bb10/src/ButtonMap.h b/blackberry-qnx/bb10/src/ButtonMap.h index 99cf2c6adc..a9f90eb9c0 100644 --- a/blackberry-qnx/bb10/src/ButtonMap.h +++ b/blackberry-qnx/bb10/src/ButtonMap.h @@ -19,8 +19,9 @@ typedef struct { using namespace bb::cascades; -class ButtonMap +class ButtonMap: public QObject { + Q_OBJECT public: ButtonMap(screen_context_t screen_cxt, QString groupId, int coid); @@ -33,10 +34,12 @@ public: int getButtonMapping(int player, int button); //Call from frontend int requestButtonMapping(screen_device_t device, int player, int button); - void refreshButtonMap(); - void mapDevice(int index, int player); - QString buttonToString(int button); + + Q_INVOKABLE int mapButton(int player, int button); + Q_INVOKABLE QString buttonToString(int player, int button); + Q_INVOKABLE void refreshButtonMap(int player); + Q_INVOKABLE void mapDevice(int index, int player); ArrayDataModel *buttonDataModel; diff --git a/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp index 765840ed2b..4db67c12bd 100644 --- a/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp +++ b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp @@ -95,9 +95,10 @@ RetroArch::RetroArch() screen_create_context(&screen_ctx, 0); input_qnx.init(); buttonMap = new ButtonMap(screen_ctx, (const char*)Application::instance()->mainWindow()->groupId().toAscii().constData(), coid); + qml->setContextProperty("ButtonMap", buttonMap); deviceSelection = mAppPane->findChild("dropdown_devices"); - connect(deviceSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onDeviceSelected(QVariant))); + //connect(deviceSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onDeviceSelected(QVariant))); findDevices(); //Setup the datamodel for button mapping. @@ -257,13 +258,6 @@ void RetroArch::onCoreSelected(QVariant value) qDebug() << "Supported Extensions: " << romExtensions; } -void RetroArch::onDeviceSelected(QVariant value) -{ - //Change the binds for current player to device[value] - //TODO: Don't hardcode player 0 - buttonMap->mapDevice(value.toInt(), 0); -} - /* * Functions */ @@ -327,6 +321,16 @@ void RetroArch::findDevices() } } +extern "C" void discoverControllers(); +void RetroArch::discoverController(int player) +{ + //TODO: Check device, gamepad/keyboard and return accordingly. + discoverControllers(); + findDevices(); + buttonMap->refreshButtonMap(player); + return; +} + void RetroArch::initRASettings() { strlcpy(g_settings.libretro,(char *)core.toAscii().constData(), sizeof(g_settings.libretro)); @@ -339,28 +343,3 @@ void RetroArch::initRASettings() if(hwInfo->isPhysicalKeyboardDevice() || port_device[0]) *g_settings.input.overlay = '\0'; } - -int RetroArch::mapButton(void* deviceVp, int player, int button) -{ - screen_device_t device = (screen_device_t)deviceVp; - return buttonMap->requestButtonMapping(device, player, button); -} - -QString RetroArch::buttonToString(void* deviceVp, int button) -{ - //TODO: Check deviceVp, gamepad/keyboard and return accordingly. - if(g_settings.input.device[0] == DEVICE_KEYPAD || g_settings.input.device[0] == DEVICE_KEYBOARD) - return QString(button); - else - return buttonMap->buttonToString(button); -} - -extern "C" void discoverControllers(); -void RetroArch::discoverController() -{ - //TODO: Check device, gamepad/keyboard and return accordingly. - discoverControllers(); - findDevices(); - buttonMap->refreshButtonMap(); - return; -} diff --git a/blackberry-qnx/bb10/src/RetroArch-Cascades.h b/blackberry-qnx/bb10/src/RetroArch-Cascades.h index c18e9e0c3c..5b356af8bf 100644 --- a/blackberry-qnx/bb10/src/RetroArch-Cascades.h +++ b/blackberry-qnx/bb10/src/RetroArch-Cascades.h @@ -35,9 +35,7 @@ public: Q_INVOKABLE void startEmulator(); Q_INVOKABLE void findDevices(); - Q_INVOKABLE int mapButton(void* device, int player, int button); - Q_INVOKABLE QString buttonToString(void* deviceVp, int button); - Q_INVOKABLE void discoverController(); + Q_INVOKABLE void discoverController(int player); void populateCores(core_info_list_t * info); signals: @@ -49,7 +47,6 @@ public slots: void aboutToQuit(); void onRotationCompleted(); void onCoreSelected(QVariant); - void onDeviceSelected(QVariant); private: /** diff --git a/blackberry-qnx/qnx_input.c b/blackberry-qnx/qnx_input.c index b47f30dbbf..d6fbf5202f 100644 --- a/blackberry-qnx/qnx_input.c +++ b/blackberry-qnx/qnx_input.c @@ -131,6 +131,8 @@ void discoverControllers() { // Get an array of all available devices. int deviceCount; + screen_event_t *event; + screen_get_context_property_iv(screen_ctx, SCREEN_PROPERTY_DEVICE_COUNT, &deviceCount); screen_device_t* devices_found = (screen_device_t*)calloc(deviceCount, sizeof(screen_device_t)); screen_get_context_property_pv(screen_ctx, SCREEN_PROPERTY_DEVICES, (void**)devices_found); @@ -730,10 +732,10 @@ static void qnx_input_set_keybinds(void *data, unsigned device, unsigned port, g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_X].def_joykey = KEYCODE_K & 0xFF; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L].def_joykey = KEYCODE_U & 0xFF; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R].def_joykey = KEYCODE_I & 0xFF; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = 0; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = NO_BTN; g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = KEYCODE_P & 0xFF; g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; controller->port = port; @@ -756,10 +758,10 @@ static void qnx_input_set_keybinds(void *data, unsigned device, unsigned port, g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_X].def_joykey = KEYCODE_S & 0xFF; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L].def_joykey = KEYCODE_Q & 0xFF; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R].def_joykey = KEYCODE_W & 0xFF; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = 0; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = NO_BTN; g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = KEYCODE_TILDE; g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; controller->port = port; @@ -811,7 +813,7 @@ static void qnx_input_set_keybinds(void *data, unsigned device, unsigned port, g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = SCREEN_R2_GAME_BUTTON; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = SCREEN_L3_GAME_BUTTON; g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = SCREEN_R3_GAME_BUTTON; - g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = 0; //TODO: Find a good mappnig + g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = NO_BTN; //TODO: Find a good mappnig g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; controller->port = port; port_device[port] = controller; @@ -821,23 +823,23 @@ static void qnx_input_set_keybinds(void *data, unsigned device, unsigned port, strlcpy(g_settings.input.device_names[port], "None", sizeof(g_settings.input.device_names[port])); g_settings.input.device[port] = device; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_B].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_Y].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_SELECT].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_START].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_UP].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_DOWN].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_LEFT].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_RIGHT].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_A].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_X].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = 0; - g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = 0; - g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = 0; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_B].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_Y].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_SELECT].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_START].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_UP].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_DOWN].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_LEFT].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_RIGHT].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_A].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_X].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R2].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_L3].def_joykey = NO_BTN; + g_settings.input.binds[port][RETRO_DEVICE_ID_JOYPAD_R3].def_joykey = NO_BTN; + g_settings.input.binds[port][RARCH_MENU_TOGGLE].def_joykey = NO_BTN; controller->port = -1; port_device[port] = 0; break; From c99eb33c990f73910ad90346da73ee74a6c9f4fb Mon Sep 17 00:00:00 2001 From: CatalystG Date: Sat, 3 Aug 2013 15:36:09 -0400 Subject: [PATCH 073/252] (BlackBerry) Quick fix for device selection dropdown. --- blackberry-qnx/bb10/assets/Controllers.qml | 29 +++++++++++++++---- blackberry-qnx/bb10/src/ButtonMap.cpp | 9 ++++++ blackberry-qnx/bb10/src/ButtonMap.h | 2 ++ .../bb10/src/RetroArch-Cascades.cpp | 2 +- blackberry-qnx/frontend_qnx.h | 1 + blackberry-qnx/qnx_input.c | 8 +++-- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/blackberry-qnx/bb10/assets/Controllers.qml b/blackberry-qnx/bb10/assets/Controllers.qml index 8e45433ef7..de754c3d34 100644 --- a/blackberry-qnx/bb10/assets/Controllers.qml +++ b/blackberry-qnx/bb10/assets/Controllers.qml @@ -53,14 +53,31 @@ Page preferredWidth: 650 horizontalAlignment: HorizontalAlignment.Center - DropDown + Container { - objectName: "dropdown_devices" - title: "Device" - - onSelectedValueChanged: + horizontalAlignment: HorizontalAlignment.Center + layout: StackLayout { - ButtonMap.mapDevice(selectedValue, players.selectedValue); + orientation: LayoutOrientation.LeftToRight + } + + DropDown + { + horizontalAlignment: HorizontalAlignment.Left + id: dropdown_device + objectName: "dropdown_devices" + title: "Device" + } + + Button + { + horizontalAlignment: HorizontalAlignment.Right + text: "Set" + + onClicked: + { + ButtonMap.mapDevice(dropdown_device.selectedValue, players.selectedValue); + } } } diff --git a/blackberry-qnx/bb10/src/ButtonMap.cpp b/blackberry-qnx/bb10/src/ButtonMap.cpp index feb80570d9..8a65787b84 100644 --- a/blackberry-qnx/bb10/src/ButtonMap.cpp +++ b/blackberry-qnx/bb10/src/ButtonMap.cpp @@ -184,6 +184,15 @@ void ButtonMap::refreshButtonMap(int player) map.insert("type", QVariant("item")); map.insert("index", QVariant(RARCH_MENU_TOGGLE)); buttonDataModel->append(map); + + //Update device dropdown + if (deviceSelection) + { + if(port_device[player]) + deviceSelection->setSelectedIndex(port_device[player]->index); + else + deviceSelection->resetSelectedIndex(); + } } //Button map diff --git a/blackberry-qnx/bb10/src/ButtonMap.h b/blackberry-qnx/bb10/src/ButtonMap.h index a9f90eb9c0..5403d7ae24 100644 --- a/blackberry-qnx/bb10/src/ButtonMap.h +++ b/blackberry-qnx/bb10/src/ButtonMap.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -42,6 +43,7 @@ public: Q_INVOKABLE void mapDevice(int index, int player); ArrayDataModel *buttonDataModel; + DropDown *deviceSelection; private: screen_context_t screen_cxt; diff --git a/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp index 4db67c12bd..e57e8a68ad 100644 --- a/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp +++ b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp @@ -98,7 +98,7 @@ RetroArch::RetroArch() qml->setContextProperty("ButtonMap", buttonMap); deviceSelection = mAppPane->findChild("dropdown_devices"); - //connect(deviceSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onDeviceSelected(QVariant))); + buttonMap->deviceSelection = deviceSelection; findDevices(); //Setup the datamodel for button mapping. diff --git a/blackberry-qnx/frontend_qnx.h b/blackberry-qnx/frontend_qnx.h index 13c35ba132..edb1d7c3ac 100644 --- a/blackberry-qnx/frontend_qnx.h +++ b/blackberry-qnx/frontend_qnx.h @@ -19,6 +19,7 @@ typedef struct { char device_name[64]; int device; int port; + int index; // Current state. int buttons; diff --git a/blackberry-qnx/qnx_input.c b/blackberry-qnx/qnx_input.c index d6fbf5202f..d6f6985886 100644 --- a/blackberry-qnx/qnx_input.c +++ b/blackberry-qnx/qnx_input.c @@ -153,9 +153,9 @@ void discoverControllers() if (type == SCREEN_EVENT_GAMEPAD || type == SCREEN_EVENT_JOYSTICK || type == SCREEN_EVENT_KEYBOARD) { devices[pads_connected].handle = devices_found[i]; + devices[pads_connected].index = pads_connected; loadController(&devices[pads_connected]); - pads_connected++; if (pads_connected == MAX_PADS) break; } @@ -186,6 +186,7 @@ static void initController(input_device_t* controller) controller->analog1[0] = controller->analog1[1] = controller->analog1[2] = 0; controller->port = -1; controller->device = -1; + controller->index = -1; memset(controller->id, 0, sizeof(controller->id)); } @@ -227,9 +228,12 @@ static void qnx_input_autodetect_gamepad(input_device_t* controller) strlcpy(controller->device_name, "None", sizeof(controller->device_name)); } - if (input_qnx.set_keybinds) + if (input_qnx.set_keybinds && (controller->device != DEVICE_NONE)) + { input_qnx.set_keybinds((void*)controller, controller->device, pads_connected, 0, (1ULL << KEYBINDS_ACTION_SET_DEFAULT_BINDS)); + pads_connected++; + } } static void process_keyboard_event(screen_event_t event, int type) From 99af8065050bee3b1c341c51c0641bd41484c82c Mon Sep 17 00:00:00 2001 From: CatalystG Date: Fri, 9 Aug 2013 22:47:09 -0400 Subject: [PATCH 074/252] (BlackBerry) Fixup frontend for BB10 from merge. --- blackberry-qnx/bb10/bar-descriptor.xml | 2 +- frontend/frontend.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/blackberry-qnx/bb10/bar-descriptor.xml b/blackberry-qnx/bb10/bar-descriptor.xml index 78caf9983a..26749b1f6e 100644 --- a/blackberry-qnx/bb10/bar-descriptor.xml +++ b/blackberry-qnx/bb10/bar-descriptor.xml @@ -69,7 +69,7 @@ overlays assets icon.png - lib + lib diff --git a/frontend/frontend.c b/frontend/frontend.c index 8437c9fdaf..47ed7c57f1 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -140,6 +140,8 @@ static void rarch_get_environment(int argc, char *argv[]) #if defined(IOS) || defined(OSX) void* rarch_main(void* args) +#elif defined(HAVE_BB10) +int rarch_main(int argc, char *argv[]) #else int main(int argc, char *argv[]) #endif @@ -149,12 +151,15 @@ int main(int argc, char *argv[]) if (frontend_ctx && frontend_ctx->init) frontend_ctx->init(); +#ifndef HAVE_BB10 rarch_main_clear_state(); +#endif + #ifndef __APPLE__ rarch_get_environment(argc, argv); #endif -#if !defined(RARCH_CONSOLE) +#if !defined(RARCH_CONSOLE) && !defined(HAVE_BB10) #if defined(__APPLE__) struct rarch_main_wrap* argdata = (struct rarch_main_wrap*)args; int init_ret = rarch_main_init_wrap(argdata); @@ -173,7 +178,7 @@ int main(int argc, char *argv[]) #endif #endif -#ifdef HAVE_MENU +#if defined(HAVE_MENU) || defined(HAVE_BB10) menu_init(); #ifndef __APPLE__ @@ -181,13 +186,13 @@ int main(int argc, char *argv[]) frontend_ctx->process_args(argc, argv); #endif -#ifdef RARCH_CONSOLE +#if defined(RARCH_CONSOLE) || defined(HAVE_BB10) g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; #else g_extern.lifecycle_mode_state |= 1ULL << MODE_GAME; #endif -#ifndef RARCH_CONSOLE +#if !defined(RARCH_CONSOLE) && !defined(HAVE_BB10) // If we started a ROM directly from command line, // push it to ROM history. if (!g_extern.libretro_dummy) From b33d4d29d269a27ce6228d4d52151c5108da0db5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 18:44:30 +0200 Subject: [PATCH 075/252] (Android) Standardize overlays and shaders directories for Android - now uses the same named directories as iOS/Blackberry ports - lower-case folders (overlays and shaders_glsl) --- android/phoenix/.project | 7 +++++++ android/phoenix/assets/Overlays/.dummy | 0 .../phoenix/src/org/retroarch/browser/OverlayActivity.java | 2 +- android/phoenix/src/org/retroarch/browser/RetroArch.java | 6 +++--- .../phoenix/src/org/retroarch/browser/ShaderActivity.java | 2 +- settings.c | 4 ++-- 6 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 android/phoenix/assets/Overlays/.dummy diff --git a/android/phoenix/.project b/android/phoenix/.project index 4af1961cac..f06f881b49 100644 --- a/android/phoenix/.project +++ b/android/phoenix/.project @@ -30,4 +30,11 @@ com.android.ide.eclipse.adt.AndroidNature org.eclipse.jdt.core.javanature + + + assets/overlays + 2 + PARENT-2-PROJECT_LOC/media/overlays + + diff --git a/android/phoenix/assets/Overlays/.dummy b/android/phoenix/assets/Overlays/.dummy deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java index 5f76afd53e..38981f6b87 100644 --- a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java +++ b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java @@ -7,7 +7,7 @@ import android.os.Bundle; public class OverlayActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - File overlayDir = new File(getBaseContext().getApplicationInfo().dataDir, "Overlays"); + File overlayDir = new File(getBaseContext().getApplicationInfo().dataDir, "overlays"); if (overlayDir.exists()) super.setStartDirectory(overlayDir.getAbsolutePath()); diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index b888932359..51c02b52d7 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -188,14 +188,14 @@ public class RetroArch extends Activity implements //extractAssets(assets, cacheDir, "", 0); Log.i("ASSETS", "Extracting shader assets now ..."); try { - extractAssets(assets, dataDir, "Shaders", 1); + extractAssets(assets, dataDir, "shaders_glsl", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract shaders ..."); } Log.i("ASSETS", "Extracting overlay assets now ..."); try { - extractAssets(assets, dataDir, "Overlays", 1); + extractAssets(assets, dataDir, "overlays", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract overlays ..."); } @@ -496,7 +496,7 @@ public class RetroArch extends Activity implements boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); if (useOverlay) { - String overlayPath = prefs.getString("input_overlay", getDataDir() + "/Overlays/snes-landscape.cfg"); + String overlayPath = prefs.getString("input_overlay", getDataDir() + "/overlays/snes-landscape.cfg"); config.setString("input_overlay", overlayPath); config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); } else { diff --git a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java index 3a2d2d16c5..3fb705de94 100644 --- a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java +++ b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java @@ -7,7 +7,7 @@ import android.os.Bundle; public class ShaderActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - File shaderDir = new File(getBaseContext().getApplicationInfo().dataDir, "Shaders"); + File shaderDir = new File(getBaseContext().getApplicationInfo().dataDir, "shaders_glsl"); if (shaderDir.exists()) super.setStartDirectory(shaderDir.getAbsolutePath()); diff --git a/settings.c b/settings.c index c35863cc41..9280e6cfce 100644 --- a/settings.c +++ b/settings.c @@ -304,7 +304,7 @@ void config_set_defaults(void) #elif defined(IOS) strlcpy(g_extern.overlay_dir, "/Applications/RetroArch.app/overlays/", sizeof(g_extern.overlay_dir)); #elif defined(ANDROID) - strlcpy(g_extern.overlay_dir, "/data/data/org.retroarch/Overlays/", sizeof(g_extern.overlay_dir)); + strlcpy(g_extern.overlay_dir, "/data/data/org.retroarch/overlays/", sizeof(g_extern.overlay_dir)); #endif #endif @@ -314,7 +314,7 @@ void config_set_defaults(void) #elif defined(IOS) strlcpy(g_settings.video.shader_dir, "/Applications/RetroArch.app/shaders_glsl/", sizeof(g_settings.video.shader_dir)); #elif defined(ANDROID) - strlcpy(g_settings.video.shader_dir, "/data/data/org.retroarch/Shaders/", sizeof(g_settings.video.shader_dir)); + strlcpy(g_settings.video.shader_dir, "/data/data/org.retroarch/shaders_glsl/", sizeof(g_settings.video.shader_dir)); #endif #endif From d640c16eb31068084014214c7c22c94dad624023 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 20:59:10 +0200 Subject: [PATCH 076/252] (Frontend) Move more platform-specific code into environment_get function implementations --- frontend/frontend.c | 24 +++++------------------- frontend/frontend_context.h | 1 + frontend/platform/platform_apple.c | 2 ++ frontend/platform/platform_gx.c | 15 +++++++++++++-- frontend/platform/platform_ps3.c | 14 ++++++++++++++ frontend/platform/platform_psp.c | 13 ++++++++++--- frontend/platform/platform_qnx.c | 2 ++ frontend/platform/platform_xdk.c | 16 ++++++++++++++-- 8 files changed, 61 insertions(+), 26 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 47ed7c57f1..b38c1591dd 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -83,22 +83,9 @@ void rarch_make_dir(const char *x, const char *name) } #endif -static void rarch_get_environment(int argc, char *argv[]) -{ - g_extern.verbose = true; - -#if defined(HAVE_LOGGER) - logger_init(); -#elif defined(HAVE_FILE_LOGGER) - g_extern.log_file = fopen("/retroarch-log.txt", "w"); -#endif - - if (frontend_ctx && frontend_ctx->environment_get) - frontend_ctx->environment_get(argc, argv); - - config_load(); - #if defined(RARCH_CONSOLE) +void rarch_get_environment_console(void) +{ init_libretro_sym(false); rarch_init_system_info(); @@ -135,8 +122,8 @@ static void rarch_get_environment(int argc, char *argv[]) snprintf(g_extern.input_config_path, sizeof(g_extern.input_config_path), "%s/%s.cfg", default_paths.input_presets_dir, core_name); config_read_keybinds(g_extern.input_config_path); #endif -#endif } +#endif #if defined(IOS) || defined(OSX) void* rarch_main(void* args) @@ -155,9 +142,8 @@ int main(int argc, char *argv[]) rarch_main_clear_state(); #endif -#ifndef __APPLE__ - rarch_get_environment(argc, argv); -#endif + if (frontend_ctx && frontend_ctx->environment_get) + frontend_ctx->environment_get(argc, argv); #if !defined(RARCH_CONSOLE) && !defined(HAVE_BB10) #if defined(__APPLE__) diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index d9d290de59..93df3aa895 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -58,6 +58,7 @@ const frontend_ctx_driver_t *frontend_ctx_init_first(void); // Finds first suita #ifdef RARCH_CONSOLE extern void rarch_make_dir(const char *x, const char *name); +extern void rarch_get_environment_console(void); #endif #endif diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index 13dcfe13a1..0c2b9be1f6 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -93,6 +93,8 @@ static void environment_get(int argc, char *argv[]) strlcpy(g_extern.savestate_dir, system_directory, sizeof(g_extern.savestate_dir)); strlcpy(g_extern.savefile_dir, system_directory, sizeof(g_extern.savefile_dir)); free(system_directory); + + config_load(); #endif } diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 25a2454092..70223ba393 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -231,8 +231,15 @@ extern char gx_rom_path[PATH_MAX]; static void get_environment_settings(int argc, char *argv[]) { - (void)argc; - (void)argv; +#ifndef IS_SALAMANDER + g_extern.verbose = true; + +#if defined(HAVE_LOGGER) + logger_init(); +#elif defined(HAVE_FILE_LOGGER) + g_extern.log_file = fopen("/retroarch-log.txt", "w"); +#endif +#endif #ifdef HW_DOL chdir("carda:/retroarch"); @@ -272,6 +279,10 @@ static void get_environment_settings(int argc, char *argv[]) rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); rarch_make_dir(default_paths.sram_dir, "sram_dir"); rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); + + config_load(); + + rarch_get_environment_console(); #endif } diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index bddccc1b68..9cb9920d16 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -186,6 +186,16 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat static void get_environment_settings(int argc, char *argv[]) { +#ifndef IS_SALAMANDER + g_extern.verbose = true; + +#if defined(HAVE_LOGGER) + logger_init(); +#elif defined(HAVE_FILE_LOGGER) + g_extern.log_file = fopen("/retroarch-log.txt", "w"); +#endif +#endif + int ret; unsigned int get_type; unsigned int get_attributes; @@ -283,6 +293,10 @@ static void get_environment_settings(int argc, char *argv[]) rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); rarch_make_dir(default_paths.sram_dir, "sram_dir"); rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); + + config_load(); + + rarch_get_environment_console(); #endif } diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index aa2b04c10c..8d1884aea9 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -44,11 +44,14 @@ static int exit_callback(int arg1, int arg2, void *common) static void get_environment_settings(int argc, char *argv[]) { - (void)argc; - (void)argv; +#ifndef IS_SALAMANDER + g_extern.verbose = true; -#ifdef HAVE_FILE_LOGGER +#if defined(HAVE_LOGGER) + logger_init(); +#elif defined(HAVE_FILE_LOGGER) g_extern.log_file = fopen("ms0:/retroarch-log.txt", "w"); +#endif #endif fill_pathname_basedir(default_paths.port_dir, argv[0], sizeof(default_paths.port_dir)); @@ -74,6 +77,10 @@ static void get_environment_settings(int argc, char *argv[]) rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); rarch_make_dir(default_paths.sram_dir, "sram_dir"); rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); + + config_load(); + + rarch_get_environment_console(); #endif } diff --git a/frontend/platform/platform_qnx.c b/frontend/platform/platform_qnx.c index b83f4e30cf..2041ad1cee 100644 --- a/frontend/platform/platform_qnx.c +++ b/frontend/platform/platform_qnx.c @@ -32,6 +32,8 @@ static void get_environment_settings(int argc, char *argv[]) strlcpy(g_extern.config_path, "app/native/retroarch.cfg", sizeof(g_extern.config_path)); strlcpy(g_settings.video.shader_dir, "app/native/shaders_glsl", sizeof(g_settings.video.shader_dir)); #endif + + config_load(); } static void system_init(void) diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 3f9ce746f4..7dcf3835da 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -184,10 +184,18 @@ static HRESULT xbox_io_unmount(char *szDrive) static void get_environment_settings(int argc, char *argv[]) { HRESULT ret; - (void)argc; - (void)argv; (void)ret; +#ifndef IS_SALAMANDER + g_extern.verbose = true; + +#if defined(HAVE_LOGGER) + logger_init(); +#elif defined(HAVE_FILE_LOGGER) + g_extern.log_file = fopen("/retroarch-log.txt", "w"); +#endif +#endif + #ifdef _XBOX360 // detect install environment unsigned long license_mask; @@ -254,6 +262,10 @@ static void get_environment_settings(int argc, char *argv[]) rarch_make_dir(default_paths.savestate_dir, "savestate_dir"); rarch_make_dir(default_paths.sram_dir, "sram_dir"); rarch_make_dir(default_paths.input_presets_dir, "input_presets_dir"); + + config_load(); + + rarch_get_environment_console(); #endif } From 3fda41bb8a97de88a85befc057aa558d36cdfa04 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 21:04:52 +0200 Subject: [PATCH 077/252] (frontend) Get rid of one redundant RARCH_CONSOLE ifdef --- frontend/frontend.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index b38c1591dd..ab34d0683b 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -81,9 +81,7 @@ void rarch_make_dir(const char *x, const char *name) } } } -#endif -#if defined(RARCH_CONSOLE) void rarch_get_environment_console(void) { init_libretro_sym(false); From b805efa59a22d43c68d7d76dd1602449d82ac45a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 21:31:11 +0200 Subject: [PATCH 078/252] (frontend) Additional param to argc/argv for iOS/OSX ports --- frontend/frontend.c | 12 +++++++++--- frontend/frontend_context.h | 4 ++-- frontend/frontend_salamander.c | 3 ++- frontend/platform/platform_apple.c | 3 ++- frontend/platform/platform_gx.c | 4 ++-- frontend/platform/platform_ps3.c | 2 +- frontend/platform/platform_qnx.c | 2 +- frontend/platform/platform_xdk.c | 2 +- 8 files changed, 20 insertions(+), 12 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index ab34d0683b..3cd7a1bc44 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -125,12 +125,18 @@ void rarch_get_environment_console(void) #if defined(IOS) || defined(OSX) void* rarch_main(void* args) +{ + int argc = 0; + char *argv = NULL; #elif defined(HAVE_BB10) int rarch_main(int argc, char *argv[]) +{ + void* args = NULL; #else int main(int argc, char *argv[]) -#endif { + void* args = NULL; +#endif frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first(); if (frontend_ctx && frontend_ctx->init) @@ -141,7 +147,7 @@ int main(int argc, char *argv[]) #endif if (frontend_ctx && frontend_ctx->environment_get) - frontend_ctx->environment_get(argc, argv); + frontend_ctx->environment_get(argc, argv, args); #if !defined(RARCH_CONSOLE) && !defined(HAVE_BB10) #if defined(__APPLE__) @@ -167,7 +173,7 @@ int main(int argc, char *argv[]) #ifndef __APPLE__ if (frontend_ctx && frontend_ctx->process_args) - frontend_ctx->process_args(argc, argv); + frontend_ctx->process_args(argc, argv, args); #endif #if defined(RARCH_CONSOLE) || defined(HAVE_BB10) diff --git a/frontend/frontend_context.h b/frontend/frontend_context.h index 93df3aa895..bb0ea47cdb 100644 --- a/frontend/frontend_context.h +++ b/frontend/frontend_context.h @@ -32,13 +32,13 @@ typedef struct frontend_ctx_driver { - void (*environment_get)(int argc, char *argv[]); + void (*environment_get)(int argc, char *argv[], void *args); void (*init)(void); void (*deinit)(void); void (*exitspawn)(void); - int (*process_args)(int argc, char *argv[]); + int (*process_args)(int argc, char *argv[], void *args); int (*process_events)(void); void (*exec)(const char *, bool); void (*shutdown)(bool); diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 80542bd696..900bfb4562 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -98,11 +98,12 @@ static int system_ctx_init(void) int main(int argc, char *argv[]) { + void *args = NULL; if (system_ctx_init() != 0) return 0; frontend_ctx->init(); - get_environment_settings(argc, argv); + get_environment_settings(argc, argv, args); salamander_init_settings(); frontend_ctx->deinit(); frontend_ctx->exitspawn(); diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index 0c2b9be1f6..5c413ac4d2 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -83,10 +83,11 @@ static void system_shutdown(bool force) dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); } -static void environment_get(int argc, char *argv[]) +static void environment_get(int argc, char *argv[], void *args) { (void)argc; (void)argv; + (void)args; #ifdef IOS char* system_directory = ios_get_rarch_system_directory(); diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 70223ba393..102514d0ab 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -229,7 +229,7 @@ int gx_logger_file(struct _reent *r, int fd, const char *ptr, size_t len) extern char gx_rom_path[PATH_MAX]; #endif -static void get_environment_settings(int argc, char *argv[]) +static void get_environment_settings(int argc, char *argv[], void *args) { #ifndef IS_SALAMANDER g_extern.verbose = true; @@ -359,7 +359,7 @@ static void system_deinit(void) #endif } -static int system_process_args(int argc, char *argv[]) +static int system_process_args(int argc, char *argv[], void *args) { int ret = 0; diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 9cb9920d16..2a3e231eb4 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -357,7 +357,7 @@ static void system_init(void) #endif } -static int system_process_args(int argc, char *argv[]) +static int system_process_args(int argc, char *argv[], void *args) { #ifndef IS_SALAMANDER if (argc > 1) diff --git a/frontend/platform/platform_qnx.c b/frontend/platform/platform_qnx.c index 2041ad1cee..1f2e4f3080 100644 --- a/frontend/platform/platform_qnx.c +++ b/frontend/platform/platform_qnx.c @@ -21,7 +21,7 @@ #include #include -static void get_environment_settings(int argc, char *argv[]) +static void get_environment_settings(int argc, char *argv[], void *args) { (void)argc; (void)argv; diff --git a/frontend/platform/platform_xdk.c b/frontend/platform/platform_xdk.c index 7dcf3835da..a2097c3301 100644 --- a/frontend/platform/platform_xdk.c +++ b/frontend/platform/platform_xdk.c @@ -282,7 +282,7 @@ static void system_init(void) #endif } -static int system_process_args(int argc, char *argv[]) +static int system_process_args(int argc, char *argv[], void *args) { (void)argc; (void)argv; From b8ca1323a94a1b90d4917dbabe7ee263e0492586 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 22:58:04 +0200 Subject: [PATCH 079/252] (Phoenix Android) Clean up UI --- android/phoenix/AndroidManifest.xml | 15 +- android/phoenix/res/menu/context_menu.xml | 5 - android/phoenix/res/menu/directory_list.xml | 2 +- android/phoenix/res/values/strings.xml | 10 - android/phoenix/res/xml/prefs.xml | 190 +++++++++++------- ...ngsActivity.java => MainMenuActivity.java} | 2 +- .../src/org/retroarch/browser/RetroArch.java | 26 --- 7 files changed, 125 insertions(+), 125 deletions(-) rename android/phoenix/src/org/retroarch/browser/{SettingsActivity.java => MainMenuActivity.java} (89%) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 4c91b2e1ea..f6166bedd4 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="20" + android:versionName="0.9.9.5" > - + + + + - - - - - + diff --git a/android/phoenix/res/menu/context_menu.xml b/android/phoenix/res/menu/context_menu.xml index c916dc89ce..4edd379631 100644 --- a/android/phoenix/res/menu/context_menu.xml +++ b/android/phoenix/res/menu/context_menu.xml @@ -1,12 +1,7 @@ - - - - - diff --git a/android/phoenix/res/menu/directory_list.xml b/android/phoenix/res/menu/directory_list.xml index d39e614c9d..3b02ee8a45 100644 --- a/android/phoenix/res/menu/directory_list.xml +++ b/android/phoenix/res/menu/directory_list.xml @@ -1,7 +1,7 @@ diff --git a/android/phoenix/res/values/strings.xml b/android/phoenix/res/values/strings.xml index fcfc178403..e37ebf04c3 100644 --- a/android/phoenix/res/values/strings.xml +++ b/android/phoenix/res/values/strings.xml @@ -3,18 +3,8 @@ RetroArch Input Method File type icon - Video Settings - Settings - Audio Settings - Input Settings - General Settings - Settings - RetroArch Guide - Cores Guide - Overlay How-to Guide Select the button to use Unbind - Help Report IME Report Refresh Rate Detect diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index ccb8cca9b8..1d7eab953f 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -1,79 +1,13 @@ + android:title="RetroArch 0.9.9.5 - Main Menu" > - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/phoenix/src/org/retroarch/browser/SettingsActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java similarity index 89% rename from android/phoenix/src/org/retroarch/browser/SettingsActivity.java rename to android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index aba497a593..c78386faec 100644 --- a/android/phoenix/src/org/retroarch/browser/SettingsActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -7,7 +7,7 @@ import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; -public class SettingsActivity extends PreferenceActivity { +public class MainMenuActivity extends PreferenceActivity { @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 51c02b52d7..dc18fd4be6 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -11,7 +11,6 @@ import android.annotation.TargetApi; import android.app.*; import android.media.AudioManager; import android.media.AudioTrack; -import android.net.Uri; import android.os.*; import android.preference.PreferenceManager; import android.provider.Settings; @@ -609,16 +608,6 @@ public class RetroArch extends Activity implements InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showInputMethodPicker(); return true; - - case R.id.rarch_settings: - Intent rset = new Intent(this, SettingsActivity.class); - startActivity(rset); - return true; - case R.id.help: - Intent help = new Intent(this, HelpActivity.class); - startActivity(help); - return true; - case R.id.report_ime: String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); new AlertDialog.Builder(this).setMessage(current_ime).setNeutralButton("Close", null).show(); @@ -627,21 +616,6 @@ public class RetroArch extends Activity implements String current_rate = "Screen Refresh Rate: " + Double.valueOf(report_refreshrate).toString(); new AlertDialog.Builder(this).setMessage(current_rate).setNeutralButton("Close", null).show(); return true; - - case R.id.retroarch_guide: - Intent rguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/retroarch-manual.pdf")); - startActivity(rguide); - return true; - - case R.id.cores_guide: - Intent cguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/retroarch-cores-manual.pdf")); - startActivity(cguide); - return true; - - case R.id.overlay_guide: - Intent mguide = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.libretro.com/documents/overlay.pdf")); - startActivity(mguide); - return true; case R.id.optimal_settings_device: detectDevice(true); return true; From f62d15a3b355bd20a79f43fc308a58966b18af3c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 10 Aug 2013 23:53:37 +0200 Subject: [PATCH 080/252] (Android Java) Move functionality over to main menu --- android/phoenix/.project | 7 - android/phoenix/res/menu/context_menu.xml | 1 - .../retroarch/browser/MainMenuActivity.java | 208 ++++++++++++++++++ .../src/org/retroarch/browser/RetroArch.java | 205 +---------------- 4 files changed, 212 insertions(+), 209 deletions(-) diff --git a/android/phoenix/.project b/android/phoenix/.project index f06f881b49..4af1961cac 100644 --- a/android/phoenix/.project +++ b/android/phoenix/.project @@ -30,11 +30,4 @@ com.android.ide.eclipse.adt.AndroidNature org.eclipse.jdt.core.javanature - - - assets/overlays - 2 - PARENT-2-PROJECT_LOC/media/overlays - - diff --git a/android/phoenix/res/menu/context_menu.xml b/android/phoenix/res/menu/context_menu.xml index 4edd379631..43b5055191 100644 --- a/android/phoenix/res/menu/context_menu.xml +++ b/android/phoenix/res/menu/context_menu.xml @@ -3,5 +3,4 @@ - diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index c78386faec..05626279be 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -1,13 +1,31 @@ package org.retroarch.browser; +import java.io.BufferedOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + import org.retroarch.R; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.AssetManager; import android.media.AudioManager; import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.Toast; public class MainMenuActivity extends PreferenceActivity { + static private final String TAG = "MainMenu"; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { @@ -15,5 +33,195 @@ public class MainMenuActivity extends PreferenceActivity { addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); + + // Extracting assets appears to take considerable amount of time, so + // move extraction to a thread. + Thread assetThread = new Thread(new Runnable() { + public void run() { + extractAssets(); + } + }); + assetThread.start(); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + + if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { + prefs.edit().putBoolean("first_time_refreshrate_calculate", true).commit(); + + if (!detectDevice(false)) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("Two modes of play - pick one") + .setMessage("RetroArch has two modes of play: synchronize to refreshrate, and threaded video.\n\nSynchronize to refreshrate gives the most accurate results and can produce the smoothest results. However, it is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this.\n\nChoose which of the two you want to use. (If you don't know, go for Threaded video). ") + .setPositiveButton("Threaded video", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", true); + edit.commit(); + } + }) + .setNegativeButton("Synchronize to refreshrate", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", false); + edit.commit(); + Intent i = new Intent(getBaseContext(), DisplayRefreshRateTest.class); + startActivity(i); + } + }); + alert.show(); + } + } + } + + private byte[] loadAsset(String asset) throws IOException { + String path = asset; + InputStream stream = getAssets().open(path); + int len = stream.available(); + byte[] buf = new byte[len]; + stream.read(buf, 0, len); + return buf; + } + + private void extractAssets(AssetManager manager, String dataDir, String relativePath, int level) throws IOException { + final String[] paths = manager.list(relativePath); + if (paths != null && paths.length > 0) { // Directory + //Log.d(TAG, "Extracting assets directory: " + relativePath); + for (final String path : paths) + extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); + } else { // File, extract. + //Log.d(TAG, "Extracting assets file: " + relativePath); + + String parentPath = new File(relativePath).getParent(); + if (parentPath != null) { + File parentFile = new File(dataDir, parentPath); + parentFile.mkdirs(); // Doesn't throw. + } + + byte[] asset = loadAsset(relativePath); + BufferedOutputStream writer = new BufferedOutputStream( + new FileOutputStream(new File(dataDir, relativePath))); + + writer.write(asset, 0, asset.length); + writer.flush(); + writer.close(); + } + } + + private void extractAssets() { + int version = 0; + try { + version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; + } catch(NameNotFoundException e) { + // weird exception, shouldn't happen + } + + try { + AssetManager assets = getAssets(); + String dataDir = getApplicationInfo().dataDir; + File cacheVersion = new File(dataDir, ".cacheversion"); + if (cacheVersion != null && cacheVersion.isFile() && cacheVersion.canRead() && cacheVersion.canWrite()) + { + DataInputStream cacheStream = new DataInputStream(new FileInputStream(cacheVersion)); + + int currentCacheVersion = 0; + try { + currentCacheVersion = cacheStream.readInt(); + } catch (IOException e) {} + cacheStream.close(); + + if (currentCacheVersion == version) + { + Log.i("ASSETS", "Assets already extracted, skipping..."); + return; + } + } + + //extractAssets(assets, cacheDir, "", 0); + Log.i("ASSETS", "Extracting shader assets now ..."); + try { + extractAssets(assets, dataDir, "shaders_glsl", 1); + } catch (IOException e) { + Log.i("ASSETS", "Failed to extract shaders ..."); + } + + Log.i("ASSETS", "Extracting overlay assets now ..."); + try { + extractAssets(assets, dataDir, "overlays", 1); + } catch (IOException e) { + Log.i("ASSETS", "Failed to extract overlays ..."); + } + + DataOutputStream outputCacheVersion = new DataOutputStream(new FileOutputStream(cacheVersion, false)); + outputCacheVersion.writeInt(version); + outputCacheVersion.close(); + } catch (IOException e) { + Log.e(TAG, "Failed to extract assets to cache."); + } + } + + boolean detectDevice(boolean show_dialog) + { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("video_threaded", true); + edit.commit(); + + Log.i("Device MODEL", android.os.Build.MODEL); + if (android.os.Build.MODEL.equals("SHIELD")) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("NVidia Shield detected") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.\n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putString("video_refresh_rate", Double.valueOf(60.00d).toString()); + edit.putBoolean("input_overlay_enable", false); + edit.putBoolean("input_autodetect_enable", true); + edit.commit(); + } + }) + .setNegativeButton("No", null); + alert.show(); + return true; + } + else if (android.os.Build.ID.equals("JSS15J")) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("Nexus 7 2013 detected") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu. \n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putString("video_refresh_rate", Double.valueOf(59.65).toString()); + edit.commit(); + } + }) + .setNegativeButton("No", null); + alert.show(); + return true; + } + + if (show_dialog) { + Toast.makeText(this, + "Device either not detected in list or doesn't have any optimal settings in our database.", + Toast.LENGTH_SHORT).show(); + } + + return false; + } + + @Override + protected void onStart() { + super.onStart(); } } diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index dc18fd4be6..ae80922648 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -5,8 +5,6 @@ import org.retroarch.R; import java.io.*; import android.content.*; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.AssetManager; import android.annotation.TargetApi; import android.app.*; import android.media.AudioManager; @@ -63,7 +61,7 @@ public class RetroArch extends Activity implements static private final int ACTIVITY_LOAD_ROM = 0; static private String libretro_path; static private Double report_refreshrate; - static private final String TAG = "RetroArch-Phoenix"; + static private final String TAG = "CoreSelection"; private ConfigFile config; private ConfigFile core_config; @@ -121,91 +119,7 @@ public class RetroArch extends Activity implements return info.contains("neon"); } - private byte[] loadAsset(String asset) throws IOException { - String path = asset; - InputStream stream = getAssets().open(path); - int len = stream.available(); - byte[] buf = new byte[len]; - stream.read(buf, 0, len); - return buf; - } - - private void extractAssets(AssetManager manager, String dataDir, String relativePath, int level) throws IOException { - final String[] paths = manager.list(relativePath); - if (paths != null && paths.length > 0) { // Directory - //Log.d(TAG, "Extracting assets directory: " + relativePath); - for (final String path : paths) - extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); - } else { // File, extract. - //Log.d(TAG, "Extracting assets file: " + relativePath); - - String parentPath = new File(relativePath).getParent(); - if (parentPath != null) { - File parentFile = new File(dataDir, parentPath); - parentFile.mkdirs(); // Doesn't throw. - } - - byte[] asset = loadAsset(relativePath); - BufferedOutputStream writer = new BufferedOutputStream( - new FileOutputStream(new File(dataDir, relativePath))); - writer.write(asset, 0, asset.length); - writer.flush(); - writer.close(); - } - } - - private void extractAssets() { - int version = 0; - try { - version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; - } catch(NameNotFoundException e) { - // weird exception, shouldn't happen - } - - try { - AssetManager assets = getAssets(); - String dataDir = getDataDir(); - File cacheVersion = new File(dataDir, ".cacheversion"); - if (cacheVersion != null && cacheVersion.isFile() && cacheVersion.canRead() && cacheVersion.canWrite()) - { - DataInputStream cacheStream = new DataInputStream(new FileInputStream(cacheVersion)); - - int currentCacheVersion = 0; - try { - currentCacheVersion = cacheStream.readInt(); - } catch (IOException e) {} - cacheStream.close(); - - if (currentCacheVersion == version) - { - Log.i("ASSETS", "Assets already extracted, skipping..."); - return; - } - } - - //extractAssets(assets, cacheDir, "", 0); - Log.i("ASSETS", "Extracting shader assets now ..."); - try { - extractAssets(assets, dataDir, "shaders_glsl", 1); - } catch (IOException e) { - Log.i("ASSETS", "Failed to extract shaders ..."); - } - - Log.i("ASSETS", "Extracting overlay assets now ..."); - try { - extractAssets(assets, dataDir, "overlays", 1); - } catch (IOException e) { - Log.i("ASSETS", "Failed to extract overlays ..."); - } - - DataOutputStream outputCacheVersion = new DataOutputStream(new FileOutputStream(cacheVersion, false)); - outputCacheVersion.writeInt(version); - outputCacheVersion.close(); - } catch (IOException e) { - Log.e(TAG, "Failed to extract assets to cache."); - } - } @Override public void onCreate(Bundle savedInstanceState) { @@ -228,15 +142,6 @@ public class RetroArch extends Activity implements boolean cpuIsNeon = cpuInfoIsNeon(cpuInfo); report_refreshrate = getDisplayRefreshRate(); - // Extracting assets appears to take considerable amount of time, so - // move extraction to a thread. - Thread assetThread = new Thread(new Runnable() { - public void run() { - extractAssets(); - } - }); - assetThread.start(); - setContentView(R.layout.line_list); // Setup the list @@ -290,101 +195,6 @@ public class RetroArch extends Activity implements this.registerForContextMenu(findViewById(android.R.id.content)); } } - - boolean detectDevice(boolean show_dialog) - { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", true); - edit.commit(); - - Log.i("Device MODEL", android.os.Build.MODEL); - if (android.os.Build.MODEL.equals("SHIELD")) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("NVidia Shield detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.\n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") - .setPositiveButton("Yes", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putString("video_refresh_rate", Double.valueOf(60.00d).toString()); - edit.putBoolean("input_overlay_enable", false); - edit.putBoolean("input_autodetect_enable", true); - edit.commit(); - } - }) - .setNegativeButton("No", null); - alert.show(); - return true; - } - else if (android.os.Build.ID.equals("JSS15J")) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Nexus 7 2013 detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu. \n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") - .setPositiveButton("Yes", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putString("video_refresh_rate", Double.valueOf(59.65).toString()); - edit.commit(); - } - }) - .setNegativeButton("No", null); - alert.show(); - return true; - } - - if (show_dialog) { - Toast.makeText(this, - "Device either not detected in list or doesn't have any optimal settings in our database.", - Toast.LENGTH_SHORT).show(); - } - - return false; - } - - @Override - protected void onStart() { - super.onStart(); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - - if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { - prefs.edit().putBoolean("first_time_refreshrate_calculate", true).commit(); - - if (!detectDevice(false)) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Two modes of play - pick one") - .setMessage("RetroArch has two modes of play: synchronize to refreshrate, and threaded video.\n\nSynchronize to refreshrate gives the most accurate results and can produce the smoothest results. However, it is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this.\n\nChoose which of the two you want to use. (If you don't know, go for Threaded video). ") - .setPositiveButton("Threaded video", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", true); - edit.commit(); - } - }) - .setNegativeButton("Synchronize to refreshrate", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", false); - edit.commit(); - Intent i = new Intent(getBaseContext(), DisplayRefreshRateTest.class); - startActivity(i); - } - }); - alert.show(); - } - } - } @Override public void onItemClick(AdapterView aListView, View aView, @@ -397,10 +207,6 @@ public class RetroArch extends Activity implements startActivityForResult(myIntent, ACTIVITY_LOAD_ROM); } - private String getDataDir() { - return getApplicationInfo().dataDir; - } - private String getDefaultConfigPath() { String internal = System.getenv("INTERNAL_STORAGE"); String external = System.getenv("EXTERNAL_STORAGE"); @@ -423,8 +229,8 @@ public class RetroArch extends Activity implements return internal + File.separator + "retroarch.cfg"; else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) return external + File.separator + "retroarch.cfg"; - else if (getDataDir() != null) - return getDataDir() + File.separator + "retroarch.cfg"; + else if ((getApplicationInfo().dataDir) != null) + return (getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; else // emergency fallback, all else failed return "/mnt/sd/retroarch.cfg"; } @@ -495,7 +301,7 @@ public class RetroArch extends Activity implements boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); if (useOverlay) { - String overlayPath = prefs.getString("input_overlay", getDataDir() + "/overlays/snes-landscape.cfg"); + String overlayPath = prefs.getString("input_overlay", (getApplicationInfo().dataDir) + "/overlays/snes-landscape.cfg"); config.setString("input_overlay", overlayPath); config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); } else { @@ -616,9 +422,6 @@ public class RetroArch extends Activity implements String current_rate = "Screen Refresh Rate: " + Double.valueOf(report_refreshrate).toString(); new AlertDialog.Builder(this).setMessage(current_rate).setNeutralButton("Close", null).show(); return true; - case R.id.optimal_settings_device: - detectDevice(true); - return true; default: return false; } From b268c2957c5aa6f80c3950a5058a0ce89d41b472 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 3 Aug 2013 12:18:40 +0200 Subject: [PATCH 081/252] Don't spam errors when in RGUI and threaded video. --- driver.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/driver.c b/driver.c index 44ae437dc8..05ad5689a1 100644 --- a/driver.c +++ b/driver.c @@ -601,10 +601,7 @@ static void compute_audio_buffer_statistics(void) bool driver_monitor_fps_statistics(double *refresh_rate, double *deviation, unsigned *sample_points) { if (g_settings.video.threaded) - { - RARCH_LOG("Monitor FPS estimation is disabled for threaded video.\n"); return false; - } unsigned samples = min(MEASURE_FRAME_TIME_SAMPLES_COUNT, g_extern.measure_data.frame_time_samples_count); if (samples < 2) @@ -640,6 +637,12 @@ bool driver_monitor_fps_statistics(double *refresh_rate, double *deviation, unsi static void compute_monitor_fps_statistics(void) { + if (g_settings.video.threaded) + { + RARCH_LOG("Monitor FPS estimation is disabled for threaded video.\n"); + return; + } + if (g_extern.measure_data.frame_time_samples_count < 2 * MEASURE_FRAME_TIME_SAMPLES_COUNT) { RARCH_LOG("Does not have enough samples for monitor refresh rate estimation. Requires to run for at least %u frames.\n", From bd4f7133a4221df454265c0b79beab623ab4f6f7 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 00:36:03 +0200 Subject: [PATCH 082/252] Fixup libs/headers links for Win32. --- Makefile.win | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.win b/Makefile.win index 780ba3fb8c..6f4633924c 100644 --- a/Makefile.win +++ b/Makefile.win @@ -306,15 +306,15 @@ dist_x86_64: all zip -r retroarch-win64-0.9.9.zip $(TARGET) $(JTARGET) retroarch.cfg libs_x86: - wget https://github.com/downloads/Themaister/RetroArch/RetroArch-win32-libs.zip --no-check-certificate + wget http://themaister.net/retroarch-dl/RetroArch-win32-libs.zip unzip RetroArch-win32-libs.zip - wget https://github.com/downloads/Themaister/RetroArch/RetroArch-win32-headers.zip --no-check-certificate + wget http://themaister.net/retroarch-dl/RetroArch-win32-headers.zip unzip RetroArch-win32-headers.zip libs_x86_64: - wget https://github.com/downloads/Themaister/RetroArch/RetroArch-win64-libs.zip --no-check-certificate + wget http://themaister.net/retroarch-dl/RetroArch-win64-libs.zip unzip RetroArch-win64-libs.zip - wget https://github.com/downloads/Themaister/RetroArch/RetroArch-win64-headers.zip --no-check-certificate + wget http://themaister.net/retroarch-dl/RetroArch-win64-headers.zip unzip RetroArch-win64-headers.zip .PHONY: all install uninstall clean dist_x86 dist_x86_64 libs_x86 libs_x86_64 From b9fce188ea56ff40df7ae8c4d20deedcca9b8ab3 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 22 Jun 2013 15:06:56 +0200 Subject: [PATCH 083/252] Initial work on core GL context support. --- dynamic.c | 13 +++- gfx/context/androidegl_ctx.c | 4 +- gfx/context/apple_gl_ctx.c | 4 +- gfx/context/bbqnx_ctx.c | 4 +- gfx/context/drm_egl_ctx.c | 4 +- gfx/context/glx_ctx.c | 49 +++++++++++-- gfx/context/ps3_ctx.c | 4 +- gfx/context/vc_egl_ctx.c | 4 +- gfx/context/wgl_ctx.c | 4 +- gfx/context/xdk_ctx.c | 4 +- gfx/context/xegl_ctx.c | 4 +- gfx/gfx_context.c | 9 ++- gfx/gfx_context.h | 4 +- gfx/gl.c | 138 +++++++++++++++++++++++++---------- gfx/gl_common.h | 5 ++ libretro.h | 7 +- 16 files changed, 201 insertions(+), 60 deletions(-) diff --git a/dynamic.c b/dynamic.c index a43dac8965..0b23eaff4b 100644 --- a/dynamic.c +++ b/dynamic.c @@ -653,6 +653,7 @@ static bool environment_cb(unsigned cmd, void *data) break; case RETRO_ENVIRONMENT_SET_HW_RENDER: + case RETRO_ENVIRONMENT_SET_HW_RENDER | RETRO_ENVIRONMENT_EXPERIMENTAL: // ABI compat { RARCH_LOG("Environ SET_HW_RENDER.\n"); struct retro_hw_render_callback *cb = (struct retro_hw_render_callback*)data; @@ -669,6 +670,7 @@ static bool environment_cb(unsigned cmd, void *data) break; case RETRO_HW_CONTEXT_OPENGL: + case RETRO_HW_CONTEXT_OPENGL_CORE: RARCH_ERR("Requesting OpenGL context, but RetroArch is compiled against OpenGLES2. Cannot use HW context.\n"); return false; #elif defined(HAVE_OPENGL) @@ -680,6 +682,11 @@ static bool environment_cb(unsigned cmd, void *data) RARCH_LOG("Requesting OpenGL context.\n"); driver.video = &video_gl; break; + + case RETRO_HW_CONTEXT_OPENGL_CORE: + RARCH_LOG("Requesting core OpenGL context (%u.%u).\n", cb->version_major, cb->version_minor); + driver.video = &video_gl; + break; #endif default: @@ -688,7 +695,11 @@ static bool environment_cb(unsigned cmd, void *data) } cb->get_current_framebuffer = driver_get_current_framebuffer; cb->get_proc_address = driver_get_proc_address; - memcpy(&g_extern.system.hw_render_callback, cb, sizeof(*cb)); + + if (cmd & RETRO_ENVIRONMENT_EXPERIMENTAL) // Old ABI. Don't copy garbage. + memcpy(&g_extern.system.hw_render_callback, cb, offsetof(struct retro_hw_render_callback, stencil)); + else + memcpy(&g_extern.system.hw_render_callback, cb, sizeof(*cb)); break; } diff --git a/gfx/context/androidegl_ctx.c b/gfx/context/androidegl_ctx.c index 1fd6f67efd..254312e9bb 100644 --- a/gfx/context/androidegl_ctx.c +++ b/gfx/context/androidegl_ctx.c @@ -236,8 +236,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return ret; } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; g_api = api; return api == GFX_CTX_OPENGL_ES_API; } diff --git a/gfx/context/apple_gl_ctx.c b/gfx/context/apple_gl_ctx.c index d280bdf639..78f48f3208 100644 --- a/gfx/context/apple_gl_ctx.c +++ b/gfx/context/apple_gl_ctx.c @@ -27,8 +27,10 @@ #include "../../apple/RetroArch/rarch_wrapper.h" -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; #ifdef IOS return api == GFX_CTX_OPENGL_ES_API; #else diff --git a/gfx/context/bbqnx_ctx.c b/gfx/context/bbqnx_ctx.c index 532ba6ec9a..796ea931a1 100644 --- a/gfx/context/bbqnx_ctx.c +++ b/gfx/context/bbqnx_ctx.c @@ -362,8 +362,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return ret; } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; g_api = api; return api == GFX_CTX_OPENGL_ES_API; } diff --git a/gfx/context/drm_egl_ctx.c b/gfx/context/drm_egl_ctx.c index d730ac364a..67bda39585 100644 --- a/gfx/context/drm_egl_ctx.c +++ b/gfx/context/drm_egl_ctx.c @@ -553,8 +553,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return eglGetProcAddress(symbol); } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; g_api = api; switch (api) { diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index dcedf1cd39..fef98c4401 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -39,6 +39,13 @@ static unsigned g_screen; static GLXContext g_ctx; static GLXFBConfig g_fbc; +static unsigned g_major; +static unsigned g_minor; +static bool g_core; + +typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, + GLXFBConfig, GLXContext, Bool, const int*); +static glXCreateContextAttribsARBProc glx_create_context_attribs; static XF86VidModeModeInfo g_desktop_mode; static bool g_should_reset_mode; @@ -207,11 +214,26 @@ static bool gfx_ctx_init(void) if (!g_dpy) goto error; - // GLX 1.3+ required. int major, minor; glXQueryVersion(g_dpy, &major, &minor); - if (major < 1 || (major == 1 && minor < 3)) - goto error; + if (g_major * 1000 + g_minor >= 3001) // Core context + { + g_core = true; + // GLX 1.4+ required. + if ((major * 1000 + minor) < 1004) + goto error; + + glx_create_context_attribs = (glXCreateContextAttribsARBProc)glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB"); + if (!glx_create_context_attribs) + goto error; + } + else + { + g_core = false; + // GLX 1.3+ required. + if ((major * 1000 + minor) < 1003) + goto error; + } int nelements; fbcs = glXChooseFBConfig(g_dpy, DefaultScreen(g_dpy), @@ -339,7 +361,20 @@ static bool gfx_ctx_set_video_mode( XEvent event; XIfEvent(g_dpy, &event, glx_wait_notify, NULL); - g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True); + if (g_core) + { + const int attribs[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, g_major, + GLX_CONTEXT_MINOR_VERSION_ARB, g_minor, + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + None, + }; + + g_ctx = glx_create_context_attribs(g_dpy, g_fbc, NULL, True, attribs); + } + else + g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True); + if (!g_ctx) { RARCH_ERR("[GLX]: Failed to create new context.\n"); @@ -460,6 +495,8 @@ static void gfx_ctx_destroy(void) g_inited = false; g_pglSwapInterval = NULL; + g_major = g_minor = 0; + g_core = false; } static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) @@ -486,8 +523,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return glXGetProcAddress((const GLubyte*)symbol); } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + g_major = major; + g_minor = minor; return api == GFX_CTX_OPENGL_API; } diff --git a/gfx/context/ps3_ctx.c b/gfx/context/ps3_ctx.c index e4731d9b9f..63d00d72e3 100644 --- a/gfx/context/ps3_ctx.c +++ b/gfx/context/ps3_ctx.c @@ -300,8 +300,10 @@ static void gfx_ctx_destroy(void) static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) { } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; return api == GFX_CTX_OPENGL_API || GFX_CTX_OPENGL_ES_API; } diff --git a/gfx/context/vc_egl_ctx.c b/gfx/context/vc_egl_ctx.c index 60ebec88b9..b9097751ff 100644 --- a/gfx/context/vc_egl_ctx.c +++ b/gfx/context/vc_egl_ctx.c @@ -243,8 +243,10 @@ static bool gfx_ctx_set_video_mode( return true; } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; g_api = api; switch (api) { diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index 700305407b..a39cb5a377 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -484,8 +484,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return (gfx_ctx_proc_t)wglGetProcAddress(symbol); } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; return api == GFX_CTX_OPENGL_API; } diff --git a/gfx/context/xdk_ctx.c b/gfx/context/xdk_ctx.c index fb23249048..3649934b09 100644 --- a/gfx/context/xdk_ctx.c +++ b/gfx/context/xdk_ctx.c @@ -260,8 +260,10 @@ static void gfx_ctx_xdk_destroy(void) static void gfx_ctx_xdk_input_driver(const input_driver_t **input, void **input_data) { } -static bool gfx_ctx_xdk_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_xdk_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; #if defined(_XBOX1) return api == GFX_CTX_DIRECT3D8_API; #elif defined(_XBOX360) diff --git a/gfx/context/xegl_ctx.c b/gfx/context/xegl_ctx.c index 94e99dd789..220f426b4d 100644 --- a/gfx/context/xegl_ctx.c +++ b/gfx/context/xegl_ctx.c @@ -555,8 +555,10 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) return eglGetProcAddress(symbol); } -static bool gfx_ctx_bind_api(enum gfx_ctx_api api) +static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { + (void)major; + (void)minor; g_api = api; switch (api) { diff --git a/gfx/gfx_context.c b/gfx/gfx_context.c index 18e4958213..b97c651cda 100644 --- a/gfx/gfx_context.c +++ b/gfx/gfx_context.c @@ -14,6 +14,7 @@ */ #include "gfx_context.h" +#include "general.h" #include #ifdef HAVE_CONFIG_H @@ -55,7 +56,7 @@ static const gfx_ctx_driver_t *gfx_ctx_drivers[] = { const gfx_ctx_driver_t *gfx_ctx_find_driver(const char *ident) { - for (unsigned i = 0; i < sizeof(gfx_ctx_drivers) / sizeof(gfx_ctx_drivers[0]); i++) + for (unsigned i = 0; i < ARRAY_SIZE(gfx_ctx_drivers); i++) { if (strcmp(gfx_ctx_drivers[i]->ident, ident) == 0) return gfx_ctx_drivers[i]; @@ -64,11 +65,11 @@ const gfx_ctx_driver_t *gfx_ctx_find_driver(const char *ident) return NULL; } -const gfx_ctx_driver_t *gfx_ctx_init_first(enum gfx_ctx_api api) +const gfx_ctx_driver_t *gfx_ctx_init_first(enum gfx_ctx_api api, unsigned major, unsigned minor) { - for (unsigned i = 0; i < sizeof(gfx_ctx_drivers) / sizeof(gfx_ctx_drivers[0]); i++) + for (unsigned i = 0; i < ARRAY_SIZE(gfx_ctx_drivers); i++) { - if (gfx_ctx_drivers[i]->bind_api(api)) + if (gfx_ctx_drivers[i]->bind_api(api, major, minor)) { if (gfx_ctx_drivers[i]->init()) return gfx_ctx_drivers[i]; diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index fa70e76e73..c8614799a5 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -41,7 +41,7 @@ typedef struct gfx_ctx_driver bool (*init)(void); void (*destroy)(void); - bool (*bind_api)(enum gfx_ctx_api); // Which API to bind to. + bool (*bind_api)(enum gfx_ctx_api, unsigned major, unsigned minor); // Which API to bind to. // Sets the swap interval. void (*swap_interval)(unsigned); @@ -111,7 +111,7 @@ extern const gfx_ctx_driver_t gfx_ctx_apple; extern const gfx_ctx_driver_t gfx_ctx_null; const gfx_ctx_driver_t *gfx_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize. -const gfx_ctx_driver_t *gfx_ctx_init_first(enum gfx_ctx_api api); // Finds first suitable driver and initializes. +const gfx_ctx_driver_t *gfx_ctx_init_first(enum gfx_ctx_api api, unsigned major, unsigned minor); // Finds first suitable driver and initializes. #endif diff --git a/gfx/gl.c b/gfx/gl.c index bec4389a92..cb2c1ee7e9 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -138,6 +138,29 @@ static bool load_sync_proc(gl_t *gl) } #endif +#ifndef HAVE_OPENGLES +static PFNGLGENVERTEXARRAYSPROC pglGenVertexArrays; +static PFNGLBINDVERTEXARRAYPROC pglBindVertexArray; +static PFNGLDELETEVERTEXARRAYSPROC pglDeleteVertexArrays; + +static bool load_vao_proc(gl_t *gl) +{ + if (!gl_query_extension("ARB_vertex_array_object")) + return false; + + LOAD_GL_SYM(GenVertexArrays); + LOAD_GL_SYM(BindVertexArray); + LOAD_GL_SYM(DeleteVertexArrays); + + bool present = pglGenVertexArrays && pglBindVertexArray && pglDeleteVertexArrays; + if (!present) + return false; + + pglGenVertexArrays(1, &gl->vao); + return true; +} +#endif + #ifdef HAVE_FBO #if defined(_WIN32) && !defined(RARCH_CONSOLE) static PFNGLGENFRAMEBUFFERSPROC pglGenFramebuffers; @@ -667,20 +690,6 @@ void gl_init_fbo(void *data, unsigned width, unsigned height) #ifndef HAVE_RGL -// GLES and GL inconsistency. -#ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT -#endif -#ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT -#endif -#ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT -#endif -#ifndef GL_FRAMEBUFFER_UNSUPPORTED -#define GL_FRAMEBUFFER_UNSUPPORTED GL_FRAMEBUFFER_UNSUPPORTED_EXT -#endif - bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) { RARCH_LOG("[GL]: Initializing HW render (%u x %u).\n", width, height); @@ -697,6 +706,12 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) pglGenFramebuffers(TEXTURES, gl->hw_render_fbo); bool depth = g_extern.system.hw_render_callback.depth; + bool stencil = g_extern.system.hw_render_callback.stencil; + +#ifdef HAVE_OPENGLES2 + if (stencil && !gl_query_extension("OES_packed_depth_stencil")) + return false; +#endif if (depth) { @@ -711,29 +726,47 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) if (depth) { - pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); - pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, - width, height); - pglBindRenderbuffer(GL_RENDERBUFFER, 0); - pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, - GL_RENDERBUFFER, gl->hw_render_depth[i]); + GLenum component = GL_DEPTH_COMPONENT16; + GLenum attachment = GL_DEPTH_ATTACHMENT; + if (stencil) + { +#ifdef HAVE_OPENGLES2 + // GLES2 is a bit weird, as always. :P + pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, + width, height); + pglBindRenderbuffer(GL_RENDERBUFFER, 0); + + // There's no GL_DEPTH_STENCIL_ATTACHMENT like in desktop GL. + pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + GL_RENDERBUFFER, gl->hw_render_depth[i]); + pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, + GL_RENDERBUFFER, gl->hw_render_depth[i]); +#else + // We use ARB FBO extensions, no need to check. + pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, + width, height); + pglBindRenderbuffer(GL_RENDERBUFFER, 0); + pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, + GL_RENDERBUFFER, gl->hw_render_depth[i]); +#endif + } + else + { + pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, + width, height); + pglBindRenderbuffer(GL_RENDERBUFFER, 0); + pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + GL_RENDERBUFFER, gl->hw_render_depth[i]); + } } GLenum status = pglCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - RARCH_ERR("[GL]: Failed to create HW render FBO #%u.\n", i); - const char *err = NULL; - switch (status) - { - - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: err = "Incomplete Attachment"; break; - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: err = "Incomplete Dimensions"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: err = "Missing Attachment"; break; - case GL_FRAMEBUFFER_UNSUPPORTED: err = "Unsupported"; break; - default: err = "Unknown"; break; - } - RARCH_ERR("[GL]: Error: %s.\n", err); + RARCH_ERR("[GL]: Failed to create HW render FBO #%u, error: 0x%u.\n", i, (unsigned)status); return false; } } @@ -1380,8 +1413,11 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei RARCH_PERFORMANCE_START(frame_run); gl_t *gl = (gl_t*)data; - uint64_t lifecycle_mode_state = g_extern.lifecycle_mode_state; - (void)lifecycle_mode_state; + +#ifndef HAVE_OPENGLES + if (gl->core_context) + pglBindVertexArray(gl->vao); +#endif if (gl->shader) gl->shader->use(1); @@ -1543,6 +1579,11 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei } #endif +#ifndef HAVE_OPENGLES + if (gl->core_context) + pglBindVertexArray(0); +#endif + return true; } @@ -1614,11 +1655,18 @@ static void gl_free(void *data) #endif #endif +#ifndef HAVE_OPENGLES + if (gl->core_context) + { + pglBindVertexArray(0); + pglDeleteVertexArrays(1, &gl->vao); + } +#endif + context_destroy_func(); free(gl->empty_buf); free(gl->conv_buffer); - free(gl); } @@ -1640,6 +1688,17 @@ static bool resolve_extensions(gl_t *gl) return false; #endif +#ifndef HAVE_OPENGLES + gl->core_context = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; + RARCH_LOG("[GL]: Using Core GL context.\n"); + if (gl->core_context && + !load_vao_proc(gl)) + { + RARCH_ERR("[GL]: Failed to init VAOs.\n"); + return false; + } +#endif + #ifdef HAVE_GL_SYNC gl->have_sync = load_sync_proc(gl); if (gl->have_sync && g_settings.video.hard_sync) @@ -1779,6 +1838,8 @@ static void gl_init_pbo_readback(void *data) static const gfx_ctx_driver_t *gl_get_context(void) { + unsigned major = g_extern.system.hw_render_callback.version_major; + unsigned minor = g_extern.system.hw_render_callback.version_minor; #ifdef HAVE_OPENGLES enum gfx_ctx_api api = GFX_CTX_OPENGL_ES_API; const char *api_name = "OpenGL ES"; @@ -1792,7 +1853,7 @@ static const gfx_ctx_driver_t *gl_get_context(void) const gfx_ctx_driver_t *ctx = gfx_ctx_find_driver(g_settings.video.gl_context); if (ctx) { - if (!ctx->bind_api(api)) + if (!ctx->bind_api(api, major, minor)) { RARCH_ERR("Failed to bind API %s to context %s.\n", api_name, g_settings.video.gl_context); return NULL; @@ -1813,7 +1874,7 @@ static const gfx_ctx_driver_t *gl_get_context(void) return ctx; } else - return gfx_ctx_init_first(api); + return gfx_ctx_init_first(api, major, minor); } static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data) @@ -1923,7 +1984,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo #ifdef HAVE_OPENGLES2 gl->hw_render_use = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGLES2; #else - gl->hw_render_use = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL; + gl->hw_render_use = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL || + g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; #endif #endif diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 9eeeb50124..1f004d81c3 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -284,6 +284,11 @@ typedef struct gl GLsync fences[MAX_FENCES]; unsigned fence_count; #endif + +#ifndef HAVE_OPENGLES + bool core_context; + GLuint vao; +#endif } gl_t; // Windows ... <_< diff --git a/libretro.h b/libretro.h index 9f55186db5..937bbea6c6 100755 --- a/libretro.h +++ b/libretro.h @@ -434,7 +434,7 @@ enum retro_mod // Sets an interface which frontend can use to eject and insert disk images. // This is used for games which consist of multiple images and must be manually // swapped out by the user (e.g. PSX). -#define RETRO_ENVIRONMENT_SET_HW_RENDER (14 | RETRO_ENVIRONMENT_EXPERIMENTAL) +#define RETRO_ENVIRONMENT_SET_HW_RENDER 14 // struct retro_hw_render_callback * -- // NOTE: This call is currently very experimental, and should not be considered part of the public API. // The interface could be changed or removed at any time. @@ -509,6 +509,7 @@ enum retro_hw_context_type RETRO_HW_CONTEXT_NONE = 0, RETRO_HW_CONTEXT_OPENGL, // OpenGL 2.x. Latest version available before 3.x+. RETRO_HW_CONTEXT_OPENGLES2, // GLES 2.0 + RETRO_HW_CONTEXT_OPENGL_CORE, // Modern desktop core GL context. Use major/minor fields to set GL version. RETRO_HW_CONTEXT_DUMMY = INT_MAX }; @@ -520,6 +521,10 @@ struct retro_hw_render_callback retro_hw_get_current_framebuffer_t get_current_framebuffer; // Set by frontend. retro_hw_get_proc_address_t get_proc_address; // Set by frontend. bool depth; // Set if render buffers should have depth component attached. + bool stencil; // Set if stencil buffers should be attached. + // If depth and stencil are true, a packed 24/8 buffer will be added. Only attaching stencil is invalid and will be ignored. + unsigned version_major; // Major version number for core GL context. + unsigned version_minor; // Minor version number for core GL context. }; // Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. Called by the frontend in response to keyboard events. From e28f5d7cc130c9ec3d353b7354b31632404ab9e7 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 23 Jun 2013 11:55:21 +0200 Subject: [PATCH 084/252] Fix incompatibilities with GL core. --- gfx/fonts/gl_raster_font.c | 27 +++++++----- gfx/gl.c | 71 +++++++++++++++++++++++++------- gfx/gl_common.h | 14 +------ libretro-test-gl/Makefile | 4 ++ libretro-test-gl/libretro-test.c | 29 +++++++++++++ 5 files changed, 108 insertions(+), 37 deletions(-) diff --git a/gfx/fonts/gl_raster_font.c b/gfx/fonts/gl_raster_font.c index c4650b60ed..d6e32dff9b 100644 --- a/gfx/fonts/gl_raster_font.c +++ b/gfx/fonts/gl_raster_font.c @@ -126,18 +126,18 @@ static void adjust_power_of_two(gl_t *gl, struct font_rect *geom) if ((geom->pot_width > gl->font_tex_w) || (geom->pot_height > gl->font_tex_h)) { - gl->font_tex_buf = (uint16_t*)realloc(gl->font_tex_buf, - geom->pot_width * geom->pot_height * sizeof(uint16_t)); + gl->font_tex_buf = (uint32_t*)realloc(gl->font_tex_buf, + geom->pot_width * geom->pot_height * sizeof(uint32_t)); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, geom->pot_width, geom->pot_height, - 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, geom->pot_width, geom->pot_height, + 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); gl->font_tex_w = geom->pot_width; gl->font_tex_h = geom->pot_height; } } -static void copy_glyph(const struct font_output *head, const struct font_rect *geom, uint16_t *buffer, unsigned width, unsigned height) +static void copy_glyph(const struct font_output *head, const struct font_rect *geom, uint32_t *buffer, unsigned width, unsigned height) { // head has top-left oriented coords. int x = head->off_x - geom->x; @@ -166,18 +166,25 @@ static void copy_glyph(const struct font_output *head, const struct font_rect *g if (y + font_height > (int)height) font_height = height - y; - uint16_t *dst = buffer + y * width + x; - + uint32_t *dst = buffer + y * width + x; for (int h = 0; h < font_height; h++, dst += width, src += head->pitch) + { + uint8_t *d = (uint8_t*)dst; for (int w = 0; w < font_width; w++) - dst[w] = 0xff | (src[w] << 8); // Assume little endian for now. + { + *d++ = 0xff; + *d++ = 0xff; + *d++ = 0xff; + *d++ = src[w]; + } + } } // Old style "blitting", so we can render all the fonts in one go. // TODO: Is it possible that fonts could overlap if we blit without alpha blending? static void blit_fonts(gl_t *gl, const struct font_output *head, const struct font_rect *geom) { - memset(gl->font_tex_buf, 0, gl->font_tex_w * gl->font_tex_h * sizeof(uint16_t)); + memset(gl->font_tex_buf, 0, gl->font_tex_w * gl->font_tex_h * sizeof(uint32_t)); while (head) { @@ -188,7 +195,7 @@ static void blit_fonts(gl_t *gl, const struct font_output *head, const struct fo glPixelStorei(GL_UNPACK_ALIGNMENT, 8); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, gl->font_tex_w, gl->font_tex_h, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, gl->font_tex_buf); + GL_RGBA, GL_UNSIGNED_BYTE, gl->font_tex_buf); } static void calculate_font_coords(gl_t *gl, diff --git a/gfx/gl.c b/gfx/gl.c index cb2c1ee7e9..ee4904bde7 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -78,6 +78,43 @@ static const GLfloat tex_coords[] = { 1, 1 }; +// Workaround broken Apple headers. +typedef const GLubyte* (*gl_get_stringi_proc)(GLenum name, GLuint index); +static inline bool gl_query_extension(gl_t *gl, const char *ext) +{ + bool ret = false; + + if (gl->core_context) + { +#ifdef GL_NUM_EXTENSIONS + gl_get_stringi_proc proc = (gl_get_stringi_proc)gl->ctx_driver->get_proc_address("glGetStringi"); + if (!proc) + return false; + + GLint exts = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &exts); + for (GLint i = 0; i < exts; i++) + { + const char *str = (const char*)proc(GL_EXTENSIONS, i); + if (str && strstr(str, ext)) + { + ret = true; + break; + } + } +#endif + } + else + { + const char *str = (const char*)glGetString(GL_EXTENSIONS); + ret = str && strstr(str, ext); + } + + RARCH_LOG("Querying GL extension: %s => %s\n", + ext, ret ? "exists" : "doesn't exist"); + return ret; +} + #ifdef HAVE_OVERLAY static void gl_render_overlay(void *data); static void gl_overlay_vertex_geom(void *data, @@ -127,7 +164,7 @@ static PFNGLCLIENTWAITSYNCPROC pglClientWaitSync; static bool load_sync_proc(gl_t *gl) { - if (!gl_query_extension("ARB_sync")) + if (!gl_query_extension(gl, "ARB_sync")) return false; LOAD_GL_SYM(FenceSync); @@ -145,7 +182,7 @@ static PFNGLDELETEVERTEXARRAYSPROC pglDeleteVertexArrays; static bool load_vao_proc(gl_t *gl) { - if (!gl_query_extension("ARB_vertex_array_object")) + if (!gl_query_extension(gl, "ARB_vertex_array_object")) return false; LOAD_GL_SYM(GenVertexArrays); @@ -285,7 +322,9 @@ static bool gl_shader_init(void *data) const char *shader_path = (g_settings.video.shader_enable && *g_settings.video.shader_path) ? g_settings.video.shader_path : NULL; - enum rarch_shader_type type = gfx_shader_parse_type(shader_path, DEFAULT_SHADER_TYPE); + + enum rarch_shader_type type = gfx_shader_parse_type(shader_path, + gl->core_context ? RARCH_SHADER_GLSL : DEFAULT_SHADER_TYPE); if (type == RARCH_SHADER_NONE) { @@ -357,8 +396,11 @@ static void gl_set_coords(const struct gl_coords *coords) glEnableClientState(GL_TEXTURE_COORD_ARRAY); } -static void gl_disable_client_arrays(void) +static void gl_disable_client_arrays(gl_t *gl) { + if (gl->core_context) + return; + pglClientActiveTexture(GL_TEXTURE1); glDisableClientState(GL_TEXTURE_COORD_ARRAY); pglClientActiveTexture(GL_TEXTURE0); @@ -543,7 +585,7 @@ static void gl_create_fbo_textures(void *data) { // GLES and GL are inconsistent in which arguments to pass. #ifdef HAVE_OPENGLES2 - bool has_fp_fbo = gl_query_extension("OES_texture_float_linear"); + bool has_fp_fbo = gl_query_extension(gl, "OES_texture_float_linear"); if (!has_fp_fbo) RARCH_ERR("OES_texture_float_linear extension not found.\n"); @@ -552,7 +594,7 @@ static void gl_create_fbo_textures(void *data) gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, GL_RGBA, GL_FLOAT, NULL); #else - bool has_fp_fbo = gl_query_extension("ARB_texture_float"); + bool has_fp_fbo = gl_query_extension(gl, "ARB_texture_float"); if (!has_fp_fbo) RARCH_ERR("ARB_texture_float extension was not found.\n"); @@ -709,7 +751,7 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) bool stencil = g_extern.system.hw_render_callback.stencil; #ifdef HAVE_OPENGLES2 - if (stencil && !gl_query_extension("OES_packed_depth_stencil")) + if (stencil && !gl_query_extension(gl, "OES_packed_depth_stencil")) return false; #endif @@ -1188,7 +1230,7 @@ static void gl_init_textures(void *data, const video_info_t *video) #ifdef HAVE_OPENGLES2 if (gl->hw_render_use && gl->base_size == sizeof(uint32_t)) { - bool support_argb = gl_query_extension("OES_rgb8_rgba8") || gl_query_extension("ARM_argb8"); + bool support_argb = gl_query_extension(gl, "OES_rgb8_rgba8") || gl_query_extension(gl, "ARM_argb8"); if (support_argb) { internal_fmt = GL_RGBA; @@ -1481,7 +1523,8 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei if (gl->hw_render_fbo_init) { #ifndef HAVE_OPENGLES - glEnable(GL_TEXTURE_2D); + if (!gl->core_context) + glEnable(GL_TEXTURE_2D); #endif glDisable(GL_DEPTH_TEST); glDisable(GL_STENCIL_TEST); @@ -1545,7 +1588,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei gl->shader->use(0); glBindTexture(GL_TEXTURE_2D, 0); #ifndef NO_GL_FF_VERTEX - gl_disable_client_arrays(); + gl_disable_client_arrays(gl); #endif } #endif @@ -1613,7 +1656,7 @@ static void gl_free(void *data) gl_shader_deinit(gl); #ifndef NO_GL_FF_VERTEX - gl_disable_client_arrays(); + gl_disable_client_arrays(gl); #endif glDeleteTextures(TEXTURES, gl->texture); @@ -1714,7 +1757,7 @@ static bool resolve_extensions(gl_t *gl) driver.gfx_use_rgba = false; #ifdef HAVE_OPENGLES2 - if (gl_query_extension("BGRA8888")) + if (gl_query_extension(gl, "BGRA8888")) RARCH_LOG("[GL]: BGRA8888 extension found for GLES.\n"); else { @@ -1992,7 +2035,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl_set_texture_fmts(gl, video->rgb32); #ifndef HAVE_OPENGLES - glEnable(GL_TEXTURE_2D); + if (!gl->core_context) + glEnable(GL_TEXTURE_2D); #endif glDisable(GL_DEPTH_TEST); @@ -2004,7 +2048,6 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->coords.tex_coord = gl->tex_coords; gl->coords.color = white_color; gl->coords.lut_tex_coord = tex_coords; - gl_shader_set_coords(gl, &gl->coords, &gl->mvp); // Empty buffer that we use to clear out the texture with on res change. gl->empty_buf = calloc(sizeof(uint32_t), gl->tex_w * gl->tex_h); diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 1f004d81c3..be07c45e26 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -81,16 +81,6 @@ gl->ctx_driver->write_egl_image(frame, width, height, pitch, base_size, tex_index,img) #endif -static inline bool gl_query_extension(const char *ext) -{ - const char *str = (const char*)glGetString(GL_EXTENSIONS); - bool ret = str && strstr(str, ext); - RARCH_LOG("Querying GL extension: %s => %s\n", - ext, ret ? "exists" : "doesn't exist"); - - return ret; -} - static inline bool gl_check_error(void) { int error = glGetError(); @@ -244,7 +234,7 @@ typedef struct gl const font_renderer_driver_t *font_driver; GLuint font_tex; int font_tex_w, font_tex_h; - uint16_t *font_tex_buf; + uint32_t *font_tex_buf; char font_last_msg[256]; int font_last_width, font_last_height; GLfloat font_color[16]; @@ -285,10 +275,8 @@ typedef struct gl unsigned fence_count; #endif -#ifndef HAVE_OPENGLES bool core_context; GLuint vao; -#endif } gl_t; // Windows ... <_< diff --git a/libretro-test-gl/Makefile b/libretro-test-gl/Makefile index 2506afd81d..084e6ddd29 100644 --- a/libretro-test-gl/Makefile +++ b/libretro-test-gl/Makefile @@ -106,6 +106,10 @@ else LIBS += $(GL_LIB) endif +ifeq ($(CORE), 1) + CFLAGS += -DCORE +endif + all: $(TARGET) $(TARGET): $(OBJECTS) diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 62d2f80574..92bb507505 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -73,6 +73,10 @@ static PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray; static PFNGLGENBUFFERSPROC pglGenBuffers; static PFNGLBUFFERDATAPROC pglBufferData; static PFNGLBINDBUFFERPROC pglBindBuffer; +#ifdef CORE +static PFNGLGENVERTEXARRAYSPROC pglGenVertexArrays; +static PFNGLBINDVERTEXARRAYPROC pglBindVertexArray; +#endif struct gl_proc_map { @@ -99,6 +103,10 @@ static const struct gl_proc_map proc_map[] = { PROC_BIND(GenBuffers), PROC_BIND(BufferData), PROC_BIND(BindBuffer), +#ifdef CORE + PROC_BIND(GenVertexArrays), + PROC_BIND(BindVertexArray), +#endif }; static void init_gl_proc(void) @@ -116,6 +124,10 @@ static void init_gl_proc(void) static GLuint prog; static GLuint vbo; +#ifdef CORE +static GLuint vao; +#endif + static const GLfloat vertex_data[] = { -0.5, -0.5, 0.5, -0.5, @@ -166,6 +178,9 @@ static void compile_program(void) static void setup_vao(void) { +#ifdef CORE + pglGenVertexArrays(1, &vao); +#endif pglUseProgram(prog); pglGenBuffers(1, &vbo); @@ -303,6 +318,10 @@ void retro_run(void) input_poll_cb(); +#ifdef CORE + pglBindVertexArray(vao); +#endif + pglBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); glClearColor(0.3, 0.4, 0.5, 1.0); glViewport(0, 0, width, height); @@ -355,6 +374,9 @@ void retro_run(void) pglUseProgram(0); video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0); +#ifdef CORE + pglBindVertexArray(0); +#endif } static void context_reset(void) @@ -379,11 +401,18 @@ bool retro_load_game(const struct retro_game_info *info) #ifdef GLES hw_render.context_type = RETRO_HW_CONTEXT_OPENGLES2; +#else +#ifdef CORE + hw_render.context_type = RETRO_HW_CONTEXT_OPENGL_CORE; + hw_render.version_major = 3; + hw_render.version_minor = 1; #else hw_render.context_type = RETRO_HW_CONTEXT_OPENGL; +#endif #endif hw_render.context_reset = context_reset; hw_render.depth = true; + hw_render.stencil = true; if (!environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render)) return false; From b090f5ab366a70c2d429e2ff5d5058c8a58472c1 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 23 Jun 2013 13:05:33 +0200 Subject: [PATCH 085/252] Implement WGL core context. --- gfx/context/wgl_ctx.c | 56 ++++++++++++++++++++++++++++++-- gfx/gl.c | 3 -- libretro-test-gl/libretro-test.c | 2 +- 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index a39cb5a377..912a50ff71 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -39,6 +39,8 @@ static HDC g_hdc; static HMONITOR g_last_hm; static HMONITOR g_all_hms[MAX_MONITORS]; static unsigned g_num_mons; +static unsigned g_major; +static unsigned g_minor; static bool g_quit; static bool g_inited; @@ -58,6 +60,9 @@ static void gfx_ctx_destroy(void); static BOOL (APIENTRY *p_swap_interval)(int); +typedef HGLRC (APIENTRY *wglCreateContextAttribsProc)(HDC, HGLRC, const int*); +static wglCreateContextAttribsProc pcreate_context; + static void setup_pixel_format(HDC hdc) { PIXELFORMATDESCRIPTOR pfd = {0}; @@ -87,7 +92,53 @@ static void create_gl_context(HWND hwnd) g_quit = true; } else + { g_quit = true; + return; + } + + if (g_major * 1000 + g_minor >= 3001) // Create core context + { +#ifndef WGL_CONTEXT_MAJOR_VERSION_ARB +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#endif +#ifndef WGL_CONTEXT_MINOR_VERSION_ARB +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#endif +#ifndef WGL_CONTEXT_PROFILE_MASK_ARB +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 +#endif +#ifndef WGL_CONTEXT_CORE_PROFILE_BIT_ARB +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x0001 +#endif + const int attribs[] = { + WGL_CONTEXT_MAJOR_VERSION_ARB, g_major, + WGL_CONTEXT_MINOR_VERSION_ARB, g_minor, + WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, + 0, + }; + + if (!pcreate_context) + pcreate_context = (wglCreateContextAttribsProc)wglGetProcAddress("wglCreateContextAttribsARB"); + + if (pcreate_context) + { + HGLRC context = pcreate_context(g_hdc, NULL, attribs); + + if (context) + { + wglMakeCurrent(NULL, NULL); + wglDeleteContext(g_hrc); + g_hrc = context; + if (!wglMakeCurrent(g_hdc, g_hrc)) + g_quit = true; + } + else + RARCH_ERR("[WGL]: Failed to create core context. Falling back to legacy context.\n"); + } + else + RARCH_ERR("[WGL]: wglCreateContextAttribsARB not supported.\n"); + } } static bool BrowseForFile(char *filename) @@ -462,6 +513,7 @@ static void gfx_ctx_destroy(void) } g_inited = false; + g_major = g_minor = 0; } static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) @@ -486,8 +538,8 @@ static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol) static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned minor) { - (void)major; - (void)minor; + g_major = major; + g_minor = minor; return api == GFX_CTX_OPENGL_API; } diff --git a/gfx/gl.c b/gfx/gl.c index ee4904bde7..388abe254d 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -182,9 +182,6 @@ static PFNGLDELETEVERTEXARRAYSPROC pglDeleteVertexArrays; static bool load_vao_proc(gl_t *gl) { - if (!gl_query_extension(gl, "ARB_vertex_array_object")) - return false; - LOAD_GL_SYM(GenVertexArrays); LOAD_GL_SYM(BindVertexArray); LOAD_GL_SYM(DeleteVertexArrays); diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 92bb507505..45ce564b77 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -325,7 +325,7 @@ void retro_run(void) pglBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); glClearColor(0.3, 0.4, 0.5, 1.0); glViewport(0, 0, width, height); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); pglUseProgram(prog); From e18af774124ec3f4315c431d8764e97cec6880c4 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 23 Jun 2013 23:01:34 +0200 Subject: [PATCH 086/252] Add path to cache GL context on reinit. If successful, can avoid libretro GL reset context callback being called. --- driver.c | 2 +- driver.h | 5 ++++ gfx/context/glx_ctx.c | 65 +++++++++++++++++++++++++++---------------- retroarch.c | 3 ++ 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/driver.c b/driver.c index 05ad5689a1..da6eb582a5 100644 --- a/driver.c +++ b/driver.c @@ -373,7 +373,7 @@ void init_drivers(void) g_extern.frame_count = 0; init_video_input(); - if (g_extern.system.hw_render_callback.context_reset) + if (!driver.video_cache_context_ack && g_extern.system.hw_render_callback.context_reset) g_extern.system.hw_render_callback.context_reset(); init_audio(); diff --git a/driver.h b/driver.h index d51e37bc0d..bc4cdd7d1a 100644 --- a/driver.h +++ b/driver.h @@ -419,6 +419,11 @@ typedef struct driver bool threaded_video; + // If set during context deinit, the driver should keep + // graphics context alive to avoid having to reset all context state. + bool video_cache_context; + bool video_cache_context_ack; // Set to true by driver if context caching succeeded. + // Set if the respective handles are owned by RetroArch driver core. // Consoles upper logic will generally intialize the drivers before // the driver core initializes. It will then be up to upper logic diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index fef98c4401..fae58f4674 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -113,20 +113,24 @@ static void gfx_ctx_check_window(bool *quit, switch (event.type) { case ClientMessage: - if ((Atom)event.xclient.data.l[0] == g_quit_atom) + if (event.xclient.window == g_win && + (Atom)event.xclient.data.l[0] == g_quit_atom) g_quit = true; break; case DestroyNotify: - g_quit = true; + if (event.xdestroywindow.window == g_win) + g_quit = true; break; case MapNotify: - g_has_focus = true; + if (event.xmap.window == g_win) + g_has_focus = true; break; case UnmapNotify: - g_has_focus = false; + if (event.xunmap.window == g_win) + g_has_focus = false; break; case KeyPress: @@ -210,7 +214,9 @@ static bool gfx_ctx_init(void) GLXFBConfig *fbcs = NULL; g_quit = 0; - g_dpy = XOpenDisplay(NULL); + if (!g_dpy) + g_dpy = XOpenDisplay(NULL); + if (!g_dpy) goto error; @@ -361,24 +367,32 @@ static bool gfx_ctx_set_video_mode( XEvent event; XIfEvent(g_dpy, &event, glx_wait_notify, NULL); - if (g_core) - { - const int attribs[] = { - GLX_CONTEXT_MAJOR_VERSION_ARB, g_major, - GLX_CONTEXT_MINOR_VERSION_ARB, g_minor, - GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, - None, - }; - - g_ctx = glx_create_context_attribs(g_dpy, g_fbc, NULL, True, attribs); - } - else - g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True); - if (!g_ctx) { - RARCH_ERR("[GLX]: Failed to create new context.\n"); - goto error; + if (g_core) + { + const int attribs[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, g_major, + GLX_CONTEXT_MINOR_VERSION_ARB, g_minor, + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + None, + }; + + g_ctx = glx_create_context_attribs(g_dpy, g_fbc, NULL, True, attribs); + } + else + g_ctx = glXCreateNewContext(g_dpy, g_fbc, GLX_RGBA_TYPE, 0, True); + + if (!g_ctx) + { + RARCH_ERR("[GLX]: Failed to create new context.\n"); + goto error; + } + } + else + { + driver.video_cache_context_ack = true; + RARCH_LOG("[GLX]: Using cached GL context.\n"); } glXMakeContextCurrent(g_dpy, g_glx_win, g_glx_win, g_ctx); @@ -445,8 +459,11 @@ static void gfx_ctx_destroy(void) if (g_dpy && g_ctx) { glXMakeContextCurrent(g_dpy, None, None, NULL); - glXDestroyContext(g_dpy, g_ctx); - g_ctx = NULL; + if (!driver.video_cache_context) + { + glXDestroyContext(g_dpy, g_ctx); + g_ctx = NULL; + } } if (g_win) @@ -487,7 +504,7 @@ static void gfx_ctx_destroy(void) g_should_reset_mode = false; } - if (g_dpy) + if (!driver.video_cache_context && g_dpy) { XCloseDisplay(g_dpy); g_dpy = NULL; diff --git a/retroarch.c b/retroarch.c index ecd6bf9d6d..11c674c084 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1934,8 +1934,11 @@ void rarch_set_fullscreen(bool fullscreen) { g_settings.video.fullscreen = fullscreen; + driver.video_cache_context = true; + driver.video_cache_context_ack = false; uninit_drivers(); init_drivers(); + driver.video_cache_context = false; // Poll input to avoid possibly stale data to corrupt things. if (driver.input) From feebb78f7557075e1750ff86887a040367a6ab77 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 23 Jun 2013 23:18:05 +0200 Subject: [PATCH 087/252] Support cached contexts on Win32. Only tested on Wine, but works. --- gfx/context/wgl_ctx.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index 912a50ff71..52f3be9e20 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -83,7 +83,14 @@ static void create_gl_context(HWND hwnd) g_hdc = GetDC(hwnd); setup_pixel_format(g_hdc); - g_hrc = wglCreateContext(g_hdc); + if (!g_hrc) + g_hrc = wglCreateContext(g_hdc); + else + { + RARCH_LOG("[WGL]: Using cached GL context.\n"); + driver.video_cache_context_ack = true; + } + if (g_hrc) { if (wglMakeCurrent(g_hdc, g_hrc)) @@ -484,8 +491,12 @@ static void gfx_ctx_destroy(void) if (g_hrc) { wglMakeCurrent(NULL, NULL); - wglDeleteContext(g_hrc); - g_hrc = NULL; + + if (!driver.video_cache_context) + { + wglDeleteContext(g_hrc); + g_hrc = NULL; + } } if (g_hwnd && g_hdc) @@ -514,6 +525,7 @@ static void gfx_ctx_destroy(void) g_inited = false; g_major = g_minor = 0; + p_swap_interval = NULL; } static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) From 6df083fc0f76d8e6ee5e0c3d1b41aaefa55aecda Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 22:24:07 +0200 Subject: [PATCH 088/252] Add support for bottom-left origin in libretro GL. --- gfx/fonts/gl_raster_font.c | 7 ++---- gfx/gl.c | 38 ++++++++++++++++---------------- gfx/gl_common.h | 5 ++--- libretro-test-gl/libretro-test.c | 3 ++- libretro.h | 1 + 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/gfx/fonts/gl_raster_font.c b/gfx/fonts/gl_raster_font.c index d6e32dff9b..644184e20e 100644 --- a/gfx/fonts/gl_raster_font.c +++ b/gfx/fonts/gl_raster_font.c @@ -240,9 +240,6 @@ static void calculate_font_coords(gl_t *gl, font_tex_coords[7] = hy; } -extern const GLfloat vertexes_flipped[]; -extern const GLfloat white_color[]; - static void setup_font(void *data, const char *msg, GLfloat scale, GLfloat pos_x, GLfloat pos_y) { gl_t *gl = (gl_t*)data; @@ -297,9 +294,9 @@ static void setup_font(void *data, const char *msg, GLfloat scale, GLfloat pos_x glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); // Post - Go back to old rendering path. - gl->coords.vertex = vertexes_flipped; + gl->coords.vertex = gl->vertex_ptr; gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; + gl->coords.color = gl->white_color_ptr; glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); glDisable(GL_BLEND); diff --git a/gfx/gl.c b/gfx/gl.c index 388abe254d..53a297a1fc 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -55,7 +55,7 @@ #endif // Used for the last pass when rendering to the back buffer. -const GLfloat vertexes_flipped[] = { +static const GLfloat vertexes_flipped[] = { 0, 1, 1, 1, 0, 0, @@ -78,6 +78,13 @@ static const GLfloat tex_coords[] = { 1, 1 }; +static const GLfloat white_color[] = { + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, +}; + // Workaround broken Apple headers. typedef const GLubyte* (*gl_get_stringi_proc)(GLenum name, GLuint index); static inline bool gl_query_extension(gl_t *gl, const char *ext) @@ -131,16 +138,6 @@ static inline void set_texture_coords(GLfloat *coords, GLfloat xamt, GLfloat yam coords[7] = yamt; } -const GLfloat white_color[] = { - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, -}; - -const GLfloat *vertex_ptr = vertexes_flipped; -const GLfloat *default_vertex_ptr = vertexes_flipped; - #undef LOAD_GL_SYM #define LOAD_GL_SYM(SYM) if (!pgl##SYM) { \ gfx_ctx_proc_t sym = gl->ctx_driver->get_proc_address("gl" #SYM); \ @@ -1064,7 +1061,7 @@ static void gl_frame_fbo(void *data, const struct gl_tex_info *tex_info) gl->vp.width, gl->vp.height, g_extern.frame_count, tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); - gl->coords.vertex = vertex_ptr; + gl->coords.vertex = gl->vertex_ptr; gl_shader_set_coords(gl, &gl->coords, &gl->mvp); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); @@ -1442,7 +1439,7 @@ static inline void gl_draw_texture(void *data) glDisable(GL_BLEND); gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; + gl->coords.color = gl->white_color_ptr; } #endif @@ -2021,13 +2018,16 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->tex_filter = video->smooth ? GL_LINEAR : GL_NEAREST; #ifdef HAVE_FBO + struct retro_hw_render_callback *hw_render = &g_extern.system.hw_render_callback; + gl->vertex_ptr = hw_render->bottom_left_origin ? vertexes : vertexes_flipped; #ifdef HAVE_OPENGLES2 - gl->hw_render_use = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGLES2; + gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGLES2; #else - gl->hw_render_use = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL || + gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGL || g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; #endif #endif + gl->white_color_ptr = white_color; gl_set_texture_fmts(gl, video->rgb32); @@ -2041,9 +2041,9 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo glDisable(GL_DITHER); memcpy(gl->tex_coords, tex_coords, sizeof(tex_coords)); - gl->coords.vertex = vertex_ptr; + gl->coords.vertex = gl->vertex_ptr; gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; + gl->coords.color = gl->white_color_ptr; gl->coords.lut_tex_coord = tex_coords; // Empty buffer that we use to clear out the texture with on res change. @@ -2439,9 +2439,9 @@ static void gl_render_overlay(void *data) glDisable(GL_BLEND); - gl->coords.vertex = vertex_ptr; + gl->coords.vertex = gl->vertex_ptr; gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; + gl->coords.color = gl->white_color_ptr; } static const video_overlay_interface_t gl_overlay_interface = { diff --git a/gfx/gl_common.h b/gfx/gl_common.h index be07c45e26..d53f25e118 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -219,6 +219,8 @@ typedef struct gl math_matrix mvp, mvp_no_rot; struct gl_coords coords; + const GLfloat *vertex_ptr; + const GLfloat *white_color_ptr; GLuint pbo; @@ -341,9 +343,6 @@ extern PFNGLACTIVETEXTUREPROC pglActiveTexture; #undef GL_UNPACK_ROW_LENGTH #endif -extern const GLfloat vertexes_flipped[]; -extern const GLfloat white_color[]; - void gl_set_projection(void *data, struct gl_ortho *ortho, bool allow_rotate); void gl_set_viewport(void *data, unsigned width, unsigned height, bool force_full, bool allow_rotate); void gl_shader_set_coords(void *data, const struct gl_coords *coords, const math_matrix *mat); diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 45ce564b77..e19972a87e 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -344,7 +344,7 @@ void retro_run(void) static unsigned frame_count; frame_count++; - float angle = frame_count / 100.0; + float angle = frame_count / 10.0; float cos_angle = cos(angle); float sin_angle = sin(angle); @@ -413,6 +413,7 @@ bool retro_load_game(const struct retro_game_info *info) hw_render.context_reset = context_reset; hw_render.depth = true; hw_render.stencil = true; + hw_render.bottom_left_origin = true; if (!environ_cb(RETRO_ENVIRONMENT_SET_HW_RENDER, &hw_render)) return false; diff --git a/libretro.h b/libretro.h index 937bbea6c6..7137841abb 100755 --- a/libretro.h +++ b/libretro.h @@ -523,6 +523,7 @@ struct retro_hw_render_callback bool depth; // Set if render buffers should have depth component attached. bool stencil; // Set if stencil buffers should be attached. // If depth and stencil are true, a packed 24/8 buffer will be added. Only attaching stencil is invalid and will be ignored. + bool bottom_left_origin; // Use conventional bottom-left origin convention. Is false, standard libretro top-left origin semantics are used. unsigned version_major; // Major version number for core GL context. unsigned version_minor; // Minor version number for core GL context. }; From e5abd138eac6048cffd1f6b2debf514acfc4ca01 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 22:58:22 +0200 Subject: [PATCH 089/252] More fixes to core context. --- gfx/gl.c | 33 ++++++++----- gfx/shader_glsl.c | 83 ++++++++++++++++++++++++++++++-- gfx/shader_glsl.h | 1 + libretro-test-gl/libretro-test.c | 29 +++++++++-- 4 files changed, 126 insertions(+), 20 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 53a297a1fc..e80b442fa9 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -352,6 +352,13 @@ static bool gl_shader_init(void *data) return true; } + if (gl->core_context && RARCH_SHADER_CG) + { + RARCH_ERR("[GL]: Cg cannot be used with core GL context. Falling back to GLSL.\n"); + backend = &gl_glsl_backend; + shader_path = NULL; + } + gl->shader = backend; bool ret = gl->shader->init(shader_path); if (!ret) @@ -1988,8 +1995,22 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->full_y = gl->win_height; } + struct retro_hw_render_callback *hw_render = &g_extern.system.hw_render_callback; + gl->vertex_ptr = hw_render->bottom_left_origin ? vertexes : vertexes_flipped; + +#ifdef HAVE_FBO +#ifdef HAVE_OPENGLES2 + gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGLES2; +#else + gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGL || + g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; +#endif +#endif + gl->white_color_ptr = white_color; + #ifdef HAVE_GLSL gl_glsl_set_get_proc_address(gl->ctx_driver->get_proc_address); + gl_glsl_set_context_type(gl->core_context, hw_render->version_major, hw_render->version_minor); #endif if (!gl_shader_init(gl)) @@ -2017,18 +2038,6 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo else gl->tex_filter = video->smooth ? GL_LINEAR : GL_NEAREST; -#ifdef HAVE_FBO - struct retro_hw_render_callback *hw_render = &g_extern.system.hw_render_callback; - gl->vertex_ptr = hw_render->bottom_left_origin ? vertexes : vertexes_flipped; -#ifdef HAVE_OPENGLES2 - gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGLES2; -#else - gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGL || - g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; -#endif -#endif - gl->white_color_ptr = white_color; - gl_set_texture_fmts(gl, video->rgb32); #ifndef HAVE_OPENGLES diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 4b4c8a5a73..3d1e2e757e 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -129,6 +129,9 @@ static PFNGLBINDBUFFERPROC pglBindBuffer; #define PREV_TEXTURES (TEXTURES - 1) static struct gfx_shader *glsl_shader; +static bool glsl_core; +static unsigned glsl_major; +static unsigned glsl_minor; static bool glsl_enable; static GLuint gl_program[GFX_MAX_SHADERS]; @@ -224,6 +227,25 @@ static const char *stock_fragment_modern = " gl_FragColor = vec4(texture2D(Texture, tex_coord).rgb, 1.0);\n" "}"; +static const char *stock_vertex_core = + "in vec2 TexCoord;\n" + "in vec2 VertexCoord;\n" + "in vec4 Color;\n" + "uniform mat4 MVPMatrix;\n" + "out vec2 tex_coord;\n" + "void main() {\n" + " gl_Position = MVPMatrix * vec4(VertexCoord, 0.0, 1.0);\n" + " tex_coord = TexCoord;\n" + "}"; + +static const char *stock_fragment_core = + "uniform sampler2D Texture;\n" + "in vec2 tex_coord;\n" + "out vec4 FragColor;\n" + "void main() {\n" + " FragColor = vec4(texture(Texture, tex_coord).rgb, 1.0);\n" + "}"; + static const char *stock_vertex_legacy = "varying vec4 color;\n" "void main() {\n" @@ -263,6 +285,27 @@ static const char *stock_fragment_modern_blend = " gl_FragColor = color * texture2D(Texture, tex_coord);\n" "}"; +static const char *stock_vertex_core_blend = + "in vec2 TexCoord;\n" + "in vec2 VertexCoord;\n" + "in vec4 Color;\n" + "uniform mat4 MVPMatrix;\n" + "out vec2 tex_coord;\n" + "out vec4 color;\n" + "void main() {\n" + " gl_Position = MVPMatrix * vec4(VertexCoord, 0.0, 1.0);\n" + " tex_coord = TexCoord;\n" + " color = Color;\n" + "}"; + +static const char *stock_fragment_core_blend = + "uniform sampler2D Texture;\n" + "in vec2 tex_coord;\n" + "in vec4 color;\n" + "out vec4 FragColor;\n" + "void main() {\n" + " FragColor = color * texture2D(Texture, tex_coord);\n" + "}"; static GLint get_uniform(GLuint prog, const char *base) { @@ -392,7 +435,24 @@ static void print_linker_log(GLuint obj) static bool compile_shader(GLuint shader, const char *define, const char *program) { - const char *source[] = { define, program }; + char version[32] = {0}; + if (glsl_core) + { + unsigned version_no = 0; + unsigned gl_ver = glsl_major * 100 + glsl_minor * 10; + switch (gl_ver) + { + case 300: version_no = 130; break; + case 310: version_no = 140; break; + case 320: version_no = 150; break; + default: version_no = gl_ver; break; + } + + snprintf(version, sizeof(version), "#version %u\n", version_no); + RARCH_LOG("[GL]: Using GLSL version %u.\n", version_no); + } + + const char *source[] = { version, define, program }; pglShaderSource(shader, ARRAY_SIZE(source), source, NULL); pglCompileShader(shader); @@ -771,8 +831,8 @@ static bool gl_glsl_init(const char *path) { RARCH_WARN("[GL]: Stock GLSL shaders will be used.\n"); glsl_shader->passes = 1; - glsl_shader->pass[0].source.xml.vertex = strdup(stock_vertex_modern); - glsl_shader->pass[0].source.xml.fragment = strdup(stock_fragment_modern); + glsl_shader->pass[0].source.xml.vertex = strdup(glsl_core ? stock_vertex_core : stock_vertex_modern); + glsl_shader->pass[0].source.xml.fragment = strdup(glsl_core ? stock_fragment_core : stock_fragment_modern); glsl_shader->modern = true; } @@ -789,6 +849,12 @@ static bool gl_glsl_init(const char *path) RARCH_ERR("[GL]: GLES context is used, but shader is not modern. Cannot use it.\n"); goto error; } +#else + if (glsl_core && !glsl_shader->modern) + { + RARCH_ERR("[GL]: GL core context is used, but shader is not core compatible. Cannot use it.\n"); + goto error; + } #endif if (!(gl_program[0] = compile_program(stock_vertex, stock_fragment, 0))) @@ -838,8 +904,8 @@ static bool gl_glsl_init(const char *path) if (glsl_shader->modern) { - gl_program[GL_SHADER_STOCK_BLEND] = compile_program(stock_vertex_modern_blend, - stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); + gl_program[GL_SHADER_STOCK_BLEND] = compile_program(glsl_core ? stock_vertex_core_blend : stock_vertex_modern_blend, + glsl_core ? stock_fragment_modern_blend : stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); find_uniforms(gl_program[GL_SHADER_STOCK_BLEND], &gl_uniforms[GL_SHADER_STOCK_BLEND]); } @@ -1196,6 +1262,13 @@ void gl_glsl_set_get_proc_address(gfx_ctx_proc_t (*proc)(const char*)) glsl_get_proc_address = proc; } +void gl_glsl_set_context_type(bool core_profile, unsigned major, unsigned minor) +{ + glsl_core = core_profile; + glsl_major = major; + glsl_minor = minor; +} + const gl_shader_backend_t gl_glsl_backend = { gl_glsl_init, gl_glsl_deinit, diff --git a/gfx/shader_glsl.h b/gfx/shader_glsl.h index d7be9f19a4..f9c71411dc 100644 --- a/gfx/shader_glsl.h +++ b/gfx/shader_glsl.h @@ -21,6 +21,7 @@ #include "shader_common.h" void gl_glsl_set_get_proc_address(gfx_ctx_proc_t (*proc)(const char*)); +void gl_glsl_set_context_type(bool core_profile, unsigned major, unsigned minor); extern const gl_shader_backend_t gl_glsl_backend; #endif diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index e19972a87e..fa80502762 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -139,6 +139,28 @@ static const GLfloat vertex_data[] = { 1.0, 0.0, 1.0, 1.0, }; +#ifdef CORE +static const char *vertex_shader[] = { + "#version 420\n" + "uniform mat4 uMVP;", + "in vec2 aVertex;", + "in vec4 aColor;", + "out vec4 color;", + "void main() {", + " gl_Position = uMVP * vec4(aVertex, 0.0, 1.0);", + " color = aColor;", + "}", +}; + +static const char *fragment_shader[] = { + "#version 420\n" + "in vec4 color;", + "out vec4 FragColor;\n" + "void main() {", + " FragColor = color;", + "}", +}; +#else static const char *vertex_shader[] = { "uniform mat4 uMVP;", "attribute vec2 aVertex;", @@ -159,6 +181,7 @@ static const char *fragment_shader[] = { " gl_FragColor = color;", "}", }; +#endif static void compile_program(void) { @@ -344,7 +367,7 @@ void retro_run(void) static unsigned frame_count; frame_count++; - float angle = frame_count / 10.0; + float angle = frame_count / 100.0; float cos_angle = cos(angle); float sin_angle = sin(angle); @@ -404,8 +427,8 @@ bool retro_load_game(const struct retro_game_info *info) #else #ifdef CORE hw_render.context_type = RETRO_HW_CONTEXT_OPENGL_CORE; - hw_render.version_major = 3; - hw_render.version_minor = 1; + hw_render.version_major = 4; + hw_render.version_minor = 2; #else hw_render.context_type = RETRO_HW_CONTEXT_OPENGL; #endif From 4e5c6b0f9a5b8eea3490167587673c62aea7e92e Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 23:01:23 +0200 Subject: [PATCH 090/252] Fix RGUI when using bottom-left. --- gfx/gl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index e80b442fa9..4be68f3e1c 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1424,6 +1424,7 @@ static inline void gl_draw_texture(void *data) 1.0f, 1.0f, 1.0f, gl->rgui_texture_alpha, }; + gl->coords.vertex = vertexes_flipped; gl->coords.tex_coord = tex_coords; gl->coords.color = color; glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); @@ -1445,6 +1446,7 @@ static inline void gl_draw_texture(void *data) glDisable(GL_BLEND); + gl->coords.vertex = gl->vertex_ptr; gl->coords.tex_coord = gl->tex_coords; gl->coords.color = gl->white_color_ptr; } From 913ad7753ad01e08c2305bf650700f3650af5797 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 23:22:37 +0200 Subject: [PATCH 091/252] Merge fixes. --- gfx/context/glx_ctx.c | 2 ++ gfx/context/wgl_ctx.c | 1 + 2 files changed, 3 insertions(+) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index fae58f4674..a59c36d3e9 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -408,6 +408,7 @@ static bool gfx_ctx_set_video_mode( if (g_is_double) { const char *swap_func = NULL; + g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA"); if (g_pglSwapInterval) swap_func = "glXSwapIntervalMESA"; @@ -458,6 +459,7 @@ static void gfx_ctx_destroy(void) { if (g_dpy && g_ctx) { + glFinish(); glXMakeContextCurrent(g_dpy, None, None, NULL); if (!driver.video_cache_context) { diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index 52f3be9e20..1af72a9420 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -490,6 +490,7 @@ static void gfx_ctx_destroy(void) { if (g_hrc) { + glFinish(); wglMakeCurrent(NULL, NULL); if (!driver.video_cache_context) From 9ab274a51a556737a62cb861ce3b9ceb857c3fd2 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 23:32:03 +0200 Subject: [PATCH 092/252] Use glXSwapIntervalEXT when available instead. --- gfx/context/glx_ctx.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index a59c36d3e9..04ecd3fd2e 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -56,6 +56,7 @@ static unsigned g_interval; static bool g_is_double; static int (*g_pglSwapInterval)(int); +static void (*g_pglSwapIntervalEXT)(Display*, GLXDrawable, int); static void sighandler(int sig) { @@ -83,7 +84,13 @@ static void gfx_ctx_destroy(void); static void gfx_ctx_swap_interval(unsigned interval) { g_interval = interval; - if (g_pglSwapInterval) + + if (g_pglSwapIntervalEXT) + { + RARCH_LOG("[GLX]: glXSwapIntervalEXT(%u)\n", g_interval); + g_pglSwapIntervalEXT(g_dpy, g_glx_win, g_interval); + } + else if (g_pglSwapInterval) { RARCH_LOG("[GLX]: glXSwapInterval(%u)\n", g_interval); if (g_pglSwapInterval(g_interval) != 0) @@ -409,18 +416,15 @@ static bool gfx_ctx_set_video_mode( { const char *swap_func = NULL; + g_pglSwapIntervalEXT = (void (*)(Display*, GLXDrawable, int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalEXT"); g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA"); - if (g_pglSwapInterval) + + if (g_pglSwapIntervalEXT) + swap_func = "glXSwapIntervalEXT"; + else if (g_pglSwapInterval) swap_func = "glXSwapIntervalMESA"; - if (!g_pglSwapInterval) - { - g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalSGI"); - if (g_pglSwapInterval) - swap_func = "glXSwapIntervalSGI"; - } - - if (!g_pglSwapInterval) + if (!g_pglSwapInterval && !g_pglSwapIntervalEXT) RARCH_WARN("[GLX]: Cannot find swap interval call.\n"); else RARCH_LOG("[GLX]: Found swap function: %s.\n", swap_func); @@ -514,6 +518,7 @@ static void gfx_ctx_destroy(void) g_inited = false; g_pglSwapInterval = NULL; + g_pglSwapIntervalEXT = NULL; g_major = g_minor = 0; g_core = false; } From 805e623779395d0e258039e6d8ab8f1d065933ab Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 30 Jun 2013 23:57:25 +0200 Subject: [PATCH 093/252] Use 3.1 in libretro-test-gl when CORE is used. --- gfx/shader_glsl.c | 2 +- libretro-test-gl/libretro-test.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 3d1e2e757e..5a263475f0 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -304,7 +304,7 @@ static const char *stock_fragment_core_blend = "in vec4 color;\n" "out vec4 FragColor;\n" "void main() {\n" - " FragColor = color * texture2D(Texture, tex_coord);\n" + " FragColor = color * texture(Texture, tex_coord);\n" "}"; static GLint get_uniform(GLuint prog, const char *base) diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index fa80502762..70b736d9a3 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -141,7 +141,7 @@ static const GLfloat vertex_data[] = { #ifdef CORE static const char *vertex_shader[] = { - "#version 420\n" + "#version 140\n" "uniform mat4 uMVP;", "in vec2 aVertex;", "in vec4 aColor;", @@ -153,7 +153,7 @@ static const char *vertex_shader[] = { }; static const char *fragment_shader[] = { - "#version 420\n" + "#version 140\n" "in vec4 color;", "out vec4 FragColor;\n" "void main() {", @@ -427,8 +427,8 @@ bool retro_load_game(const struct retro_game_info *info) #else #ifdef CORE hw_render.context_type = RETRO_HW_CONTEXT_OPENGL_CORE; - hw_render.version_major = 4; - hw_render.version_minor = 2; + hw_render.version_major = 3; + hw_render.version_minor = 1; #else hw_render.context_type = RETRO_HW_CONTEXT_OPENGL; #endif From b33af9d6b612fb1499084f9bdf9018ca6615e511 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 1 Jul 2013 00:50:53 +0200 Subject: [PATCH 094/252] Fix some context_reset() calls being missed. --- driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/driver.c b/driver.c index da6eb582a5..4438d737dd 100644 --- a/driver.c +++ b/driver.c @@ -375,6 +375,7 @@ void init_drivers(void) if (!driver.video_cache_context_ack && g_extern.system.hw_render_callback.context_reset) g_extern.system.hw_render_callback.context_reset(); + driver.video_cache_context_ack = false; init_audio(); From e44249b73f9227c7e7b344632b0823003ccecfe5 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 18:15:42 +0200 Subject: [PATCH 095/252] Use glsym symbol loader instead of ugly poking. --- Makefile | 8 +- Makefile.win | 3 +- gfx/gl.c | 294 ++--- gfx/gl_common.h | 37 +- gfx/glsym/glgen.py | 73 ++ gfx/glsym/glsym.h | 13 + gfx/glsym/glsym_es2.c | 64 + gfx/glsym/glsym_es2.h | 92 ++ gfx/glsym/glsym_gl.c | 1739 +++++++++++++++++++++++++++ gfx/glsym/glsym_gl.h | 2597 +++++++++++++++++++++++++++++++++++++++++ gfx/glsym/rglgen.c | 19 + gfx/glsym/rglgen.h | 47 + gfx/shader_glsl.c | 253 ++-- qb/config.libs.sh | 4 +- 14 files changed, 4827 insertions(+), 416 deletions(-) create mode 100755 gfx/glsym/glgen.py create mode 100644 gfx/glsym/glsym.h create mode 100644 gfx/glsym/glsym_es2.c create mode 100644 gfx/glsym/glsym_es2.h create mode 100644 gfx/glsym/glsym_gl.c create mode 100644 gfx/glsym/glsym_gl.h create mode 100644 gfx/glsym/rglgen.c create mode 100644 gfx/glsym/rglgen.h diff --git a/Makefile b/Makefile index 0096d7ec30..46c49f529b 100644 --- a/Makefile +++ b/Makefile @@ -196,7 +196,8 @@ ifeq ($(HAVE_OPENGL), 1) gfx/fonts/gl_font.o \ gfx/fonts/gl_raster_font.o \ gfx/math/matrix.o \ - gfx/state_tracker.o + gfx/state_tracker.o \ + gfx/glsym/rglgen.o ifeq ($(HAVE_KMS), 1) OBJ += gfx/context/drm_egl_ctx.o @@ -223,12 +224,14 @@ ifeq ($(HAVE_OPENGL), 1) ifeq ($(HAVE_GLES), 1) LIBS += -lGLESv2 DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2 + OBJ += gfx/glsym/glsym_es2.o else + DEFINES += -DHAVE_GL_SYNC + OBJ += gfx/glsym/glsym_gl.o ifeq ($(OSX), 1) LIBS += -framework OpenGL else LIBS += -lGL - DEFINES += -DHAVE_GL_SYNC endif endif @@ -424,6 +427,7 @@ clean: rm -f audio/*.o rm -f conf/*.o rm -f gfx/*.o + rm -f gfx/glsym/*.o rm -f gfx/rpng/*.o rm -f gfx/fonts/*.o rm -f gfx/math/*.o diff --git a/Makefile.win b/Makefile.win index 6f4633924c..8570bf3eaf 100644 --- a/Makefile.win +++ b/Makefile.win @@ -114,7 +114,7 @@ ifeq ($(HAVE_THREADS), 1) endif ifeq ($(HAVE_OPENGL), 1) - OBJ += gfx/gl.o gfx/math/matrix.o gfx/fonts/gl_font.o gfx/fonts/gl_raster_font.o gfx/gfx_context.o gfx/context/wgl_ctx.o gfx/shader_glsl.o + OBJ += gfx/gl.o gfx/math/matrix.o gfx/fonts/gl_font.o gfx/fonts/gl_raster_font.o gfx/gfx_context.o gfx/context/wgl_ctx.o gfx/shader_glsl.o gfx/glsym/rglgen.o gfx/glsym/glsym.o DEFINES += -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_GLSL -DHAVE_GL_SYNC LIBS += -lopengl32 -lgdi32 -lcomdlg32 endif @@ -287,6 +287,7 @@ clean: rm -f conf/*.o rm -f gfx/scaler/*.o rm -f gfx/*.o + rm -f gfx/glsym/*.o rm -f gfx/d3d9/*.o rm -f gfx/context/*.o rm -f gfx/math/*.o diff --git a/gfx/gl.c b/gfx/gl.c index 4be68f3e1c..9fd23ad623 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -138,174 +138,64 @@ static inline void set_texture_coords(GLfloat *coords, GLfloat xamt, GLfloat yam coords[7] = yamt; } -#undef LOAD_GL_SYM -#define LOAD_GL_SYM(SYM) if (!pgl##SYM) { \ - gfx_ctx_proc_t sym = gl->ctx_driver->get_proc_address("gl" #SYM); \ - memcpy(&(pgl##SYM), &sym, sizeof(sym)); \ -} - #if defined(HAVE_EGL) && defined(HAVE_OPENGLES2) -static PFNGLEGLIMAGETARGETTEXTURE2DOESPROC pglEGLImageTargetTexture2DOES; - -static bool load_eglimage_proc(gl_t *gl) +static bool check_eglimage_proc(void) { - LOAD_GL_SYM(EGLImageTargetTexture2DOES); - return pglEGLImageTargetTexture2DOES; + return glEGLImageTargetTexture2DOES != NULL; } #endif #ifdef HAVE_GL_SYNC -static PFNGLFENCESYNCPROC pglFenceSync; -static PFNGLDELETESYNCPROC pglDeleteSync; -static PFNGLCLIENTWAITSYNCPROC pglClientWaitSync; - -static bool load_sync_proc(gl_t *gl) +static bool check_sync_proc(void) { - if (!gl_query_extension(gl, "ARB_sync")) - return false; - - LOAD_GL_SYM(FenceSync); - LOAD_GL_SYM(DeleteSync); - LOAD_GL_SYM(ClientWaitSync); - - return pglFenceSync && pglDeleteSync && pglClientWaitSync; + return glFenceSync && glDeleteSync && glClientWaitSync; } #endif #ifndef HAVE_OPENGLES -static PFNGLGENVERTEXARRAYSPROC pglGenVertexArrays; -static PFNGLBINDVERTEXARRAYPROC pglBindVertexArray; -static PFNGLDELETEVERTEXARRAYSPROC pglDeleteVertexArrays; - -static bool load_vao_proc(gl_t *gl) +static bool init_vao(gl_t *gl) { - LOAD_GL_SYM(GenVertexArrays); - LOAD_GL_SYM(BindVertexArray); - LOAD_GL_SYM(DeleteVertexArrays); - - bool present = pglGenVertexArrays && pglBindVertexArray && pglDeleteVertexArrays; + bool present = glGenVertexArrays && glBindVertexArray && glDeleteVertexArrays; if (!present) return false; - pglGenVertexArrays(1, &gl->vao); + glGenVertexArrays(1, &gl->vao); return true; } #endif #ifdef HAVE_FBO -#if defined(_WIN32) && !defined(RARCH_CONSOLE) -static PFNGLGENFRAMEBUFFERSPROC pglGenFramebuffers; -static PFNGLBINDFRAMEBUFFERPROC pglBindFramebuffer; -static PFNGLFRAMEBUFFERTEXTURE2DPROC pglFramebufferTexture2D; -static PFNGLCHECKFRAMEBUFFERSTATUSPROC pglCheckFramebufferStatus; -static PFNGLDELETEFRAMEBUFFERSPROC pglDeleteFramebuffers; -static PFNGLGENRENDERBUFFERSPROC pglGenRenderbuffers; -static PFNGLBINDRENDERBUFFERPROC pglBindRenderbuffer; -static PFNGLFRAMEBUFFERRENDERBUFFERPROC pglFramebufferRenderbuffer; -static PFNGLRENDERBUFFERSTORAGEPROC pglRenderbufferStorage; -static PFNGLDELETERENDERBUFFERSPROC pglDeleteRenderbuffers; - -static bool load_fbo_proc(gl_t *gl) -{ - LOAD_GL_SYM(GenFramebuffers); - LOAD_GL_SYM(BindFramebuffer); - LOAD_GL_SYM(FramebufferTexture2D); - LOAD_GL_SYM(CheckFramebufferStatus); - LOAD_GL_SYM(DeleteFramebuffers); - LOAD_GL_SYM(GenRenderbuffers); - LOAD_GL_SYM(BindRenderbuffer); - LOAD_GL_SYM(FramebufferRenderbuffer); - LOAD_GL_SYM(RenderbufferStorage); - LOAD_GL_SYM(DeleteRenderbuffers); - - return pglGenFramebuffers && pglBindFramebuffer && pglFramebufferTexture2D && - pglCheckFramebufferStatus && pglDeleteFramebuffers && - pglGenRenderbuffers && pglBindRenderbuffer && - pglFramebufferRenderbuffer && pglRenderbufferStorage && - pglDeleteRenderbuffers; -} -#elif defined(HAVE_OPENGLES2) -#define pglGenFramebuffers glGenFramebuffers -#define pglBindFramebuffer glBindFramebuffer -#define pglFramebufferTexture2D glFramebufferTexture2D -#define pglCheckFramebufferStatus glCheckFramebufferStatus -#define pglDeleteFramebuffers glDeleteFramebuffers -#define pglGenRenderbuffers glGenRenderbuffers -#define pglBindRenderbuffer glBindRenderbuffer -#define pglFramebufferRenderbuffer glFramebufferRenderbuffer -#define pglRenderbufferStorage glRenderbufferStorage -#define pglDeleteRenderbuffers glDeleteRenderbuffers -#define load_fbo_proc(gl) (true) -#elif defined(HAVE_OPENGLES) -#define pglGenFramebuffers glGenFramebuffersOES -#define pglBindFramebuffer glBindFramebufferOES -#define pglFramebufferTexture2D glFramebufferTexture2DOES -#define pglCheckFramebufferStatus glCheckFramebufferStatusOES -#define pglDeleteFramebuffers glDeleteFramebuffersOES -#define pglGenRenderbuffers glGenRenderbuffersOES -#define pglBindRenderbuffer glBindRenderbufferOES -#define pglFramebufferRenderbuffer glFramebufferRenderbufferOES -#define pglRenderbufferStorage glRenderbufferStorageOES -#define pglDeleteRenderbuffers glDeleteRenderbuffersOES +#if defined(HAVE_PSGL) +#define glGenFramebuffers glGenFramebuffersOES +#define glBindFramebuffer glBindFramebufferOES +#define glFramebufferTexture2D glFramebufferTexture2DOES +#define glCheckFramebufferStatus glCheckFramebufferStatusOES +#define glDeleteFramebuffers glDeleteFramebuffersOES +#define glGenRenderbuffers glGenRenderbuffersOES +#define glBindRenderbuffer glBindRenderbufferOES +#define glFramebufferRenderbuffer glFramebufferRenderbufferOES +#define glRenderbufferStorage glRenderbufferStorageOES +#define glDeleteRenderbuffers glDeleteRenderbuffersOES #define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES #define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT #define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES -#define load_fbo_proc(gl) (true) -#else -#define pglGenFramebuffers glGenFramebuffers -#define pglBindFramebuffer glBindFramebuffer -#define pglFramebufferTexture2D glFramebufferTexture2D -#define pglCheckFramebufferStatus glCheckFramebufferStatus -#define pglDeleteFramebuffers glDeleteFramebuffers -#define pglGenRenderbuffers glGenRenderbuffers -#define pglBindRenderbuffer glBindRenderbuffer -#define pglFramebufferRenderbuffer glFramebufferRenderbuffer -#define pglRenderbufferStorage glRenderbufferStorage -#define pglDeleteRenderbuffers glDeleteRenderbuffers -#define load_fbo_proc(gl) (true) -#endif -#endif - -#ifdef _WIN32 -PFNGLCLIENTACTIVETEXTUREPROC pglClientActiveTexture; -PFNGLACTIVETEXTUREPROC pglActiveTexture; -static PFNGLGENBUFFERSPROC pglGenBuffers; -static PFNGLGENBUFFERSPROC pglDeleteBuffers; -static PFNGLBINDBUFFERPROC pglBindBuffer; -static PFNGLBUFFERSUBDATAPROC pglBufferSubData; -static PFNGLBUFFERDATAPROC pglBufferData; -static PFNGLMAPBUFFERPROC pglMapBuffer; -static PFNGLUNMAPBUFFERPROC pglUnmapBuffer; -static inline bool load_gl_proc_win32(gl_t *gl) +#define check_fbo_proc() (true) +#elif !defined(HAVE_OPENGLES2) +static bool check_fbo_proc(void) { - LOAD_GL_SYM(ClientActiveTexture); - LOAD_GL_SYM(ActiveTexture); - LOAD_GL_SYM(GenBuffers); - LOAD_GL_SYM(DeleteBuffers); - LOAD_GL_SYM(BindBuffer); - LOAD_GL_SYM(BufferSubData); - LOAD_GL_SYM(BufferData); - LOAD_GL_SYM(MapBuffer); - LOAD_GL_SYM(UnmapBuffer); - - return pglClientActiveTexture && pglActiveTexture && - pglGenBuffers && pglDeleteBuffers && - pglBindBuffer && pglBufferSubData && pglBufferData && - pglMapBuffer && pglUnmapBuffer; + return glGenFramebuffers && glBindFramebuffer && glFramebufferTexture2D && + glCheckFramebufferStatus && glDeleteFramebuffers && + glGenRenderbuffers && glBindRenderbuffer && + glFramebufferRenderbuffer && glRenderbufferStorage && + glDeleteRenderbuffers; } #else -#define pglGenBuffers glGenBuffers -#define pglDeleteBuffers glDeleteBuffers -#define pglBindBuffer glBindBuffer -#define pglBufferSubData glBufferSubData -#define pglBufferData glBufferData -#define pglMapBuffer glMapBuffer -#define pglUnmapBuffer glUnmapBuffer +#define check_fbo_proc() (true) #endif - #if defined(__APPLE__) || defined(HAVE_PSGL) #define GL_RGBA32F GL_RGBA32F_ARB #endif +#endif ////////////////// Shaders @@ -382,11 +272,11 @@ static inline void gl_shader_deinit(void *data) #ifndef NO_GL_FF_VERTEX static void gl_set_coords(const struct gl_coords *coords) { - pglClientActiveTexture(GL_TEXTURE1); + glClientActiveTexture(GL_TEXTURE1); glTexCoordPointer(2, GL_FLOAT, 0, coords->lut_tex_coord); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - pglClientActiveTexture(GL_TEXTURE0); + glClientActiveTexture(GL_TEXTURE0); glVertexPointer(2, GL_FLOAT, 0, coords->vertex); glEnableClientState(GL_VERTEX_ARRAY); @@ -402,9 +292,9 @@ static void gl_disable_client_arrays(gl_t *gl) if (gl->core_context) return; - pglClientActiveTexture(GL_TEXTURE1); + glClientActiveTexture(GL_TEXTURE1); glDisableClientState(GL_TEXTURE_COORD_ARRAY); - pglClientActiveTexture(GL_TEXTURE0); + glClientActiveTexture(GL_TEXTURE0); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); @@ -457,7 +347,7 @@ void gl_shader_set_coords(void *data, const struct gl_coords *coords, const math void apple_bind_game_view_fbo(void); #define gl_bind_backbuffer() apple_bind_game_view_fbo() #else -#define gl_bind_backbuffer() pglBindFramebuffer(GL_FRAMEBUFFER, 0) +#define gl_bind_backbuffer() glBindFramebuffer(GL_FRAMEBUFFER, 0) #endif #ifdef HAVE_FBO @@ -630,13 +520,13 @@ static bool gl_create_fbo_targets(void *data) gl_t *gl = (gl_t*)data; glBindTexture(GL_TEXTURE_2D, 0); - pglGenFramebuffers(gl->fbo_pass, gl->fbo); + glGenFramebuffers(gl->fbo_pass, gl->fbo); for (int i = 0; i < gl->fbo_pass; i++) { - pglBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); - pglFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); + glBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); - GLenum status = pglCheckFramebufferStatus(GL_FRAMEBUFFER); + GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) goto error; } @@ -644,7 +534,7 @@ static bool gl_create_fbo_targets(void *data) return true; error: - pglDeleteFramebuffers(gl->fbo_pass, gl->fbo); + glDeleteFramebuffers(gl->fbo_pass, gl->fbo); RARCH_ERR("Failed to set up frame buffer objects. Multi-pass shading will not work.\n"); return false; } @@ -656,7 +546,7 @@ void gl_deinit_fbo(void *data) if (gl->fbo_inited) { glDeleteTextures(gl->fbo_pass, gl->fbo_texture); - pglDeleteFramebuffers(gl->fbo_pass, gl->fbo); + glDeleteFramebuffers(gl->fbo_pass, gl->fbo); memset(gl->fbo_texture, 0, sizeof(gl->fbo_texture)); memset(gl->fbo, 0, sizeof(gl->fbo)); gl->fbo_inited = false; @@ -679,7 +569,7 @@ void gl_init_fbo(void *data, unsigned width, unsigned height) if (gl_shader_num(gl) == 1 && !scale.valid) return; - if (!load_fbo_proc(gl)) + if (!check_fbo_proc()) { RARCH_ERR("Failed to locate FBO functions. Won't be able to use render-to-texture.\n"); return; @@ -742,11 +632,11 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &max_renderbuffer_size); RARCH_LOG("[GL]: Max texture size: %d px, renderbuffer size: %u px.\n", max_fbo_size, max_renderbuffer_size); - if (!load_fbo_proc(gl)) + if (!check_fbo_proc()) return false; glBindTexture(GL_TEXTURE_2D, 0); - pglGenFramebuffers(TEXTURES, gl->hw_render_fbo); + glGenFramebuffers(TEXTURES, gl->hw_render_fbo); bool depth = g_extern.system.hw_render_callback.depth; bool stencil = g_extern.system.hw_render_callback.stencil; @@ -758,14 +648,14 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) if (depth) { - pglGenRenderbuffers(TEXTURES, gl->hw_render_depth); + glGenRenderbuffers(TEXTURES, gl->hw_render_depth); gl->hw_render_depth_init = true; } for (unsigned i = 0; i < TEXTURES; i++) { - pglBindFramebuffer(GL_FRAMEBUFFER, gl->hw_render_fbo[i]); - pglFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->texture[i], 0); + glBindFramebuffer(GL_FRAMEBUFFER, gl->hw_render_fbo[i]); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->texture[i], 0); if (depth) { @@ -775,38 +665,38 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) { #ifdef HAVE_OPENGLES2 // GLES2 is a bit weird, as always. :P - pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); - pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, + glBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, width, height); - pglBindRenderbuffer(GL_RENDERBUFFER, 0); + glBindRenderbuffer(GL_RENDERBUFFER, 0); // There's no GL_DEPTH_STENCIL_ATTACHMENT like in desktop GL. - pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, gl->hw_render_depth[i]); - pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, gl->hw_render_depth[i]); #else // We use ARB FBO extensions, no need to check. - pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); - pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, + glBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height); - pglBindRenderbuffer(GL_RENDERBUFFER, 0); - pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, + glBindRenderbuffer(GL_RENDERBUFFER, 0); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, gl->hw_render_depth[i]); #endif } else { - pglBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); - pglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, + glBindRenderbuffer(GL_RENDERBUFFER, gl->hw_render_depth[i]); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); - pglBindRenderbuffer(GL_RENDERBUFFER, 0); - pglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + glBindRenderbuffer(GL_RENDERBUFFER, 0); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, gl->hw_render_depth[i]); } } - GLenum status = pglCheckFramebufferStatus(GL_FRAMEBUFFER); + GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { RARCH_ERR("[GL]: Failed to create HW render FBO #%u, error: 0x%u.\n", i, (unsigned)status); @@ -943,7 +833,7 @@ static inline void gl_start_frame_fbo(void *data) gl_t *gl = (gl_t*)data; glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); - pglBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[0]); + glBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[0]); gl_set_viewport(gl, gl->fbo_rect[0].img_width, gl->fbo_rect[0].img_height, true, false); // Need to preserve the "flipped" state when in FBO as well to have @@ -969,7 +859,7 @@ static void gl_check_fbo_dimensions(void *data) unsigned pow2_size = next_pow2(max); gl->fbo_rect[i].width = gl->fbo_rect[i].height = pow2_size; - pglBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); + glBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); glTexImage2D(GL_TEXTURE_2D, @@ -977,9 +867,9 @@ static void gl_check_fbo_dimensions(void *data) 0, RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); - pglFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); - GLenum status = pglCheckFramebufferStatus(GL_FRAMEBUFFER); + GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) RARCH_WARN("Failed to reinit FBO texture.\n"); @@ -1023,7 +913,7 @@ static void gl_frame_fbo(void *data, const struct gl_tex_info *tex_info) fbo_info->tex_size[1] = prev_rect->height; memcpy(fbo_info->coord, fbo_tex_coords, sizeof(fbo_tex_coords)); - pglBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); + glBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[i]); if (gl->shader) gl->shader->use(i + 1); @@ -1206,7 +1096,7 @@ static void gl_init_textures(void *data, const video_info_t *video) gl_t *gl = (gl_t*)data; #if defined(HAVE_EGL) && defined(HAVE_OPENGLES2) // Use regular textures if we use HW render. - gl->egl_images = !gl->hw_render_use && load_eglimage_proc(gl) && context_init_egl_image_buffer_func(video); + gl->egl_images = !gl->hw_render_use && check_eglimage_proc() && context_init_egl_image_buffer_func(video); #else (void)video; #endif @@ -1294,7 +1184,7 @@ static inline void gl_copy_frame(void *data, const void *frame, unsigned width, } if (new_egl) - pglEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)img); + glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)img); } else #endif @@ -1387,7 +1277,7 @@ static inline void gl_set_shader_viewport(void *data, unsigned shader) static void gl_pbo_async_readback(void *data) { gl_t *gl = (gl_t*)data; - pglBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index++]); + glBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index++]); gl->pbo_readback_index &= 3; // If set, we 3 rendered frames already buffered up. @@ -1405,7 +1295,7 @@ static void gl_pbo_async_readback(void *data) GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); RARCH_PERFORMANCE_STOP(async_readback); - pglBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); } #endif @@ -1461,7 +1351,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei #ifndef HAVE_OPENGLES if (gl->core_context) - pglBindVertexArray(gl->vao); + glBindVertexArray(gl->vao); #endif if (gl->shader) @@ -1610,12 +1500,12 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei RARCH_PERFORMANCE_INIT(gl_fence); RARCH_PERFORMANCE_START(gl_fence); glClear(GL_COLOR_BUFFER_BIT); - gl->fences[gl->fence_count++] = pglFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + gl->fences[gl->fence_count++] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); while (gl->fence_count > g_settings.video.hard_sync_frames) { - pglClientWaitSync(gl->fences[0], GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); - pglDeleteSync(gl->fences[0]); + glClientWaitSync(gl->fences[0], GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); + glDeleteSync(gl->fences[0]); gl->fence_count--; memmove(gl->fences, gl->fences + 1, gl->fence_count * sizeof(GLsync)); @@ -1627,7 +1517,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei #ifndef HAVE_OPENGLES if (gl->core_context) - pglBindVertexArray(0); + glBindVertexArray(0); #endif return true; @@ -1647,8 +1537,8 @@ static void gl_free(void *data) { for (unsigned i = 0; i < gl->fence_count; i++) { - pglClientWaitSync(gl->fences[i], GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); - pglDeleteSync(gl->fences[i]); + glClientWaitSync(gl->fences[i], GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); + glDeleteSync(gl->fences[i]); } gl->fence_count = 0; } @@ -1684,7 +1574,7 @@ static void gl_free(void *data) #if !defined(HAVE_OPENGLES) && defined(HAVE_FFMPEG) if (gl->pbo_readback_enable) { - pglDeleteBuffers(4, gl->pbo_readback); + glDeleteBuffers(4, gl->pbo_readback); scaler_ctx_gen_reset(&gl->pbo_readback_scaler); } #endif @@ -1694,9 +1584,9 @@ static void gl_free(void *data) #ifndef HAVE_RGL if (gl->hw_render_fbo_init) - pglDeleteFramebuffers(TEXTURES, gl->hw_render_fbo); + glDeleteFramebuffers(TEXTURES, gl->hw_render_fbo); if (gl->hw_render_depth_init) - pglDeleteRenderbuffers(TEXTURES, gl->hw_render_depth); + glDeleteRenderbuffers(TEXTURES, gl->hw_render_depth); gl->hw_render_fbo_init = false; #endif #endif @@ -1704,8 +1594,8 @@ static void gl_free(void *data) #ifndef HAVE_OPENGLES if (gl->core_context) { - pglBindVertexArray(0); - pglDeleteVertexArrays(1, &gl->vao); + glBindVertexArray(0); + glDeleteVertexArrays(1, &gl->vao); } #endif @@ -1738,7 +1628,7 @@ static bool resolve_extensions(gl_t *gl) gl->core_context = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; RARCH_LOG("[GL]: Using Core GL context.\n"); if (gl->core_context && - !load_vao_proc(gl)) + !init_vao(gl)) { RARCH_ERR("[GL]: Failed to init VAOs.\n"); return false; @@ -1746,7 +1636,7 @@ static bool resolve_extensions(gl_t *gl) #endif #ifdef HAVE_GL_SYNC - gl->have_sync = load_sync_proc(gl); + gl->have_sync = check_sync_proc(); if (gl->have_sync && g_settings.video.hard_sync) RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n"); #endif @@ -1853,14 +1743,14 @@ static void gl_init_pbo_readback(void *data) RARCH_LOG("Async PBO readback enabled.\n"); - pglGenBuffers(4, gl->pbo_readback); + glGenBuffers(4, gl->pbo_readback); for (unsigned i = 0; i < 4; i++) { - pglBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[i]); - pglBufferData(GL_PIXEL_PACK_BUFFER, gl->vp.width * gl->vp.height * sizeof(uint32_t), + glBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[i]); + glBufferData(GL_PIXEL_PACK_BUFFER, gl->vp.width * gl->vp.height * sizeof(uint32_t), NULL, GL_STREAM_COPY); } - pglBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); struct scaler_ctx *scaler = &gl->pbo_readback_scaler; scaler->in_width = gl->vp.width; @@ -1877,7 +1767,7 @@ static void gl_init_pbo_readback(void *data) { gl->pbo_readback_enable = false; RARCH_ERR("Failed to init pixel conversion for PBO.\n"); - pglDeleteBuffers(4, gl->pbo_readback); + glDeleteBuffers(4, gl->pbo_readback); } } #endif @@ -1950,6 +1840,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } + rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); + RARCH_LOG("Found GL context: %s\n", gl->ctx_driver->ident); context_get_video_size_func(&gl->full_x, &gl->full_y); @@ -2265,8 +2157,8 @@ static bool gl_read_viewport(void *data, uint8_t *buffer) if (!gl->pbo_readback_valid) // We haven't buffered up enough frames yet, come back later. return false; - pglBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index]); - const void *ptr = pglMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); + glBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index]); + const void *ptr = glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); if (!ptr) { RARCH_ERR("Failed to map pixel unpack buffer.\n"); @@ -2274,8 +2166,8 @@ static bool gl_read_viewport(void *data, uint8_t *buffer) } scaler_ctx_scale(&gl->pbo_readback_scaler, buffer, ptr); - pglUnmapBuffer(GL_PIXEL_PACK_BUFFER); - pglBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + glUnmapBuffer(GL_PIXEL_PACK_BUFFER); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); } else // Use slow synchronous readbacks. Use this with plain screenshots as we don't really care about performance in this case. #endif diff --git a/gfx/gl_common.h b/gfx/gl_common.h index d53f25e118..cba40b520c 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -35,31 +35,11 @@ #include #endif -#if defined(IOS) -#include -#include -#elif defined(__APPLE__) -#include -#include -#elif defined(HAVE_PSGL) -#include -#include -#include -#elif defined(HAVE_OPENGL_MODERN) -#include -#include -#elif defined(HAVE_OPENGLES2) -#include -#include -#elif defined(HAVE_OPENGLES1) -#include -#include -#else -#define GL_GLEXT_PROTOTYPES -#include -#include -#endif +#include "glsym/glsym.h" +#if defined(ANDROID) && defined(HAVE_GRIFFIN) +#include "../griffin/hook_context.h" +#else #define context_get_video_size_func(win, height) gl->ctx_driver->get_video_size(win, height) #define context_update_window_title_func() gl->ctx_driver->update_window_title() #define context_destroy_func() gl->ctx_driver->destroy() @@ -281,15 +261,6 @@ typedef struct gl GLuint vao; } gl_t; -// Windows ... <_< -#ifdef _WIN32 -extern PFNGLCLIENTACTIVETEXTUREPROC pglClientActiveTexture; -extern PFNGLACTIVETEXTUREPROC pglActiveTexture; -#else -#define pglClientActiveTexture glClientActiveTexture -#define pglActiveTexture glActiveTexture -#endif - #if defined(HAVE_PSGL) #define RARCH_GL_INTERNAL_FORMAT32 GL_ARGB_SCE #define RARCH_GL_INTERNAL_FORMAT16 GL_RGB5 diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py new file mode 100755 index 0000000000..592dd687cc --- /dev/null +++ b/gfx/glsym/glgen.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +import sys +import os +import re + +banned_ext = [ 'AMD', 'APPLE', 'EXT', '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: + m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) + g = re.search(r'^.+(gl\S+)\W*\(.+\).*$', line) + if m and noext(m.group(1)): + typedefs.append(m.group(0).replace('PFN', 'RGLSYM')) + if g and noext(g.group(1)): + syms.append(g.group(1)) + 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 ' + '__rglgen_' + 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__': + 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') + 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('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "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/gfx/glsym/glsym.h b/gfx/glsym/glsym.h new file mode 100644 index 0000000000..64838fa2fe --- /dev/null +++ b/gfx/glsym/glsym.h @@ -0,0 +1,13 @@ +#ifndef GLSYM_H__ +#define GLSYM_H__ + +#include "rglgen.h" + +#ifdef HAVE_OPENGLES2 +#include "glsym_es2.h" +#else +#include "glsym_gl.h" +#endif + +#endif + diff --git a/gfx/glsym/glsym_es2.c b/gfx/glsym/glsym_es2.c new file mode 100644 index 0000000000..bf04786ffe --- /dev/null +++ b/gfx/glsym/glsym_es2.c @@ -0,0 +1,64 @@ +#include "glsym.h" +#include +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), + SYM(GetProgramBinaryOES), + SYM(ProgramBinaryOES), + SYM(MapBufferOES), + SYM(UnmapBufferOES), + SYM(GetBufferPointervOES), + SYM(TexImage3DOES), + SYM(TexSubImage3DOES), + SYM(CopyTexSubImage3DOES), + SYM(CompressedTexImage3DOES), + SYM(CompressedTexSubImage3DOES), + SYM(FramebufferTexture3DOES), + SYM(BindVertexArrayOES), + SYM(DeleteVertexArraysOES), + SYM(GenVertexArraysOES), + SYM(IsVertexArrayOES), + SYM(DebugMessageControl), + SYM(DebugMessageInsert), + SYM(DebugMessageCallback), + SYM(GetDebugMessageLog), + SYM(PushDebugGroup), + SYM(PopDebugGroup), + SYM(ObjectLabel), + SYM(GetObjectLabel), + SYM(ObjectPtrLabel), + SYM(GetObjectPtrLabel), + SYM(GetPointerv), + + { NULL, NULL }, +}; +RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; + diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h new file mode 100644 index 0000000000..d8fa1233db --- /dev/null +++ b/gfx/glsym/glsym_es2.h @@ -0,0 +1,92 @@ +#ifndef RGLGEN_DECL_H__ +#define RGLGEN_DECL_H__ +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +typedef void* (GL_APIENTRYP RGLSYMGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP RGLSYMGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GL_APIENTRYP RGLSYMGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP RGLSYMGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GL_APIENTRYP RGLSYMGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP RGLSYMGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP RGLSYMGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params); + +#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES +#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES +#define glGetProgramBinaryOES __rglgen_glGetProgramBinaryOES +#define glProgramBinaryOES __rglgen_glProgramBinaryOES +#define glMapBufferOES __rglgen_glMapBufferOES +#define glUnmapBufferOES __rglgen_glUnmapBufferOES +#define glGetBufferPointervOES __rglgen_glGetBufferPointervOES +#define glTexImage3DOES __rglgen_glTexImage3DOES +#define glTexSubImage3DOES __rglgen_glTexSubImage3DOES +#define glCopyTexSubImage3DOES __rglgen_glCopyTexSubImage3DOES +#define glCompressedTexImage3DOES __rglgen_glCompressedTexImage3DOES +#define glCompressedTexSubImage3DOES __rglgen_glCompressedTexSubImage3DOES +#define glFramebufferTexture3DOES __rglgen_glFramebufferTexture3DOES +#define glBindVertexArrayOES __rglgen_glBindVertexArrayOES +#define glDeleteVertexArraysOES __rglgen_glDeleteVertexArraysOES +#define glGenVertexArraysOES __rglgen_glGenVertexArraysOES +#define glIsVertexArrayOES __rglgen_glIsVertexArrayOES +#define glDebugMessageControl __rglgen_glDebugMessageControl +#define glDebugMessageInsert __rglgen_glDebugMessageInsert +#define glDebugMessageCallback __rglgen_glDebugMessageCallback +#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog +#define glPushDebugGroup __rglgen_glPushDebugGroup +#define glPopDebugGroup __rglgen_glPopDebugGroup +#define glObjectLabel __rglgen_glObjectLabel +#define glGetObjectLabel __rglgen_glGetObjectLabel +#define glObjectPtrLabel __rglgen_glObjectPtrLabel +#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel +#define glGetPointerv __rglgen_glGetPointerv + +extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +extern RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +extern RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +extern RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +extern RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +extern RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +extern RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +extern RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +extern RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +extern RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +extern RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +extern RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +extern RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +extern RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; + +struct rglgen_sym_map { const char *sym; void *ptr; }; +extern const struct rglgen_sym_map rglgen_symbol_map_rarch[]; // Avoid possible collisions with libretro GL. +#endif diff --git a/gfx/glsym/glsym_gl.c b/gfx/glsym/glsym_gl.c new file mode 100644 index 0000000000..c5211476c7 --- /dev/null +++ b/gfx/glsym/glsym_gl.c @@ -0,0 +1,1739 @@ +#include "glsym.h" +#include + +#ifdef HAVE_OPENGLES2 +#error "Wrong symbol file included." +#endif + +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { + SYM(BlendColor), + SYM(BlendEquation), + SYM(DrawRangeElements), + SYM(TexImage3D), + SYM(TexSubImage3D), + SYM(CopyTexSubImage3D), + SYM(ColorTable), + SYM(ColorTableParameterfv), + SYM(ColorTableParameteriv), + SYM(CopyColorTable), + SYM(GetColorTable), + SYM(GetColorTableParameterfv), + SYM(GetColorTableParameteriv), + SYM(ColorSubTable), + SYM(CopyColorSubTable), + SYM(ConvolutionFilter1D), + SYM(ConvolutionFilter2D), + SYM(ConvolutionParameterf), + SYM(ConvolutionParameterfv), + SYM(ConvolutionParameteri), + SYM(ConvolutionParameteriv), + SYM(CopyConvolutionFilter1D), + SYM(CopyConvolutionFilter2D), + SYM(GetConvolutionFilter), + SYM(GetConvolutionParameterfv), + SYM(GetConvolutionParameteriv), + SYM(GetSeparableFilter), + SYM(SeparableFilter2D), + SYM(GetHistogram), + SYM(GetHistogramParameterfv), + SYM(GetHistogramParameteriv), + SYM(GetMinmax), + SYM(GetMinmaxParameterfv), + SYM(GetMinmaxParameteriv), + SYM(Histogram), + SYM(Minmax), + SYM(ResetHistogram), + SYM(ResetMinmax), + SYM(ActiveTexture), + SYM(SampleCoverage), + SYM(CompressedTexImage3D), + SYM(CompressedTexImage2D), + SYM(CompressedTexImage1D), + SYM(CompressedTexSubImage3D), + SYM(CompressedTexSubImage2D), + SYM(CompressedTexSubImage1D), + SYM(GetCompressedTexImage), + SYM(ClientActiveTexture), + 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(LoadTransposeMatrixf), + SYM(LoadTransposeMatrixd), + SYM(MultTransposeMatrixf), + SYM(MultTransposeMatrixd), + SYM(BlendFuncSeparate), + SYM(MultiDrawArrays), + SYM(MultiDrawElements), + SYM(PointParameterf), + SYM(PointParameterfv), + SYM(PointParameteri), + SYM(PointParameteriv), + SYM(FogCoordf), + SYM(FogCoordfv), + SYM(FogCoordd), + SYM(FogCoorddv), + SYM(FogCoordPointer), + SYM(SecondaryColor3b), + SYM(SecondaryColor3bv), + SYM(SecondaryColor3d), + SYM(SecondaryColor3dv), + SYM(SecondaryColor3f), + SYM(SecondaryColor3fv), + SYM(SecondaryColor3i), + SYM(SecondaryColor3iv), + SYM(SecondaryColor3s), + SYM(SecondaryColor3sv), + SYM(SecondaryColor3ub), + SYM(SecondaryColor3ubv), + SYM(SecondaryColor3ui), + SYM(SecondaryColor3uiv), + SYM(SecondaryColor3us), + SYM(SecondaryColor3usv), + SYM(SecondaryColorPointer), + SYM(WindowPos2d), + SYM(WindowPos2dv), + SYM(WindowPos2f), + SYM(WindowPos2fv), + SYM(WindowPos2i), + SYM(WindowPos2iv), + SYM(WindowPos2s), + SYM(WindowPos2sv), + SYM(WindowPos3d), + SYM(WindowPos3dv), + SYM(WindowPos3f), + SYM(WindowPos3fv), + SYM(WindowPos3i), + SYM(WindowPos3iv), + SYM(WindowPos3s), + SYM(WindowPos3sv), + SYM(GenQueries), + SYM(DeleteQueries), + SYM(IsQuery), + SYM(BeginQuery), + SYM(EndQuery), + SYM(GetQueryiv), + SYM(GetQueryObjectiv), + SYM(GetQueryObjectuiv), + SYM(BindBuffer), + SYM(DeleteBuffers), + SYM(GenBuffers), + SYM(IsBuffer), + SYM(BufferData), + SYM(BufferSubData), + SYM(GetBufferSubData), + SYM(MapBuffer), + SYM(UnmapBuffer), + SYM(GetBufferParameteriv), + SYM(GetBufferPointerv), + SYM(BlendEquationSeparate), + SYM(DrawBuffers), + SYM(StencilOpSeparate), + SYM(StencilFuncSeparate), + SYM(StencilMaskSeparate), + SYM(AttachShader), + SYM(BindAttribLocation), + SYM(CompileShader), + SYM(CreateProgram), + SYM(CreateShader), + SYM(DeleteProgram), + SYM(DeleteShader), + SYM(DetachShader), + SYM(DisableVertexAttribArray), + SYM(EnableVertexAttribArray), + SYM(GetActiveAttrib), + SYM(GetActiveUniform), + SYM(GetAttachedShaders), + SYM(GetAttribLocation), + SYM(GetProgramiv), + SYM(GetProgramInfoLog), + SYM(GetShaderiv), + SYM(GetShaderInfoLog), + SYM(GetShaderSource), + SYM(GetUniformLocation), + SYM(GetUniformfv), + SYM(GetUniformiv), + SYM(GetVertexAttribdv), + SYM(GetVertexAttribfv), + SYM(GetVertexAttribiv), + SYM(GetVertexAttribPointerv), + SYM(IsProgram), + SYM(IsShader), + SYM(LinkProgram), + SYM(ShaderSource), + SYM(UseProgram), + SYM(Uniform1f), + SYM(Uniform2f), + SYM(Uniform3f), + SYM(Uniform4f), + SYM(Uniform1i), + SYM(Uniform2i), + SYM(Uniform3i), + SYM(Uniform4i), + SYM(Uniform1fv), + SYM(Uniform2fv), + SYM(Uniform3fv), + SYM(Uniform4fv), + SYM(Uniform1iv), + SYM(Uniform2iv), + SYM(Uniform3iv), + SYM(Uniform4iv), + SYM(UniformMatrix2fv), + SYM(UniformMatrix3fv), + SYM(UniformMatrix4fv), + SYM(ValidateProgram), + SYM(VertexAttrib1d), + SYM(VertexAttrib1dv), + SYM(VertexAttrib1f), + SYM(VertexAttrib1fv), + SYM(VertexAttrib1s), + SYM(VertexAttrib1sv), + SYM(VertexAttrib2d), + SYM(VertexAttrib2dv), + SYM(VertexAttrib2f), + SYM(VertexAttrib2fv), + SYM(VertexAttrib2s), + SYM(VertexAttrib2sv), + SYM(VertexAttrib3d), + SYM(VertexAttrib3dv), + SYM(VertexAttrib3f), + SYM(VertexAttrib3fv), + SYM(VertexAttrib3s), + SYM(VertexAttrib3sv), + SYM(VertexAttrib4Nbv), + SYM(VertexAttrib4Niv), + SYM(VertexAttrib4Nsv), + SYM(VertexAttrib4Nub), + SYM(VertexAttrib4Nubv), + SYM(VertexAttrib4Nuiv), + SYM(VertexAttrib4Nusv), + SYM(VertexAttrib4bv), + SYM(VertexAttrib4d), + SYM(VertexAttrib4dv), + SYM(VertexAttrib4f), + SYM(VertexAttrib4fv), + SYM(VertexAttrib4iv), + SYM(VertexAttrib4s), + SYM(VertexAttrib4sv), + SYM(VertexAttrib4ubv), + SYM(VertexAttrib4uiv), + SYM(VertexAttrib4usv), + SYM(VertexAttribPointer), + SYM(UniformMatrix2x3fv), + SYM(UniformMatrix3x2fv), + SYM(UniformMatrix2x4fv), + SYM(UniformMatrix4x2fv), + SYM(UniformMatrix3x4fv), + SYM(UniformMatrix4x3fv), + SYM(ColorMaski), + SYM(GetBooleani_v), + SYM(GetIntegeri_v), + SYM(Enablei), + SYM(Disablei), + SYM(IsEnabledi), + SYM(BeginTransformFeedback), + SYM(EndTransformFeedback), + SYM(BindBufferRange), + SYM(BindBufferBase), + SYM(TransformFeedbackVaryings), + SYM(GetTransformFeedbackVarying), + SYM(ClampColor), + SYM(BeginConditionalRender), + SYM(EndConditionalRender), + SYM(VertexAttribIPointer), + SYM(GetVertexAttribIiv), + SYM(GetVertexAttribIuiv), + SYM(VertexAttribI1i), + SYM(VertexAttribI2i), + SYM(VertexAttribI3i), + SYM(VertexAttribI4i), + SYM(VertexAttribI1ui), + SYM(VertexAttribI2ui), + SYM(VertexAttribI3ui), + SYM(VertexAttribI4ui), + SYM(VertexAttribI1iv), + SYM(VertexAttribI2iv), + SYM(VertexAttribI3iv), + SYM(VertexAttribI4iv), + SYM(VertexAttribI1uiv), + SYM(VertexAttribI2uiv), + SYM(VertexAttribI3uiv), + SYM(VertexAttribI4uiv), + SYM(VertexAttribI4bv), + SYM(VertexAttribI4sv), + SYM(VertexAttribI4ubv), + SYM(VertexAttribI4usv), + SYM(GetUniformuiv), + SYM(BindFragDataLocation), + SYM(GetFragDataLocation), + SYM(Uniform1ui), + SYM(Uniform2ui), + SYM(Uniform3ui), + SYM(Uniform4ui), + SYM(Uniform1uiv), + SYM(Uniform2uiv), + SYM(Uniform3uiv), + SYM(Uniform4uiv), + SYM(TexParameterIiv), + SYM(TexParameterIuiv), + SYM(GetTexParameterIiv), + SYM(GetTexParameterIuiv), + SYM(ClearBufferiv), + SYM(ClearBufferuiv), + SYM(ClearBufferfv), + SYM(ClearBufferfi), + SYM(GetStringi), + SYM(DrawArraysInstanced), + SYM(DrawElementsInstanced), + SYM(TexBuffer), + SYM(PrimitiveRestartIndex), + SYM(GetInteger64i_v), + SYM(GetBufferParameteri64v), + SYM(FramebufferTexture), + SYM(VertexAttribDivisor), + SYM(MinSampleShading), + SYM(BlendEquationi), + SYM(BlendEquationSeparatei), + SYM(BlendFunci), + SYM(BlendFuncSeparatei), + 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(LoadTransposeMatrixfARB), + SYM(LoadTransposeMatrixdARB), + SYM(MultTransposeMatrixfARB), + SYM(MultTransposeMatrixdARB), + SYM(SampleCoverageARB), + SYM(CompressedTexImage3DARB), + SYM(CompressedTexImage2DARB), + SYM(CompressedTexImage1DARB), + SYM(CompressedTexSubImage3DARB), + SYM(CompressedTexSubImage2DARB), + SYM(CompressedTexSubImage1DARB), + SYM(GetCompressedTexImageARB), + SYM(PointParameterfARB), + SYM(PointParameterfvARB), + SYM(WeightbvARB), + SYM(WeightsvARB), + SYM(WeightivARB), + SYM(WeightfvARB), + SYM(WeightdvARB), + SYM(WeightubvARB), + SYM(WeightusvARB), + SYM(WeightuivARB), + SYM(WeightPointerARB), + SYM(VertexBlendARB), + SYM(CurrentPaletteMatrixARB), + SYM(MatrixIndexubvARB), + SYM(MatrixIndexusvARB), + SYM(MatrixIndexuivARB), + SYM(MatrixIndexPointerARB), + SYM(WindowPos2dARB), + SYM(WindowPos2dvARB), + SYM(WindowPos2fARB), + SYM(WindowPos2fvARB), + SYM(WindowPos2iARB), + SYM(WindowPos2ivARB), + SYM(WindowPos2sARB), + SYM(WindowPos2svARB), + SYM(WindowPos3dARB), + SYM(WindowPos3dvARB), + SYM(WindowPos3fARB), + SYM(WindowPos3fvARB), + SYM(WindowPos3iARB), + SYM(WindowPos3ivARB), + SYM(WindowPos3sARB), + SYM(WindowPos3svARB), + SYM(VertexAttrib1dARB), + SYM(VertexAttrib1dvARB), + SYM(VertexAttrib1fARB), + SYM(VertexAttrib1fvARB), + SYM(VertexAttrib1sARB), + SYM(VertexAttrib1svARB), + SYM(VertexAttrib2dARB), + SYM(VertexAttrib2dvARB), + SYM(VertexAttrib2fARB), + SYM(VertexAttrib2fvARB), + SYM(VertexAttrib2sARB), + SYM(VertexAttrib2svARB), + SYM(VertexAttrib3dARB), + SYM(VertexAttrib3dvARB), + SYM(VertexAttrib3fARB), + SYM(VertexAttrib3fvARB), + SYM(VertexAttrib3sARB), + SYM(VertexAttrib3svARB), + SYM(VertexAttrib4NbvARB), + SYM(VertexAttrib4NivARB), + SYM(VertexAttrib4NsvARB), + SYM(VertexAttrib4NubARB), + SYM(VertexAttrib4NubvARB), + SYM(VertexAttrib4NuivARB), + SYM(VertexAttrib4NusvARB), + SYM(VertexAttrib4bvARB), + SYM(VertexAttrib4dARB), + SYM(VertexAttrib4dvARB), + SYM(VertexAttrib4fARB), + SYM(VertexAttrib4fvARB), + SYM(VertexAttrib4ivARB), + SYM(VertexAttrib4sARB), + SYM(VertexAttrib4svARB), + SYM(VertexAttrib4ubvARB), + SYM(VertexAttrib4uivARB), + SYM(VertexAttrib4usvARB), + SYM(VertexAttribPointerARB), + SYM(EnableVertexAttribArrayARB), + SYM(DisableVertexAttribArrayARB), + SYM(ProgramStringARB), + SYM(BindProgramARB), + SYM(DeleteProgramsARB), + SYM(GenProgramsARB), + SYM(ProgramEnvParameter4dARB), + SYM(ProgramEnvParameter4dvARB), + SYM(ProgramEnvParameter4fARB), + SYM(ProgramEnvParameter4fvARB), + SYM(ProgramLocalParameter4dARB), + SYM(ProgramLocalParameter4dvARB), + SYM(ProgramLocalParameter4fARB), + SYM(ProgramLocalParameter4fvARB), + SYM(GetProgramEnvParameterdvARB), + SYM(GetProgramEnvParameterfvARB), + SYM(GetProgramLocalParameterdvARB), + SYM(GetProgramLocalParameterfvARB), + SYM(GetProgramivARB), + SYM(GetProgramStringARB), + SYM(GetVertexAttribdvARB), + SYM(GetVertexAttribfvARB), + SYM(GetVertexAttribivARB), + SYM(GetVertexAttribPointervARB), + SYM(IsProgramARB), + SYM(BindBufferARB), + SYM(DeleteBuffersARB), + SYM(GenBuffersARB), + SYM(IsBufferARB), + SYM(BufferDataARB), + SYM(BufferSubDataARB), + SYM(GetBufferSubDataARB), + SYM(MapBufferARB), + SYM(UnmapBufferARB), + SYM(GetBufferParameterivARB), + SYM(GetBufferPointervARB), + SYM(GenQueriesARB), + SYM(DeleteQueriesARB), + SYM(IsQueryARB), + SYM(BeginQueryARB), + SYM(EndQueryARB), + SYM(GetQueryivARB), + SYM(GetQueryObjectivARB), + SYM(GetQueryObjectuivARB), + SYM(DeleteObjectARB), + SYM(GetHandleARB), + SYM(DetachObjectARB), + SYM(CreateShaderObjectARB), + SYM(ShaderSourceARB), + SYM(CompileShaderARB), + SYM(CreateProgramObjectARB), + SYM(AttachObjectARB), + SYM(LinkProgramARB), + SYM(UseProgramObjectARB), + SYM(ValidateProgramARB), + SYM(Uniform1fARB), + SYM(Uniform2fARB), + SYM(Uniform3fARB), + SYM(Uniform4fARB), + SYM(Uniform1iARB), + SYM(Uniform2iARB), + SYM(Uniform3iARB), + SYM(Uniform4iARB), + SYM(Uniform1fvARB), + SYM(Uniform2fvARB), + SYM(Uniform3fvARB), + SYM(Uniform4fvARB), + SYM(Uniform1ivARB), + SYM(Uniform2ivARB), + SYM(Uniform3ivARB), + SYM(Uniform4ivARB), + SYM(UniformMatrix2fvARB), + SYM(UniformMatrix3fvARB), + SYM(UniformMatrix4fvARB), + SYM(GetObjectParameterfvARB), + SYM(GetObjectParameterivARB), + SYM(GetInfoLogARB), + SYM(GetAttachedObjectsARB), + SYM(GetUniformLocationARB), + SYM(GetActiveUniformARB), + SYM(GetUniformfvARB), + SYM(GetUniformivARB), + SYM(GetShaderSourceARB), + SYM(BindAttribLocationARB), + SYM(GetActiveAttribARB), + SYM(GetAttribLocationARB), + SYM(DrawBuffersARB), + SYM(ClampColorARB), + SYM(DrawArraysInstancedARB), + SYM(DrawElementsInstancedARB), + SYM(IsRenderbuffer), + SYM(BindRenderbuffer), + SYM(DeleteRenderbuffers), + SYM(GenRenderbuffers), + SYM(RenderbufferStorage), + SYM(GetRenderbufferParameteriv), + SYM(IsFramebuffer), + SYM(BindFramebuffer), + SYM(DeleteFramebuffers), + SYM(GenFramebuffers), + SYM(CheckFramebufferStatus), + SYM(FramebufferTexture1D), + SYM(FramebufferTexture2D), + SYM(FramebufferTexture3D), + SYM(FramebufferRenderbuffer), + SYM(GetFramebufferAttachmentParameteriv), + SYM(GenerateMipmap), + SYM(BlitFramebuffer), + SYM(RenderbufferStorageMultisample), + SYM(FramebufferTextureLayer), + SYM(ProgramParameteriARB), + SYM(FramebufferTextureARB), + SYM(FramebufferTextureLayerARB), + SYM(FramebufferTextureFaceARB), + SYM(VertexAttribDivisorARB), + SYM(MapBufferRange), + SYM(FlushMappedBufferRange), + SYM(TexBufferARB), + SYM(BindVertexArray), + SYM(DeleteVertexArrays), + SYM(GenVertexArrays), + SYM(IsVertexArray), + SYM(GetUniformIndices), + SYM(GetActiveUniformsiv), + SYM(GetActiveUniformName), + SYM(GetUniformBlockIndex), + SYM(GetActiveUniformBlockiv), + SYM(GetActiveUniformBlockName), + SYM(UniformBlockBinding), + SYM(CopyBufferSubData), + SYM(DrawElementsBaseVertex), + SYM(DrawRangeElementsBaseVertex), + SYM(DrawElementsInstancedBaseVertex), + SYM(MultiDrawElementsBaseVertex), + SYM(ProvokingVertex), + SYM(FenceSync), + SYM(IsSync), + SYM(DeleteSync), + SYM(ClientWaitSync), + SYM(WaitSync), + SYM(GetInteger64v), + SYM(GetSynciv), + SYM(TexImage2DMultisample), + SYM(TexImage3DMultisample), + SYM(GetMultisamplefv), + SYM(SampleMaski), + SYM(BlendEquationiARB), + SYM(BlendEquationSeparateiARB), + SYM(BlendFunciARB), + SYM(BlendFuncSeparateiARB), + SYM(MinSampleShadingARB), + SYM(NamedStringARB), + SYM(DeleteNamedStringARB), + SYM(CompileShaderIncludeARB), + SYM(IsNamedStringARB), + SYM(GetNamedStringARB), + SYM(GetNamedStringivARB), + SYM(BindFragDataLocationIndexed), + SYM(GetFragDataIndex), + SYM(GenSamplers), + SYM(DeleteSamplers), + SYM(IsSampler), + SYM(BindSampler), + SYM(SamplerParameteri), + SYM(SamplerParameteriv), + SYM(SamplerParameterf), + SYM(SamplerParameterfv), + SYM(SamplerParameterIiv), + SYM(SamplerParameterIuiv), + SYM(GetSamplerParameteriv), + SYM(GetSamplerParameterIiv), + SYM(GetSamplerParameterfv), + SYM(GetSamplerParameterIuiv), + SYM(QueryCounter), + SYM(GetQueryObjecti64v), + SYM(GetQueryObjectui64v), + SYM(VertexP2ui), + SYM(VertexP2uiv), + SYM(VertexP3ui), + SYM(VertexP3uiv), + SYM(VertexP4ui), + SYM(VertexP4uiv), + SYM(TexCoordP1ui), + SYM(TexCoordP1uiv), + SYM(TexCoordP2ui), + SYM(TexCoordP2uiv), + SYM(TexCoordP3ui), + SYM(TexCoordP3uiv), + SYM(TexCoordP4ui), + SYM(TexCoordP4uiv), + SYM(MultiTexCoordP1ui), + SYM(MultiTexCoordP1uiv), + SYM(MultiTexCoordP2ui), + SYM(MultiTexCoordP2uiv), + SYM(MultiTexCoordP3ui), + SYM(MultiTexCoordP3uiv), + SYM(MultiTexCoordP4ui), + SYM(MultiTexCoordP4uiv), + SYM(NormalP3ui), + SYM(NormalP3uiv), + SYM(ColorP3ui), + SYM(ColorP3uiv), + SYM(ColorP4ui), + SYM(ColorP4uiv), + SYM(SecondaryColorP3ui), + SYM(SecondaryColorP3uiv), + SYM(VertexAttribP1ui), + SYM(VertexAttribP1uiv), + SYM(VertexAttribP2ui), + SYM(VertexAttribP2uiv), + SYM(VertexAttribP3ui), + SYM(VertexAttribP3uiv), + SYM(VertexAttribP4ui), + SYM(VertexAttribP4uiv), + SYM(DrawArraysIndirect), + SYM(DrawElementsIndirect), + SYM(Uniform1d), + SYM(Uniform2d), + SYM(Uniform3d), + SYM(Uniform4d), + SYM(Uniform1dv), + SYM(Uniform2dv), + SYM(Uniform3dv), + SYM(Uniform4dv), + SYM(UniformMatrix2dv), + SYM(UniformMatrix3dv), + SYM(UniformMatrix4dv), + SYM(UniformMatrix2x3dv), + SYM(UniformMatrix2x4dv), + SYM(UniformMatrix3x2dv), + SYM(UniformMatrix3x4dv), + SYM(UniformMatrix4x2dv), + SYM(UniformMatrix4x3dv), + SYM(GetUniformdv), + SYM(GetSubroutineUniformLocation), + SYM(GetSubroutineIndex), + SYM(GetActiveSubroutineUniformiv), + SYM(GetActiveSubroutineUniformName), + SYM(GetActiveSubroutineName), + SYM(UniformSubroutinesuiv), + SYM(GetUniformSubroutineuiv), + SYM(GetProgramStageiv), + SYM(PatchParameteri), + SYM(PatchParameterfv), + SYM(BindTransformFeedback), + SYM(DeleteTransformFeedbacks), + SYM(GenTransformFeedbacks), + SYM(IsTransformFeedback), + SYM(PauseTransformFeedback), + SYM(ResumeTransformFeedback), + SYM(DrawTransformFeedback), + SYM(DrawTransformFeedbackStream), + SYM(BeginQueryIndexed), + SYM(EndQueryIndexed), + SYM(GetQueryIndexediv), + SYM(ReleaseShaderCompiler), + SYM(ShaderBinary), + SYM(GetShaderPrecisionFormat), + SYM(DepthRangef), + SYM(ClearDepthf), + SYM(GetProgramBinary), + SYM(ProgramBinary), + SYM(ProgramParameteri), + SYM(UseProgramStages), + SYM(ActiveShaderProgram), + SYM(CreateShaderProgramv), + SYM(BindProgramPipeline), + SYM(DeleteProgramPipelines), + SYM(GenProgramPipelines), + SYM(IsProgramPipeline), + SYM(GetProgramPipelineiv), + SYM(ProgramUniform1i), + SYM(ProgramUniform1iv), + SYM(ProgramUniform1f), + SYM(ProgramUniform1fv), + SYM(ProgramUniform1d), + SYM(ProgramUniform1dv), + SYM(ProgramUniform1ui), + SYM(ProgramUniform1uiv), + SYM(ProgramUniform2i), + SYM(ProgramUniform2iv), + SYM(ProgramUniform2f), + SYM(ProgramUniform2fv), + SYM(ProgramUniform2d), + SYM(ProgramUniform2dv), + SYM(ProgramUniform2ui), + SYM(ProgramUniform2uiv), + SYM(ProgramUniform3i), + SYM(ProgramUniform3iv), + SYM(ProgramUniform3f), + SYM(ProgramUniform3fv), + SYM(ProgramUniform3d), + SYM(ProgramUniform3dv), + SYM(ProgramUniform3ui), + SYM(ProgramUniform3uiv), + SYM(ProgramUniform4i), + SYM(ProgramUniform4iv), + SYM(ProgramUniform4f), + SYM(ProgramUniform4fv), + SYM(ProgramUniform4d), + SYM(ProgramUniform4dv), + SYM(ProgramUniform4ui), + SYM(ProgramUniform4uiv), + SYM(ProgramUniformMatrix2fv), + SYM(ProgramUniformMatrix3fv), + SYM(ProgramUniformMatrix4fv), + SYM(ProgramUniformMatrix2dv), + SYM(ProgramUniformMatrix3dv), + SYM(ProgramUniformMatrix4dv), + SYM(ProgramUniformMatrix2x3fv), + SYM(ProgramUniformMatrix3x2fv), + SYM(ProgramUniformMatrix2x4fv), + SYM(ProgramUniformMatrix4x2fv), + SYM(ProgramUniformMatrix3x4fv), + SYM(ProgramUniformMatrix4x3fv), + SYM(ProgramUniformMatrix2x3dv), + SYM(ProgramUniformMatrix3x2dv), + SYM(ProgramUniformMatrix2x4dv), + SYM(ProgramUniformMatrix4x2dv), + SYM(ProgramUniformMatrix3x4dv), + SYM(ProgramUniformMatrix4x3dv), + SYM(ValidateProgramPipeline), + SYM(GetProgramPipelineInfoLog), + SYM(VertexAttribL1d), + SYM(VertexAttribL2d), + SYM(VertexAttribL3d), + SYM(VertexAttribL4d), + SYM(VertexAttribL1dv), + SYM(VertexAttribL2dv), + SYM(VertexAttribL3dv), + SYM(VertexAttribL4dv), + SYM(VertexAttribLPointer), + SYM(GetVertexAttribLdv), + SYM(ViewportArrayv), + SYM(ViewportIndexedf), + SYM(ViewportIndexedfv), + SYM(ScissorArrayv), + SYM(ScissorIndexed), + SYM(ScissorIndexedv), + SYM(DepthRangeArrayv), + SYM(DepthRangeIndexed), + SYM(GetFloati_v), + SYM(GetDoublei_v), + SYM(CreateSyncFromCLeventARB), + SYM(DebugMessageControlARB), + SYM(DebugMessageInsertARB), + SYM(DebugMessageCallbackARB), + SYM(GetDebugMessageLogARB), + SYM(GetGraphicsResetStatusARB), + SYM(GetnMapdvARB), + SYM(GetnMapfvARB), + SYM(GetnMapivARB), + SYM(GetnPixelMapfvARB), + SYM(GetnPixelMapuivARB), + SYM(GetnPixelMapusvARB), + SYM(GetnPolygonStippleARB), + SYM(GetnColorTableARB), + SYM(GetnConvolutionFilterARB), + SYM(GetnSeparableFilterARB), + SYM(GetnHistogramARB), + SYM(GetnMinmaxARB), + SYM(GetnTexImageARB), + SYM(ReadnPixelsARB), + SYM(GetnCompressedTexImageARB), + SYM(GetnUniformfvARB), + SYM(GetnUniformivARB), + SYM(GetnUniformuivARB), + SYM(GetnUniformdvARB), + SYM(DrawArraysInstancedBaseInstance), + SYM(DrawElementsInstancedBaseInstance), + SYM(DrawElementsInstancedBaseVertexBaseInstance), + SYM(DrawTransformFeedbackInstanced), + SYM(DrawTransformFeedbackStreamInstanced), + SYM(GetInternalformativ), + SYM(GetActiveAtomicCounterBufferiv), + SYM(BindImageTexture), + SYM(MemoryBarrier), + SYM(TexStorage1D), + SYM(TexStorage2D), + SYM(TexStorage3D), + SYM(DebugMessageControl), + SYM(DebugMessageInsert), + SYM(DebugMessageCallback), + SYM(GetDebugMessageLog), + SYM(PushDebugGroup), + SYM(PopDebugGroup), + SYM(ObjectLabel), + SYM(GetObjectLabel), + SYM(ObjectPtrLabel), + SYM(GetObjectPtrLabel), + SYM(ClearBufferData), + SYM(ClearBufferSubData), + SYM(DispatchCompute), + SYM(DispatchComputeIndirect), + SYM(CopyImageSubData), + SYM(TextureView), + SYM(BindVertexBuffer), + SYM(VertexAttribFormat), + SYM(VertexAttribIFormat), + SYM(VertexAttribLFormat), + SYM(VertexAttribBinding), + SYM(VertexBindingDivisor), + SYM(FramebufferParameteri), + SYM(GetFramebufferParameteriv), + SYM(GetInternalformati64v), + SYM(InvalidateTexSubImage), + SYM(InvalidateTexImage), + SYM(InvalidateBufferSubData), + SYM(InvalidateBufferData), + SYM(InvalidateFramebuffer), + SYM(InvalidateSubFramebuffer), + SYM(MultiDrawArraysIndirect), + SYM(MultiDrawElementsIndirect), + SYM(GetProgramInterfaceiv), + SYM(GetProgramResourceIndex), + SYM(GetProgramResourceName), + SYM(GetProgramResourceiv), + SYM(GetProgramResourceLocation), + SYM(GetProgramResourceLocationIndex), + SYM(ShaderStorageBlockBinding), + SYM(TexBufferRange), + SYM(TexStorage2DMultisample), + SYM(TexStorage3DMultisample), + SYM(ImageTransformParameteriHP), + SYM(ImageTransformParameterfHP), + SYM(ImageTransformParameterivHP), + SYM(ImageTransformParameterfvHP), + SYM(GetImageTransformParameterivHP), + SYM(GetImageTransformParameterfvHP), + + { NULL, NULL }, +}; +RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; +RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; +RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; +RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; +RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; +RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; +RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; +RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; +RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; +RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; +RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; +RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; +RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; +RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; +RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; +RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; +RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; +RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; +RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; +RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; +RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; +RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; +RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; +RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; +RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; +RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; +RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; +RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; +RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; +RGLSYMGLMINMAXPROC __rglgen_glMinmax; +RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; +RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; +RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; +RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; +RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; +RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; +RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; +RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; +RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; +RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; +RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; +RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; +RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; +RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; +RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; +RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; +RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; +RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; +RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; +RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; +RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; +RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; +RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; +RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; +RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; +RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; +RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; +RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; +RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; +RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; +RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; +RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; +RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; +RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; +RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; +RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; +RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; +RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; +RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; +RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; +RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; +RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; +RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; +RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; +RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; +RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; +RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; +RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; +RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; +RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; +RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; +RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; +RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; +RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; +RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; +RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; +RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; +RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; +RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; +RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; +RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; +RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; +RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; +RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; +RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; +RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; +RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; +RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; +RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; +RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; +RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; +RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; +RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; +RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; +RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; +RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; +RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; +RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; +RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; +RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; +RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; +RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; +RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; +RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; +RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; +RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; +RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; +RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; +RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; +RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; +RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; +RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; +RGLSYMGLISQUERYPROC __rglgen_glIsQuery; +RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; +RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; +RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; +RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; +RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; +RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; +RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; +RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; +RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; +RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; +RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; +RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; +RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; +RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; +RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; +RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; +RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; +RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; +RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; +RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; +RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; +RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; +RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; +RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; +RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; +RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; +RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; +RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; +RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; +RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; +RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; +RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; +RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; +RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; +RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; +RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; +RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; +RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; +RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; +RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; +RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; +RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; +RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; +RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; +RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; +RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; +RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; +RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; +RGLSYMGLISSHADERPROC __rglgen_glIsShader; +RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; +RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; +RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; +RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; +RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; +RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; +RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; +RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; +RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; +RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; +RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; +RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; +RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; +RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; +RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; +RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; +RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; +RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; +RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; +RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; +RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; +RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; +RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; +RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; +RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; +RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; +RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; +RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; +RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; +RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; +RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; +RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; +RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; +RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; +RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; +RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; +RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; +RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; +RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; +RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; +RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; +RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; +RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; +RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; +RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; +RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; +RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; +RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; +RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; +RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; +RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; +RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; +RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; +RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; +RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; +RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; +RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; +RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; +RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; +RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; +RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; +RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; +RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; +RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; +RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; +RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; +RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; +RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; +RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; +RGLSYMGLENABLEIPROC __rglgen_glEnablei; +RGLSYMGLDISABLEIPROC __rglgen_glDisablei; +RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; +RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; +RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; +RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; +RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; +RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; +RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; +RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; +RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; +RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; +RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; +RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; +RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; +RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; +RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; +RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; +RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; +RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; +RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; +RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; +RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; +RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; +RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; +RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; +RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; +RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; +RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; +RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; +RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; +RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; +RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; +RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; +RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; +RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; +RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; +RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; +RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; +RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; +RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; +RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; +RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; +RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; +RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; +RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; +RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; +RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; +RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; +RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; +RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; +RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; +RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; +RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; +RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; +RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; +RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; +RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; +RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; +RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; +RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; +RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; +RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; +RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; +RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; +RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; +RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; +RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; +RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; +RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; +RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; +RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; +RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; +RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; +RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; +RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; +RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; +RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; +RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; +RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; +RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; +RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; +RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; +RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; +RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; +RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; +RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; +RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; +RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; +RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; +RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; +RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; +RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; +RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; +RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; +RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; +RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; +RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; +RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; +RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; +RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; +RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; +RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; +RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; +RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; +RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; +RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; +RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; +RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; +RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; +RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; +RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; +RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; +RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; +RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; +RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; +RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; +RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; +RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; +RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; +RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; +RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; +RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; +RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; +RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; +RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; +RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; +RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; +RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; +RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; +RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; +RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; +RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; +RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; +RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; +RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; +RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; +RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; +RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; +RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; +RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; +RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; +RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; +RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; +RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; +RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; +RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; +RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; +RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; +RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; +RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; +RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; +RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; +RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; +RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; +RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; +RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; +RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; +RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; +RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; +RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; +RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; +RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; +RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; +RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; +RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; +RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; +RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; +RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; +RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; +RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; +RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; +RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; +RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; +RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; +RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; +RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; +RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; +RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; +RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; +RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; +RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; +RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; +RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; +RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; +RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; +RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; +RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; +RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; +RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; +RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; +RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; +RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; +RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; +RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; +RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; +RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; +RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; +RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; +RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; +RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; +RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; +RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; +RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; +RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; +RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; +RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; +RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; +RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; +RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; +RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; +RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; +RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; +RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; +RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; +RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; +RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; +RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; +RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; +RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; +RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; +RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; +RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; +RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; +RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; +RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; +RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; +RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; +RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; +RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; +RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; +RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; +RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; +RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; +RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; +RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; +RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; +RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; +RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; +RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; +RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; +RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; +RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; +RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; +RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; +RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; +RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; +RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; +RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; +RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; +RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; +RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; +RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; +RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; +RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; +RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; +RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; +RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; +RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; +RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; +RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; +RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; +RGLSYMGLISSYNCPROC __rglgen_glIsSync; +RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; +RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; +RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; +RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; +RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; +RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; +RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; +RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; +RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; +RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; +RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; +RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; +RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; +RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; +RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; +RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; +RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; +RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; +RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; +RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; +RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; +RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; +RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; +RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; +RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; +RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; +RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; +RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; +RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; +RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; +RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; +RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; +RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; +RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; +RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; +RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; +RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; +RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; +RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; +RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; +RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; +RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; +RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; +RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; +RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; +RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; +RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; +RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; +RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; +RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; +RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; +RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; +RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; +RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; +RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; +RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; +RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; +RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; +RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; +RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; +RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; +RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; +RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; +RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; +RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; +RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; +RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; +RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; +RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; +RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; +RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; +RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; +RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; +RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; +RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; +RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; +RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; +RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; +RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; +RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; +RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; +RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; +RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; +RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; +RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; +RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; +RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; +RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; +RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; +RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; +RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; +RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; +RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; +RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; +RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; +RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; +RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; +RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; +RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; +RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; +RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; +RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; +RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; +RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; +RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; +RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; +RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; +RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; +RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; +RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; +RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; +RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; +RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; +RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; +RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; +RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; +RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; +RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; +RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; +RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; +RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; +RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; +RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; +RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; +RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; +RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; +RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; +RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; +RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; +RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; +RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; +RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; +RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; +RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; +RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; +RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; +RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; +RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; +RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; +RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; +RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; +RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; +RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; +RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; +RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; +RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; +RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; +RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; +RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; +RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; +RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; +RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; +RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; +RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; +RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; +RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; +RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; +RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; +RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; +RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; +RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; +RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; +RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; +RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; +RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; +RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; +RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; +RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; +RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; +RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; +RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; +RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; +RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; +RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; +RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; +RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; +RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; +RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; +RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; +RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; +RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; +RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; +RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; +RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; +RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; +RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; +RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; +RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; +RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; +RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; +RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; +RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; +RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; +RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; +RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; +RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; +RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; +RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; +RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; +RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; +RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; +RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; +RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; +RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; +RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; +RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; +RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; +RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; +RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; +RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; +RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; +RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; +RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; +RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; +RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; +RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; +RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; +RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; +RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; +RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; +RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; +RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; +RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; +RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; +RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; +RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; +RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; +RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; +RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; +RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; +RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; + diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h new file mode 100644 index 0000000000..e9b37c10a3 --- /dev/null +++ b/gfx/glsym/glsym_gl.h @@ -0,0 +1,2597 @@ +#ifndef RGLGEN_DECL_H__ +#define RGLGEN_DECL_H__ +typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP RGLSYMGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP RGLSYMGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP RGLSYMGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP RGLSYMGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLRESETMINMAXPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +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 RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, 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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, 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 RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +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 RGLSYMGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP RGLSYMGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP RGLSYMGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP RGLSYMGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP RGLSYMGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP RGLSYMGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP RGLSYMGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP RGLSYMGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP RGLSYMGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); +typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP RGLSYMGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP RGLSYMGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP RGLSYMGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP RGLSYMGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP RGLSYMGLENABLEIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLDISABLEIPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP RGLSYMGLISENABLEDIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (APIENTRYP RGLSYMGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); +typedef void (APIENTRYP RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP RGLSYMGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP RGLSYMGLENDCONDITIONALRENDERPROC) (void); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef const GLubyte * (APIENTRYP RGLSYMGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGPROC) (GLfloat value); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +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 RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLVERTEXBLENDARBPROC) (GLint count); +typedef void (APIENTRYP RGLSYMGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); +typedef void (APIENTRYP RGLSYMGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP RGLSYMGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMARBPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP RGLSYMGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void (APIENTRYP RGLSYMGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP RGLSYMGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP RGLSYMGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP RGLSYMGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP RGLSYMGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP RGLSYMGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP RGLSYMGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP RGLSYMGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP RGLSYMGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP RGLSYMGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP RGLSYMGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef GLboolean (APIENTRYP RGLSYMGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP RGLSYMGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP RGLSYMGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef void (APIENTRYP RGLSYMGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP RGLSYMGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP RGLSYMGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP RGLSYMGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP RGLSYMGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP RGLSYMGLISVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +typedef GLuint (APIENTRYP RGLSYMGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +typedef void (APIENTRYP RGLSYMGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +typedef void (APIENTRYP RGLSYMGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP RGLSYMGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef GLsync (APIENTRYP RGLSYMGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (APIENTRYP RGLSYMGLISSYNCPROC) (GLsync sync); +typedef void (APIENTRYP RGLSYMGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP RGLSYMGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP RGLSYMGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP RGLSYMGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP RGLSYMGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGARBPROC) (GLfloat value); +typedef void (APIENTRYP RGLSYMGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +typedef void (APIENTRYP RGLSYMGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); +typedef GLboolean (APIENTRYP RGLSYMGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); +typedef void (APIENTRYP RGLSYMGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); +typedef GLboolean (APIENTRYP RGLSYMGLISSAMPLERPROC) (GLuint sampler); +typedef void (APIENTRYP RGLSYMGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLQUERYCOUNTERPROC) (GLuint id, GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP RGLSYMGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); +typedef void (APIENTRYP RGLSYMGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (APIENTRYP RGLSYMGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); +typedef GLint (APIENTRYP RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef GLuint (APIENTRYP RGLSYMGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +typedef void (APIENTRYP RGLSYMGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP RGLSYMGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLRESUMETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP RGLSYMGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP RGLSYMGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (APIENTRYP RGLSYMGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (APIENTRYP RGLSYMGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const *strings); +typedef void (APIENTRYP RGLSYMGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); +typedef void (APIENTRYP RGLSYMGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); +typedef void (APIENTRYP RGLSYMGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam); +typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP RGLSYMGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP RGLSYMGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP RGLSYMGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP RGLSYMGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); +typedef void (APIENTRYP RGLSYMGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +typedef void (APIENTRYP RGLSYMGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP RGLSYMGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP RGLSYMGLMEMORYBARRIERPROC) (GLbitfield barriers); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); +typedef void (APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +typedef void (APIENTRYP RGLSYMGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void (APIENTRYP RGLSYMGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (APIENTRYP RGLSYMGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP RGLSYMGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP RGLSYMGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +typedef GLuint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); + +#define glBlendColor __rglgen_glBlendColor +#define glBlendEquation __rglgen_glBlendEquation +#define glDrawRangeElements __rglgen_glDrawRangeElements +#define glTexImage3D __rglgen_glTexImage3D +#define glTexSubImage3D __rglgen_glTexSubImage3D +#define glCopyTexSubImage3D __rglgen_glCopyTexSubImage3D +#define glColorTable __rglgen_glColorTable +#define glColorTableParameterfv __rglgen_glColorTableParameterfv +#define glColorTableParameteriv __rglgen_glColorTableParameteriv +#define glCopyColorTable __rglgen_glCopyColorTable +#define glGetColorTable __rglgen_glGetColorTable +#define glGetColorTableParameterfv __rglgen_glGetColorTableParameterfv +#define glGetColorTableParameteriv __rglgen_glGetColorTableParameteriv +#define glColorSubTable __rglgen_glColorSubTable +#define glCopyColorSubTable __rglgen_glCopyColorSubTable +#define glConvolutionFilter1D __rglgen_glConvolutionFilter1D +#define glConvolutionFilter2D __rglgen_glConvolutionFilter2D +#define glConvolutionParameterf __rglgen_glConvolutionParameterf +#define glConvolutionParameterfv __rglgen_glConvolutionParameterfv +#define glConvolutionParameteri __rglgen_glConvolutionParameteri +#define glConvolutionParameteriv __rglgen_glConvolutionParameteriv +#define glCopyConvolutionFilter1D __rglgen_glCopyConvolutionFilter1D +#define glCopyConvolutionFilter2D __rglgen_glCopyConvolutionFilter2D +#define glGetConvolutionFilter __rglgen_glGetConvolutionFilter +#define glGetConvolutionParameterfv __rglgen_glGetConvolutionParameterfv +#define glGetConvolutionParameteriv __rglgen_glGetConvolutionParameteriv +#define glGetSeparableFilter __rglgen_glGetSeparableFilter +#define glSeparableFilter2D __rglgen_glSeparableFilter2D +#define glGetHistogram __rglgen_glGetHistogram +#define glGetHistogramParameterfv __rglgen_glGetHistogramParameterfv +#define glGetHistogramParameteriv __rglgen_glGetHistogramParameteriv +#define glGetMinmax __rglgen_glGetMinmax +#define glGetMinmaxParameterfv __rglgen_glGetMinmaxParameterfv +#define glGetMinmaxParameteriv __rglgen_glGetMinmaxParameteriv +#define glHistogram __rglgen_glHistogram +#define glMinmax __rglgen_glMinmax +#define glResetHistogram __rglgen_glResetHistogram +#define glResetMinmax __rglgen_glResetMinmax +#define glActiveTexture __rglgen_glActiveTexture +#define glSampleCoverage __rglgen_glSampleCoverage +#define glCompressedTexImage3D __rglgen_glCompressedTexImage3D +#define glCompressedTexImage2D __rglgen_glCompressedTexImage2D +#define glCompressedTexImage1D __rglgen_glCompressedTexImage1D +#define glCompressedTexSubImage3D __rglgen_glCompressedTexSubImage3D +#define glCompressedTexSubImage2D __rglgen_glCompressedTexSubImage2D +#define glCompressedTexSubImage1D __rglgen_glCompressedTexSubImage1D +#define glGetCompressedTexImage __rglgen_glGetCompressedTexImage +#define glClientActiveTexture __rglgen_glClientActiveTexture +#define glMultiTexCoord1d __rglgen_glMultiTexCoord1d +#define glMultiTexCoord1dv __rglgen_glMultiTexCoord1dv +#define glMultiTexCoord1f __rglgen_glMultiTexCoord1f +#define glMultiTexCoord1fv __rglgen_glMultiTexCoord1fv +#define glMultiTexCoord1i __rglgen_glMultiTexCoord1i +#define glMultiTexCoord1iv __rglgen_glMultiTexCoord1iv +#define glMultiTexCoord1s __rglgen_glMultiTexCoord1s +#define glMultiTexCoord1sv __rglgen_glMultiTexCoord1sv +#define glMultiTexCoord2d __rglgen_glMultiTexCoord2d +#define glMultiTexCoord2dv __rglgen_glMultiTexCoord2dv +#define glMultiTexCoord2f __rglgen_glMultiTexCoord2f +#define glMultiTexCoord2fv __rglgen_glMultiTexCoord2fv +#define glMultiTexCoord2i __rglgen_glMultiTexCoord2i +#define glMultiTexCoord2iv __rglgen_glMultiTexCoord2iv +#define glMultiTexCoord2s __rglgen_glMultiTexCoord2s +#define glMultiTexCoord2sv __rglgen_glMultiTexCoord2sv +#define glMultiTexCoord3d __rglgen_glMultiTexCoord3d +#define glMultiTexCoord3dv __rglgen_glMultiTexCoord3dv +#define glMultiTexCoord3f __rglgen_glMultiTexCoord3f +#define glMultiTexCoord3fv __rglgen_glMultiTexCoord3fv +#define glMultiTexCoord3i __rglgen_glMultiTexCoord3i +#define glMultiTexCoord3iv __rglgen_glMultiTexCoord3iv +#define glMultiTexCoord3s __rglgen_glMultiTexCoord3s +#define glMultiTexCoord3sv __rglgen_glMultiTexCoord3sv +#define glMultiTexCoord4d __rglgen_glMultiTexCoord4d +#define glMultiTexCoord4dv __rglgen_glMultiTexCoord4dv +#define glMultiTexCoord4f __rglgen_glMultiTexCoord4f +#define glMultiTexCoord4fv __rglgen_glMultiTexCoord4fv +#define glMultiTexCoord4i __rglgen_glMultiTexCoord4i +#define glMultiTexCoord4iv __rglgen_glMultiTexCoord4iv +#define glMultiTexCoord4s __rglgen_glMultiTexCoord4s +#define glMultiTexCoord4sv __rglgen_glMultiTexCoord4sv +#define glLoadTransposeMatrixf __rglgen_glLoadTransposeMatrixf +#define glLoadTransposeMatrixd __rglgen_glLoadTransposeMatrixd +#define glMultTransposeMatrixf __rglgen_glMultTransposeMatrixf +#define glMultTransposeMatrixd __rglgen_glMultTransposeMatrixd +#define glBlendFuncSeparate __rglgen_glBlendFuncSeparate +#define glMultiDrawArrays __rglgen_glMultiDrawArrays +#define glMultiDrawElements __rglgen_glMultiDrawElements +#define glPointParameterf __rglgen_glPointParameterf +#define glPointParameterfv __rglgen_glPointParameterfv +#define glPointParameteri __rglgen_glPointParameteri +#define glPointParameteriv __rglgen_glPointParameteriv +#define glFogCoordf __rglgen_glFogCoordf +#define glFogCoordfv __rglgen_glFogCoordfv +#define glFogCoordd __rglgen_glFogCoordd +#define glFogCoorddv __rglgen_glFogCoorddv +#define glFogCoordPointer __rglgen_glFogCoordPointer +#define glSecondaryColor3b __rglgen_glSecondaryColor3b +#define glSecondaryColor3bv __rglgen_glSecondaryColor3bv +#define glSecondaryColor3d __rglgen_glSecondaryColor3d +#define glSecondaryColor3dv __rglgen_glSecondaryColor3dv +#define glSecondaryColor3f __rglgen_glSecondaryColor3f +#define glSecondaryColor3fv __rglgen_glSecondaryColor3fv +#define glSecondaryColor3i __rglgen_glSecondaryColor3i +#define glSecondaryColor3iv __rglgen_glSecondaryColor3iv +#define glSecondaryColor3s __rglgen_glSecondaryColor3s +#define glSecondaryColor3sv __rglgen_glSecondaryColor3sv +#define glSecondaryColor3ub __rglgen_glSecondaryColor3ub +#define glSecondaryColor3ubv __rglgen_glSecondaryColor3ubv +#define glSecondaryColor3ui __rglgen_glSecondaryColor3ui +#define glSecondaryColor3uiv __rglgen_glSecondaryColor3uiv +#define glSecondaryColor3us __rglgen_glSecondaryColor3us +#define glSecondaryColor3usv __rglgen_glSecondaryColor3usv +#define glSecondaryColorPointer __rglgen_glSecondaryColorPointer +#define glWindowPos2d __rglgen_glWindowPos2d +#define glWindowPos2dv __rglgen_glWindowPos2dv +#define glWindowPos2f __rglgen_glWindowPos2f +#define glWindowPos2fv __rglgen_glWindowPos2fv +#define glWindowPos2i __rglgen_glWindowPos2i +#define glWindowPos2iv __rglgen_glWindowPos2iv +#define glWindowPos2s __rglgen_glWindowPos2s +#define glWindowPos2sv __rglgen_glWindowPos2sv +#define glWindowPos3d __rglgen_glWindowPos3d +#define glWindowPos3dv __rglgen_glWindowPos3dv +#define glWindowPos3f __rglgen_glWindowPos3f +#define glWindowPos3fv __rglgen_glWindowPos3fv +#define glWindowPos3i __rglgen_glWindowPos3i +#define glWindowPos3iv __rglgen_glWindowPos3iv +#define glWindowPos3s __rglgen_glWindowPos3s +#define glWindowPos3sv __rglgen_glWindowPos3sv +#define glGenQueries __rglgen_glGenQueries +#define glDeleteQueries __rglgen_glDeleteQueries +#define glIsQuery __rglgen_glIsQuery +#define glBeginQuery __rglgen_glBeginQuery +#define glEndQuery __rglgen_glEndQuery +#define glGetQueryiv __rglgen_glGetQueryiv +#define glGetQueryObjectiv __rglgen_glGetQueryObjectiv +#define glGetQueryObjectuiv __rglgen_glGetQueryObjectuiv +#define glBindBuffer __rglgen_glBindBuffer +#define glDeleteBuffers __rglgen_glDeleteBuffers +#define glGenBuffers __rglgen_glGenBuffers +#define glIsBuffer __rglgen_glIsBuffer +#define glBufferData __rglgen_glBufferData +#define glBufferSubData __rglgen_glBufferSubData +#define glGetBufferSubData __rglgen_glGetBufferSubData +#define glMapBuffer __rglgen_glMapBuffer +#define glUnmapBuffer __rglgen_glUnmapBuffer +#define glGetBufferParameteriv __rglgen_glGetBufferParameteriv +#define glGetBufferPointerv __rglgen_glGetBufferPointerv +#define glBlendEquationSeparate __rglgen_glBlendEquationSeparate +#define glDrawBuffers __rglgen_glDrawBuffers +#define glStencilOpSeparate __rglgen_glStencilOpSeparate +#define glStencilFuncSeparate __rglgen_glStencilFuncSeparate +#define glStencilMaskSeparate __rglgen_glStencilMaskSeparate +#define glAttachShader __rglgen_glAttachShader +#define glBindAttribLocation __rglgen_glBindAttribLocation +#define glCompileShader __rglgen_glCompileShader +#define glCreateProgram __rglgen_glCreateProgram +#define glCreateShader __rglgen_glCreateShader +#define glDeleteProgram __rglgen_glDeleteProgram +#define glDeleteShader __rglgen_glDeleteShader +#define glDetachShader __rglgen_glDetachShader +#define glDisableVertexAttribArray __rglgen_glDisableVertexAttribArray +#define glEnableVertexAttribArray __rglgen_glEnableVertexAttribArray +#define glGetActiveAttrib __rglgen_glGetActiveAttrib +#define glGetActiveUniform __rglgen_glGetActiveUniform +#define glGetAttachedShaders __rglgen_glGetAttachedShaders +#define glGetAttribLocation __rglgen_glGetAttribLocation +#define glGetProgramiv __rglgen_glGetProgramiv +#define glGetProgramInfoLog __rglgen_glGetProgramInfoLog +#define glGetShaderiv __rglgen_glGetShaderiv +#define glGetShaderInfoLog __rglgen_glGetShaderInfoLog +#define glGetShaderSource __rglgen_glGetShaderSource +#define glGetUniformLocation __rglgen_glGetUniformLocation +#define glGetUniformfv __rglgen_glGetUniformfv +#define glGetUniformiv __rglgen_glGetUniformiv +#define glGetVertexAttribdv __rglgen_glGetVertexAttribdv +#define glGetVertexAttribfv __rglgen_glGetVertexAttribfv +#define glGetVertexAttribiv __rglgen_glGetVertexAttribiv +#define glGetVertexAttribPointerv __rglgen_glGetVertexAttribPointerv +#define glIsProgram __rglgen_glIsProgram +#define glIsShader __rglgen_glIsShader +#define glLinkProgram __rglgen_glLinkProgram +#define glShaderSource __rglgen_glShaderSource +#define glUseProgram __rglgen_glUseProgram +#define glUniform1f __rglgen_glUniform1f +#define glUniform2f __rglgen_glUniform2f +#define glUniform3f __rglgen_glUniform3f +#define glUniform4f __rglgen_glUniform4f +#define glUniform1i __rglgen_glUniform1i +#define glUniform2i __rglgen_glUniform2i +#define glUniform3i __rglgen_glUniform3i +#define glUniform4i __rglgen_glUniform4i +#define glUniform1fv __rglgen_glUniform1fv +#define glUniform2fv __rglgen_glUniform2fv +#define glUniform3fv __rglgen_glUniform3fv +#define glUniform4fv __rglgen_glUniform4fv +#define glUniform1iv __rglgen_glUniform1iv +#define glUniform2iv __rglgen_glUniform2iv +#define glUniform3iv __rglgen_glUniform3iv +#define glUniform4iv __rglgen_glUniform4iv +#define glUniformMatrix2fv __rglgen_glUniformMatrix2fv +#define glUniformMatrix3fv __rglgen_glUniformMatrix3fv +#define glUniformMatrix4fv __rglgen_glUniformMatrix4fv +#define glValidateProgram __rglgen_glValidateProgram +#define glVertexAttrib1d __rglgen_glVertexAttrib1d +#define glVertexAttrib1dv __rglgen_glVertexAttrib1dv +#define glVertexAttrib1f __rglgen_glVertexAttrib1f +#define glVertexAttrib1fv __rglgen_glVertexAttrib1fv +#define glVertexAttrib1s __rglgen_glVertexAttrib1s +#define glVertexAttrib1sv __rglgen_glVertexAttrib1sv +#define glVertexAttrib2d __rglgen_glVertexAttrib2d +#define glVertexAttrib2dv __rglgen_glVertexAttrib2dv +#define glVertexAttrib2f __rglgen_glVertexAttrib2f +#define glVertexAttrib2fv __rglgen_glVertexAttrib2fv +#define glVertexAttrib2s __rglgen_glVertexAttrib2s +#define glVertexAttrib2sv __rglgen_glVertexAttrib2sv +#define glVertexAttrib3d __rglgen_glVertexAttrib3d +#define glVertexAttrib3dv __rglgen_glVertexAttrib3dv +#define glVertexAttrib3f __rglgen_glVertexAttrib3f +#define glVertexAttrib3fv __rglgen_glVertexAttrib3fv +#define glVertexAttrib3s __rglgen_glVertexAttrib3s +#define glVertexAttrib3sv __rglgen_glVertexAttrib3sv +#define glVertexAttrib4Nbv __rglgen_glVertexAttrib4Nbv +#define glVertexAttrib4Niv __rglgen_glVertexAttrib4Niv +#define glVertexAttrib4Nsv __rglgen_glVertexAttrib4Nsv +#define glVertexAttrib4Nub __rglgen_glVertexAttrib4Nub +#define glVertexAttrib4Nubv __rglgen_glVertexAttrib4Nubv +#define glVertexAttrib4Nuiv __rglgen_glVertexAttrib4Nuiv +#define glVertexAttrib4Nusv __rglgen_glVertexAttrib4Nusv +#define glVertexAttrib4bv __rglgen_glVertexAttrib4bv +#define glVertexAttrib4d __rglgen_glVertexAttrib4d +#define glVertexAttrib4dv __rglgen_glVertexAttrib4dv +#define glVertexAttrib4f __rglgen_glVertexAttrib4f +#define glVertexAttrib4fv __rglgen_glVertexAttrib4fv +#define glVertexAttrib4iv __rglgen_glVertexAttrib4iv +#define glVertexAttrib4s __rglgen_glVertexAttrib4s +#define glVertexAttrib4sv __rglgen_glVertexAttrib4sv +#define glVertexAttrib4ubv __rglgen_glVertexAttrib4ubv +#define glVertexAttrib4uiv __rglgen_glVertexAttrib4uiv +#define glVertexAttrib4usv __rglgen_glVertexAttrib4usv +#define glVertexAttribPointer __rglgen_glVertexAttribPointer +#define glUniformMatrix2x3fv __rglgen_glUniformMatrix2x3fv +#define glUniformMatrix3x2fv __rglgen_glUniformMatrix3x2fv +#define glUniformMatrix2x4fv __rglgen_glUniformMatrix2x4fv +#define glUniformMatrix4x2fv __rglgen_glUniformMatrix4x2fv +#define glUniformMatrix3x4fv __rglgen_glUniformMatrix3x4fv +#define glUniformMatrix4x3fv __rglgen_glUniformMatrix4x3fv +#define glColorMaski __rglgen_glColorMaski +#define glGetBooleani_v __rglgen_glGetBooleani_v +#define glGetIntegeri_v __rglgen_glGetIntegeri_v +#define glEnablei __rglgen_glEnablei +#define glDisablei __rglgen_glDisablei +#define glIsEnabledi __rglgen_glIsEnabledi +#define glBeginTransformFeedback __rglgen_glBeginTransformFeedback +#define glEndTransformFeedback __rglgen_glEndTransformFeedback +#define glBindBufferRange __rglgen_glBindBufferRange +#define glBindBufferBase __rglgen_glBindBufferBase +#define glTransformFeedbackVaryings __rglgen_glTransformFeedbackVaryings +#define glGetTransformFeedbackVarying __rglgen_glGetTransformFeedbackVarying +#define glClampColor __rglgen_glClampColor +#define glBeginConditionalRender __rglgen_glBeginConditionalRender +#define glEndConditionalRender __rglgen_glEndConditionalRender +#define glVertexAttribIPointer __rglgen_glVertexAttribIPointer +#define glGetVertexAttribIiv __rglgen_glGetVertexAttribIiv +#define glGetVertexAttribIuiv __rglgen_glGetVertexAttribIuiv +#define glVertexAttribI1i __rglgen_glVertexAttribI1i +#define glVertexAttribI2i __rglgen_glVertexAttribI2i +#define glVertexAttribI3i __rglgen_glVertexAttribI3i +#define glVertexAttribI4i __rglgen_glVertexAttribI4i +#define glVertexAttribI1ui __rglgen_glVertexAttribI1ui +#define glVertexAttribI2ui __rglgen_glVertexAttribI2ui +#define glVertexAttribI3ui __rglgen_glVertexAttribI3ui +#define glVertexAttribI4ui __rglgen_glVertexAttribI4ui +#define glVertexAttribI1iv __rglgen_glVertexAttribI1iv +#define glVertexAttribI2iv __rglgen_glVertexAttribI2iv +#define glVertexAttribI3iv __rglgen_glVertexAttribI3iv +#define glVertexAttribI4iv __rglgen_glVertexAttribI4iv +#define glVertexAttribI1uiv __rglgen_glVertexAttribI1uiv +#define glVertexAttribI2uiv __rglgen_glVertexAttribI2uiv +#define glVertexAttribI3uiv __rglgen_glVertexAttribI3uiv +#define glVertexAttribI4uiv __rglgen_glVertexAttribI4uiv +#define glVertexAttribI4bv __rglgen_glVertexAttribI4bv +#define glVertexAttribI4sv __rglgen_glVertexAttribI4sv +#define glVertexAttribI4ubv __rglgen_glVertexAttribI4ubv +#define glVertexAttribI4usv __rglgen_glVertexAttribI4usv +#define glGetUniformuiv __rglgen_glGetUniformuiv +#define glBindFragDataLocation __rglgen_glBindFragDataLocation +#define glGetFragDataLocation __rglgen_glGetFragDataLocation +#define glUniform1ui __rglgen_glUniform1ui +#define glUniform2ui __rglgen_glUniform2ui +#define glUniform3ui __rglgen_glUniform3ui +#define glUniform4ui __rglgen_glUniform4ui +#define glUniform1uiv __rglgen_glUniform1uiv +#define glUniform2uiv __rglgen_glUniform2uiv +#define glUniform3uiv __rglgen_glUniform3uiv +#define glUniform4uiv __rglgen_glUniform4uiv +#define glTexParameterIiv __rglgen_glTexParameterIiv +#define glTexParameterIuiv __rglgen_glTexParameterIuiv +#define glGetTexParameterIiv __rglgen_glGetTexParameterIiv +#define glGetTexParameterIuiv __rglgen_glGetTexParameterIuiv +#define glClearBufferiv __rglgen_glClearBufferiv +#define glClearBufferuiv __rglgen_glClearBufferuiv +#define glClearBufferfv __rglgen_glClearBufferfv +#define glClearBufferfi __rglgen_glClearBufferfi +#define glGetStringi __rglgen_glGetStringi +#define glDrawArraysInstanced __rglgen_glDrawArraysInstanced +#define glDrawElementsInstanced __rglgen_glDrawElementsInstanced +#define glTexBuffer __rglgen_glTexBuffer +#define glPrimitiveRestartIndex __rglgen_glPrimitiveRestartIndex +#define glGetInteger64i_v __rglgen_glGetInteger64i_v +#define glGetBufferParameteri64v __rglgen_glGetBufferParameteri64v +#define glFramebufferTexture __rglgen_glFramebufferTexture +#define glVertexAttribDivisor __rglgen_glVertexAttribDivisor +#define glMinSampleShading __rglgen_glMinSampleShading +#define glBlendEquationi __rglgen_glBlendEquationi +#define glBlendEquationSeparatei __rglgen_glBlendEquationSeparatei +#define glBlendFunci __rglgen_glBlendFunci +#define glBlendFuncSeparatei __rglgen_glBlendFuncSeparatei +#define glActiveTextureARB __rglgen_glActiveTextureARB +#define glClientActiveTextureARB __rglgen_glClientActiveTextureARB +#define glMultiTexCoord1dARB __rglgen_glMultiTexCoord1dARB +#define glMultiTexCoord1dvARB __rglgen_glMultiTexCoord1dvARB +#define glMultiTexCoord1fARB __rglgen_glMultiTexCoord1fARB +#define glMultiTexCoord1fvARB __rglgen_glMultiTexCoord1fvARB +#define glMultiTexCoord1iARB __rglgen_glMultiTexCoord1iARB +#define glMultiTexCoord1ivARB __rglgen_glMultiTexCoord1ivARB +#define glMultiTexCoord1sARB __rglgen_glMultiTexCoord1sARB +#define glMultiTexCoord1svARB __rglgen_glMultiTexCoord1svARB +#define glMultiTexCoord2dARB __rglgen_glMultiTexCoord2dARB +#define glMultiTexCoord2dvARB __rglgen_glMultiTexCoord2dvARB +#define glMultiTexCoord2fARB __rglgen_glMultiTexCoord2fARB +#define glMultiTexCoord2fvARB __rglgen_glMultiTexCoord2fvARB +#define glMultiTexCoord2iARB __rglgen_glMultiTexCoord2iARB +#define glMultiTexCoord2ivARB __rglgen_glMultiTexCoord2ivARB +#define glMultiTexCoord2sARB __rglgen_glMultiTexCoord2sARB +#define glMultiTexCoord2svARB __rglgen_glMultiTexCoord2svARB +#define glMultiTexCoord3dARB __rglgen_glMultiTexCoord3dARB +#define glMultiTexCoord3dvARB __rglgen_glMultiTexCoord3dvARB +#define glMultiTexCoord3fARB __rglgen_glMultiTexCoord3fARB +#define glMultiTexCoord3fvARB __rglgen_glMultiTexCoord3fvARB +#define glMultiTexCoord3iARB __rglgen_glMultiTexCoord3iARB +#define glMultiTexCoord3ivARB __rglgen_glMultiTexCoord3ivARB +#define glMultiTexCoord3sARB __rglgen_glMultiTexCoord3sARB +#define glMultiTexCoord3svARB __rglgen_glMultiTexCoord3svARB +#define glMultiTexCoord4dARB __rglgen_glMultiTexCoord4dARB +#define glMultiTexCoord4dvARB __rglgen_glMultiTexCoord4dvARB +#define glMultiTexCoord4fARB __rglgen_glMultiTexCoord4fARB +#define glMultiTexCoord4fvARB __rglgen_glMultiTexCoord4fvARB +#define glMultiTexCoord4iARB __rglgen_glMultiTexCoord4iARB +#define glMultiTexCoord4ivARB __rglgen_glMultiTexCoord4ivARB +#define glMultiTexCoord4sARB __rglgen_glMultiTexCoord4sARB +#define glMultiTexCoord4svARB __rglgen_glMultiTexCoord4svARB +#define glLoadTransposeMatrixfARB __rglgen_glLoadTransposeMatrixfARB +#define glLoadTransposeMatrixdARB __rglgen_glLoadTransposeMatrixdARB +#define glMultTransposeMatrixfARB __rglgen_glMultTransposeMatrixfARB +#define glMultTransposeMatrixdARB __rglgen_glMultTransposeMatrixdARB +#define glSampleCoverageARB __rglgen_glSampleCoverageARB +#define glCompressedTexImage3DARB __rglgen_glCompressedTexImage3DARB +#define glCompressedTexImage2DARB __rglgen_glCompressedTexImage2DARB +#define glCompressedTexImage1DARB __rglgen_glCompressedTexImage1DARB +#define glCompressedTexSubImage3DARB __rglgen_glCompressedTexSubImage3DARB +#define glCompressedTexSubImage2DARB __rglgen_glCompressedTexSubImage2DARB +#define glCompressedTexSubImage1DARB __rglgen_glCompressedTexSubImage1DARB +#define glGetCompressedTexImageARB __rglgen_glGetCompressedTexImageARB +#define glPointParameterfARB __rglgen_glPointParameterfARB +#define glPointParameterfvARB __rglgen_glPointParameterfvARB +#define glWeightbvARB __rglgen_glWeightbvARB +#define glWeightsvARB __rglgen_glWeightsvARB +#define glWeightivARB __rglgen_glWeightivARB +#define glWeightfvARB __rglgen_glWeightfvARB +#define glWeightdvARB __rglgen_glWeightdvARB +#define glWeightubvARB __rglgen_glWeightubvARB +#define glWeightusvARB __rglgen_glWeightusvARB +#define glWeightuivARB __rglgen_glWeightuivARB +#define glWeightPointerARB __rglgen_glWeightPointerARB +#define glVertexBlendARB __rglgen_glVertexBlendARB +#define glCurrentPaletteMatrixARB __rglgen_glCurrentPaletteMatrixARB +#define glMatrixIndexubvARB __rglgen_glMatrixIndexubvARB +#define glMatrixIndexusvARB __rglgen_glMatrixIndexusvARB +#define glMatrixIndexuivARB __rglgen_glMatrixIndexuivARB +#define glMatrixIndexPointerARB __rglgen_glMatrixIndexPointerARB +#define glWindowPos2dARB __rglgen_glWindowPos2dARB +#define glWindowPos2dvARB __rglgen_glWindowPos2dvARB +#define glWindowPos2fARB __rglgen_glWindowPos2fARB +#define glWindowPos2fvARB __rglgen_glWindowPos2fvARB +#define glWindowPos2iARB __rglgen_glWindowPos2iARB +#define glWindowPos2ivARB __rglgen_glWindowPos2ivARB +#define glWindowPos2sARB __rglgen_glWindowPos2sARB +#define glWindowPos2svARB __rglgen_glWindowPos2svARB +#define glWindowPos3dARB __rglgen_glWindowPos3dARB +#define glWindowPos3dvARB __rglgen_glWindowPos3dvARB +#define glWindowPos3fARB __rglgen_glWindowPos3fARB +#define glWindowPos3fvARB __rglgen_glWindowPos3fvARB +#define glWindowPos3iARB __rglgen_glWindowPos3iARB +#define glWindowPos3ivARB __rglgen_glWindowPos3ivARB +#define glWindowPos3sARB __rglgen_glWindowPos3sARB +#define glWindowPos3svARB __rglgen_glWindowPos3svARB +#define glVertexAttrib1dARB __rglgen_glVertexAttrib1dARB +#define glVertexAttrib1dvARB __rglgen_glVertexAttrib1dvARB +#define glVertexAttrib1fARB __rglgen_glVertexAttrib1fARB +#define glVertexAttrib1fvARB __rglgen_glVertexAttrib1fvARB +#define glVertexAttrib1sARB __rglgen_glVertexAttrib1sARB +#define glVertexAttrib1svARB __rglgen_glVertexAttrib1svARB +#define glVertexAttrib2dARB __rglgen_glVertexAttrib2dARB +#define glVertexAttrib2dvARB __rglgen_glVertexAttrib2dvARB +#define glVertexAttrib2fARB __rglgen_glVertexAttrib2fARB +#define glVertexAttrib2fvARB __rglgen_glVertexAttrib2fvARB +#define glVertexAttrib2sARB __rglgen_glVertexAttrib2sARB +#define glVertexAttrib2svARB __rglgen_glVertexAttrib2svARB +#define glVertexAttrib3dARB __rglgen_glVertexAttrib3dARB +#define glVertexAttrib3dvARB __rglgen_glVertexAttrib3dvARB +#define glVertexAttrib3fARB __rglgen_glVertexAttrib3fARB +#define glVertexAttrib3fvARB __rglgen_glVertexAttrib3fvARB +#define glVertexAttrib3sARB __rglgen_glVertexAttrib3sARB +#define glVertexAttrib3svARB __rglgen_glVertexAttrib3svARB +#define glVertexAttrib4NbvARB __rglgen_glVertexAttrib4NbvARB +#define glVertexAttrib4NivARB __rglgen_glVertexAttrib4NivARB +#define glVertexAttrib4NsvARB __rglgen_glVertexAttrib4NsvARB +#define glVertexAttrib4NubARB __rglgen_glVertexAttrib4NubARB +#define glVertexAttrib4NubvARB __rglgen_glVertexAttrib4NubvARB +#define glVertexAttrib4NuivARB __rglgen_glVertexAttrib4NuivARB +#define glVertexAttrib4NusvARB __rglgen_glVertexAttrib4NusvARB +#define glVertexAttrib4bvARB __rglgen_glVertexAttrib4bvARB +#define glVertexAttrib4dARB __rglgen_glVertexAttrib4dARB +#define glVertexAttrib4dvARB __rglgen_glVertexAttrib4dvARB +#define glVertexAttrib4fARB __rglgen_glVertexAttrib4fARB +#define glVertexAttrib4fvARB __rglgen_glVertexAttrib4fvARB +#define glVertexAttrib4ivARB __rglgen_glVertexAttrib4ivARB +#define glVertexAttrib4sARB __rglgen_glVertexAttrib4sARB +#define glVertexAttrib4svARB __rglgen_glVertexAttrib4svARB +#define glVertexAttrib4ubvARB __rglgen_glVertexAttrib4ubvARB +#define glVertexAttrib4uivARB __rglgen_glVertexAttrib4uivARB +#define glVertexAttrib4usvARB __rglgen_glVertexAttrib4usvARB +#define glVertexAttribPointerARB __rglgen_glVertexAttribPointerARB +#define glEnableVertexAttribArrayARB __rglgen_glEnableVertexAttribArrayARB +#define glDisableVertexAttribArrayARB __rglgen_glDisableVertexAttribArrayARB +#define glProgramStringARB __rglgen_glProgramStringARB +#define glBindProgramARB __rglgen_glBindProgramARB +#define glDeleteProgramsARB __rglgen_glDeleteProgramsARB +#define glGenProgramsARB __rglgen_glGenProgramsARB +#define glProgramEnvParameter4dARB __rglgen_glProgramEnvParameter4dARB +#define glProgramEnvParameter4dvARB __rglgen_glProgramEnvParameter4dvARB +#define glProgramEnvParameter4fARB __rglgen_glProgramEnvParameter4fARB +#define glProgramEnvParameter4fvARB __rglgen_glProgramEnvParameter4fvARB +#define glProgramLocalParameter4dARB __rglgen_glProgramLocalParameter4dARB +#define glProgramLocalParameter4dvARB __rglgen_glProgramLocalParameter4dvARB +#define glProgramLocalParameter4fARB __rglgen_glProgramLocalParameter4fARB +#define glProgramLocalParameter4fvARB __rglgen_glProgramLocalParameter4fvARB +#define glGetProgramEnvParameterdvARB __rglgen_glGetProgramEnvParameterdvARB +#define glGetProgramEnvParameterfvARB __rglgen_glGetProgramEnvParameterfvARB +#define glGetProgramLocalParameterdvARB __rglgen_glGetProgramLocalParameterdvARB +#define glGetProgramLocalParameterfvARB __rglgen_glGetProgramLocalParameterfvARB +#define glGetProgramivARB __rglgen_glGetProgramivARB +#define glGetProgramStringARB __rglgen_glGetProgramStringARB +#define glGetVertexAttribdvARB __rglgen_glGetVertexAttribdvARB +#define glGetVertexAttribfvARB __rglgen_glGetVertexAttribfvARB +#define glGetVertexAttribivARB __rglgen_glGetVertexAttribivARB +#define glGetVertexAttribPointervARB __rglgen_glGetVertexAttribPointervARB +#define glIsProgramARB __rglgen_glIsProgramARB +#define glBindBufferARB __rglgen_glBindBufferARB +#define glDeleteBuffersARB __rglgen_glDeleteBuffersARB +#define glGenBuffersARB __rglgen_glGenBuffersARB +#define glIsBufferARB __rglgen_glIsBufferARB +#define glBufferDataARB __rglgen_glBufferDataARB +#define glBufferSubDataARB __rglgen_glBufferSubDataARB +#define glGetBufferSubDataARB __rglgen_glGetBufferSubDataARB +#define glMapBufferARB __rglgen_glMapBufferARB +#define glUnmapBufferARB __rglgen_glUnmapBufferARB +#define glGetBufferParameterivARB __rglgen_glGetBufferParameterivARB +#define glGetBufferPointervARB __rglgen_glGetBufferPointervARB +#define glGenQueriesARB __rglgen_glGenQueriesARB +#define glDeleteQueriesARB __rglgen_glDeleteQueriesARB +#define glIsQueryARB __rglgen_glIsQueryARB +#define glBeginQueryARB __rglgen_glBeginQueryARB +#define glEndQueryARB __rglgen_glEndQueryARB +#define glGetQueryivARB __rglgen_glGetQueryivARB +#define glGetQueryObjectivARB __rglgen_glGetQueryObjectivARB +#define glGetQueryObjectuivARB __rglgen_glGetQueryObjectuivARB +#define glDeleteObjectARB __rglgen_glDeleteObjectARB +#define glGetHandleARB __rglgen_glGetHandleARB +#define glDetachObjectARB __rglgen_glDetachObjectARB +#define glCreateShaderObjectARB __rglgen_glCreateShaderObjectARB +#define glShaderSourceARB __rglgen_glShaderSourceARB +#define glCompileShaderARB __rglgen_glCompileShaderARB +#define glCreateProgramObjectARB __rglgen_glCreateProgramObjectARB +#define glAttachObjectARB __rglgen_glAttachObjectARB +#define glLinkProgramARB __rglgen_glLinkProgramARB +#define glUseProgramObjectARB __rglgen_glUseProgramObjectARB +#define glValidateProgramARB __rglgen_glValidateProgramARB +#define glUniform1fARB __rglgen_glUniform1fARB +#define glUniform2fARB __rglgen_glUniform2fARB +#define glUniform3fARB __rglgen_glUniform3fARB +#define glUniform4fARB __rglgen_glUniform4fARB +#define glUniform1iARB __rglgen_glUniform1iARB +#define glUniform2iARB __rglgen_glUniform2iARB +#define glUniform3iARB __rglgen_glUniform3iARB +#define glUniform4iARB __rglgen_glUniform4iARB +#define glUniform1fvARB __rglgen_glUniform1fvARB +#define glUniform2fvARB __rglgen_glUniform2fvARB +#define glUniform3fvARB __rglgen_glUniform3fvARB +#define glUniform4fvARB __rglgen_glUniform4fvARB +#define glUniform1ivARB __rglgen_glUniform1ivARB +#define glUniform2ivARB __rglgen_glUniform2ivARB +#define glUniform3ivARB __rglgen_glUniform3ivARB +#define glUniform4ivARB __rglgen_glUniform4ivARB +#define glUniformMatrix2fvARB __rglgen_glUniformMatrix2fvARB +#define glUniformMatrix3fvARB __rglgen_glUniformMatrix3fvARB +#define glUniformMatrix4fvARB __rglgen_glUniformMatrix4fvARB +#define glGetObjectParameterfvARB __rglgen_glGetObjectParameterfvARB +#define glGetObjectParameterivARB __rglgen_glGetObjectParameterivARB +#define glGetInfoLogARB __rglgen_glGetInfoLogARB +#define glGetAttachedObjectsARB __rglgen_glGetAttachedObjectsARB +#define glGetUniformLocationARB __rglgen_glGetUniformLocationARB +#define glGetActiveUniformARB __rglgen_glGetActiveUniformARB +#define glGetUniformfvARB __rglgen_glGetUniformfvARB +#define glGetUniformivARB __rglgen_glGetUniformivARB +#define glGetShaderSourceARB __rglgen_glGetShaderSourceARB +#define glBindAttribLocationARB __rglgen_glBindAttribLocationARB +#define glGetActiveAttribARB __rglgen_glGetActiveAttribARB +#define glGetAttribLocationARB __rglgen_glGetAttribLocationARB +#define glDrawBuffersARB __rglgen_glDrawBuffersARB +#define glClampColorARB __rglgen_glClampColorARB +#define glDrawArraysInstancedARB __rglgen_glDrawArraysInstancedARB +#define glDrawElementsInstancedARB __rglgen_glDrawElementsInstancedARB +#define glIsRenderbuffer __rglgen_glIsRenderbuffer +#define glBindRenderbuffer __rglgen_glBindRenderbuffer +#define glDeleteRenderbuffers __rglgen_glDeleteRenderbuffers +#define glGenRenderbuffers __rglgen_glGenRenderbuffers +#define glRenderbufferStorage __rglgen_glRenderbufferStorage +#define glGetRenderbufferParameteriv __rglgen_glGetRenderbufferParameteriv +#define glIsFramebuffer __rglgen_glIsFramebuffer +#define glBindFramebuffer __rglgen_glBindFramebuffer +#define glDeleteFramebuffers __rglgen_glDeleteFramebuffers +#define glGenFramebuffers __rglgen_glGenFramebuffers +#define glCheckFramebufferStatus __rglgen_glCheckFramebufferStatus +#define glFramebufferTexture1D __rglgen_glFramebufferTexture1D +#define glFramebufferTexture2D __rglgen_glFramebufferTexture2D +#define glFramebufferTexture3D __rglgen_glFramebufferTexture3D +#define glFramebufferRenderbuffer __rglgen_glFramebufferRenderbuffer +#define glGetFramebufferAttachmentParameteriv __rglgen_glGetFramebufferAttachmentParameteriv +#define glGenerateMipmap __rglgen_glGenerateMipmap +#define glBlitFramebuffer __rglgen_glBlitFramebuffer +#define glRenderbufferStorageMultisample __rglgen_glRenderbufferStorageMultisample +#define glFramebufferTextureLayer __rglgen_glFramebufferTextureLayer +#define glProgramParameteriARB __rglgen_glProgramParameteriARB +#define glFramebufferTextureARB __rglgen_glFramebufferTextureARB +#define glFramebufferTextureLayerARB __rglgen_glFramebufferTextureLayerARB +#define glFramebufferTextureFaceARB __rglgen_glFramebufferTextureFaceARB +#define glVertexAttribDivisorARB __rglgen_glVertexAttribDivisorARB +#define glMapBufferRange __rglgen_glMapBufferRange +#define glFlushMappedBufferRange __rglgen_glFlushMappedBufferRange +#define glTexBufferARB __rglgen_glTexBufferARB +#define glBindVertexArray __rglgen_glBindVertexArray +#define glDeleteVertexArrays __rglgen_glDeleteVertexArrays +#define glGenVertexArrays __rglgen_glGenVertexArrays +#define glIsVertexArray __rglgen_glIsVertexArray +#define glGetUniformIndices __rglgen_glGetUniformIndices +#define glGetActiveUniformsiv __rglgen_glGetActiveUniformsiv +#define glGetActiveUniformName __rglgen_glGetActiveUniformName +#define glGetUniformBlockIndex __rglgen_glGetUniformBlockIndex +#define glGetActiveUniformBlockiv __rglgen_glGetActiveUniformBlockiv +#define glGetActiveUniformBlockName __rglgen_glGetActiveUniformBlockName +#define glUniformBlockBinding __rglgen_glUniformBlockBinding +#define glCopyBufferSubData __rglgen_glCopyBufferSubData +#define glDrawElementsBaseVertex __rglgen_glDrawElementsBaseVertex +#define glDrawRangeElementsBaseVertex __rglgen_glDrawRangeElementsBaseVertex +#define glDrawElementsInstancedBaseVertex __rglgen_glDrawElementsInstancedBaseVertex +#define glMultiDrawElementsBaseVertex __rglgen_glMultiDrawElementsBaseVertex +#define glProvokingVertex __rglgen_glProvokingVertex +#define glFenceSync __rglgen_glFenceSync +#define glIsSync __rglgen_glIsSync +#define glDeleteSync __rglgen_glDeleteSync +#define glClientWaitSync __rglgen_glClientWaitSync +#define glWaitSync __rglgen_glWaitSync +#define glGetInteger64v __rglgen_glGetInteger64v +#define glGetSynciv __rglgen_glGetSynciv +#define glTexImage2DMultisample __rglgen_glTexImage2DMultisample +#define glTexImage3DMultisample __rglgen_glTexImage3DMultisample +#define glGetMultisamplefv __rglgen_glGetMultisamplefv +#define glSampleMaski __rglgen_glSampleMaski +#define glBlendEquationiARB __rglgen_glBlendEquationiARB +#define glBlendEquationSeparateiARB __rglgen_glBlendEquationSeparateiARB +#define glBlendFunciARB __rglgen_glBlendFunciARB +#define glBlendFuncSeparateiARB __rglgen_glBlendFuncSeparateiARB +#define glMinSampleShadingARB __rglgen_glMinSampleShadingARB +#define glNamedStringARB __rglgen_glNamedStringARB +#define glDeleteNamedStringARB __rglgen_glDeleteNamedStringARB +#define glCompileShaderIncludeARB __rglgen_glCompileShaderIncludeARB +#define glIsNamedStringARB __rglgen_glIsNamedStringARB +#define glGetNamedStringARB __rglgen_glGetNamedStringARB +#define glGetNamedStringivARB __rglgen_glGetNamedStringivARB +#define glBindFragDataLocationIndexed __rglgen_glBindFragDataLocationIndexed +#define glGetFragDataIndex __rglgen_glGetFragDataIndex +#define glGenSamplers __rglgen_glGenSamplers +#define glDeleteSamplers __rglgen_glDeleteSamplers +#define glIsSampler __rglgen_glIsSampler +#define glBindSampler __rglgen_glBindSampler +#define glSamplerParameteri __rglgen_glSamplerParameteri +#define glSamplerParameteriv __rglgen_glSamplerParameteriv +#define glSamplerParameterf __rglgen_glSamplerParameterf +#define glSamplerParameterfv __rglgen_glSamplerParameterfv +#define glSamplerParameterIiv __rglgen_glSamplerParameterIiv +#define glSamplerParameterIuiv __rglgen_glSamplerParameterIuiv +#define glGetSamplerParameteriv __rglgen_glGetSamplerParameteriv +#define glGetSamplerParameterIiv __rglgen_glGetSamplerParameterIiv +#define glGetSamplerParameterfv __rglgen_glGetSamplerParameterfv +#define glGetSamplerParameterIuiv __rglgen_glGetSamplerParameterIuiv +#define glQueryCounter __rglgen_glQueryCounter +#define glGetQueryObjecti64v __rglgen_glGetQueryObjecti64v +#define glGetQueryObjectui64v __rglgen_glGetQueryObjectui64v +#define glVertexP2ui __rglgen_glVertexP2ui +#define glVertexP2uiv __rglgen_glVertexP2uiv +#define glVertexP3ui __rglgen_glVertexP3ui +#define glVertexP3uiv __rglgen_glVertexP3uiv +#define glVertexP4ui __rglgen_glVertexP4ui +#define glVertexP4uiv __rglgen_glVertexP4uiv +#define glTexCoordP1ui __rglgen_glTexCoordP1ui +#define glTexCoordP1uiv __rglgen_glTexCoordP1uiv +#define glTexCoordP2ui __rglgen_glTexCoordP2ui +#define glTexCoordP2uiv __rglgen_glTexCoordP2uiv +#define glTexCoordP3ui __rglgen_glTexCoordP3ui +#define glTexCoordP3uiv __rglgen_glTexCoordP3uiv +#define glTexCoordP4ui __rglgen_glTexCoordP4ui +#define glTexCoordP4uiv __rglgen_glTexCoordP4uiv +#define glMultiTexCoordP1ui __rglgen_glMultiTexCoordP1ui +#define glMultiTexCoordP1uiv __rglgen_glMultiTexCoordP1uiv +#define glMultiTexCoordP2ui __rglgen_glMultiTexCoordP2ui +#define glMultiTexCoordP2uiv __rglgen_glMultiTexCoordP2uiv +#define glMultiTexCoordP3ui __rglgen_glMultiTexCoordP3ui +#define glMultiTexCoordP3uiv __rglgen_glMultiTexCoordP3uiv +#define glMultiTexCoordP4ui __rglgen_glMultiTexCoordP4ui +#define glMultiTexCoordP4uiv __rglgen_glMultiTexCoordP4uiv +#define glNormalP3ui __rglgen_glNormalP3ui +#define glNormalP3uiv __rglgen_glNormalP3uiv +#define glColorP3ui __rglgen_glColorP3ui +#define glColorP3uiv __rglgen_glColorP3uiv +#define glColorP4ui __rglgen_glColorP4ui +#define glColorP4uiv __rglgen_glColorP4uiv +#define glSecondaryColorP3ui __rglgen_glSecondaryColorP3ui +#define glSecondaryColorP3uiv __rglgen_glSecondaryColorP3uiv +#define glVertexAttribP1ui __rglgen_glVertexAttribP1ui +#define glVertexAttribP1uiv __rglgen_glVertexAttribP1uiv +#define glVertexAttribP2ui __rglgen_glVertexAttribP2ui +#define glVertexAttribP2uiv __rglgen_glVertexAttribP2uiv +#define glVertexAttribP3ui __rglgen_glVertexAttribP3ui +#define glVertexAttribP3uiv __rglgen_glVertexAttribP3uiv +#define glVertexAttribP4ui __rglgen_glVertexAttribP4ui +#define glVertexAttribP4uiv __rglgen_glVertexAttribP4uiv +#define glDrawArraysIndirect __rglgen_glDrawArraysIndirect +#define glDrawElementsIndirect __rglgen_glDrawElementsIndirect +#define glUniform1d __rglgen_glUniform1d +#define glUniform2d __rglgen_glUniform2d +#define glUniform3d __rglgen_glUniform3d +#define glUniform4d __rglgen_glUniform4d +#define glUniform1dv __rglgen_glUniform1dv +#define glUniform2dv __rglgen_glUniform2dv +#define glUniform3dv __rglgen_glUniform3dv +#define glUniform4dv __rglgen_glUniform4dv +#define glUniformMatrix2dv __rglgen_glUniformMatrix2dv +#define glUniformMatrix3dv __rglgen_glUniformMatrix3dv +#define glUniformMatrix4dv __rglgen_glUniformMatrix4dv +#define glUniformMatrix2x3dv __rglgen_glUniformMatrix2x3dv +#define glUniformMatrix2x4dv __rglgen_glUniformMatrix2x4dv +#define glUniformMatrix3x2dv __rglgen_glUniformMatrix3x2dv +#define glUniformMatrix3x4dv __rglgen_glUniformMatrix3x4dv +#define glUniformMatrix4x2dv __rglgen_glUniformMatrix4x2dv +#define glUniformMatrix4x3dv __rglgen_glUniformMatrix4x3dv +#define glGetUniformdv __rglgen_glGetUniformdv +#define glGetSubroutineUniformLocation __rglgen_glGetSubroutineUniformLocation +#define glGetSubroutineIndex __rglgen_glGetSubroutineIndex +#define glGetActiveSubroutineUniformiv __rglgen_glGetActiveSubroutineUniformiv +#define glGetActiveSubroutineUniformName __rglgen_glGetActiveSubroutineUniformName +#define glGetActiveSubroutineName __rglgen_glGetActiveSubroutineName +#define glUniformSubroutinesuiv __rglgen_glUniformSubroutinesuiv +#define glGetUniformSubroutineuiv __rglgen_glGetUniformSubroutineuiv +#define glGetProgramStageiv __rglgen_glGetProgramStageiv +#define glPatchParameteri __rglgen_glPatchParameteri +#define glPatchParameterfv __rglgen_glPatchParameterfv +#define glBindTransformFeedback __rglgen_glBindTransformFeedback +#define glDeleteTransformFeedbacks __rglgen_glDeleteTransformFeedbacks +#define glGenTransformFeedbacks __rglgen_glGenTransformFeedbacks +#define glIsTransformFeedback __rglgen_glIsTransformFeedback +#define glPauseTransformFeedback __rglgen_glPauseTransformFeedback +#define glResumeTransformFeedback __rglgen_glResumeTransformFeedback +#define glDrawTransformFeedback __rglgen_glDrawTransformFeedback +#define glDrawTransformFeedbackStream __rglgen_glDrawTransformFeedbackStream +#define glBeginQueryIndexed __rglgen_glBeginQueryIndexed +#define glEndQueryIndexed __rglgen_glEndQueryIndexed +#define glGetQueryIndexediv __rglgen_glGetQueryIndexediv +#define glReleaseShaderCompiler __rglgen_glReleaseShaderCompiler +#define glShaderBinary __rglgen_glShaderBinary +#define glGetShaderPrecisionFormat __rglgen_glGetShaderPrecisionFormat +#define glDepthRangef __rglgen_glDepthRangef +#define glClearDepthf __rglgen_glClearDepthf +#define glGetProgramBinary __rglgen_glGetProgramBinary +#define glProgramBinary __rglgen_glProgramBinary +#define glProgramParameteri __rglgen_glProgramParameteri +#define glUseProgramStages __rglgen_glUseProgramStages +#define glActiveShaderProgram __rglgen_glActiveShaderProgram +#define glCreateShaderProgramv __rglgen_glCreateShaderProgramv +#define glBindProgramPipeline __rglgen_glBindProgramPipeline +#define glDeleteProgramPipelines __rglgen_glDeleteProgramPipelines +#define glGenProgramPipelines __rglgen_glGenProgramPipelines +#define glIsProgramPipeline __rglgen_glIsProgramPipeline +#define glGetProgramPipelineiv __rglgen_glGetProgramPipelineiv +#define glProgramUniform1i __rglgen_glProgramUniform1i +#define glProgramUniform1iv __rglgen_glProgramUniform1iv +#define glProgramUniform1f __rglgen_glProgramUniform1f +#define glProgramUniform1fv __rglgen_glProgramUniform1fv +#define glProgramUniform1d __rglgen_glProgramUniform1d +#define glProgramUniform1dv __rglgen_glProgramUniform1dv +#define glProgramUniform1ui __rglgen_glProgramUniform1ui +#define glProgramUniform1uiv __rglgen_glProgramUniform1uiv +#define glProgramUniform2i __rglgen_glProgramUniform2i +#define glProgramUniform2iv __rglgen_glProgramUniform2iv +#define glProgramUniform2f __rglgen_glProgramUniform2f +#define glProgramUniform2fv __rglgen_glProgramUniform2fv +#define glProgramUniform2d __rglgen_glProgramUniform2d +#define glProgramUniform2dv __rglgen_glProgramUniform2dv +#define glProgramUniform2ui __rglgen_glProgramUniform2ui +#define glProgramUniform2uiv __rglgen_glProgramUniform2uiv +#define glProgramUniform3i __rglgen_glProgramUniform3i +#define glProgramUniform3iv __rglgen_glProgramUniform3iv +#define glProgramUniform3f __rglgen_glProgramUniform3f +#define glProgramUniform3fv __rglgen_glProgramUniform3fv +#define glProgramUniform3d __rglgen_glProgramUniform3d +#define glProgramUniform3dv __rglgen_glProgramUniform3dv +#define glProgramUniform3ui __rglgen_glProgramUniform3ui +#define glProgramUniform3uiv __rglgen_glProgramUniform3uiv +#define glProgramUniform4i __rglgen_glProgramUniform4i +#define glProgramUniform4iv __rglgen_glProgramUniform4iv +#define glProgramUniform4f __rglgen_glProgramUniform4f +#define glProgramUniform4fv __rglgen_glProgramUniform4fv +#define glProgramUniform4d __rglgen_glProgramUniform4d +#define glProgramUniform4dv __rglgen_glProgramUniform4dv +#define glProgramUniform4ui __rglgen_glProgramUniform4ui +#define glProgramUniform4uiv __rglgen_glProgramUniform4uiv +#define glProgramUniformMatrix2fv __rglgen_glProgramUniformMatrix2fv +#define glProgramUniformMatrix3fv __rglgen_glProgramUniformMatrix3fv +#define glProgramUniformMatrix4fv __rglgen_glProgramUniformMatrix4fv +#define glProgramUniformMatrix2dv __rglgen_glProgramUniformMatrix2dv +#define glProgramUniformMatrix3dv __rglgen_glProgramUniformMatrix3dv +#define glProgramUniformMatrix4dv __rglgen_glProgramUniformMatrix4dv +#define glProgramUniformMatrix2x3fv __rglgen_glProgramUniformMatrix2x3fv +#define glProgramUniformMatrix3x2fv __rglgen_glProgramUniformMatrix3x2fv +#define glProgramUniformMatrix2x4fv __rglgen_glProgramUniformMatrix2x4fv +#define glProgramUniformMatrix4x2fv __rglgen_glProgramUniformMatrix4x2fv +#define glProgramUniformMatrix3x4fv __rglgen_glProgramUniformMatrix3x4fv +#define glProgramUniformMatrix4x3fv __rglgen_glProgramUniformMatrix4x3fv +#define glProgramUniformMatrix2x3dv __rglgen_glProgramUniformMatrix2x3dv +#define glProgramUniformMatrix3x2dv __rglgen_glProgramUniformMatrix3x2dv +#define glProgramUniformMatrix2x4dv __rglgen_glProgramUniformMatrix2x4dv +#define glProgramUniformMatrix4x2dv __rglgen_glProgramUniformMatrix4x2dv +#define glProgramUniformMatrix3x4dv __rglgen_glProgramUniformMatrix3x4dv +#define glProgramUniformMatrix4x3dv __rglgen_glProgramUniformMatrix4x3dv +#define glValidateProgramPipeline __rglgen_glValidateProgramPipeline +#define glGetProgramPipelineInfoLog __rglgen_glGetProgramPipelineInfoLog +#define glVertexAttribL1d __rglgen_glVertexAttribL1d +#define glVertexAttribL2d __rglgen_glVertexAttribL2d +#define glVertexAttribL3d __rglgen_glVertexAttribL3d +#define glVertexAttribL4d __rglgen_glVertexAttribL4d +#define glVertexAttribL1dv __rglgen_glVertexAttribL1dv +#define glVertexAttribL2dv __rglgen_glVertexAttribL2dv +#define glVertexAttribL3dv __rglgen_glVertexAttribL3dv +#define glVertexAttribL4dv __rglgen_glVertexAttribL4dv +#define glVertexAttribLPointer __rglgen_glVertexAttribLPointer +#define glGetVertexAttribLdv __rglgen_glGetVertexAttribLdv +#define glViewportArrayv __rglgen_glViewportArrayv +#define glViewportIndexedf __rglgen_glViewportIndexedf +#define glViewportIndexedfv __rglgen_glViewportIndexedfv +#define glScissorArrayv __rglgen_glScissorArrayv +#define glScissorIndexed __rglgen_glScissorIndexed +#define glScissorIndexedv __rglgen_glScissorIndexedv +#define glDepthRangeArrayv __rglgen_glDepthRangeArrayv +#define glDepthRangeIndexed __rglgen_glDepthRangeIndexed +#define glGetFloati_v __rglgen_glGetFloati_v +#define glGetDoublei_v __rglgen_glGetDoublei_v +#define glCreateSyncFromCLeventARB __rglgen_glCreateSyncFromCLeventARB +#define glDebugMessageControlARB __rglgen_glDebugMessageControlARB +#define glDebugMessageInsertARB __rglgen_glDebugMessageInsertARB +#define glDebugMessageCallbackARB __rglgen_glDebugMessageCallbackARB +#define glGetDebugMessageLogARB __rglgen_glGetDebugMessageLogARB +#define glGetGraphicsResetStatusARB __rglgen_glGetGraphicsResetStatusARB +#define glGetnMapdvARB __rglgen_glGetnMapdvARB +#define glGetnMapfvARB __rglgen_glGetnMapfvARB +#define glGetnMapivARB __rglgen_glGetnMapivARB +#define glGetnPixelMapfvARB __rglgen_glGetnPixelMapfvARB +#define glGetnPixelMapuivARB __rglgen_glGetnPixelMapuivARB +#define glGetnPixelMapusvARB __rglgen_glGetnPixelMapusvARB +#define glGetnPolygonStippleARB __rglgen_glGetnPolygonStippleARB +#define glGetnColorTableARB __rglgen_glGetnColorTableARB +#define glGetnConvolutionFilterARB __rglgen_glGetnConvolutionFilterARB +#define glGetnSeparableFilterARB __rglgen_glGetnSeparableFilterARB +#define glGetnHistogramARB __rglgen_glGetnHistogramARB +#define glGetnMinmaxARB __rglgen_glGetnMinmaxARB +#define glGetnTexImageARB __rglgen_glGetnTexImageARB +#define glReadnPixelsARB __rglgen_glReadnPixelsARB +#define glGetnCompressedTexImageARB __rglgen_glGetnCompressedTexImageARB +#define glGetnUniformfvARB __rglgen_glGetnUniformfvARB +#define glGetnUniformivARB __rglgen_glGetnUniformivARB +#define glGetnUniformuivARB __rglgen_glGetnUniformuivARB +#define glGetnUniformdvARB __rglgen_glGetnUniformdvARB +#define glDrawArraysInstancedBaseInstance __rglgen_glDrawArraysInstancedBaseInstance +#define glDrawElementsInstancedBaseInstance __rglgen_glDrawElementsInstancedBaseInstance +#define glDrawElementsInstancedBaseVertexBaseInstance __rglgen_glDrawElementsInstancedBaseVertexBaseInstance +#define glDrawTransformFeedbackInstanced __rglgen_glDrawTransformFeedbackInstanced +#define glDrawTransformFeedbackStreamInstanced __rglgen_glDrawTransformFeedbackStreamInstanced +#define glGetInternalformativ __rglgen_glGetInternalformativ +#define glGetActiveAtomicCounterBufferiv __rglgen_glGetActiveAtomicCounterBufferiv +#define glBindImageTexture __rglgen_glBindImageTexture +#define glMemoryBarrier __rglgen_glMemoryBarrier +#define glTexStorage1D __rglgen_glTexStorage1D +#define glTexStorage2D __rglgen_glTexStorage2D +#define glTexStorage3D __rglgen_glTexStorage3D +#define glDebugMessageControl __rglgen_glDebugMessageControl +#define glDebugMessageInsert __rglgen_glDebugMessageInsert +#define glDebugMessageCallback __rglgen_glDebugMessageCallback +#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog +#define glPushDebugGroup __rglgen_glPushDebugGroup +#define glPopDebugGroup __rglgen_glPopDebugGroup +#define glObjectLabel __rglgen_glObjectLabel +#define glGetObjectLabel __rglgen_glGetObjectLabel +#define glObjectPtrLabel __rglgen_glObjectPtrLabel +#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel +#define glClearBufferData __rglgen_glClearBufferData +#define glClearBufferSubData __rglgen_glClearBufferSubData +#define glDispatchCompute __rglgen_glDispatchCompute +#define glDispatchComputeIndirect __rglgen_glDispatchComputeIndirect +#define glCopyImageSubData __rglgen_glCopyImageSubData +#define glTextureView __rglgen_glTextureView +#define glBindVertexBuffer __rglgen_glBindVertexBuffer +#define glVertexAttribFormat __rglgen_glVertexAttribFormat +#define glVertexAttribIFormat __rglgen_glVertexAttribIFormat +#define glVertexAttribLFormat __rglgen_glVertexAttribLFormat +#define glVertexAttribBinding __rglgen_glVertexAttribBinding +#define glVertexBindingDivisor __rglgen_glVertexBindingDivisor +#define glFramebufferParameteri __rglgen_glFramebufferParameteri +#define glGetFramebufferParameteriv __rglgen_glGetFramebufferParameteriv +#define glGetInternalformati64v __rglgen_glGetInternalformati64v +#define glInvalidateTexSubImage __rglgen_glInvalidateTexSubImage +#define glInvalidateTexImage __rglgen_glInvalidateTexImage +#define glInvalidateBufferSubData __rglgen_glInvalidateBufferSubData +#define glInvalidateBufferData __rglgen_glInvalidateBufferData +#define glInvalidateFramebuffer __rglgen_glInvalidateFramebuffer +#define glInvalidateSubFramebuffer __rglgen_glInvalidateSubFramebuffer +#define glMultiDrawArraysIndirect __rglgen_glMultiDrawArraysIndirect +#define glMultiDrawElementsIndirect __rglgen_glMultiDrawElementsIndirect +#define glGetProgramInterfaceiv __rglgen_glGetProgramInterfaceiv +#define glGetProgramResourceIndex __rglgen_glGetProgramResourceIndex +#define glGetProgramResourceName __rglgen_glGetProgramResourceName +#define glGetProgramResourceiv __rglgen_glGetProgramResourceiv +#define glGetProgramResourceLocation __rglgen_glGetProgramResourceLocation +#define glGetProgramResourceLocationIndex __rglgen_glGetProgramResourceLocationIndex +#define glShaderStorageBlockBinding __rglgen_glShaderStorageBlockBinding +#define glTexBufferRange __rglgen_glTexBufferRange +#define glTexStorage2DMultisample __rglgen_glTexStorage2DMultisample +#define glTexStorage3DMultisample __rglgen_glTexStorage3DMultisample +#define glImageTransformParameteriHP __rglgen_glImageTransformParameteriHP +#define glImageTransformParameterfHP __rglgen_glImageTransformParameterfHP +#define glImageTransformParameterivHP __rglgen_glImageTransformParameterivHP +#define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP +#define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP +#define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP + +extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +extern RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +extern RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +extern RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +extern RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +extern RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; +extern RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; +extern RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; +extern RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; +extern RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; +extern RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; +extern RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; +extern RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; +extern RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; +extern RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; +extern RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; +extern RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; +extern RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; +extern RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; +extern RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; +extern RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; +extern RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; +extern RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; +extern RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; +extern RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; +extern RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; +extern RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; +extern RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; +extern RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; +extern RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; +extern RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; +extern RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; +extern RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; +extern RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; +extern RGLSYMGLMINMAXPROC __rglgen_glMinmax; +extern RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; +extern RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; +extern RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; +extern RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; +extern RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; +extern RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; +extern RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; +extern RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; +extern RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; +extern RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; +extern RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; +extern RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; +extern RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; +extern RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; +extern RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; +extern RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; +extern RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; +extern RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; +extern RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; +extern RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; +extern RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; +extern RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; +extern RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; +extern RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; +extern RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; +extern RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; +extern RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; +extern RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; +extern RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; +extern RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; +extern RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; +extern RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; +extern RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; +extern RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; +extern RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; +extern RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; +extern RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; +extern RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; +extern RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; +extern RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; +extern RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; +extern RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; +extern RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; +extern RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; +extern RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; +extern RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; +extern RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; +extern RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; +extern RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; +extern RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; +extern RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; +extern RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; +extern RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; +extern RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; +extern RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; +extern RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; +extern RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; +extern RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; +extern RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; +extern RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; +extern RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; +extern RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; +extern RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; +extern RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; +extern RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; +extern RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; +extern RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; +extern RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; +extern RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; +extern RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; +extern RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; +extern RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; +extern RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; +extern RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; +extern RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; +extern RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; +extern RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; +extern RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; +extern RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; +extern RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; +extern RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; +extern RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; +extern RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; +extern RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; +extern RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; +extern RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; +extern RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; +extern RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; +extern RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; +extern RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; +extern RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; +extern RGLSYMGLISQUERYPROC __rglgen_glIsQuery; +extern RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; +extern RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; +extern RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; +extern RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; +extern RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; +extern RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; +extern RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; +extern RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; +extern RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; +extern RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; +extern RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; +extern RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; +extern RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; +extern RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; +extern RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; +extern RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; +extern RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; +extern RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; +extern RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; +extern RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; +extern RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; +extern RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; +extern RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; +extern RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; +extern RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; +extern RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; +extern RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; +extern RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; +extern RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; +extern RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; +extern RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; +extern RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; +extern RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; +extern RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; +extern RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; +extern RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; +extern RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; +extern RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; +extern RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; +extern RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; +extern RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; +extern RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; +extern RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; +extern RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; +extern RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; +extern RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; +extern RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; +extern RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; +extern RGLSYMGLISSHADERPROC __rglgen_glIsShader; +extern RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; +extern RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; +extern RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; +extern RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; +extern RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; +extern RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; +extern RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; +extern RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; +extern RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; +extern RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; +extern RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; +extern RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; +extern RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; +extern RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; +extern RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; +extern RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; +extern RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; +extern RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; +extern RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; +extern RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; +extern RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; +extern RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; +extern RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; +extern RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; +extern RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; +extern RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; +extern RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; +extern RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; +extern RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; +extern RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; +extern RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; +extern RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; +extern RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; +extern RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; +extern RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; +extern RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; +extern RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; +extern RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; +extern RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; +extern RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; +extern RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; +extern RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; +extern RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; +extern RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; +extern RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; +extern RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; +extern RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; +extern RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; +extern RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; +extern RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; +extern RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; +extern RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; +extern RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; +extern RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; +extern RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; +extern RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; +extern RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; +extern RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; +extern RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; +extern RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; +extern RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; +extern RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; +extern RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; +extern RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; +extern RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; +extern RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; +extern RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; +extern RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; +extern RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; +extern RGLSYMGLENABLEIPROC __rglgen_glEnablei; +extern RGLSYMGLDISABLEIPROC __rglgen_glDisablei; +extern RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; +extern RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; +extern RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; +extern RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; +extern RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; +extern RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; +extern RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; +extern RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; +extern RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; +extern RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; +extern RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; +extern RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; +extern RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; +extern RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; +extern RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; +extern RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; +extern RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; +extern RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; +extern RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; +extern RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; +extern RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; +extern RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; +extern RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; +extern RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; +extern RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; +extern RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; +extern RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; +extern RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; +extern RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; +extern RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; +extern RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; +extern RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; +extern RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; +extern RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; +extern RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; +extern RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; +extern RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; +extern RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; +extern RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; +extern RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; +extern RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; +extern RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; +extern RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; +extern RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; +extern RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; +extern RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; +extern RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; +extern RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; +extern RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; +extern RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; +extern RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; +extern RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; +extern RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; +extern RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +extern RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +extern RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +extern RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +extern RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +extern RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +extern RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +extern RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +extern RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +extern RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +extern RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +extern RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +extern RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +extern RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; +extern RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; +extern RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; +extern RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; +extern RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; +extern RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; +extern RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; +extern RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; +extern RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; +extern RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; +extern RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; +extern RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; +extern RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; +extern RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; +extern RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; +extern RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; +extern RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; +extern RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; +extern RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; +extern RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; +extern RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; +extern RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; +extern RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; +extern RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; +extern RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; +extern RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; +extern RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; +extern RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; +extern RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; +extern RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; +extern RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; +extern RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; +extern RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; +extern RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; +extern RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +extern RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +extern RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; +extern RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; +extern RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +extern RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +extern RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; +extern RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; +extern RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; +extern RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; +extern RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; +extern RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; +extern RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; +extern RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; +extern RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; +extern RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; +extern RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +extern RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +extern RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +extern RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +extern RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +extern RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; +extern RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; +extern RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; +extern RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; +extern RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; +extern RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; +extern RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; +extern RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; +extern RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; +extern RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; +extern RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; +extern RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; +extern RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; +extern RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; +extern RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; +extern RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; +extern RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; +extern RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; +extern RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; +extern RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; +extern RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; +extern RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; +extern RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; +extern RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; +extern RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; +extern RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; +extern RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; +extern RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; +extern RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; +extern RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; +extern RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; +extern RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; +extern RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; +extern RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; +extern RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; +extern RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; +extern RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; +extern RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; +extern RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; +extern RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; +extern RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; +extern RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; +extern RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; +extern RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; +extern RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; +extern RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; +extern RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; +extern RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; +extern RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; +extern RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; +extern RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; +extern RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; +extern RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; +extern RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; +extern RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; +extern RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; +extern RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; +extern RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; +extern RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; +extern RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; +extern RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; +extern RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; +extern RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; +extern RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; +extern RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; +extern RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; +extern RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; +extern RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; +extern RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; +extern RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +extern RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +extern RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +extern RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +extern RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +extern RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; +extern RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; +extern RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; +extern RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; +extern RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; +extern RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; +extern RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; +extern RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; +extern RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; +extern RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; +extern RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; +extern RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; +extern RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; +extern RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; +extern RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; +extern RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; +extern RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; +extern RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; +extern RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; +extern RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; +extern RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; +extern RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; +extern RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; +extern RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; +extern RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; +extern RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; +extern RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; +extern RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; +extern RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; +extern RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; +extern RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; +extern RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; +extern RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; +extern RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; +extern RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; +extern RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; +extern RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; +extern RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; +extern RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; +extern RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; +extern RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; +extern RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; +extern RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; +extern RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; +extern RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; +extern RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; +extern RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; +extern RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; +extern RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; +extern RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; +extern RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; +extern RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; +extern RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; +extern RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; +extern RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; +extern RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; +extern RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; +extern RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; +extern RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +extern RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +extern RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +extern RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +extern RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +extern RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +extern RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +extern RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; +extern RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; +extern RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; +extern RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; +extern RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; +extern RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; +extern RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; +extern RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; +extern RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; +extern RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; +extern RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; +extern RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; +extern RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; +extern RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; +extern RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; +extern RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; +extern RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; +extern RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; +extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; +extern RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; +extern RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +extern RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +extern RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +extern RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +extern RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +extern RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +extern RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +extern RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +extern RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +extern RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; +extern RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; +extern RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; +extern RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; +extern RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; +extern RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; +extern RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; +extern RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; +extern RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; +extern RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; +extern RGLSYMGLISSYNCPROC __rglgen_glIsSync; +extern RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; +extern RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; +extern RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; +extern RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; +extern RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; +extern RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +extern RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +extern RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +extern RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +extern RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +extern RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +extern RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +extern RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +extern RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +extern RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +extern RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +extern RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +extern RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +extern RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; +extern RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; +extern RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; +extern RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; +extern RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; +extern RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; +extern RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; +extern RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; +extern RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; +extern RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; +extern RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; +extern RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; +extern RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; +extern RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; +extern RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; +extern RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; +extern RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; +extern RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; +extern RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; +extern RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; +extern RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; +extern RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; +extern RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; +extern RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; +extern RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; +extern RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; +extern RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; +extern RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; +extern RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; +extern RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; +extern RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; +extern RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; +extern RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; +extern RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; +extern RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; +extern RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; +extern RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; +extern RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; +extern RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; +extern RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; +extern RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; +extern RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; +extern RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; +extern RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; +extern RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; +extern RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; +extern RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; +extern RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; +extern RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; +extern RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; +extern RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; +extern RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; +extern RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; +extern RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; +extern RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; +extern RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; +extern RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; +extern RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; +extern RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; +extern RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; +extern RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; +extern RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; +extern RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; +extern RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; +extern RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; +extern RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; +extern RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; +extern RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; +extern RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; +extern RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; +extern RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; +extern RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; +extern RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; +extern RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; +extern RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; +extern RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; +extern RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; +extern RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; +extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; +extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; +extern RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; +extern RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; +extern RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; +extern RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; +extern RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; +extern RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; +extern RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; +extern RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; +extern RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; +extern RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; +extern RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; +extern RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; +extern RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; +extern RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; +extern RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; +extern RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; +extern RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; +extern RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; +extern RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; +extern RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; +extern RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; +extern RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; +extern RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; +extern RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; +extern RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; +extern RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; +extern RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; +extern RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; +extern RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; +extern RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; +extern RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; +extern RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; +extern RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; +extern RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; +extern RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; +extern RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; +extern RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; +extern RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; +extern RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; +extern RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; +extern RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; +extern RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; +extern RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; +extern RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; +extern RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; +extern RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; +extern RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; +extern RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; +extern RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; +extern RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; +extern RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; +extern RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; +extern RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; +extern RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; +extern RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; +extern RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; +extern RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; +extern RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; +extern RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; +extern RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; +extern RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; +extern RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; +extern RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; +extern RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; +extern RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; +extern RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; +extern RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; +extern RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; +extern RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; +extern RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; +extern RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; +extern RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; +extern RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; +extern RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; +extern RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; +extern RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; +extern RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; +extern RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; +extern RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; +extern RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; +extern RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; +extern RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; +extern RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; +extern RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; +extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; +extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; +extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; +extern RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; +extern RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; +extern RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; +extern RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; +extern RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; +extern RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; +extern RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; +extern RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; +extern RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; +extern RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; +extern RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; +extern RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; +extern RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; +extern RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; +extern RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; +extern RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; +extern RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; +extern RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; +extern RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +extern RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; +extern RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; +extern RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; +extern RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; +extern RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; +extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; +extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; +extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +extern RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +extern RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +extern RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +extern RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +extern RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +extern RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; +extern RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; +extern RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; +extern RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; +extern RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; +extern RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; +extern RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; +extern RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; +extern RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; +extern RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; +extern RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; +extern RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; +extern RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; +extern RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; +extern RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; +extern RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; +extern RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; +extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; +extern RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; +extern RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; +extern RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; +extern RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; +extern RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; +extern RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; +extern RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; +extern RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; +extern RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; +extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; +extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; + +struct rglgen_sym_map { const char *sym; void *ptr; }; +extern const struct rglgen_sym_map rglgen_symbol_map_rarch[]; // Avoid possible symbol collision. +#endif diff --git a/gfx/glsym/rglgen.c b/gfx/glsym/rglgen.c new file mode 100644 index 0000000000..a4369e4d1a --- /dev/null +++ b/gfx/glsym/rglgen.c @@ -0,0 +1,19 @@ +#include "rglgen.h" +#include "glsym.h" +#include + +void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, + const struct rglgen_sym_map *map) +{ + for (; map->sym; map++) + { + rglgen_func_t func = proc(map->sym); + memcpy(map->ptr, &func, sizeof(func)); + } +} + +void rglgen_resolve_symbols(rglgen_proc_address_t proc) +{ + rglgen_resolve_symbols_custom(proc, rglgen_symbol_map_rarch); +} + diff --git a/gfx/glsym/rglgen.h b/gfx/glsym/rglgen.h new file mode 100644 index 0000000000..a4ce2a3875 --- /dev/null +++ b/gfx/glsym/rglgen.h @@ -0,0 +1,47 @@ +#ifndef RGLGEN_H__ +#define RGLGEN_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_EGL +#include +#include +#endif + +#if defined(IOS) +#include +#include +#elif defined(__APPLE__) +#include +#include +#elif defined(HAVE_PSGL) +#include +#include +#include +#elif defined(HAVE_OPENGL_MODERN) +#include +#include +#elif defined(HAVE_OPENGLES2) +#include +#include +#elif defined(HAVE_OPENGLES1) +#include +#include +#else +#include +#include +#endif + +struct rglgen_sym_map; + +typedef void (*rglgen_func_t)(void); +typedef rglgen_func_t (*rglgen_proc_address_t)(const char*); +void rglgen_resolve_symbols(rglgen_proc_address_t proc); +void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, + const struct rglgen_sym_map *map); + + +#endif + diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 5a263475f0..d0e72204b2 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -58,68 +58,6 @@ #include "gl_common.h" #include "image.h" -#if defined(HAVE_OPENGLES2) || defined(HAVE_OPENGL_MODERN) || defined(__APPLE__) -#define pglCreateProgram glCreateProgram -#define pglUseProgram glUseProgram -#define pglCreateShader glCreateShader -#define pglDeleteShader glDeleteShader -#define pglShaderSource glShaderSource -#define pglCompileShader glCompileShader -#define pglAttachShader glAttachShader -#define pglDetachShader glDetachShader -#define pglLinkProgram glLinkProgram -#define pglGetUniformLocation glGetUniformLocation -#define pglUniform1i glUniform1i -#define pglUniform1f glUniform1f -#define pglUniform2fv glUniform2fv -#define pglUniform4fv glUniform4fv -#define pglUniformMatrix4fv glUniformMatrix4fv -#define pglGetShaderiv glGetShaderiv -#define pglGetShaderInfoLog glGetShaderInfoLog -#define pglGetProgramiv glGetProgramiv -#define pglGetProgramInfoLog glGetProgramInfoLog -#define pglDeleteProgram glDeleteProgram -#define pglGetAttachedShaders glGetAttachedShaders -#define pglGetAttribLocation glGetAttribLocation -#define pglEnableVertexAttribArray glEnableVertexAttribArray -#define pglDisableVertexAttribArray glDisableVertexAttribArray -#define pglVertexAttribPointer glVertexAttribPointer -#define pglGenBuffers glGenBuffers -#define pglBufferData glBufferData -#define pglDeleteBuffers glDeleteBuffers -#define pglBindBuffer glBindBuffer -#else -static PFNGLCREATEPROGRAMPROC pglCreateProgram; -static PFNGLUSEPROGRAMPROC pglUseProgram; -static PFNGLCREATESHADERPROC pglCreateShader; -static PFNGLDELETESHADERPROC pglDeleteShader; -static PFNGLSHADERSOURCEPROC pglShaderSource; -static PFNGLCOMPILESHADERPROC pglCompileShader; -static PFNGLATTACHSHADERPROC pglAttachShader; -static PFNGLDETACHSHADERPROC pglDetachShader; -static PFNGLLINKPROGRAMPROC pglLinkProgram; -static PFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation; -static PFNGLUNIFORM1IPROC pglUniform1i; -static PFNGLUNIFORM1FPROC pglUniform1f; -static PFNGLUNIFORM2FVPROC pglUniform2fv; -static PFNGLUNIFORM4FVPROC pglUniform4fv; -static PFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv; -static PFNGLGETSHADERIVPROC pglGetShaderiv; -static PFNGLGETSHADERINFOLOGPROC pglGetShaderInfoLog; -static PFNGLGETPROGRAMIVPROC pglGetProgramiv; -static PFNGLGETPROGRAMINFOLOGPROC pglGetProgramInfoLog; -static PFNGLDELETEPROGRAMPROC pglDeleteProgram; -static PFNGLGETATTACHEDSHADERSPROC pglGetAttachedShaders; -static PFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation; -static PFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray; -static PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray; -static PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer; -static PFNGLGENBUFFERSPROC pglGenBuffers; -static PFNGLBUFFERDATAPROC pglBufferData; -static PFNGLDELETEBUFFERSPROC pglDeleteBuffers; -static PFNGLBINDBUFFERPROC pglBindBuffer; -#endif - #ifdef HAVE_OPENGLES2 #define BORDER_FUNC GL_CLAMP_TO_EDGE #else @@ -312,14 +250,14 @@ static GLint get_uniform(GLuint prog, const char *base) char buf[64]; snprintf(buf, sizeof(buf), "%s%s", glsl_shader->prefix, base); - GLint loc = pglGetUniformLocation(prog, buf); + GLint loc = glGetUniformLocation(prog, buf); if (loc >= 0) return loc; for (unsigned i = 0; i < ARRAY_SIZE(glsl_prefixes); i++) { snprintf(buf, sizeof(buf), "%s%s", glsl_prefixes[i], base); - GLint loc = pglGetUniformLocation(prog, buf); + GLint loc = glGetUniformLocation(prog, buf); if (loc >= 0) return loc; } @@ -331,14 +269,14 @@ static GLint get_attrib(GLuint prog, const char *base) { char buf[64]; snprintf(buf, sizeof(buf), "%s%s", glsl_shader->prefix, base); - GLint loc = pglGetUniformLocation(prog, buf); + GLint loc = glGetUniformLocation(prog, buf); if (loc >= 0) return loc; for (unsigned i = 0; i < ARRAY_SIZE(glsl_prefixes); i++) { snprintf(buf, sizeof(buf), "%s%s", glsl_prefixes[i], base); - GLint loc = pglGetAttribLocation(prog, buf); + GLint loc = glGetAttribLocation(prog, buf); if (loc >= 0) return loc; } @@ -394,7 +332,7 @@ static void print_shader_log(GLuint obj) GLint info_len = 0; GLint max_len; - pglGetShaderiv(obj, GL_INFO_LOG_LENGTH, &max_len); + glGetShaderiv(obj, GL_INFO_LOG_LENGTH, &max_len); if (max_len == 0) return; @@ -403,7 +341,7 @@ static void print_shader_log(GLuint obj) if (!info_log) return; - pglGetShaderInfoLog(obj, max_len, &info_len, info_log); + glGetShaderInfoLog(obj, max_len, &info_len, info_log); if (info_len > 0) RARCH_LOG("Shader log: %s\n", info_log); @@ -416,7 +354,7 @@ static void print_linker_log(GLuint obj) GLint info_len = 0; GLint max_len; - pglGetProgramiv(obj, GL_INFO_LOG_LENGTH, &max_len); + glGetProgramiv(obj, GL_INFO_LOG_LENGTH, &max_len); if (max_len == 0) return; @@ -425,7 +363,7 @@ static void print_linker_log(GLuint obj) if (!info_log) return; - pglGetProgramInfoLog(obj, max_len, &info_len, info_log); + glGetProgramInfoLog(obj, max_len, &info_len, info_log); if (info_len > 0) RARCH_LOG("Linker log: %s\n", info_log); @@ -453,11 +391,11 @@ static bool compile_shader(GLuint shader, const char *define, const char *progra } const char *source[] = { version, define, program }; - pglShaderSource(shader, ARRAY_SIZE(source), source, NULL); - pglCompileShader(shader); + glShaderSource(shader, ARRAY_SIZE(source), source, NULL); + glCompileShader(shader); GLint status; - pglGetShaderiv(shader, GL_COMPILE_STATUS, &status); + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); print_shader_log(shader); return status == GL_TRUE; @@ -465,15 +403,15 @@ static bool compile_shader(GLuint shader, const char *define, const char *progra static bool link_program(GLuint prog) { - pglLinkProgram(prog); + glLinkProgram(prog); GLint status; - pglGetProgramiv(prog, GL_LINK_STATUS, &status); + glGetProgramiv(prog, GL_LINK_STATUS, &status); print_linker_log(prog); if (status == GL_TRUE) { - pglUseProgram(prog); + glUseProgram(prog); return true; } else @@ -482,34 +420,34 @@ static bool link_program(GLuint prog) static GLuint compile_program(const char *vertex, const char *fragment, unsigned i) { - GLuint prog = pglCreateProgram(); + GLuint prog = glCreateProgram(); if (!prog) return 0; if (vertex) { RARCH_LOG("Found GLSL vertex shader.\n"); - GLuint shader = pglCreateShader(GL_VERTEX_SHADER); + GLuint shader = glCreateShader(GL_VERTEX_SHADER); if (!compile_shader(shader, "#define VERTEX\n", vertex)) { RARCH_ERR("Failed to compile vertex shader #%u\n", i); return false; } - pglAttachShader(prog, shader); + glAttachShader(prog, shader); } if (fragment) { RARCH_LOG("Found GLSL fragment shader.\n"); - GLuint shader = pglCreateShader(GL_FRAGMENT_SHADER); + GLuint shader = glCreateShader(GL_FRAGMENT_SHADER); if (!compile_shader(shader, "#define FRAGMENT\n", fragment)) { RARCH_ERR("Failed to compile fragment shader #%u\n", i); return false; } - pglAttachShader(prog, shader); + glAttachShader(prog, shader); } if (vertex || fragment) @@ -521,10 +459,10 @@ static GLuint compile_program(const char *vertex, const char *fragment, unsigned return 0; } - pglUseProgram(prog); + glUseProgram(prog); GLint location = get_uniform(prog, "Texture"); - pglUniform1i(location, 0); - pglUseProgram(0); + glUniform1i(location, 0); + glUseProgram(0); } return prog; @@ -573,7 +511,7 @@ static bool compile_programs(GLuint *gl_prog) static void gl_glsl_reset_attrib(void) { for (unsigned i = 0; i < gl_attrib_index; i++) - pglDisableVertexAttribArray(gl_attribs[i]); + glDisableVertexAttribArray(gl_attribs[i]); gl_attrib_index = 0; } @@ -583,7 +521,7 @@ static void gl_glsl_set_vbo(GLfloat *buffer, size_t *buffer_elems, const GLfloat { //RARCH_LOG("[GL]: VBO updated with %u elems.\n", (unsigned)elems); memcpy(buffer, data, elems * sizeof(GLfloat)); - pglBufferData(GL_ARRAY_BUFFER, elems * sizeof(GLfloat), data, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, elems * sizeof(GLfloat), data, GL_STATIC_DRAW); *buffer_elems = elems; } } @@ -591,21 +529,21 @@ static void gl_glsl_set_vbo(GLfloat *buffer, size_t *buffer_elems, const GLfloat static void gl_glsl_set_attribs(GLuint vbo, GLfloat *buffer, size_t *buffer_elems, const GLfloat *data, size_t elems, const struct glsl_attrib *attrs, size_t num_attrs) { - pglBindBuffer(GL_ARRAY_BUFFER, vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); gl_glsl_set_vbo(buffer, buffer_elems, data, elems); for (size_t i = 0; i < num_attrs; i++) { GLint loc = attrs[i].loc; - pglEnableVertexAttribArray(loc); + glEnableVertexAttribArray(loc); gl_attribs[gl_attrib_index++] = loc; - pglVertexAttribPointer(loc, attrs[i].size, GL_FLOAT, GL_FALSE, 0, + glVertexAttribPointer(loc, attrs[i].size, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)(uintptr_t)attrs[i].offset); } - pglBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); } static void find_uniforms_frame(GLuint prog, struct shader_uniforms_frame *frame, const char *base) @@ -628,7 +566,7 @@ static void find_uniforms_frame(GLuint prog, struct shader_uniforms_frame *frame static void find_uniforms(GLuint prog, struct shader_uniforms *uni) { - pglUseProgram(prog); + glUseProgram(prog); uni->mvp = get_uniform(prog, "MVPMatrix"); uni->tex_coord = get_attrib(prog, "TexCoord"); @@ -644,7 +582,7 @@ static void find_uniforms(GLuint prog, struct shader_uniforms *uni) uni->frame_direction = get_uniform(prog, "FrameDirection"); for (unsigned i = 0; i < glsl_shader->luts; i++) - uni->lut_texture[i] = pglGetUniformLocation(prog, glsl_shader->lut[i].id); + uni->lut_texture[i] = glGetUniformLocation(prog, glsl_shader->lut[i].id); find_uniforms_frame(prog, &uni->orig, "Orig"); @@ -662,7 +600,7 @@ static void find_uniforms(GLuint prog, struct shader_uniforms *uni) find_uniforms_frame(prog, &uni->prev[i], frame_base); } - pglUseProgram(0); + glUseProgram(0); } static void gl_glsl_delete_shader(GLuint prog) @@ -670,22 +608,14 @@ static void gl_glsl_delete_shader(GLuint prog) GLsizei count; GLuint shaders[2] = {0}; - pglGetAttachedShaders(prog, 2, &count, shaders); + glGetAttachedShaders(prog, 2, &count, shaders); for (GLsizei i = 0; i < count; i++) { - pglDetachShader(prog, shaders[i]); - pglDeleteShader(shaders[i]); + glDetachShader(prog, shaders[i]); + glDeleteShader(shaders[i]); } - pglDeleteProgram(prog); -} - -// Platforms with broken get_proc_address. -// Assume functions are available without proc_address. -#undef LOAD_GL_SYM -#define LOAD_GL_SYM(SYM) if (!pgl##SYM) { \ - gfx_ctx_proc_t sym = glsl_get_proc_address("gl" #SYM); \ - memcpy(&(pgl##SYM), &sym, sizeof(sym)); \ + glDeleteProgram(prog); } static void gl_glsl_free_shader(void) @@ -706,7 +636,7 @@ static void gl_glsl_free_shader(void) static void gl_glsl_deinit(void) { - pglUseProgram(0); + glUseProgram(0); for (unsigned i = 0; i < GFX_MAX_SHADERS; i++) { if (gl_program[i] == 0 || (i && gl_program[i] == gl_program[0])) @@ -733,57 +663,26 @@ static void gl_glsl_deinit(void) for (unsigned i = 0; i < GFX_MAX_SHADERS; i++) { if (glsl_vbo[i].vbo_primary) - pglDeleteBuffers(1, &glsl_vbo[i].vbo_primary); + glDeleteBuffers(1, &glsl_vbo[i].vbo_primary); if (glsl_vbo[i].vbo_secondary) - pglDeleteBuffers(1, &glsl_vbo[i].vbo_secondary); + glDeleteBuffers(1, &glsl_vbo[i].vbo_secondary); } memset(&glsl_vbo, 0, sizeof(glsl_vbo)); } static bool gl_glsl_init(const char *path) { -#if !defined(HAVE_OPENGLES2) && !defined(HAVE_OPENGL_MODERN) && !defined(__APPLE__) - // Load shader functions. - LOAD_GL_SYM(CreateProgram); - LOAD_GL_SYM(UseProgram); - LOAD_GL_SYM(CreateShader); - LOAD_GL_SYM(DeleteShader); - LOAD_GL_SYM(ShaderSource); - LOAD_GL_SYM(CompileShader); - LOAD_GL_SYM(AttachShader); - LOAD_GL_SYM(DetachShader); - LOAD_GL_SYM(LinkProgram); - LOAD_GL_SYM(GetUniformLocation); - LOAD_GL_SYM(Uniform1i); - LOAD_GL_SYM(Uniform1f); - LOAD_GL_SYM(Uniform2fv); - LOAD_GL_SYM(Uniform4fv); - LOAD_GL_SYM(UniformMatrix4fv); - LOAD_GL_SYM(GetShaderiv); - LOAD_GL_SYM(GetShaderInfoLog); - LOAD_GL_SYM(GetProgramiv); - LOAD_GL_SYM(GetProgramInfoLog); - LOAD_GL_SYM(DeleteProgram); - LOAD_GL_SYM(GetAttachedShaders); - LOAD_GL_SYM(GetAttribLocation); - LOAD_GL_SYM(EnableVertexAttribArray); - LOAD_GL_SYM(DisableVertexAttribArray); - LOAD_GL_SYM(VertexAttribPointer); - LOAD_GL_SYM(GenBuffers); - LOAD_GL_SYM(BufferData); - LOAD_GL_SYM(DeleteBuffers); - LOAD_GL_SYM(BindBuffer); - +#ifndef HAVE_OPENGLES2 RARCH_LOG("Checking GLSL shader support ...\n"); - bool shader_support = pglCreateProgram && pglUseProgram && pglCreateShader - && pglDeleteShader && pglShaderSource && pglCompileShader && pglAttachShader - && pglDetachShader && pglLinkProgram && pglGetUniformLocation - && pglUniform1i && pglUniform1f && pglUniform2fv && pglUniform4fv && pglUniformMatrix4fv - && pglGetShaderiv && pglGetShaderInfoLog && pglGetProgramiv && pglGetProgramInfoLog - && pglDeleteProgram && pglGetAttachedShaders - && pglGetAttribLocation && pglEnableVertexAttribArray && pglDisableVertexAttribArray - && pglVertexAttribPointer - && pglGenBuffers && pglBufferData && pglDeleteBuffers && pglBindBuffer; + bool shader_support = glCreateProgram && glUseProgram && glCreateShader + && glDeleteShader && glShaderSource && glCompileShader && glAttachShader + && glDetachShader && glLinkProgram && glGetUniformLocation + && glUniform1i && glUniform1f && glUniform2fv && glUniform4fv && glUniformMatrix4fv + && glGetShaderiv && glGetShaderInfoLog && glGetProgramiv && glGetProgramInfoLog + && glDeleteProgram && glGetAttachedShaders + && glGetAttribLocation && glEnableVertexAttribArray && glDisableVertexAttribArray + && glVertexAttribPointer + && glGenBuffers && glBufferData && glDeleteBuffers && glBindBuffer; if (!shader_support) { @@ -919,8 +818,8 @@ static bool gl_glsl_init(const char *path) for (unsigned i = 0; i < GFX_MAX_SHADERS; i++) { - pglGenBuffers(1, &glsl_vbo[i].vbo_primary); - pglGenBuffers(1, &glsl_vbo[i].vbo_secondary); + glGenBuffers(1, &glsl_vbo[i].vbo_primary); + glGenBuffers(1, &glsl_vbo[i].vbo_secondary); } return true; @@ -961,33 +860,33 @@ static void gl_glsl_set_params(unsigned width, unsigned height, float texture_size[2] = {(float)tex_width, (float)tex_height}; if (uni->input_size >= 0) - pglUniform2fv(uni->input_size, 1, input_size); + glUniform2fv(uni->input_size, 1, input_size); if (uni->output_size >= 0) - pglUniform2fv(uni->output_size, 1, output_size); + glUniform2fv(uni->output_size, 1, output_size); if (uni->texture_size >= 0) - pglUniform2fv(uni->texture_size, 1, texture_size); + glUniform2fv(uni->texture_size, 1, texture_size); if (uni->frame_count >= 0 && active_index) { unsigned modulo = glsl_shader->pass[active_index - 1].frame_count_mod; if (modulo) frame_count %= modulo; - pglUniform1i(uni->frame_count, frame_count); + glUniform1i(uni->frame_count, frame_count); } if (uni->frame_direction >= 0) - pglUniform1i(uni->frame_direction, g_extern.frame_is_reverse ? -1 : 1); + glUniform1i(uni->frame_direction, g_extern.frame_is_reverse ? -1 : 1); for (unsigned i = 0; i < glsl_shader->luts; i++) { if (uni->lut_texture[i] >= 0) { // Have to rebind as HW render could override this. - pglActiveTexture(GL_TEXTURE0 + i + 1); + glActiveTexture(GL_TEXTURE0 + i + 1); glBindTexture(GL_TEXTURE_2D, gl_teximage[i]); - pglUniform1i(uni->lut_texture[i], i + 1); + glUniform1i(uni->lut_texture[i], i + 1); } } @@ -999,18 +898,18 @@ static void gl_glsl_set_params(unsigned width, unsigned height, if (uni->orig.texture >= 0) { // Bind original texture. - pglActiveTexture(GL_TEXTURE0 + texunit); - pglUniform1i(uni->orig.texture, texunit); + glActiveTexture(GL_TEXTURE0 + texunit); + glUniform1i(uni->orig.texture, texunit); glBindTexture(GL_TEXTURE_2D, info->tex); } texunit++; if (uni->orig.texture_size >= 0) - pglUniform2fv(uni->orig.texture_size, 1, info->tex_size); + glUniform2fv(uni->orig.texture_size, 1, info->tex_size); if (uni->orig.input_size >= 0) - pglUniform2fv(uni->orig.input_size, 1, info->input_size); + glUniform2fv(uni->orig.input_size, 1, info->input_size); // Pass texture coordinates. if (uni->orig.tex_coord >= 0) @@ -1028,7 +927,7 @@ static void gl_glsl_set_params(unsigned width, unsigned height, // Bind new texture in the chain. if (fbo_info_cnt > 0) { - pglActiveTexture(GL_TEXTURE0 + texunit + fbo_info_cnt - 1); + glActiveTexture(GL_TEXTURE0 + texunit + fbo_info_cnt - 1); glBindTexture(GL_TEXTURE_2D, fbo_info[fbo_info_cnt - 1].tex); } @@ -1036,15 +935,15 @@ static void gl_glsl_set_params(unsigned width, unsigned height, for (unsigned i = 0; i < fbo_info_cnt; i++) { if (uni->pass[i].texture) - pglUniform1i(uni->pass[i].texture, texunit); + glUniform1i(uni->pass[i].texture, texunit); texunit++; if (uni->pass[i].texture_size >= 0) - pglUniform2fv(uni->pass[i].texture_size, 1, fbo_info[i].tex_size); + glUniform2fv(uni->pass[i].texture_size, 1, fbo_info[i].tex_size); if (uni->pass[i].input_size >= 0) - pglUniform2fv(uni->pass[i].input_size, 1, fbo_info[i].input_size); + glUniform2fv(uni->pass[i].input_size, 1, fbo_info[i].input_size); if (uni->pass[i].tex_coord >= 0) { @@ -1063,7 +962,7 @@ static void gl_glsl_set_params(unsigned width, unsigned height, { // First pass, so unbind everything to avoid collitions. // Unbind ORIG. - pglActiveTexture(GL_TEXTURE0 + texunit); + glActiveTexture(GL_TEXTURE0 + texunit); glBindTexture(GL_TEXTURE_2D, 0); GLuint base_tex = texunit + 1; @@ -1072,7 +971,7 @@ static void gl_glsl_set_params(unsigned width, unsigned height, // sounds very shaky ... ;) for (unsigned i = 0; i < glsl_shader->passes; i++) { - pglActiveTexture(GL_TEXTURE0 + base_tex + i); + glActiveTexture(GL_TEXTURE0 + base_tex + i); glBindTexture(GL_TEXTURE_2D, 0); } } @@ -1082,18 +981,18 @@ static void gl_glsl_set_params(unsigned width, unsigned height, { if (uni->prev[i].texture >= 0) { - pglActiveTexture(GL_TEXTURE0 + texunit); + glActiveTexture(GL_TEXTURE0 + texunit); glBindTexture(GL_TEXTURE_2D, prev_info[i].tex); - pglUniform1i(uni->prev[i].texture, texunit++); + glUniform1i(uni->prev[i].texture, texunit++); } texunit++; if (uni->prev[i].texture_size >= 0) - pglUniform2fv(uni->prev[i].texture_size, 1, prev_info[i].tex_size); + glUniform2fv(uni->prev[i].texture_size, 1, prev_info[i].tex_size); if (uni->prev[i].input_size >= 0) - pglUniform2fv(uni->prev[i].input_size, 1, prev_info[i].input_size); + glUniform2fv(uni->prev[i].input_size, 1, prev_info[i].input_size); // Pass texture coordinates. if (uni->prev[i].tex_coord >= 0) @@ -1117,7 +1016,7 @@ static void gl_glsl_set_params(unsigned width, unsigned height, buffer, size, attribs, attribs_size); } - pglActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); if (gl_state_tracker) { @@ -1129,8 +1028,8 @@ static void gl_glsl_set_params(unsigned width, unsigned height, for (unsigned i = 0; i < cnt; i++) { - int location = pglGetUniformLocation(gl_program[active_index], info[i].id); - pglUniform1f(location, info[i].value); + int location = glGetUniformLocation(gl_program[active_index], info[i].id); + glUniform1f(location, info[i].value); } } } @@ -1142,7 +1041,7 @@ static bool gl_glsl_set_mvp(const math_matrix *mat) int loc = gl_uniforms[active_index].mvp; if (loc >= 0) - pglUniformMatrix4fv(loc, 1, GL_FALSE, mat->data); + glUniformMatrix4fv(loc, 1, GL_FALSE, mat->data); return true; } @@ -1227,7 +1126,7 @@ static void gl_glsl_use(unsigned index) gl_glsl_reset_attrib(); active_index = index; - pglUseProgram(gl_program[index]); + glUseProgram(gl_program[index]); } } diff --git a/qb/config.libs.sh b/qb/config.libs.sh index ab0d6c7d9c..98f2b54cc4 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -135,7 +135,7 @@ check_lib COREAUDIO "-framework AudioUnit" AudioUnitInitialize check_pkgconf SDL sdl 1.2.10 -if [ "$HAVE_OPENGL" != 'no' ]; then +if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_GLES" != 'yes' ]; then if [ "$OS" = 'Darwin' ]; then check_lib CG "-framework Cg" cgCreateContext else @@ -143,7 +143,7 @@ if [ "$HAVE_OPENGL" != 'no' ]; then check_lib_cxx CG -lCg cgCreateContext fi else - echo "Ignoring Cg. OpenGL is not enabled." + echo "Ignoring Cg. Desktop OpenGL is not enabled." HAVE_CG='no' fi From 2e397b1d6b5adcb6ca165eee472874847345ed7a Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 18:28:08 +0200 Subject: [PATCH 096/252] Win32 fixups. --- Makefile.win | 2 +- gfx/gl.c | 10 +--------- gfx/glsym/glsym_gl.c | 4 ---- gfx/glsym/glsym_gl.h | 4 ---- 4 files changed, 2 insertions(+), 18 deletions(-) diff --git a/Makefile.win b/Makefile.win index 8570bf3eaf..f2dc464da0 100644 --- a/Makefile.win +++ b/Makefile.win @@ -114,7 +114,7 @@ ifeq ($(HAVE_THREADS), 1) endif ifeq ($(HAVE_OPENGL), 1) - OBJ += gfx/gl.o gfx/math/matrix.o gfx/fonts/gl_font.o gfx/fonts/gl_raster_font.o gfx/gfx_context.o gfx/context/wgl_ctx.o gfx/shader_glsl.o gfx/glsym/rglgen.o gfx/glsym/glsym.o + OBJ += gfx/gl.o gfx/math/matrix.o gfx/fonts/gl_font.o gfx/fonts/gl_raster_font.o gfx/gfx_context.o gfx/context/wgl_ctx.o gfx/shader_glsl.o gfx/glsym/rglgen.o gfx/glsym/glsym_gl.o DEFINES += -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_GLSL -DHAVE_GL_SYNC LIBS += -lopengl32 -lgdi32 -lcomdlg32 endif diff --git a/gfx/gl.c b/gfx/gl.c index 9fd23ad623..06cef09ef8 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1617,13 +1617,6 @@ static void gl_set_nonblock_state(void *data, bool state) static bool resolve_extensions(gl_t *gl) { -#ifdef _WIN32 - // Win32 GL lib doesn't have some elementary functions needed. - // Need to load dynamically :( - if (!load_gl_proc_win32(gl)) - return false; -#endif - #ifndef HAVE_OPENGLES gl->core_context = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; RARCH_LOG("[GL]: Using Core GL context.\n"); @@ -1840,8 +1833,6 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } - rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); - RARCH_LOG("Found GL context: %s\n", gl->ctx_driver->ident); context_get_video_size_func(&gl->full_x, &gl->full_y); @@ -1867,6 +1858,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo const char *renderer = (const char*)glGetString(GL_RENDERER); RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); + rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); if (!resolve_extensions(gl)) diff --git a/gfx/glsym/glsym_gl.c b/gfx/glsym/glsym_gl.c index c5211476c7..0b092823dd 100644 --- a/gfx/glsym/glsym_gl.c +++ b/gfx/glsym/glsym_gl.c @@ -787,7 +787,6 @@ const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { SYM(CreateSyncFromCLeventARB), SYM(DebugMessageControlARB), SYM(DebugMessageInsertARB), - SYM(DebugMessageCallbackARB), SYM(GetDebugMessageLogARB), SYM(GetGraphicsResetStatusARB), SYM(GetnMapdvARB), @@ -823,7 +822,6 @@ const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { SYM(TexStorage3D), SYM(DebugMessageControl), SYM(DebugMessageInsert), - SYM(DebugMessageCallback), SYM(GetDebugMessageLog), SYM(PushDebugGroup), SYM(PopDebugGroup), @@ -1653,7 +1651,6 @@ RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; -RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -1689,7 +1686,6 @@ RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index e9b37c10a3..5be4ed5942 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -780,7 +780,6 @@ typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); @@ -816,7 +815,6 @@ typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); @@ -2508,7 +2506,6 @@ extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; -extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -2544,7 +2541,6 @@ extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; From d64c24248d384fa2a4045aa0e46b281729ad7d00 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 18:36:40 +0200 Subject: [PATCH 097/252] Use glsym wrapper in libretro-test-gl. --- gfx/gl.c | 6 +- libretro-test-gl/Makefile | 10 +- libretro-test-gl/glsym.h | 13 + libretro-test-gl/glsym_es2.c | 64 + libretro-test-gl/glsym_es2.h | 92 ++ libretro-test-gl/glsym_gl.c | 1735 ++++++++++++++++++++ libretro-test-gl/glsym_gl.h | 2593 ++++++++++++++++++++++++++++++ libretro-test-gl/libretro-test.c | 172 +- libretro-test-gl/rglgen.c | 19 + libretro-test-gl/rglgen.h | 47 + 10 files changed, 4607 insertions(+), 144 deletions(-) create mode 100644 libretro-test-gl/glsym.h create mode 100644 libretro-test-gl/glsym_es2.c create mode 100644 libretro-test-gl/glsym_es2.h create mode 100644 libretro-test-gl/glsym_gl.c create mode 100644 libretro-test-gl/glsym_gl.h create mode 100644 libretro-test-gl/rglgen.c create mode 100644 libretro-test-gl/rglgen.h diff --git a/gfx/gl.c b/gfx/gl.c index 06cef09ef8..d971cd43db 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -94,15 +94,11 @@ static inline bool gl_query_extension(gl_t *gl, const char *ext) if (gl->core_context) { #ifdef GL_NUM_EXTENSIONS - gl_get_stringi_proc proc = (gl_get_stringi_proc)gl->ctx_driver->get_proc_address("glGetStringi"); - if (!proc) - return false; - GLint exts = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &exts); for (GLint i = 0; i < exts; i++) { - const char *str = (const char*)proc(GL_EXTENSIONS, i); + const char *str = (const char*)glGetStringi(GL_EXTENSIONS, i); if (str && strstr(str, ext)) { ret = true; diff --git a/libretro-test-gl/Makefile b/libretro-test-gl/Makefile index 084e6ddd29..9479663718 100644 --- a/libretro-test-gl/Makefile +++ b/libretro-test-gl/Makefile @@ -91,18 +91,20 @@ else endif ifeq ($(platform), qnx) -CFLAGS += -Wc,-std=gnu99 + CFLAGS += -Wc,-std=gnu99 else -CFLAGS += -std=gnu99 + CFLAGS += -std=gnu99 endif -OBJECTS := libretro-test.o +OBJECTS := libretro-test.o rglgen.o CFLAGS += -Wall -pedantic $(fpic) ifeq ($(GLES), 1) - CFLAGS += -DGLES + CFLAGS += -DGLES -DHAVE_OPENGLES2 LIBS += -lGLESv2 + OBJECTS += glsym_es2.o else + OBJECTS += glsym_gl.o LIBS += $(GL_LIB) endif diff --git a/libretro-test-gl/glsym.h b/libretro-test-gl/glsym.h new file mode 100644 index 0000000000..64838fa2fe --- /dev/null +++ b/libretro-test-gl/glsym.h @@ -0,0 +1,13 @@ +#ifndef GLSYM_H__ +#define GLSYM_H__ + +#include "rglgen.h" + +#ifdef HAVE_OPENGLES2 +#include "glsym_es2.h" +#else +#include "glsym_gl.h" +#endif + +#endif + diff --git a/libretro-test-gl/glsym_es2.c b/libretro-test-gl/glsym_es2.c new file mode 100644 index 0000000000..26f2a44e72 --- /dev/null +++ b/libretro-test-gl/glsym_es2.c @@ -0,0 +1,64 @@ +#include "glsym.h" +#include +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map[] = { + SYM(EGLImageTargetTexture2DOES), + SYM(EGLImageTargetRenderbufferStorageOES), + SYM(GetProgramBinaryOES), + SYM(ProgramBinaryOES), + SYM(MapBufferOES), + SYM(UnmapBufferOES), + SYM(GetBufferPointervOES), + SYM(TexImage3DOES), + SYM(TexSubImage3DOES), + SYM(CopyTexSubImage3DOES), + SYM(CompressedTexImage3DOES), + SYM(CompressedTexSubImage3DOES), + SYM(FramebufferTexture3DOES), + SYM(BindVertexArrayOES), + SYM(DeleteVertexArraysOES), + SYM(GenVertexArraysOES), + SYM(IsVertexArrayOES), + SYM(DebugMessageControl), + SYM(DebugMessageInsert), + SYM(DebugMessageCallback), + SYM(GetDebugMessageLog), + SYM(PushDebugGroup), + SYM(PopDebugGroup), + SYM(ObjectLabel), + SYM(GetObjectLabel), + SYM(ObjectPtrLabel), + SYM(GetObjectPtrLabel), + SYM(GetPointerv), + + { NULL, NULL }, +}; +RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; + diff --git a/libretro-test-gl/glsym_es2.h b/libretro-test-gl/glsym_es2.h new file mode 100644 index 0000000000..fbe98c4b6c --- /dev/null +++ b/libretro-test-gl/glsym_es2.h @@ -0,0 +1,92 @@ +#ifndef RGLGEN_DECL_H__ +#define RGLGEN_DECL_H__ +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP RGLSYMGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +typedef void* (GL_APIENTRYP RGLSYMGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP RGLSYMGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP RGLSYMGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); +typedef void (GL_APIENTRYP RGLSYMGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP RGLSYMGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (GL_APIENTRYP RGLSYMGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP RGLSYMGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP RGLSYMGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params); + +#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES +#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES +#define glGetProgramBinaryOES __rglgen_glGetProgramBinaryOES +#define glProgramBinaryOES __rglgen_glProgramBinaryOES +#define glMapBufferOES __rglgen_glMapBufferOES +#define glUnmapBufferOES __rglgen_glUnmapBufferOES +#define glGetBufferPointervOES __rglgen_glGetBufferPointervOES +#define glTexImage3DOES __rglgen_glTexImage3DOES +#define glTexSubImage3DOES __rglgen_glTexSubImage3DOES +#define glCopyTexSubImage3DOES __rglgen_glCopyTexSubImage3DOES +#define glCompressedTexImage3DOES __rglgen_glCompressedTexImage3DOES +#define glCompressedTexSubImage3DOES __rglgen_glCompressedTexSubImage3DOES +#define glFramebufferTexture3DOES __rglgen_glFramebufferTexture3DOES +#define glBindVertexArrayOES __rglgen_glBindVertexArrayOES +#define glDeleteVertexArraysOES __rglgen_glDeleteVertexArraysOES +#define glGenVertexArraysOES __rglgen_glGenVertexArraysOES +#define glIsVertexArrayOES __rglgen_glIsVertexArrayOES +#define glDebugMessageControl __rglgen_glDebugMessageControl +#define glDebugMessageInsert __rglgen_glDebugMessageInsert +#define glDebugMessageCallback __rglgen_glDebugMessageCallback +#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog +#define glPushDebugGroup __rglgen_glPushDebugGroup +#define glPopDebugGroup __rglgen_glPopDebugGroup +#define glObjectLabel __rglgen_glObjectLabel +#define glGetObjectLabel __rglgen_glGetObjectLabel +#define glObjectPtrLabel __rglgen_glObjectPtrLabel +#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel +#define glGetPointerv __rglgen_glGetPointerv + +extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; +extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; +extern RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; +extern RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; +extern RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; +extern RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; +extern RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; +extern RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; +extern RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; +extern RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; +extern RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; +extern RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; +extern RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; +extern RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; +extern RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; +extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; +extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; + +struct rglgen_sym_map { const char *sym; void *ptr; }; +extern const struct rglgen_sym_map rglgen_symbol_map[]; +#endif diff --git a/libretro-test-gl/glsym_gl.c b/libretro-test-gl/glsym_gl.c new file mode 100644 index 0000000000..f81f74486d --- /dev/null +++ b/libretro-test-gl/glsym_gl.c @@ -0,0 +1,1735 @@ +#include "glsym.h" +#include + +#ifdef HAVE_OPENGLES2 +#error "Wrong symbol file included." +#endif + +#define SYM(x) { "gl" #x, &(gl##x) } +const struct rglgen_sym_map rglgen_symbol_map[] = { + SYM(BlendColor), + SYM(BlendEquation), + SYM(DrawRangeElements), + SYM(TexImage3D), + SYM(TexSubImage3D), + SYM(CopyTexSubImage3D), + SYM(ColorTable), + SYM(ColorTableParameterfv), + SYM(ColorTableParameteriv), + SYM(CopyColorTable), + SYM(GetColorTable), + SYM(GetColorTableParameterfv), + SYM(GetColorTableParameteriv), + SYM(ColorSubTable), + SYM(CopyColorSubTable), + SYM(ConvolutionFilter1D), + SYM(ConvolutionFilter2D), + SYM(ConvolutionParameterf), + SYM(ConvolutionParameterfv), + SYM(ConvolutionParameteri), + SYM(ConvolutionParameteriv), + SYM(CopyConvolutionFilter1D), + SYM(CopyConvolutionFilter2D), + SYM(GetConvolutionFilter), + SYM(GetConvolutionParameterfv), + SYM(GetConvolutionParameteriv), + SYM(GetSeparableFilter), + SYM(SeparableFilter2D), + SYM(GetHistogram), + SYM(GetHistogramParameterfv), + SYM(GetHistogramParameteriv), + SYM(GetMinmax), + SYM(GetMinmaxParameterfv), + SYM(GetMinmaxParameteriv), + SYM(Histogram), + SYM(Minmax), + SYM(ResetHistogram), + SYM(ResetMinmax), + SYM(ActiveTexture), + SYM(SampleCoverage), + SYM(CompressedTexImage3D), + SYM(CompressedTexImage2D), + SYM(CompressedTexImage1D), + SYM(CompressedTexSubImage3D), + SYM(CompressedTexSubImage2D), + SYM(CompressedTexSubImage1D), + SYM(GetCompressedTexImage), + SYM(ClientActiveTexture), + 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(LoadTransposeMatrixf), + SYM(LoadTransposeMatrixd), + SYM(MultTransposeMatrixf), + SYM(MultTransposeMatrixd), + SYM(BlendFuncSeparate), + SYM(MultiDrawArrays), + SYM(MultiDrawElements), + SYM(PointParameterf), + SYM(PointParameterfv), + SYM(PointParameteri), + SYM(PointParameteriv), + SYM(FogCoordf), + SYM(FogCoordfv), + SYM(FogCoordd), + SYM(FogCoorddv), + SYM(FogCoordPointer), + SYM(SecondaryColor3b), + SYM(SecondaryColor3bv), + SYM(SecondaryColor3d), + SYM(SecondaryColor3dv), + SYM(SecondaryColor3f), + SYM(SecondaryColor3fv), + SYM(SecondaryColor3i), + SYM(SecondaryColor3iv), + SYM(SecondaryColor3s), + SYM(SecondaryColor3sv), + SYM(SecondaryColor3ub), + SYM(SecondaryColor3ubv), + SYM(SecondaryColor3ui), + SYM(SecondaryColor3uiv), + SYM(SecondaryColor3us), + SYM(SecondaryColor3usv), + SYM(SecondaryColorPointer), + SYM(WindowPos2d), + SYM(WindowPos2dv), + SYM(WindowPos2f), + SYM(WindowPos2fv), + SYM(WindowPos2i), + SYM(WindowPos2iv), + SYM(WindowPos2s), + SYM(WindowPos2sv), + SYM(WindowPos3d), + SYM(WindowPos3dv), + SYM(WindowPos3f), + SYM(WindowPos3fv), + SYM(WindowPos3i), + SYM(WindowPos3iv), + SYM(WindowPos3s), + SYM(WindowPos3sv), + SYM(GenQueries), + SYM(DeleteQueries), + SYM(IsQuery), + SYM(BeginQuery), + SYM(EndQuery), + SYM(GetQueryiv), + SYM(GetQueryObjectiv), + SYM(GetQueryObjectuiv), + SYM(BindBuffer), + SYM(DeleteBuffers), + SYM(GenBuffers), + SYM(IsBuffer), + SYM(BufferData), + SYM(BufferSubData), + SYM(GetBufferSubData), + SYM(MapBuffer), + SYM(UnmapBuffer), + SYM(GetBufferParameteriv), + SYM(GetBufferPointerv), + SYM(BlendEquationSeparate), + SYM(DrawBuffers), + SYM(StencilOpSeparate), + SYM(StencilFuncSeparate), + SYM(StencilMaskSeparate), + SYM(AttachShader), + SYM(BindAttribLocation), + SYM(CompileShader), + SYM(CreateProgram), + SYM(CreateShader), + SYM(DeleteProgram), + SYM(DeleteShader), + SYM(DetachShader), + SYM(DisableVertexAttribArray), + SYM(EnableVertexAttribArray), + SYM(GetActiveAttrib), + SYM(GetActiveUniform), + SYM(GetAttachedShaders), + SYM(GetAttribLocation), + SYM(GetProgramiv), + SYM(GetProgramInfoLog), + SYM(GetShaderiv), + SYM(GetShaderInfoLog), + SYM(GetShaderSource), + SYM(GetUniformLocation), + SYM(GetUniformfv), + SYM(GetUniformiv), + SYM(GetVertexAttribdv), + SYM(GetVertexAttribfv), + SYM(GetVertexAttribiv), + SYM(GetVertexAttribPointerv), + SYM(IsProgram), + SYM(IsShader), + SYM(LinkProgram), + SYM(ShaderSource), + SYM(UseProgram), + SYM(Uniform1f), + SYM(Uniform2f), + SYM(Uniform3f), + SYM(Uniform4f), + SYM(Uniform1i), + SYM(Uniform2i), + SYM(Uniform3i), + SYM(Uniform4i), + SYM(Uniform1fv), + SYM(Uniform2fv), + SYM(Uniform3fv), + SYM(Uniform4fv), + SYM(Uniform1iv), + SYM(Uniform2iv), + SYM(Uniform3iv), + SYM(Uniform4iv), + SYM(UniformMatrix2fv), + SYM(UniformMatrix3fv), + SYM(UniformMatrix4fv), + SYM(ValidateProgram), + SYM(VertexAttrib1d), + SYM(VertexAttrib1dv), + SYM(VertexAttrib1f), + SYM(VertexAttrib1fv), + SYM(VertexAttrib1s), + SYM(VertexAttrib1sv), + SYM(VertexAttrib2d), + SYM(VertexAttrib2dv), + SYM(VertexAttrib2f), + SYM(VertexAttrib2fv), + SYM(VertexAttrib2s), + SYM(VertexAttrib2sv), + SYM(VertexAttrib3d), + SYM(VertexAttrib3dv), + SYM(VertexAttrib3f), + SYM(VertexAttrib3fv), + SYM(VertexAttrib3s), + SYM(VertexAttrib3sv), + SYM(VertexAttrib4Nbv), + SYM(VertexAttrib4Niv), + SYM(VertexAttrib4Nsv), + SYM(VertexAttrib4Nub), + SYM(VertexAttrib4Nubv), + SYM(VertexAttrib4Nuiv), + SYM(VertexAttrib4Nusv), + SYM(VertexAttrib4bv), + SYM(VertexAttrib4d), + SYM(VertexAttrib4dv), + SYM(VertexAttrib4f), + SYM(VertexAttrib4fv), + SYM(VertexAttrib4iv), + SYM(VertexAttrib4s), + SYM(VertexAttrib4sv), + SYM(VertexAttrib4ubv), + SYM(VertexAttrib4uiv), + SYM(VertexAttrib4usv), + SYM(VertexAttribPointer), + SYM(UniformMatrix2x3fv), + SYM(UniformMatrix3x2fv), + SYM(UniformMatrix2x4fv), + SYM(UniformMatrix4x2fv), + SYM(UniformMatrix3x4fv), + SYM(UniformMatrix4x3fv), + SYM(ColorMaski), + SYM(GetBooleani_v), + SYM(GetIntegeri_v), + SYM(Enablei), + SYM(Disablei), + SYM(IsEnabledi), + SYM(BeginTransformFeedback), + SYM(EndTransformFeedback), + SYM(BindBufferRange), + SYM(BindBufferBase), + SYM(TransformFeedbackVaryings), + SYM(GetTransformFeedbackVarying), + SYM(ClampColor), + SYM(BeginConditionalRender), + SYM(EndConditionalRender), + SYM(VertexAttribIPointer), + SYM(GetVertexAttribIiv), + SYM(GetVertexAttribIuiv), + SYM(VertexAttribI1i), + SYM(VertexAttribI2i), + SYM(VertexAttribI3i), + SYM(VertexAttribI4i), + SYM(VertexAttribI1ui), + SYM(VertexAttribI2ui), + SYM(VertexAttribI3ui), + SYM(VertexAttribI4ui), + SYM(VertexAttribI1iv), + SYM(VertexAttribI2iv), + SYM(VertexAttribI3iv), + SYM(VertexAttribI4iv), + SYM(VertexAttribI1uiv), + SYM(VertexAttribI2uiv), + SYM(VertexAttribI3uiv), + SYM(VertexAttribI4uiv), + SYM(VertexAttribI4bv), + SYM(VertexAttribI4sv), + SYM(VertexAttribI4ubv), + SYM(VertexAttribI4usv), + SYM(GetUniformuiv), + SYM(BindFragDataLocation), + SYM(GetFragDataLocation), + SYM(Uniform1ui), + SYM(Uniform2ui), + SYM(Uniform3ui), + SYM(Uniform4ui), + SYM(Uniform1uiv), + SYM(Uniform2uiv), + SYM(Uniform3uiv), + SYM(Uniform4uiv), + SYM(TexParameterIiv), + SYM(TexParameterIuiv), + SYM(GetTexParameterIiv), + SYM(GetTexParameterIuiv), + SYM(ClearBufferiv), + SYM(ClearBufferuiv), + SYM(ClearBufferfv), + SYM(ClearBufferfi), + SYM(GetStringi), + SYM(DrawArraysInstanced), + SYM(DrawElementsInstanced), + SYM(TexBuffer), + SYM(PrimitiveRestartIndex), + SYM(GetInteger64i_v), + SYM(GetBufferParameteri64v), + SYM(FramebufferTexture), + SYM(VertexAttribDivisor), + SYM(MinSampleShading), + SYM(BlendEquationi), + SYM(BlendEquationSeparatei), + SYM(BlendFunci), + SYM(BlendFuncSeparatei), + 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(LoadTransposeMatrixfARB), + SYM(LoadTransposeMatrixdARB), + SYM(MultTransposeMatrixfARB), + SYM(MultTransposeMatrixdARB), + SYM(SampleCoverageARB), + SYM(CompressedTexImage3DARB), + SYM(CompressedTexImage2DARB), + SYM(CompressedTexImage1DARB), + SYM(CompressedTexSubImage3DARB), + SYM(CompressedTexSubImage2DARB), + SYM(CompressedTexSubImage1DARB), + SYM(GetCompressedTexImageARB), + SYM(PointParameterfARB), + SYM(PointParameterfvARB), + SYM(WeightbvARB), + SYM(WeightsvARB), + SYM(WeightivARB), + SYM(WeightfvARB), + SYM(WeightdvARB), + SYM(WeightubvARB), + SYM(WeightusvARB), + SYM(WeightuivARB), + SYM(WeightPointerARB), + SYM(VertexBlendARB), + SYM(CurrentPaletteMatrixARB), + SYM(MatrixIndexubvARB), + SYM(MatrixIndexusvARB), + SYM(MatrixIndexuivARB), + SYM(MatrixIndexPointerARB), + SYM(WindowPos2dARB), + SYM(WindowPos2dvARB), + SYM(WindowPos2fARB), + SYM(WindowPos2fvARB), + SYM(WindowPos2iARB), + SYM(WindowPos2ivARB), + SYM(WindowPos2sARB), + SYM(WindowPos2svARB), + SYM(WindowPos3dARB), + SYM(WindowPos3dvARB), + SYM(WindowPos3fARB), + SYM(WindowPos3fvARB), + SYM(WindowPos3iARB), + SYM(WindowPos3ivARB), + SYM(WindowPos3sARB), + SYM(WindowPos3svARB), + SYM(VertexAttrib1dARB), + SYM(VertexAttrib1dvARB), + SYM(VertexAttrib1fARB), + SYM(VertexAttrib1fvARB), + SYM(VertexAttrib1sARB), + SYM(VertexAttrib1svARB), + SYM(VertexAttrib2dARB), + SYM(VertexAttrib2dvARB), + SYM(VertexAttrib2fARB), + SYM(VertexAttrib2fvARB), + SYM(VertexAttrib2sARB), + SYM(VertexAttrib2svARB), + SYM(VertexAttrib3dARB), + SYM(VertexAttrib3dvARB), + SYM(VertexAttrib3fARB), + SYM(VertexAttrib3fvARB), + SYM(VertexAttrib3sARB), + SYM(VertexAttrib3svARB), + SYM(VertexAttrib4NbvARB), + SYM(VertexAttrib4NivARB), + SYM(VertexAttrib4NsvARB), + SYM(VertexAttrib4NubARB), + SYM(VertexAttrib4NubvARB), + SYM(VertexAttrib4NuivARB), + SYM(VertexAttrib4NusvARB), + SYM(VertexAttrib4bvARB), + SYM(VertexAttrib4dARB), + SYM(VertexAttrib4dvARB), + SYM(VertexAttrib4fARB), + SYM(VertexAttrib4fvARB), + SYM(VertexAttrib4ivARB), + SYM(VertexAttrib4sARB), + SYM(VertexAttrib4svARB), + SYM(VertexAttrib4ubvARB), + SYM(VertexAttrib4uivARB), + SYM(VertexAttrib4usvARB), + SYM(VertexAttribPointerARB), + SYM(EnableVertexAttribArrayARB), + SYM(DisableVertexAttribArrayARB), + SYM(ProgramStringARB), + SYM(BindProgramARB), + SYM(DeleteProgramsARB), + SYM(GenProgramsARB), + SYM(ProgramEnvParameter4dARB), + SYM(ProgramEnvParameter4dvARB), + SYM(ProgramEnvParameter4fARB), + SYM(ProgramEnvParameter4fvARB), + SYM(ProgramLocalParameter4dARB), + SYM(ProgramLocalParameter4dvARB), + SYM(ProgramLocalParameter4fARB), + SYM(ProgramLocalParameter4fvARB), + SYM(GetProgramEnvParameterdvARB), + SYM(GetProgramEnvParameterfvARB), + SYM(GetProgramLocalParameterdvARB), + SYM(GetProgramLocalParameterfvARB), + SYM(GetProgramivARB), + SYM(GetProgramStringARB), + SYM(GetVertexAttribdvARB), + SYM(GetVertexAttribfvARB), + SYM(GetVertexAttribivARB), + SYM(GetVertexAttribPointervARB), + SYM(IsProgramARB), + SYM(BindBufferARB), + SYM(DeleteBuffersARB), + SYM(GenBuffersARB), + SYM(IsBufferARB), + SYM(BufferDataARB), + SYM(BufferSubDataARB), + SYM(GetBufferSubDataARB), + SYM(MapBufferARB), + SYM(UnmapBufferARB), + SYM(GetBufferParameterivARB), + SYM(GetBufferPointervARB), + SYM(GenQueriesARB), + SYM(DeleteQueriesARB), + SYM(IsQueryARB), + SYM(BeginQueryARB), + SYM(EndQueryARB), + SYM(GetQueryivARB), + SYM(GetQueryObjectivARB), + SYM(GetQueryObjectuivARB), + SYM(DeleteObjectARB), + SYM(GetHandleARB), + SYM(DetachObjectARB), + SYM(CreateShaderObjectARB), + SYM(ShaderSourceARB), + SYM(CompileShaderARB), + SYM(CreateProgramObjectARB), + SYM(AttachObjectARB), + SYM(LinkProgramARB), + SYM(UseProgramObjectARB), + SYM(ValidateProgramARB), + SYM(Uniform1fARB), + SYM(Uniform2fARB), + SYM(Uniform3fARB), + SYM(Uniform4fARB), + SYM(Uniform1iARB), + SYM(Uniform2iARB), + SYM(Uniform3iARB), + SYM(Uniform4iARB), + SYM(Uniform1fvARB), + SYM(Uniform2fvARB), + SYM(Uniform3fvARB), + SYM(Uniform4fvARB), + SYM(Uniform1ivARB), + SYM(Uniform2ivARB), + SYM(Uniform3ivARB), + SYM(Uniform4ivARB), + SYM(UniformMatrix2fvARB), + SYM(UniformMatrix3fvARB), + SYM(UniformMatrix4fvARB), + SYM(GetObjectParameterfvARB), + SYM(GetObjectParameterivARB), + SYM(GetInfoLogARB), + SYM(GetAttachedObjectsARB), + SYM(GetUniformLocationARB), + SYM(GetActiveUniformARB), + SYM(GetUniformfvARB), + SYM(GetUniformivARB), + SYM(GetShaderSourceARB), + SYM(BindAttribLocationARB), + SYM(GetActiveAttribARB), + SYM(GetAttribLocationARB), + SYM(DrawBuffersARB), + SYM(ClampColorARB), + SYM(DrawArraysInstancedARB), + SYM(DrawElementsInstancedARB), + SYM(IsRenderbuffer), + SYM(BindRenderbuffer), + SYM(DeleteRenderbuffers), + SYM(GenRenderbuffers), + SYM(RenderbufferStorage), + SYM(GetRenderbufferParameteriv), + SYM(IsFramebuffer), + SYM(BindFramebuffer), + SYM(DeleteFramebuffers), + SYM(GenFramebuffers), + SYM(CheckFramebufferStatus), + SYM(FramebufferTexture1D), + SYM(FramebufferTexture2D), + SYM(FramebufferTexture3D), + SYM(FramebufferRenderbuffer), + SYM(GetFramebufferAttachmentParameteriv), + SYM(GenerateMipmap), + SYM(BlitFramebuffer), + SYM(RenderbufferStorageMultisample), + SYM(FramebufferTextureLayer), + SYM(ProgramParameteriARB), + SYM(FramebufferTextureARB), + SYM(FramebufferTextureLayerARB), + SYM(FramebufferTextureFaceARB), + SYM(VertexAttribDivisorARB), + SYM(MapBufferRange), + SYM(FlushMappedBufferRange), + SYM(TexBufferARB), + SYM(BindVertexArray), + SYM(DeleteVertexArrays), + SYM(GenVertexArrays), + SYM(IsVertexArray), + SYM(GetUniformIndices), + SYM(GetActiveUniformsiv), + SYM(GetActiveUniformName), + SYM(GetUniformBlockIndex), + SYM(GetActiveUniformBlockiv), + SYM(GetActiveUniformBlockName), + SYM(UniformBlockBinding), + SYM(CopyBufferSubData), + SYM(DrawElementsBaseVertex), + SYM(DrawRangeElementsBaseVertex), + SYM(DrawElementsInstancedBaseVertex), + SYM(MultiDrawElementsBaseVertex), + SYM(ProvokingVertex), + SYM(FenceSync), + SYM(IsSync), + SYM(DeleteSync), + SYM(ClientWaitSync), + SYM(WaitSync), + SYM(GetInteger64v), + SYM(GetSynciv), + SYM(TexImage2DMultisample), + SYM(TexImage3DMultisample), + SYM(GetMultisamplefv), + SYM(SampleMaski), + SYM(BlendEquationiARB), + SYM(BlendEquationSeparateiARB), + SYM(BlendFunciARB), + SYM(BlendFuncSeparateiARB), + SYM(MinSampleShadingARB), + SYM(NamedStringARB), + SYM(DeleteNamedStringARB), + SYM(CompileShaderIncludeARB), + SYM(IsNamedStringARB), + SYM(GetNamedStringARB), + SYM(GetNamedStringivARB), + SYM(BindFragDataLocationIndexed), + SYM(GetFragDataIndex), + SYM(GenSamplers), + SYM(DeleteSamplers), + SYM(IsSampler), + SYM(BindSampler), + SYM(SamplerParameteri), + SYM(SamplerParameteriv), + SYM(SamplerParameterf), + SYM(SamplerParameterfv), + SYM(SamplerParameterIiv), + SYM(SamplerParameterIuiv), + SYM(GetSamplerParameteriv), + SYM(GetSamplerParameterIiv), + SYM(GetSamplerParameterfv), + SYM(GetSamplerParameterIuiv), + SYM(QueryCounter), + SYM(GetQueryObjecti64v), + SYM(GetQueryObjectui64v), + SYM(VertexP2ui), + SYM(VertexP2uiv), + SYM(VertexP3ui), + SYM(VertexP3uiv), + SYM(VertexP4ui), + SYM(VertexP4uiv), + SYM(TexCoordP1ui), + SYM(TexCoordP1uiv), + SYM(TexCoordP2ui), + SYM(TexCoordP2uiv), + SYM(TexCoordP3ui), + SYM(TexCoordP3uiv), + SYM(TexCoordP4ui), + SYM(TexCoordP4uiv), + SYM(MultiTexCoordP1ui), + SYM(MultiTexCoordP1uiv), + SYM(MultiTexCoordP2ui), + SYM(MultiTexCoordP2uiv), + SYM(MultiTexCoordP3ui), + SYM(MultiTexCoordP3uiv), + SYM(MultiTexCoordP4ui), + SYM(MultiTexCoordP4uiv), + SYM(NormalP3ui), + SYM(NormalP3uiv), + SYM(ColorP3ui), + SYM(ColorP3uiv), + SYM(ColorP4ui), + SYM(ColorP4uiv), + SYM(SecondaryColorP3ui), + SYM(SecondaryColorP3uiv), + SYM(VertexAttribP1ui), + SYM(VertexAttribP1uiv), + SYM(VertexAttribP2ui), + SYM(VertexAttribP2uiv), + SYM(VertexAttribP3ui), + SYM(VertexAttribP3uiv), + SYM(VertexAttribP4ui), + SYM(VertexAttribP4uiv), + SYM(DrawArraysIndirect), + SYM(DrawElementsIndirect), + SYM(Uniform1d), + SYM(Uniform2d), + SYM(Uniform3d), + SYM(Uniform4d), + SYM(Uniform1dv), + SYM(Uniform2dv), + SYM(Uniform3dv), + SYM(Uniform4dv), + SYM(UniformMatrix2dv), + SYM(UniformMatrix3dv), + SYM(UniformMatrix4dv), + SYM(UniformMatrix2x3dv), + SYM(UniformMatrix2x4dv), + SYM(UniformMatrix3x2dv), + SYM(UniformMatrix3x4dv), + SYM(UniformMatrix4x2dv), + SYM(UniformMatrix4x3dv), + SYM(GetUniformdv), + SYM(GetSubroutineUniformLocation), + SYM(GetSubroutineIndex), + SYM(GetActiveSubroutineUniformiv), + SYM(GetActiveSubroutineUniformName), + SYM(GetActiveSubroutineName), + SYM(UniformSubroutinesuiv), + SYM(GetUniformSubroutineuiv), + SYM(GetProgramStageiv), + SYM(PatchParameteri), + SYM(PatchParameterfv), + SYM(BindTransformFeedback), + SYM(DeleteTransformFeedbacks), + SYM(GenTransformFeedbacks), + SYM(IsTransformFeedback), + SYM(PauseTransformFeedback), + SYM(ResumeTransformFeedback), + SYM(DrawTransformFeedback), + SYM(DrawTransformFeedbackStream), + SYM(BeginQueryIndexed), + SYM(EndQueryIndexed), + SYM(GetQueryIndexediv), + SYM(ReleaseShaderCompiler), + SYM(ShaderBinary), + SYM(GetShaderPrecisionFormat), + SYM(DepthRangef), + SYM(ClearDepthf), + SYM(GetProgramBinary), + SYM(ProgramBinary), + SYM(ProgramParameteri), + SYM(UseProgramStages), + SYM(ActiveShaderProgram), + SYM(CreateShaderProgramv), + SYM(BindProgramPipeline), + SYM(DeleteProgramPipelines), + SYM(GenProgramPipelines), + SYM(IsProgramPipeline), + SYM(GetProgramPipelineiv), + SYM(ProgramUniform1i), + SYM(ProgramUniform1iv), + SYM(ProgramUniform1f), + SYM(ProgramUniform1fv), + SYM(ProgramUniform1d), + SYM(ProgramUniform1dv), + SYM(ProgramUniform1ui), + SYM(ProgramUniform1uiv), + SYM(ProgramUniform2i), + SYM(ProgramUniform2iv), + SYM(ProgramUniform2f), + SYM(ProgramUniform2fv), + SYM(ProgramUniform2d), + SYM(ProgramUniform2dv), + SYM(ProgramUniform2ui), + SYM(ProgramUniform2uiv), + SYM(ProgramUniform3i), + SYM(ProgramUniform3iv), + SYM(ProgramUniform3f), + SYM(ProgramUniform3fv), + SYM(ProgramUniform3d), + SYM(ProgramUniform3dv), + SYM(ProgramUniform3ui), + SYM(ProgramUniform3uiv), + SYM(ProgramUniform4i), + SYM(ProgramUniform4iv), + SYM(ProgramUniform4f), + SYM(ProgramUniform4fv), + SYM(ProgramUniform4d), + SYM(ProgramUniform4dv), + SYM(ProgramUniform4ui), + SYM(ProgramUniform4uiv), + SYM(ProgramUniformMatrix2fv), + SYM(ProgramUniformMatrix3fv), + SYM(ProgramUniformMatrix4fv), + SYM(ProgramUniformMatrix2dv), + SYM(ProgramUniformMatrix3dv), + SYM(ProgramUniformMatrix4dv), + SYM(ProgramUniformMatrix2x3fv), + SYM(ProgramUniformMatrix3x2fv), + SYM(ProgramUniformMatrix2x4fv), + SYM(ProgramUniformMatrix4x2fv), + SYM(ProgramUniformMatrix3x4fv), + SYM(ProgramUniformMatrix4x3fv), + SYM(ProgramUniformMatrix2x3dv), + SYM(ProgramUniformMatrix3x2dv), + SYM(ProgramUniformMatrix2x4dv), + SYM(ProgramUniformMatrix4x2dv), + SYM(ProgramUniformMatrix3x4dv), + SYM(ProgramUniformMatrix4x3dv), + SYM(ValidateProgramPipeline), + SYM(GetProgramPipelineInfoLog), + SYM(VertexAttribL1d), + SYM(VertexAttribL2d), + SYM(VertexAttribL3d), + SYM(VertexAttribL4d), + SYM(VertexAttribL1dv), + SYM(VertexAttribL2dv), + SYM(VertexAttribL3dv), + SYM(VertexAttribL4dv), + SYM(VertexAttribLPointer), + SYM(GetVertexAttribLdv), + SYM(ViewportArrayv), + SYM(ViewportIndexedf), + SYM(ViewportIndexedfv), + SYM(ScissorArrayv), + SYM(ScissorIndexed), + SYM(ScissorIndexedv), + SYM(DepthRangeArrayv), + SYM(DepthRangeIndexed), + SYM(GetFloati_v), + SYM(GetDoublei_v), + SYM(CreateSyncFromCLeventARB), + SYM(DebugMessageControlARB), + SYM(DebugMessageInsertARB), + SYM(GetDebugMessageLogARB), + SYM(GetGraphicsResetStatusARB), + SYM(GetnMapdvARB), + SYM(GetnMapfvARB), + SYM(GetnMapivARB), + SYM(GetnPixelMapfvARB), + SYM(GetnPixelMapuivARB), + SYM(GetnPixelMapusvARB), + SYM(GetnPolygonStippleARB), + SYM(GetnColorTableARB), + SYM(GetnConvolutionFilterARB), + SYM(GetnSeparableFilterARB), + SYM(GetnHistogramARB), + SYM(GetnMinmaxARB), + SYM(GetnTexImageARB), + SYM(ReadnPixelsARB), + SYM(GetnCompressedTexImageARB), + SYM(GetnUniformfvARB), + SYM(GetnUniformivARB), + SYM(GetnUniformuivARB), + SYM(GetnUniformdvARB), + SYM(DrawArraysInstancedBaseInstance), + SYM(DrawElementsInstancedBaseInstance), + SYM(DrawElementsInstancedBaseVertexBaseInstance), + SYM(DrawTransformFeedbackInstanced), + SYM(DrawTransformFeedbackStreamInstanced), + SYM(GetInternalformativ), + SYM(GetActiveAtomicCounterBufferiv), + SYM(BindImageTexture), + SYM(MemoryBarrier), + SYM(TexStorage1D), + SYM(TexStorage2D), + SYM(TexStorage3D), + SYM(DebugMessageControl), + SYM(DebugMessageInsert), + SYM(GetDebugMessageLog), + SYM(PushDebugGroup), + SYM(PopDebugGroup), + SYM(ObjectLabel), + SYM(GetObjectLabel), + SYM(ObjectPtrLabel), + SYM(GetObjectPtrLabel), + SYM(ClearBufferData), + SYM(ClearBufferSubData), + SYM(DispatchCompute), + SYM(DispatchComputeIndirect), + SYM(CopyImageSubData), + SYM(TextureView), + SYM(BindVertexBuffer), + SYM(VertexAttribFormat), + SYM(VertexAttribIFormat), + SYM(VertexAttribLFormat), + SYM(VertexAttribBinding), + SYM(VertexBindingDivisor), + SYM(FramebufferParameteri), + SYM(GetFramebufferParameteriv), + SYM(GetInternalformati64v), + SYM(InvalidateTexSubImage), + SYM(InvalidateTexImage), + SYM(InvalidateBufferSubData), + SYM(InvalidateBufferData), + SYM(InvalidateFramebuffer), + SYM(InvalidateSubFramebuffer), + SYM(MultiDrawArraysIndirect), + SYM(MultiDrawElementsIndirect), + SYM(GetProgramInterfaceiv), + SYM(GetProgramResourceIndex), + SYM(GetProgramResourceName), + SYM(GetProgramResourceiv), + SYM(GetProgramResourceLocation), + SYM(GetProgramResourceLocationIndex), + SYM(ShaderStorageBlockBinding), + SYM(TexBufferRange), + SYM(TexStorage2DMultisample), + SYM(TexStorage3DMultisample), + SYM(ImageTransformParameteriHP), + SYM(ImageTransformParameterfHP), + SYM(ImageTransformParameterivHP), + SYM(ImageTransformParameterfvHP), + SYM(GetImageTransformParameterivHP), + SYM(GetImageTransformParameterfvHP), + + { NULL, NULL }, +}; +RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; +RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; +RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; +RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; +RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; +RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; +RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; +RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; +RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; +RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; +RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; +RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; +RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; +RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; +RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; +RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; +RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; +RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; +RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; +RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; +RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; +RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; +RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; +RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; +RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; +RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; +RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; +RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; +RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; +RGLSYMGLMINMAXPROC __rglgen_glMinmax; +RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; +RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; +RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; +RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; +RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; +RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; +RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; +RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; +RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; +RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; +RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; +RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; +RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; +RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; +RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; +RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; +RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; +RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; +RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; +RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; +RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; +RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; +RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; +RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; +RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; +RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; +RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; +RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; +RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; +RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; +RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; +RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; +RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; +RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; +RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; +RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; +RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; +RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; +RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; +RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; +RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; +RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; +RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; +RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; +RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; +RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; +RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; +RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; +RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; +RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; +RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; +RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; +RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; +RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; +RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; +RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; +RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; +RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; +RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; +RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; +RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; +RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; +RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; +RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; +RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; +RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; +RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; +RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; +RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; +RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; +RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; +RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; +RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; +RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; +RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; +RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; +RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; +RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; +RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; +RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; +RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; +RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; +RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; +RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; +RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; +RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; +RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; +RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; +RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; +RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; +RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; +RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; +RGLSYMGLISQUERYPROC __rglgen_glIsQuery; +RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; +RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; +RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; +RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; +RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; +RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; +RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; +RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; +RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; +RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; +RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; +RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; +RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; +RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; +RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; +RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; +RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; +RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; +RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; +RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; +RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; +RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; +RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; +RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; +RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; +RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; +RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; +RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; +RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; +RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; +RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; +RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; +RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; +RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; +RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; +RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; +RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; +RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; +RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; +RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; +RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; +RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; +RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; +RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; +RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; +RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; +RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; +RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; +RGLSYMGLISSHADERPROC __rglgen_glIsShader; +RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; +RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; +RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; +RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; +RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; +RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; +RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; +RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; +RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; +RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; +RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; +RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; +RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; +RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; +RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; +RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; +RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; +RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; +RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; +RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; +RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; +RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; +RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; +RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; +RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; +RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; +RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; +RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; +RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; +RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; +RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; +RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; +RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; +RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; +RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; +RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; +RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; +RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; +RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; +RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; +RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; +RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; +RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; +RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; +RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; +RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; +RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; +RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; +RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; +RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; +RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; +RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; +RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; +RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; +RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; +RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; +RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; +RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; +RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; +RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; +RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; +RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; +RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; +RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; +RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; +RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; +RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; +RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; +RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; +RGLSYMGLENABLEIPROC __rglgen_glEnablei; +RGLSYMGLDISABLEIPROC __rglgen_glDisablei; +RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; +RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; +RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; +RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; +RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; +RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; +RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; +RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; +RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; +RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; +RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; +RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; +RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; +RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; +RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; +RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; +RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; +RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; +RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; +RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; +RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; +RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; +RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; +RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; +RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; +RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; +RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; +RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; +RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; +RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; +RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; +RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; +RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; +RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; +RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; +RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; +RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; +RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; +RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; +RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; +RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; +RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; +RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; +RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; +RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; +RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; +RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; +RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; +RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; +RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; +RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; +RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; +RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; +RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; +RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; +RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; +RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; +RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; +RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; +RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; +RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; +RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; +RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; +RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; +RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; +RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; +RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; +RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; +RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; +RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; +RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; +RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; +RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; +RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; +RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; +RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; +RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; +RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; +RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; +RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; +RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; +RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; +RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; +RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; +RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; +RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; +RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; +RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; +RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; +RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; +RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; +RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; +RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; +RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; +RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; +RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; +RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; +RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; +RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; +RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; +RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; +RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; +RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; +RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; +RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; +RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; +RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; +RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; +RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; +RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; +RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; +RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; +RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; +RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; +RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; +RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; +RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; +RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; +RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; +RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; +RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; +RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; +RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; +RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; +RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; +RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; +RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; +RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; +RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; +RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; +RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; +RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; +RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; +RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; +RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; +RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; +RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; +RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; +RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; +RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; +RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; +RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; +RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; +RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; +RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; +RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; +RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; +RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; +RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; +RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; +RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; +RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; +RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; +RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; +RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; +RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; +RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; +RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; +RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; +RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; +RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; +RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; +RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; +RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; +RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; +RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; +RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; +RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; +RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; +RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; +RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; +RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; +RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; +RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; +RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; +RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; +RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; +RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; +RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; +RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; +RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; +RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; +RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; +RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; +RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; +RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; +RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; +RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; +RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; +RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; +RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; +RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; +RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; +RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; +RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; +RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; +RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; +RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; +RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; +RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; +RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; +RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; +RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; +RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; +RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; +RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; +RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; +RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; +RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; +RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; +RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; +RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; +RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; +RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; +RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; +RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; +RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; +RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; +RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; +RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; +RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; +RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; +RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; +RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; +RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; +RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; +RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; +RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; +RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; +RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; +RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; +RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; +RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; +RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; +RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; +RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; +RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; +RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; +RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; +RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; +RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; +RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; +RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; +RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; +RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; +RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; +RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; +RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; +RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; +RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; +RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; +RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; +RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; +RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; +RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; +RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; +RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; +RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; +RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; +RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; +RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; +RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; +RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; +RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; +RGLSYMGLISSYNCPROC __rglgen_glIsSync; +RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; +RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; +RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; +RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; +RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; +RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; +RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; +RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; +RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; +RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; +RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; +RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; +RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; +RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; +RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; +RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; +RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; +RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; +RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; +RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; +RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; +RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; +RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; +RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; +RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; +RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; +RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; +RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; +RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; +RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; +RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; +RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; +RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; +RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; +RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; +RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; +RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; +RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; +RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; +RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; +RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; +RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; +RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; +RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; +RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; +RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; +RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; +RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; +RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; +RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; +RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; +RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; +RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; +RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; +RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; +RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; +RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; +RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; +RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; +RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; +RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; +RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; +RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; +RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; +RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; +RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; +RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; +RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; +RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; +RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; +RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; +RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; +RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; +RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; +RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; +RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; +RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; +RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; +RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; +RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; +RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; +RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; +RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; +RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; +RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; +RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; +RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; +RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; +RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; +RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; +RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; +RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; +RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; +RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; +RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; +RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; +RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; +RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; +RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; +RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; +RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; +RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; +RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; +RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; +RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; +RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; +RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; +RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; +RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; +RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; +RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; +RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; +RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; +RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; +RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; +RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; +RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; +RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; +RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; +RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; +RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; +RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; +RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; +RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; +RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; +RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; +RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; +RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; +RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; +RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; +RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; +RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; +RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; +RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; +RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; +RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; +RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; +RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; +RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; +RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; +RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; +RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; +RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; +RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; +RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; +RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; +RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; +RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; +RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; +RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; +RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; +RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; +RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; +RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; +RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; +RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; +RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; +RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; +RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; +RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; +RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; +RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; +RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; +RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; +RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; +RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; +RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; +RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; +RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; +RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; +RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; +RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; +RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; +RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; +RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; +RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; +RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; +RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; +RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; +RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; +RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; +RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; +RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; +RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; +RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; +RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; +RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; +RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; +RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; +RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; +RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; +RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; +RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; +RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; +RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; +RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; +RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; +RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; +RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; +RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; +RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; +RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; +RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; +RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; +RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; +RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; +RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; +RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; +RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; +RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; +RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; +RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; +RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; +RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; +RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; +RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; +RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; +RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; +RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; +RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; +RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; +RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; +RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; +RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; +RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; +RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; +RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; +RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; +RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; +RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; +RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; +RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; +RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; +RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; + diff --git a/libretro-test-gl/glsym_gl.h b/libretro-test-gl/glsym_gl.h new file mode 100644 index 0000000000..fad8b6725e --- /dev/null +++ b/libretro-test-gl/glsym_gl.h @@ -0,0 +1,2593 @@ +#ifndef RGLGEN_DECL_H__ +#define RGLGEN_DECL_H__ +typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP RGLSYMGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP RGLSYMGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP RGLSYMGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP RGLSYMGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLRESETMINMAXPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +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 RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, 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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, 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 RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +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 RGLSYMGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP RGLSYMGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP RGLSYMGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP RGLSYMGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP RGLSYMGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP RGLSYMGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP RGLSYMGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP RGLSYMGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP RGLSYMGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP RGLSYMGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); +typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP RGLSYMGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP RGLSYMGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP RGLSYMGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP RGLSYMGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP RGLSYMGLENABLEIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLDISABLEIPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP RGLSYMGLISENABLEDIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (APIENTRYP RGLSYMGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); +typedef void (APIENTRYP RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP RGLSYMGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP RGLSYMGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP RGLSYMGLENDCONDITIONALRENDERPROC) (void); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef const GLubyte * (APIENTRYP RGLSYMGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGPROC) (GLfloat value); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +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 RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP RGLSYMGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLVERTEXBLENDARBPROC) (GLint count); +typedef void (APIENTRYP RGLSYMGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP RGLSYMGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP RGLSYMGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); +typedef void (APIENTRYP RGLSYMGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP RGLSYMGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMARBPROC) (GLuint program); +typedef void (APIENTRYP RGLSYMGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP RGLSYMGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void (APIENTRYP RGLSYMGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP RGLSYMGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP RGLSYMGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP RGLSYMGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP RGLSYMGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP RGLSYMGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP RGLSYMGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP RGLSYMGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP RGLSYMGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP RGLSYMGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP RGLSYMGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef GLboolean (APIENTRYP RGLSYMGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP RGLSYMGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP RGLSYMGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef void (APIENTRYP RGLSYMGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP RGLSYMGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP RGLSYMGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (APIENTRYP RGLSYMGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP RGLSYMGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP RGLSYMGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP RGLSYMGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP RGLSYMGLISVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +typedef GLuint (APIENTRYP RGLSYMGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +typedef void (APIENTRYP RGLSYMGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +typedef void (APIENTRYP RGLSYMGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP RGLSYMGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef GLsync (APIENTRYP RGLSYMGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (APIENTRYP RGLSYMGLISSYNCPROC) (GLsync sync); +typedef void (APIENTRYP RGLSYMGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP RGLSYMGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP RGLSYMGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP RGLSYMGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP RGLSYMGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGARBPROC) (GLfloat value); +typedef void (APIENTRYP RGLSYMGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +typedef void (APIENTRYP RGLSYMGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); +typedef GLboolean (APIENTRYP RGLSYMGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); +typedef void (APIENTRYP RGLSYMGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); +typedef GLboolean (APIENTRYP RGLSYMGLISSAMPLERPROC) (GLuint sampler); +typedef void (APIENTRYP RGLSYMGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (APIENTRYP RGLSYMGLQUERYCOUNTERPROC) (GLuint id, GLenum target); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP RGLSYMGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP RGLSYMGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP RGLSYMGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); +typedef void (APIENTRYP RGLSYMGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (APIENTRYP RGLSYMGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); +typedef GLint (APIENTRYP RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef GLuint (APIENTRYP RGLSYMGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); +typedef void (APIENTRYP RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +typedef void (APIENTRYP RGLSYMGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP RGLSYMGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP RGLSYMGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP RGLSYMGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (APIENTRYP RGLSYMGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLRESUMETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (APIENTRYP RGLSYMGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (APIENTRYP RGLSYMGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP RGLSYMGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP RGLSYMGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP RGLSYMGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (APIENTRYP RGLSYMGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); +typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP RGLSYMGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (APIENTRYP RGLSYMGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const *strings); +typedef void (APIENTRYP RGLSYMGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); +typedef void (APIENTRYP RGLSYMGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP RGLSYMGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); +typedef void (APIENTRYP RGLSYMGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP RGLSYMGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP RGLSYMGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP RGLSYMGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP RGLSYMGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); +typedef void (APIENTRYP RGLSYMGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); +typedef void (APIENTRYP RGLSYMGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP RGLSYMGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); +typedef void (APIENTRYP RGLSYMGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +typedef void (APIENTRYP RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP RGLSYMGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP RGLSYMGLMEMORYBARRIERPROC) (GLbitfield barriers); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); +typedef void (APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +typedef void (APIENTRYP RGLSYMGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void (APIENTRYP RGLSYMGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (APIENTRYP RGLSYMGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP RGLSYMGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP RGLSYMGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP RGLSYMGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (APIENTRYP RGLSYMGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +typedef GLuint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (APIENTRYP RGLSYMGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); + +#define glBlendColor __rglgen_glBlendColor +#define glBlendEquation __rglgen_glBlendEquation +#define glDrawRangeElements __rglgen_glDrawRangeElements +#define glTexImage3D __rglgen_glTexImage3D +#define glTexSubImage3D __rglgen_glTexSubImage3D +#define glCopyTexSubImage3D __rglgen_glCopyTexSubImage3D +#define glColorTable __rglgen_glColorTable +#define glColorTableParameterfv __rglgen_glColorTableParameterfv +#define glColorTableParameteriv __rglgen_glColorTableParameteriv +#define glCopyColorTable __rglgen_glCopyColorTable +#define glGetColorTable __rglgen_glGetColorTable +#define glGetColorTableParameterfv __rglgen_glGetColorTableParameterfv +#define glGetColorTableParameteriv __rglgen_glGetColorTableParameteriv +#define glColorSubTable __rglgen_glColorSubTable +#define glCopyColorSubTable __rglgen_glCopyColorSubTable +#define glConvolutionFilter1D __rglgen_glConvolutionFilter1D +#define glConvolutionFilter2D __rglgen_glConvolutionFilter2D +#define glConvolutionParameterf __rglgen_glConvolutionParameterf +#define glConvolutionParameterfv __rglgen_glConvolutionParameterfv +#define glConvolutionParameteri __rglgen_glConvolutionParameteri +#define glConvolutionParameteriv __rglgen_glConvolutionParameteriv +#define glCopyConvolutionFilter1D __rglgen_glCopyConvolutionFilter1D +#define glCopyConvolutionFilter2D __rglgen_glCopyConvolutionFilter2D +#define glGetConvolutionFilter __rglgen_glGetConvolutionFilter +#define glGetConvolutionParameterfv __rglgen_glGetConvolutionParameterfv +#define glGetConvolutionParameteriv __rglgen_glGetConvolutionParameteriv +#define glGetSeparableFilter __rglgen_glGetSeparableFilter +#define glSeparableFilter2D __rglgen_glSeparableFilter2D +#define glGetHistogram __rglgen_glGetHistogram +#define glGetHistogramParameterfv __rglgen_glGetHistogramParameterfv +#define glGetHistogramParameteriv __rglgen_glGetHistogramParameteriv +#define glGetMinmax __rglgen_glGetMinmax +#define glGetMinmaxParameterfv __rglgen_glGetMinmaxParameterfv +#define glGetMinmaxParameteriv __rglgen_glGetMinmaxParameteriv +#define glHistogram __rglgen_glHistogram +#define glMinmax __rglgen_glMinmax +#define glResetHistogram __rglgen_glResetHistogram +#define glResetMinmax __rglgen_glResetMinmax +#define glActiveTexture __rglgen_glActiveTexture +#define glSampleCoverage __rglgen_glSampleCoverage +#define glCompressedTexImage3D __rglgen_glCompressedTexImage3D +#define glCompressedTexImage2D __rglgen_glCompressedTexImage2D +#define glCompressedTexImage1D __rglgen_glCompressedTexImage1D +#define glCompressedTexSubImage3D __rglgen_glCompressedTexSubImage3D +#define glCompressedTexSubImage2D __rglgen_glCompressedTexSubImage2D +#define glCompressedTexSubImage1D __rglgen_glCompressedTexSubImage1D +#define glGetCompressedTexImage __rglgen_glGetCompressedTexImage +#define glClientActiveTexture __rglgen_glClientActiveTexture +#define glMultiTexCoord1d __rglgen_glMultiTexCoord1d +#define glMultiTexCoord1dv __rglgen_glMultiTexCoord1dv +#define glMultiTexCoord1f __rglgen_glMultiTexCoord1f +#define glMultiTexCoord1fv __rglgen_glMultiTexCoord1fv +#define glMultiTexCoord1i __rglgen_glMultiTexCoord1i +#define glMultiTexCoord1iv __rglgen_glMultiTexCoord1iv +#define glMultiTexCoord1s __rglgen_glMultiTexCoord1s +#define glMultiTexCoord1sv __rglgen_glMultiTexCoord1sv +#define glMultiTexCoord2d __rglgen_glMultiTexCoord2d +#define glMultiTexCoord2dv __rglgen_glMultiTexCoord2dv +#define glMultiTexCoord2f __rglgen_glMultiTexCoord2f +#define glMultiTexCoord2fv __rglgen_glMultiTexCoord2fv +#define glMultiTexCoord2i __rglgen_glMultiTexCoord2i +#define glMultiTexCoord2iv __rglgen_glMultiTexCoord2iv +#define glMultiTexCoord2s __rglgen_glMultiTexCoord2s +#define glMultiTexCoord2sv __rglgen_glMultiTexCoord2sv +#define glMultiTexCoord3d __rglgen_glMultiTexCoord3d +#define glMultiTexCoord3dv __rglgen_glMultiTexCoord3dv +#define glMultiTexCoord3f __rglgen_glMultiTexCoord3f +#define glMultiTexCoord3fv __rglgen_glMultiTexCoord3fv +#define glMultiTexCoord3i __rglgen_glMultiTexCoord3i +#define glMultiTexCoord3iv __rglgen_glMultiTexCoord3iv +#define glMultiTexCoord3s __rglgen_glMultiTexCoord3s +#define glMultiTexCoord3sv __rglgen_glMultiTexCoord3sv +#define glMultiTexCoord4d __rglgen_glMultiTexCoord4d +#define glMultiTexCoord4dv __rglgen_glMultiTexCoord4dv +#define glMultiTexCoord4f __rglgen_glMultiTexCoord4f +#define glMultiTexCoord4fv __rglgen_glMultiTexCoord4fv +#define glMultiTexCoord4i __rglgen_glMultiTexCoord4i +#define glMultiTexCoord4iv __rglgen_glMultiTexCoord4iv +#define glMultiTexCoord4s __rglgen_glMultiTexCoord4s +#define glMultiTexCoord4sv __rglgen_glMultiTexCoord4sv +#define glLoadTransposeMatrixf __rglgen_glLoadTransposeMatrixf +#define glLoadTransposeMatrixd __rglgen_glLoadTransposeMatrixd +#define glMultTransposeMatrixf __rglgen_glMultTransposeMatrixf +#define glMultTransposeMatrixd __rglgen_glMultTransposeMatrixd +#define glBlendFuncSeparate __rglgen_glBlendFuncSeparate +#define glMultiDrawArrays __rglgen_glMultiDrawArrays +#define glMultiDrawElements __rglgen_glMultiDrawElements +#define glPointParameterf __rglgen_glPointParameterf +#define glPointParameterfv __rglgen_glPointParameterfv +#define glPointParameteri __rglgen_glPointParameteri +#define glPointParameteriv __rglgen_glPointParameteriv +#define glFogCoordf __rglgen_glFogCoordf +#define glFogCoordfv __rglgen_glFogCoordfv +#define glFogCoordd __rglgen_glFogCoordd +#define glFogCoorddv __rglgen_glFogCoorddv +#define glFogCoordPointer __rglgen_glFogCoordPointer +#define glSecondaryColor3b __rglgen_glSecondaryColor3b +#define glSecondaryColor3bv __rglgen_glSecondaryColor3bv +#define glSecondaryColor3d __rglgen_glSecondaryColor3d +#define glSecondaryColor3dv __rglgen_glSecondaryColor3dv +#define glSecondaryColor3f __rglgen_glSecondaryColor3f +#define glSecondaryColor3fv __rglgen_glSecondaryColor3fv +#define glSecondaryColor3i __rglgen_glSecondaryColor3i +#define glSecondaryColor3iv __rglgen_glSecondaryColor3iv +#define glSecondaryColor3s __rglgen_glSecondaryColor3s +#define glSecondaryColor3sv __rglgen_glSecondaryColor3sv +#define glSecondaryColor3ub __rglgen_glSecondaryColor3ub +#define glSecondaryColor3ubv __rglgen_glSecondaryColor3ubv +#define glSecondaryColor3ui __rglgen_glSecondaryColor3ui +#define glSecondaryColor3uiv __rglgen_glSecondaryColor3uiv +#define glSecondaryColor3us __rglgen_glSecondaryColor3us +#define glSecondaryColor3usv __rglgen_glSecondaryColor3usv +#define glSecondaryColorPointer __rglgen_glSecondaryColorPointer +#define glWindowPos2d __rglgen_glWindowPos2d +#define glWindowPos2dv __rglgen_glWindowPos2dv +#define glWindowPos2f __rglgen_glWindowPos2f +#define glWindowPos2fv __rglgen_glWindowPos2fv +#define glWindowPos2i __rglgen_glWindowPos2i +#define glWindowPos2iv __rglgen_glWindowPos2iv +#define glWindowPos2s __rglgen_glWindowPos2s +#define glWindowPos2sv __rglgen_glWindowPos2sv +#define glWindowPos3d __rglgen_glWindowPos3d +#define glWindowPos3dv __rglgen_glWindowPos3dv +#define glWindowPos3f __rglgen_glWindowPos3f +#define glWindowPos3fv __rglgen_glWindowPos3fv +#define glWindowPos3i __rglgen_glWindowPos3i +#define glWindowPos3iv __rglgen_glWindowPos3iv +#define glWindowPos3s __rglgen_glWindowPos3s +#define glWindowPos3sv __rglgen_glWindowPos3sv +#define glGenQueries __rglgen_glGenQueries +#define glDeleteQueries __rglgen_glDeleteQueries +#define glIsQuery __rglgen_glIsQuery +#define glBeginQuery __rglgen_glBeginQuery +#define glEndQuery __rglgen_glEndQuery +#define glGetQueryiv __rglgen_glGetQueryiv +#define glGetQueryObjectiv __rglgen_glGetQueryObjectiv +#define glGetQueryObjectuiv __rglgen_glGetQueryObjectuiv +#define glBindBuffer __rglgen_glBindBuffer +#define glDeleteBuffers __rglgen_glDeleteBuffers +#define glGenBuffers __rglgen_glGenBuffers +#define glIsBuffer __rglgen_glIsBuffer +#define glBufferData __rglgen_glBufferData +#define glBufferSubData __rglgen_glBufferSubData +#define glGetBufferSubData __rglgen_glGetBufferSubData +#define glMapBuffer __rglgen_glMapBuffer +#define glUnmapBuffer __rglgen_glUnmapBuffer +#define glGetBufferParameteriv __rglgen_glGetBufferParameteriv +#define glGetBufferPointerv __rglgen_glGetBufferPointerv +#define glBlendEquationSeparate __rglgen_glBlendEquationSeparate +#define glDrawBuffers __rglgen_glDrawBuffers +#define glStencilOpSeparate __rglgen_glStencilOpSeparate +#define glStencilFuncSeparate __rglgen_glStencilFuncSeparate +#define glStencilMaskSeparate __rglgen_glStencilMaskSeparate +#define glAttachShader __rglgen_glAttachShader +#define glBindAttribLocation __rglgen_glBindAttribLocation +#define glCompileShader __rglgen_glCompileShader +#define glCreateProgram __rglgen_glCreateProgram +#define glCreateShader __rglgen_glCreateShader +#define glDeleteProgram __rglgen_glDeleteProgram +#define glDeleteShader __rglgen_glDeleteShader +#define glDetachShader __rglgen_glDetachShader +#define glDisableVertexAttribArray __rglgen_glDisableVertexAttribArray +#define glEnableVertexAttribArray __rglgen_glEnableVertexAttribArray +#define glGetActiveAttrib __rglgen_glGetActiveAttrib +#define glGetActiveUniform __rglgen_glGetActiveUniform +#define glGetAttachedShaders __rglgen_glGetAttachedShaders +#define glGetAttribLocation __rglgen_glGetAttribLocation +#define glGetProgramiv __rglgen_glGetProgramiv +#define glGetProgramInfoLog __rglgen_glGetProgramInfoLog +#define glGetShaderiv __rglgen_glGetShaderiv +#define glGetShaderInfoLog __rglgen_glGetShaderInfoLog +#define glGetShaderSource __rglgen_glGetShaderSource +#define glGetUniformLocation __rglgen_glGetUniformLocation +#define glGetUniformfv __rglgen_glGetUniformfv +#define glGetUniformiv __rglgen_glGetUniformiv +#define glGetVertexAttribdv __rglgen_glGetVertexAttribdv +#define glGetVertexAttribfv __rglgen_glGetVertexAttribfv +#define glGetVertexAttribiv __rglgen_glGetVertexAttribiv +#define glGetVertexAttribPointerv __rglgen_glGetVertexAttribPointerv +#define glIsProgram __rglgen_glIsProgram +#define glIsShader __rglgen_glIsShader +#define glLinkProgram __rglgen_glLinkProgram +#define glShaderSource __rglgen_glShaderSource +#define glUseProgram __rglgen_glUseProgram +#define glUniform1f __rglgen_glUniform1f +#define glUniform2f __rglgen_glUniform2f +#define glUniform3f __rglgen_glUniform3f +#define glUniform4f __rglgen_glUniform4f +#define glUniform1i __rglgen_glUniform1i +#define glUniform2i __rglgen_glUniform2i +#define glUniform3i __rglgen_glUniform3i +#define glUniform4i __rglgen_glUniform4i +#define glUniform1fv __rglgen_glUniform1fv +#define glUniform2fv __rglgen_glUniform2fv +#define glUniform3fv __rglgen_glUniform3fv +#define glUniform4fv __rglgen_glUniform4fv +#define glUniform1iv __rglgen_glUniform1iv +#define glUniform2iv __rglgen_glUniform2iv +#define glUniform3iv __rglgen_glUniform3iv +#define glUniform4iv __rglgen_glUniform4iv +#define glUniformMatrix2fv __rglgen_glUniformMatrix2fv +#define glUniformMatrix3fv __rglgen_glUniformMatrix3fv +#define glUniformMatrix4fv __rglgen_glUniformMatrix4fv +#define glValidateProgram __rglgen_glValidateProgram +#define glVertexAttrib1d __rglgen_glVertexAttrib1d +#define glVertexAttrib1dv __rglgen_glVertexAttrib1dv +#define glVertexAttrib1f __rglgen_glVertexAttrib1f +#define glVertexAttrib1fv __rglgen_glVertexAttrib1fv +#define glVertexAttrib1s __rglgen_glVertexAttrib1s +#define glVertexAttrib1sv __rglgen_glVertexAttrib1sv +#define glVertexAttrib2d __rglgen_glVertexAttrib2d +#define glVertexAttrib2dv __rglgen_glVertexAttrib2dv +#define glVertexAttrib2f __rglgen_glVertexAttrib2f +#define glVertexAttrib2fv __rglgen_glVertexAttrib2fv +#define glVertexAttrib2s __rglgen_glVertexAttrib2s +#define glVertexAttrib2sv __rglgen_glVertexAttrib2sv +#define glVertexAttrib3d __rglgen_glVertexAttrib3d +#define glVertexAttrib3dv __rglgen_glVertexAttrib3dv +#define glVertexAttrib3f __rglgen_glVertexAttrib3f +#define glVertexAttrib3fv __rglgen_glVertexAttrib3fv +#define glVertexAttrib3s __rglgen_glVertexAttrib3s +#define glVertexAttrib3sv __rglgen_glVertexAttrib3sv +#define glVertexAttrib4Nbv __rglgen_glVertexAttrib4Nbv +#define glVertexAttrib4Niv __rglgen_glVertexAttrib4Niv +#define glVertexAttrib4Nsv __rglgen_glVertexAttrib4Nsv +#define glVertexAttrib4Nub __rglgen_glVertexAttrib4Nub +#define glVertexAttrib4Nubv __rglgen_glVertexAttrib4Nubv +#define glVertexAttrib4Nuiv __rglgen_glVertexAttrib4Nuiv +#define glVertexAttrib4Nusv __rglgen_glVertexAttrib4Nusv +#define glVertexAttrib4bv __rglgen_glVertexAttrib4bv +#define glVertexAttrib4d __rglgen_glVertexAttrib4d +#define glVertexAttrib4dv __rglgen_glVertexAttrib4dv +#define glVertexAttrib4f __rglgen_glVertexAttrib4f +#define glVertexAttrib4fv __rglgen_glVertexAttrib4fv +#define glVertexAttrib4iv __rglgen_glVertexAttrib4iv +#define glVertexAttrib4s __rglgen_glVertexAttrib4s +#define glVertexAttrib4sv __rglgen_glVertexAttrib4sv +#define glVertexAttrib4ubv __rglgen_glVertexAttrib4ubv +#define glVertexAttrib4uiv __rglgen_glVertexAttrib4uiv +#define glVertexAttrib4usv __rglgen_glVertexAttrib4usv +#define glVertexAttribPointer __rglgen_glVertexAttribPointer +#define glUniformMatrix2x3fv __rglgen_glUniformMatrix2x3fv +#define glUniformMatrix3x2fv __rglgen_glUniformMatrix3x2fv +#define glUniformMatrix2x4fv __rglgen_glUniformMatrix2x4fv +#define glUniformMatrix4x2fv __rglgen_glUniformMatrix4x2fv +#define glUniformMatrix3x4fv __rglgen_glUniformMatrix3x4fv +#define glUniformMatrix4x3fv __rglgen_glUniformMatrix4x3fv +#define glColorMaski __rglgen_glColorMaski +#define glGetBooleani_v __rglgen_glGetBooleani_v +#define glGetIntegeri_v __rglgen_glGetIntegeri_v +#define glEnablei __rglgen_glEnablei +#define glDisablei __rglgen_glDisablei +#define glIsEnabledi __rglgen_glIsEnabledi +#define glBeginTransformFeedback __rglgen_glBeginTransformFeedback +#define glEndTransformFeedback __rglgen_glEndTransformFeedback +#define glBindBufferRange __rglgen_glBindBufferRange +#define glBindBufferBase __rglgen_glBindBufferBase +#define glTransformFeedbackVaryings __rglgen_glTransformFeedbackVaryings +#define glGetTransformFeedbackVarying __rglgen_glGetTransformFeedbackVarying +#define glClampColor __rglgen_glClampColor +#define glBeginConditionalRender __rglgen_glBeginConditionalRender +#define glEndConditionalRender __rglgen_glEndConditionalRender +#define glVertexAttribIPointer __rglgen_glVertexAttribIPointer +#define glGetVertexAttribIiv __rglgen_glGetVertexAttribIiv +#define glGetVertexAttribIuiv __rglgen_glGetVertexAttribIuiv +#define glVertexAttribI1i __rglgen_glVertexAttribI1i +#define glVertexAttribI2i __rglgen_glVertexAttribI2i +#define glVertexAttribI3i __rglgen_glVertexAttribI3i +#define glVertexAttribI4i __rglgen_glVertexAttribI4i +#define glVertexAttribI1ui __rglgen_glVertexAttribI1ui +#define glVertexAttribI2ui __rglgen_glVertexAttribI2ui +#define glVertexAttribI3ui __rglgen_glVertexAttribI3ui +#define glVertexAttribI4ui __rglgen_glVertexAttribI4ui +#define glVertexAttribI1iv __rglgen_glVertexAttribI1iv +#define glVertexAttribI2iv __rglgen_glVertexAttribI2iv +#define glVertexAttribI3iv __rglgen_glVertexAttribI3iv +#define glVertexAttribI4iv __rglgen_glVertexAttribI4iv +#define glVertexAttribI1uiv __rglgen_glVertexAttribI1uiv +#define glVertexAttribI2uiv __rglgen_glVertexAttribI2uiv +#define glVertexAttribI3uiv __rglgen_glVertexAttribI3uiv +#define glVertexAttribI4uiv __rglgen_glVertexAttribI4uiv +#define glVertexAttribI4bv __rglgen_glVertexAttribI4bv +#define glVertexAttribI4sv __rglgen_glVertexAttribI4sv +#define glVertexAttribI4ubv __rglgen_glVertexAttribI4ubv +#define glVertexAttribI4usv __rglgen_glVertexAttribI4usv +#define glGetUniformuiv __rglgen_glGetUniformuiv +#define glBindFragDataLocation __rglgen_glBindFragDataLocation +#define glGetFragDataLocation __rglgen_glGetFragDataLocation +#define glUniform1ui __rglgen_glUniform1ui +#define glUniform2ui __rglgen_glUniform2ui +#define glUniform3ui __rglgen_glUniform3ui +#define glUniform4ui __rglgen_glUniform4ui +#define glUniform1uiv __rglgen_glUniform1uiv +#define glUniform2uiv __rglgen_glUniform2uiv +#define glUniform3uiv __rglgen_glUniform3uiv +#define glUniform4uiv __rglgen_glUniform4uiv +#define glTexParameterIiv __rglgen_glTexParameterIiv +#define glTexParameterIuiv __rglgen_glTexParameterIuiv +#define glGetTexParameterIiv __rglgen_glGetTexParameterIiv +#define glGetTexParameterIuiv __rglgen_glGetTexParameterIuiv +#define glClearBufferiv __rglgen_glClearBufferiv +#define glClearBufferuiv __rglgen_glClearBufferuiv +#define glClearBufferfv __rglgen_glClearBufferfv +#define glClearBufferfi __rglgen_glClearBufferfi +#define glGetStringi __rglgen_glGetStringi +#define glDrawArraysInstanced __rglgen_glDrawArraysInstanced +#define glDrawElementsInstanced __rglgen_glDrawElementsInstanced +#define glTexBuffer __rglgen_glTexBuffer +#define glPrimitiveRestartIndex __rglgen_glPrimitiveRestartIndex +#define glGetInteger64i_v __rglgen_glGetInteger64i_v +#define glGetBufferParameteri64v __rglgen_glGetBufferParameteri64v +#define glFramebufferTexture __rglgen_glFramebufferTexture +#define glVertexAttribDivisor __rglgen_glVertexAttribDivisor +#define glMinSampleShading __rglgen_glMinSampleShading +#define glBlendEquationi __rglgen_glBlendEquationi +#define glBlendEquationSeparatei __rglgen_glBlendEquationSeparatei +#define glBlendFunci __rglgen_glBlendFunci +#define glBlendFuncSeparatei __rglgen_glBlendFuncSeparatei +#define glActiveTextureARB __rglgen_glActiveTextureARB +#define glClientActiveTextureARB __rglgen_glClientActiveTextureARB +#define glMultiTexCoord1dARB __rglgen_glMultiTexCoord1dARB +#define glMultiTexCoord1dvARB __rglgen_glMultiTexCoord1dvARB +#define glMultiTexCoord1fARB __rglgen_glMultiTexCoord1fARB +#define glMultiTexCoord1fvARB __rglgen_glMultiTexCoord1fvARB +#define glMultiTexCoord1iARB __rglgen_glMultiTexCoord1iARB +#define glMultiTexCoord1ivARB __rglgen_glMultiTexCoord1ivARB +#define glMultiTexCoord1sARB __rglgen_glMultiTexCoord1sARB +#define glMultiTexCoord1svARB __rglgen_glMultiTexCoord1svARB +#define glMultiTexCoord2dARB __rglgen_glMultiTexCoord2dARB +#define glMultiTexCoord2dvARB __rglgen_glMultiTexCoord2dvARB +#define glMultiTexCoord2fARB __rglgen_glMultiTexCoord2fARB +#define glMultiTexCoord2fvARB __rglgen_glMultiTexCoord2fvARB +#define glMultiTexCoord2iARB __rglgen_glMultiTexCoord2iARB +#define glMultiTexCoord2ivARB __rglgen_glMultiTexCoord2ivARB +#define glMultiTexCoord2sARB __rglgen_glMultiTexCoord2sARB +#define glMultiTexCoord2svARB __rglgen_glMultiTexCoord2svARB +#define glMultiTexCoord3dARB __rglgen_glMultiTexCoord3dARB +#define glMultiTexCoord3dvARB __rglgen_glMultiTexCoord3dvARB +#define glMultiTexCoord3fARB __rglgen_glMultiTexCoord3fARB +#define glMultiTexCoord3fvARB __rglgen_glMultiTexCoord3fvARB +#define glMultiTexCoord3iARB __rglgen_glMultiTexCoord3iARB +#define glMultiTexCoord3ivARB __rglgen_glMultiTexCoord3ivARB +#define glMultiTexCoord3sARB __rglgen_glMultiTexCoord3sARB +#define glMultiTexCoord3svARB __rglgen_glMultiTexCoord3svARB +#define glMultiTexCoord4dARB __rglgen_glMultiTexCoord4dARB +#define glMultiTexCoord4dvARB __rglgen_glMultiTexCoord4dvARB +#define glMultiTexCoord4fARB __rglgen_glMultiTexCoord4fARB +#define glMultiTexCoord4fvARB __rglgen_glMultiTexCoord4fvARB +#define glMultiTexCoord4iARB __rglgen_glMultiTexCoord4iARB +#define glMultiTexCoord4ivARB __rglgen_glMultiTexCoord4ivARB +#define glMultiTexCoord4sARB __rglgen_glMultiTexCoord4sARB +#define glMultiTexCoord4svARB __rglgen_glMultiTexCoord4svARB +#define glLoadTransposeMatrixfARB __rglgen_glLoadTransposeMatrixfARB +#define glLoadTransposeMatrixdARB __rglgen_glLoadTransposeMatrixdARB +#define glMultTransposeMatrixfARB __rglgen_glMultTransposeMatrixfARB +#define glMultTransposeMatrixdARB __rglgen_glMultTransposeMatrixdARB +#define glSampleCoverageARB __rglgen_glSampleCoverageARB +#define glCompressedTexImage3DARB __rglgen_glCompressedTexImage3DARB +#define glCompressedTexImage2DARB __rglgen_glCompressedTexImage2DARB +#define glCompressedTexImage1DARB __rglgen_glCompressedTexImage1DARB +#define glCompressedTexSubImage3DARB __rglgen_glCompressedTexSubImage3DARB +#define glCompressedTexSubImage2DARB __rglgen_glCompressedTexSubImage2DARB +#define glCompressedTexSubImage1DARB __rglgen_glCompressedTexSubImage1DARB +#define glGetCompressedTexImageARB __rglgen_glGetCompressedTexImageARB +#define glPointParameterfARB __rglgen_glPointParameterfARB +#define glPointParameterfvARB __rglgen_glPointParameterfvARB +#define glWeightbvARB __rglgen_glWeightbvARB +#define glWeightsvARB __rglgen_glWeightsvARB +#define glWeightivARB __rglgen_glWeightivARB +#define glWeightfvARB __rglgen_glWeightfvARB +#define glWeightdvARB __rglgen_glWeightdvARB +#define glWeightubvARB __rglgen_glWeightubvARB +#define glWeightusvARB __rglgen_glWeightusvARB +#define glWeightuivARB __rglgen_glWeightuivARB +#define glWeightPointerARB __rglgen_glWeightPointerARB +#define glVertexBlendARB __rglgen_glVertexBlendARB +#define glCurrentPaletteMatrixARB __rglgen_glCurrentPaletteMatrixARB +#define glMatrixIndexubvARB __rglgen_glMatrixIndexubvARB +#define glMatrixIndexusvARB __rglgen_glMatrixIndexusvARB +#define glMatrixIndexuivARB __rglgen_glMatrixIndexuivARB +#define glMatrixIndexPointerARB __rglgen_glMatrixIndexPointerARB +#define glWindowPos2dARB __rglgen_glWindowPos2dARB +#define glWindowPos2dvARB __rglgen_glWindowPos2dvARB +#define glWindowPos2fARB __rglgen_glWindowPos2fARB +#define glWindowPos2fvARB __rglgen_glWindowPos2fvARB +#define glWindowPos2iARB __rglgen_glWindowPos2iARB +#define glWindowPos2ivARB __rglgen_glWindowPos2ivARB +#define glWindowPos2sARB __rglgen_glWindowPos2sARB +#define glWindowPos2svARB __rglgen_glWindowPos2svARB +#define glWindowPos3dARB __rglgen_glWindowPos3dARB +#define glWindowPos3dvARB __rglgen_glWindowPos3dvARB +#define glWindowPos3fARB __rglgen_glWindowPos3fARB +#define glWindowPos3fvARB __rglgen_glWindowPos3fvARB +#define glWindowPos3iARB __rglgen_glWindowPos3iARB +#define glWindowPos3ivARB __rglgen_glWindowPos3ivARB +#define glWindowPos3sARB __rglgen_glWindowPos3sARB +#define glWindowPos3svARB __rglgen_glWindowPos3svARB +#define glVertexAttrib1dARB __rglgen_glVertexAttrib1dARB +#define glVertexAttrib1dvARB __rglgen_glVertexAttrib1dvARB +#define glVertexAttrib1fARB __rglgen_glVertexAttrib1fARB +#define glVertexAttrib1fvARB __rglgen_glVertexAttrib1fvARB +#define glVertexAttrib1sARB __rglgen_glVertexAttrib1sARB +#define glVertexAttrib1svARB __rglgen_glVertexAttrib1svARB +#define glVertexAttrib2dARB __rglgen_glVertexAttrib2dARB +#define glVertexAttrib2dvARB __rglgen_glVertexAttrib2dvARB +#define glVertexAttrib2fARB __rglgen_glVertexAttrib2fARB +#define glVertexAttrib2fvARB __rglgen_glVertexAttrib2fvARB +#define glVertexAttrib2sARB __rglgen_glVertexAttrib2sARB +#define glVertexAttrib2svARB __rglgen_glVertexAttrib2svARB +#define glVertexAttrib3dARB __rglgen_glVertexAttrib3dARB +#define glVertexAttrib3dvARB __rglgen_glVertexAttrib3dvARB +#define glVertexAttrib3fARB __rglgen_glVertexAttrib3fARB +#define glVertexAttrib3fvARB __rglgen_glVertexAttrib3fvARB +#define glVertexAttrib3sARB __rglgen_glVertexAttrib3sARB +#define glVertexAttrib3svARB __rglgen_glVertexAttrib3svARB +#define glVertexAttrib4NbvARB __rglgen_glVertexAttrib4NbvARB +#define glVertexAttrib4NivARB __rglgen_glVertexAttrib4NivARB +#define glVertexAttrib4NsvARB __rglgen_glVertexAttrib4NsvARB +#define glVertexAttrib4NubARB __rglgen_glVertexAttrib4NubARB +#define glVertexAttrib4NubvARB __rglgen_glVertexAttrib4NubvARB +#define glVertexAttrib4NuivARB __rglgen_glVertexAttrib4NuivARB +#define glVertexAttrib4NusvARB __rglgen_glVertexAttrib4NusvARB +#define glVertexAttrib4bvARB __rglgen_glVertexAttrib4bvARB +#define glVertexAttrib4dARB __rglgen_glVertexAttrib4dARB +#define glVertexAttrib4dvARB __rglgen_glVertexAttrib4dvARB +#define glVertexAttrib4fARB __rglgen_glVertexAttrib4fARB +#define glVertexAttrib4fvARB __rglgen_glVertexAttrib4fvARB +#define glVertexAttrib4ivARB __rglgen_glVertexAttrib4ivARB +#define glVertexAttrib4sARB __rglgen_glVertexAttrib4sARB +#define glVertexAttrib4svARB __rglgen_glVertexAttrib4svARB +#define glVertexAttrib4ubvARB __rglgen_glVertexAttrib4ubvARB +#define glVertexAttrib4uivARB __rglgen_glVertexAttrib4uivARB +#define glVertexAttrib4usvARB __rglgen_glVertexAttrib4usvARB +#define glVertexAttribPointerARB __rglgen_glVertexAttribPointerARB +#define glEnableVertexAttribArrayARB __rglgen_glEnableVertexAttribArrayARB +#define glDisableVertexAttribArrayARB __rglgen_glDisableVertexAttribArrayARB +#define glProgramStringARB __rglgen_glProgramStringARB +#define glBindProgramARB __rglgen_glBindProgramARB +#define glDeleteProgramsARB __rglgen_glDeleteProgramsARB +#define glGenProgramsARB __rglgen_glGenProgramsARB +#define glProgramEnvParameter4dARB __rglgen_glProgramEnvParameter4dARB +#define glProgramEnvParameter4dvARB __rglgen_glProgramEnvParameter4dvARB +#define glProgramEnvParameter4fARB __rglgen_glProgramEnvParameter4fARB +#define glProgramEnvParameter4fvARB __rglgen_glProgramEnvParameter4fvARB +#define glProgramLocalParameter4dARB __rglgen_glProgramLocalParameter4dARB +#define glProgramLocalParameter4dvARB __rglgen_glProgramLocalParameter4dvARB +#define glProgramLocalParameter4fARB __rglgen_glProgramLocalParameter4fARB +#define glProgramLocalParameter4fvARB __rglgen_glProgramLocalParameter4fvARB +#define glGetProgramEnvParameterdvARB __rglgen_glGetProgramEnvParameterdvARB +#define glGetProgramEnvParameterfvARB __rglgen_glGetProgramEnvParameterfvARB +#define glGetProgramLocalParameterdvARB __rglgen_glGetProgramLocalParameterdvARB +#define glGetProgramLocalParameterfvARB __rglgen_glGetProgramLocalParameterfvARB +#define glGetProgramivARB __rglgen_glGetProgramivARB +#define glGetProgramStringARB __rglgen_glGetProgramStringARB +#define glGetVertexAttribdvARB __rglgen_glGetVertexAttribdvARB +#define glGetVertexAttribfvARB __rglgen_glGetVertexAttribfvARB +#define glGetVertexAttribivARB __rglgen_glGetVertexAttribivARB +#define glGetVertexAttribPointervARB __rglgen_glGetVertexAttribPointervARB +#define glIsProgramARB __rglgen_glIsProgramARB +#define glBindBufferARB __rglgen_glBindBufferARB +#define glDeleteBuffersARB __rglgen_glDeleteBuffersARB +#define glGenBuffersARB __rglgen_glGenBuffersARB +#define glIsBufferARB __rglgen_glIsBufferARB +#define glBufferDataARB __rglgen_glBufferDataARB +#define glBufferSubDataARB __rglgen_glBufferSubDataARB +#define glGetBufferSubDataARB __rglgen_glGetBufferSubDataARB +#define glMapBufferARB __rglgen_glMapBufferARB +#define glUnmapBufferARB __rglgen_glUnmapBufferARB +#define glGetBufferParameterivARB __rglgen_glGetBufferParameterivARB +#define glGetBufferPointervARB __rglgen_glGetBufferPointervARB +#define glGenQueriesARB __rglgen_glGenQueriesARB +#define glDeleteQueriesARB __rglgen_glDeleteQueriesARB +#define glIsQueryARB __rglgen_glIsQueryARB +#define glBeginQueryARB __rglgen_glBeginQueryARB +#define glEndQueryARB __rglgen_glEndQueryARB +#define glGetQueryivARB __rglgen_glGetQueryivARB +#define glGetQueryObjectivARB __rglgen_glGetQueryObjectivARB +#define glGetQueryObjectuivARB __rglgen_glGetQueryObjectuivARB +#define glDeleteObjectARB __rglgen_glDeleteObjectARB +#define glGetHandleARB __rglgen_glGetHandleARB +#define glDetachObjectARB __rglgen_glDetachObjectARB +#define glCreateShaderObjectARB __rglgen_glCreateShaderObjectARB +#define glShaderSourceARB __rglgen_glShaderSourceARB +#define glCompileShaderARB __rglgen_glCompileShaderARB +#define glCreateProgramObjectARB __rglgen_glCreateProgramObjectARB +#define glAttachObjectARB __rglgen_glAttachObjectARB +#define glLinkProgramARB __rglgen_glLinkProgramARB +#define glUseProgramObjectARB __rglgen_glUseProgramObjectARB +#define glValidateProgramARB __rglgen_glValidateProgramARB +#define glUniform1fARB __rglgen_glUniform1fARB +#define glUniform2fARB __rglgen_glUniform2fARB +#define glUniform3fARB __rglgen_glUniform3fARB +#define glUniform4fARB __rglgen_glUniform4fARB +#define glUniform1iARB __rglgen_glUniform1iARB +#define glUniform2iARB __rglgen_glUniform2iARB +#define glUniform3iARB __rglgen_glUniform3iARB +#define glUniform4iARB __rglgen_glUniform4iARB +#define glUniform1fvARB __rglgen_glUniform1fvARB +#define glUniform2fvARB __rglgen_glUniform2fvARB +#define glUniform3fvARB __rglgen_glUniform3fvARB +#define glUniform4fvARB __rglgen_glUniform4fvARB +#define glUniform1ivARB __rglgen_glUniform1ivARB +#define glUniform2ivARB __rglgen_glUniform2ivARB +#define glUniform3ivARB __rglgen_glUniform3ivARB +#define glUniform4ivARB __rglgen_glUniform4ivARB +#define glUniformMatrix2fvARB __rglgen_glUniformMatrix2fvARB +#define glUniformMatrix3fvARB __rglgen_glUniformMatrix3fvARB +#define glUniformMatrix4fvARB __rglgen_glUniformMatrix4fvARB +#define glGetObjectParameterfvARB __rglgen_glGetObjectParameterfvARB +#define glGetObjectParameterivARB __rglgen_glGetObjectParameterivARB +#define glGetInfoLogARB __rglgen_glGetInfoLogARB +#define glGetAttachedObjectsARB __rglgen_glGetAttachedObjectsARB +#define glGetUniformLocationARB __rglgen_glGetUniformLocationARB +#define glGetActiveUniformARB __rglgen_glGetActiveUniformARB +#define glGetUniformfvARB __rglgen_glGetUniformfvARB +#define glGetUniformivARB __rglgen_glGetUniformivARB +#define glGetShaderSourceARB __rglgen_glGetShaderSourceARB +#define glBindAttribLocationARB __rglgen_glBindAttribLocationARB +#define glGetActiveAttribARB __rglgen_glGetActiveAttribARB +#define glGetAttribLocationARB __rglgen_glGetAttribLocationARB +#define glDrawBuffersARB __rglgen_glDrawBuffersARB +#define glClampColorARB __rglgen_glClampColorARB +#define glDrawArraysInstancedARB __rglgen_glDrawArraysInstancedARB +#define glDrawElementsInstancedARB __rglgen_glDrawElementsInstancedARB +#define glIsRenderbuffer __rglgen_glIsRenderbuffer +#define glBindRenderbuffer __rglgen_glBindRenderbuffer +#define glDeleteRenderbuffers __rglgen_glDeleteRenderbuffers +#define glGenRenderbuffers __rglgen_glGenRenderbuffers +#define glRenderbufferStorage __rglgen_glRenderbufferStorage +#define glGetRenderbufferParameteriv __rglgen_glGetRenderbufferParameteriv +#define glIsFramebuffer __rglgen_glIsFramebuffer +#define glBindFramebuffer __rglgen_glBindFramebuffer +#define glDeleteFramebuffers __rglgen_glDeleteFramebuffers +#define glGenFramebuffers __rglgen_glGenFramebuffers +#define glCheckFramebufferStatus __rglgen_glCheckFramebufferStatus +#define glFramebufferTexture1D __rglgen_glFramebufferTexture1D +#define glFramebufferTexture2D __rglgen_glFramebufferTexture2D +#define glFramebufferTexture3D __rglgen_glFramebufferTexture3D +#define glFramebufferRenderbuffer __rglgen_glFramebufferRenderbuffer +#define glGetFramebufferAttachmentParameteriv __rglgen_glGetFramebufferAttachmentParameteriv +#define glGenerateMipmap __rglgen_glGenerateMipmap +#define glBlitFramebuffer __rglgen_glBlitFramebuffer +#define glRenderbufferStorageMultisample __rglgen_glRenderbufferStorageMultisample +#define glFramebufferTextureLayer __rglgen_glFramebufferTextureLayer +#define glProgramParameteriARB __rglgen_glProgramParameteriARB +#define glFramebufferTextureARB __rglgen_glFramebufferTextureARB +#define glFramebufferTextureLayerARB __rglgen_glFramebufferTextureLayerARB +#define glFramebufferTextureFaceARB __rglgen_glFramebufferTextureFaceARB +#define glVertexAttribDivisorARB __rglgen_glVertexAttribDivisorARB +#define glMapBufferRange __rglgen_glMapBufferRange +#define glFlushMappedBufferRange __rglgen_glFlushMappedBufferRange +#define glTexBufferARB __rglgen_glTexBufferARB +#define glBindVertexArray __rglgen_glBindVertexArray +#define glDeleteVertexArrays __rglgen_glDeleteVertexArrays +#define glGenVertexArrays __rglgen_glGenVertexArrays +#define glIsVertexArray __rglgen_glIsVertexArray +#define glGetUniformIndices __rglgen_glGetUniformIndices +#define glGetActiveUniformsiv __rglgen_glGetActiveUniformsiv +#define glGetActiveUniformName __rglgen_glGetActiveUniformName +#define glGetUniformBlockIndex __rglgen_glGetUniformBlockIndex +#define glGetActiveUniformBlockiv __rglgen_glGetActiveUniformBlockiv +#define glGetActiveUniformBlockName __rglgen_glGetActiveUniformBlockName +#define glUniformBlockBinding __rglgen_glUniformBlockBinding +#define glCopyBufferSubData __rglgen_glCopyBufferSubData +#define glDrawElementsBaseVertex __rglgen_glDrawElementsBaseVertex +#define glDrawRangeElementsBaseVertex __rglgen_glDrawRangeElementsBaseVertex +#define glDrawElementsInstancedBaseVertex __rglgen_glDrawElementsInstancedBaseVertex +#define glMultiDrawElementsBaseVertex __rglgen_glMultiDrawElementsBaseVertex +#define glProvokingVertex __rglgen_glProvokingVertex +#define glFenceSync __rglgen_glFenceSync +#define glIsSync __rglgen_glIsSync +#define glDeleteSync __rglgen_glDeleteSync +#define glClientWaitSync __rglgen_glClientWaitSync +#define glWaitSync __rglgen_glWaitSync +#define glGetInteger64v __rglgen_glGetInteger64v +#define glGetSynciv __rglgen_glGetSynciv +#define glTexImage2DMultisample __rglgen_glTexImage2DMultisample +#define glTexImage3DMultisample __rglgen_glTexImage3DMultisample +#define glGetMultisamplefv __rglgen_glGetMultisamplefv +#define glSampleMaski __rglgen_glSampleMaski +#define glBlendEquationiARB __rglgen_glBlendEquationiARB +#define glBlendEquationSeparateiARB __rglgen_glBlendEquationSeparateiARB +#define glBlendFunciARB __rglgen_glBlendFunciARB +#define glBlendFuncSeparateiARB __rglgen_glBlendFuncSeparateiARB +#define glMinSampleShadingARB __rglgen_glMinSampleShadingARB +#define glNamedStringARB __rglgen_glNamedStringARB +#define glDeleteNamedStringARB __rglgen_glDeleteNamedStringARB +#define glCompileShaderIncludeARB __rglgen_glCompileShaderIncludeARB +#define glIsNamedStringARB __rglgen_glIsNamedStringARB +#define glGetNamedStringARB __rglgen_glGetNamedStringARB +#define glGetNamedStringivARB __rglgen_glGetNamedStringivARB +#define glBindFragDataLocationIndexed __rglgen_glBindFragDataLocationIndexed +#define glGetFragDataIndex __rglgen_glGetFragDataIndex +#define glGenSamplers __rglgen_glGenSamplers +#define glDeleteSamplers __rglgen_glDeleteSamplers +#define glIsSampler __rglgen_glIsSampler +#define glBindSampler __rglgen_glBindSampler +#define glSamplerParameteri __rglgen_glSamplerParameteri +#define glSamplerParameteriv __rglgen_glSamplerParameteriv +#define glSamplerParameterf __rglgen_glSamplerParameterf +#define glSamplerParameterfv __rglgen_glSamplerParameterfv +#define glSamplerParameterIiv __rglgen_glSamplerParameterIiv +#define glSamplerParameterIuiv __rglgen_glSamplerParameterIuiv +#define glGetSamplerParameteriv __rglgen_glGetSamplerParameteriv +#define glGetSamplerParameterIiv __rglgen_glGetSamplerParameterIiv +#define glGetSamplerParameterfv __rglgen_glGetSamplerParameterfv +#define glGetSamplerParameterIuiv __rglgen_glGetSamplerParameterIuiv +#define glQueryCounter __rglgen_glQueryCounter +#define glGetQueryObjecti64v __rglgen_glGetQueryObjecti64v +#define glGetQueryObjectui64v __rglgen_glGetQueryObjectui64v +#define glVertexP2ui __rglgen_glVertexP2ui +#define glVertexP2uiv __rglgen_glVertexP2uiv +#define glVertexP3ui __rglgen_glVertexP3ui +#define glVertexP3uiv __rglgen_glVertexP3uiv +#define glVertexP4ui __rglgen_glVertexP4ui +#define glVertexP4uiv __rglgen_glVertexP4uiv +#define glTexCoordP1ui __rglgen_glTexCoordP1ui +#define glTexCoordP1uiv __rglgen_glTexCoordP1uiv +#define glTexCoordP2ui __rglgen_glTexCoordP2ui +#define glTexCoordP2uiv __rglgen_glTexCoordP2uiv +#define glTexCoordP3ui __rglgen_glTexCoordP3ui +#define glTexCoordP3uiv __rglgen_glTexCoordP3uiv +#define glTexCoordP4ui __rglgen_glTexCoordP4ui +#define glTexCoordP4uiv __rglgen_glTexCoordP4uiv +#define glMultiTexCoordP1ui __rglgen_glMultiTexCoordP1ui +#define glMultiTexCoordP1uiv __rglgen_glMultiTexCoordP1uiv +#define glMultiTexCoordP2ui __rglgen_glMultiTexCoordP2ui +#define glMultiTexCoordP2uiv __rglgen_glMultiTexCoordP2uiv +#define glMultiTexCoordP3ui __rglgen_glMultiTexCoordP3ui +#define glMultiTexCoordP3uiv __rglgen_glMultiTexCoordP3uiv +#define glMultiTexCoordP4ui __rglgen_glMultiTexCoordP4ui +#define glMultiTexCoordP4uiv __rglgen_glMultiTexCoordP4uiv +#define glNormalP3ui __rglgen_glNormalP3ui +#define glNormalP3uiv __rglgen_glNormalP3uiv +#define glColorP3ui __rglgen_glColorP3ui +#define glColorP3uiv __rglgen_glColorP3uiv +#define glColorP4ui __rglgen_glColorP4ui +#define glColorP4uiv __rglgen_glColorP4uiv +#define glSecondaryColorP3ui __rglgen_glSecondaryColorP3ui +#define glSecondaryColorP3uiv __rglgen_glSecondaryColorP3uiv +#define glVertexAttribP1ui __rglgen_glVertexAttribP1ui +#define glVertexAttribP1uiv __rglgen_glVertexAttribP1uiv +#define glVertexAttribP2ui __rglgen_glVertexAttribP2ui +#define glVertexAttribP2uiv __rglgen_glVertexAttribP2uiv +#define glVertexAttribP3ui __rglgen_glVertexAttribP3ui +#define glVertexAttribP3uiv __rglgen_glVertexAttribP3uiv +#define glVertexAttribP4ui __rglgen_glVertexAttribP4ui +#define glVertexAttribP4uiv __rglgen_glVertexAttribP4uiv +#define glDrawArraysIndirect __rglgen_glDrawArraysIndirect +#define glDrawElementsIndirect __rglgen_glDrawElementsIndirect +#define glUniform1d __rglgen_glUniform1d +#define glUniform2d __rglgen_glUniform2d +#define glUniform3d __rglgen_glUniform3d +#define glUniform4d __rglgen_glUniform4d +#define glUniform1dv __rglgen_glUniform1dv +#define glUniform2dv __rglgen_glUniform2dv +#define glUniform3dv __rglgen_glUniform3dv +#define glUniform4dv __rglgen_glUniform4dv +#define glUniformMatrix2dv __rglgen_glUniformMatrix2dv +#define glUniformMatrix3dv __rglgen_glUniformMatrix3dv +#define glUniformMatrix4dv __rglgen_glUniformMatrix4dv +#define glUniformMatrix2x3dv __rglgen_glUniformMatrix2x3dv +#define glUniformMatrix2x4dv __rglgen_glUniformMatrix2x4dv +#define glUniformMatrix3x2dv __rglgen_glUniformMatrix3x2dv +#define glUniformMatrix3x4dv __rglgen_glUniformMatrix3x4dv +#define glUniformMatrix4x2dv __rglgen_glUniformMatrix4x2dv +#define glUniformMatrix4x3dv __rglgen_glUniformMatrix4x3dv +#define glGetUniformdv __rglgen_glGetUniformdv +#define glGetSubroutineUniformLocation __rglgen_glGetSubroutineUniformLocation +#define glGetSubroutineIndex __rglgen_glGetSubroutineIndex +#define glGetActiveSubroutineUniformiv __rglgen_glGetActiveSubroutineUniformiv +#define glGetActiveSubroutineUniformName __rglgen_glGetActiveSubroutineUniformName +#define glGetActiveSubroutineName __rglgen_glGetActiveSubroutineName +#define glUniformSubroutinesuiv __rglgen_glUniformSubroutinesuiv +#define glGetUniformSubroutineuiv __rglgen_glGetUniformSubroutineuiv +#define glGetProgramStageiv __rglgen_glGetProgramStageiv +#define glPatchParameteri __rglgen_glPatchParameteri +#define glPatchParameterfv __rglgen_glPatchParameterfv +#define glBindTransformFeedback __rglgen_glBindTransformFeedback +#define glDeleteTransformFeedbacks __rglgen_glDeleteTransformFeedbacks +#define glGenTransformFeedbacks __rglgen_glGenTransformFeedbacks +#define glIsTransformFeedback __rglgen_glIsTransformFeedback +#define glPauseTransformFeedback __rglgen_glPauseTransformFeedback +#define glResumeTransformFeedback __rglgen_glResumeTransformFeedback +#define glDrawTransformFeedback __rglgen_glDrawTransformFeedback +#define glDrawTransformFeedbackStream __rglgen_glDrawTransformFeedbackStream +#define glBeginQueryIndexed __rglgen_glBeginQueryIndexed +#define glEndQueryIndexed __rglgen_glEndQueryIndexed +#define glGetQueryIndexediv __rglgen_glGetQueryIndexediv +#define glReleaseShaderCompiler __rglgen_glReleaseShaderCompiler +#define glShaderBinary __rglgen_glShaderBinary +#define glGetShaderPrecisionFormat __rglgen_glGetShaderPrecisionFormat +#define glDepthRangef __rglgen_glDepthRangef +#define glClearDepthf __rglgen_glClearDepthf +#define glGetProgramBinary __rglgen_glGetProgramBinary +#define glProgramBinary __rglgen_glProgramBinary +#define glProgramParameteri __rglgen_glProgramParameteri +#define glUseProgramStages __rglgen_glUseProgramStages +#define glActiveShaderProgram __rglgen_glActiveShaderProgram +#define glCreateShaderProgramv __rglgen_glCreateShaderProgramv +#define glBindProgramPipeline __rglgen_glBindProgramPipeline +#define glDeleteProgramPipelines __rglgen_glDeleteProgramPipelines +#define glGenProgramPipelines __rglgen_glGenProgramPipelines +#define glIsProgramPipeline __rglgen_glIsProgramPipeline +#define glGetProgramPipelineiv __rglgen_glGetProgramPipelineiv +#define glProgramUniform1i __rglgen_glProgramUniform1i +#define glProgramUniform1iv __rglgen_glProgramUniform1iv +#define glProgramUniform1f __rglgen_glProgramUniform1f +#define glProgramUniform1fv __rglgen_glProgramUniform1fv +#define glProgramUniform1d __rglgen_glProgramUniform1d +#define glProgramUniform1dv __rglgen_glProgramUniform1dv +#define glProgramUniform1ui __rglgen_glProgramUniform1ui +#define glProgramUniform1uiv __rglgen_glProgramUniform1uiv +#define glProgramUniform2i __rglgen_glProgramUniform2i +#define glProgramUniform2iv __rglgen_glProgramUniform2iv +#define glProgramUniform2f __rglgen_glProgramUniform2f +#define glProgramUniform2fv __rglgen_glProgramUniform2fv +#define glProgramUniform2d __rglgen_glProgramUniform2d +#define glProgramUniform2dv __rglgen_glProgramUniform2dv +#define glProgramUniform2ui __rglgen_glProgramUniform2ui +#define glProgramUniform2uiv __rglgen_glProgramUniform2uiv +#define glProgramUniform3i __rglgen_glProgramUniform3i +#define glProgramUniform3iv __rglgen_glProgramUniform3iv +#define glProgramUniform3f __rglgen_glProgramUniform3f +#define glProgramUniform3fv __rglgen_glProgramUniform3fv +#define glProgramUniform3d __rglgen_glProgramUniform3d +#define glProgramUniform3dv __rglgen_glProgramUniform3dv +#define glProgramUniform3ui __rglgen_glProgramUniform3ui +#define glProgramUniform3uiv __rglgen_glProgramUniform3uiv +#define glProgramUniform4i __rglgen_glProgramUniform4i +#define glProgramUniform4iv __rglgen_glProgramUniform4iv +#define glProgramUniform4f __rglgen_glProgramUniform4f +#define glProgramUniform4fv __rglgen_glProgramUniform4fv +#define glProgramUniform4d __rglgen_glProgramUniform4d +#define glProgramUniform4dv __rglgen_glProgramUniform4dv +#define glProgramUniform4ui __rglgen_glProgramUniform4ui +#define glProgramUniform4uiv __rglgen_glProgramUniform4uiv +#define glProgramUniformMatrix2fv __rglgen_glProgramUniformMatrix2fv +#define glProgramUniformMatrix3fv __rglgen_glProgramUniformMatrix3fv +#define glProgramUniformMatrix4fv __rglgen_glProgramUniformMatrix4fv +#define glProgramUniformMatrix2dv __rglgen_glProgramUniformMatrix2dv +#define glProgramUniformMatrix3dv __rglgen_glProgramUniformMatrix3dv +#define glProgramUniformMatrix4dv __rglgen_glProgramUniformMatrix4dv +#define glProgramUniformMatrix2x3fv __rglgen_glProgramUniformMatrix2x3fv +#define glProgramUniformMatrix3x2fv __rglgen_glProgramUniformMatrix3x2fv +#define glProgramUniformMatrix2x4fv __rglgen_glProgramUniformMatrix2x4fv +#define glProgramUniformMatrix4x2fv __rglgen_glProgramUniformMatrix4x2fv +#define glProgramUniformMatrix3x4fv __rglgen_glProgramUniformMatrix3x4fv +#define glProgramUniformMatrix4x3fv __rglgen_glProgramUniformMatrix4x3fv +#define glProgramUniformMatrix2x3dv __rglgen_glProgramUniformMatrix2x3dv +#define glProgramUniformMatrix3x2dv __rglgen_glProgramUniformMatrix3x2dv +#define glProgramUniformMatrix2x4dv __rglgen_glProgramUniformMatrix2x4dv +#define glProgramUniformMatrix4x2dv __rglgen_glProgramUniformMatrix4x2dv +#define glProgramUniformMatrix3x4dv __rglgen_glProgramUniformMatrix3x4dv +#define glProgramUniformMatrix4x3dv __rglgen_glProgramUniformMatrix4x3dv +#define glValidateProgramPipeline __rglgen_glValidateProgramPipeline +#define glGetProgramPipelineInfoLog __rglgen_glGetProgramPipelineInfoLog +#define glVertexAttribL1d __rglgen_glVertexAttribL1d +#define glVertexAttribL2d __rglgen_glVertexAttribL2d +#define glVertexAttribL3d __rglgen_glVertexAttribL3d +#define glVertexAttribL4d __rglgen_glVertexAttribL4d +#define glVertexAttribL1dv __rglgen_glVertexAttribL1dv +#define glVertexAttribL2dv __rglgen_glVertexAttribL2dv +#define glVertexAttribL3dv __rglgen_glVertexAttribL3dv +#define glVertexAttribL4dv __rglgen_glVertexAttribL4dv +#define glVertexAttribLPointer __rglgen_glVertexAttribLPointer +#define glGetVertexAttribLdv __rglgen_glGetVertexAttribLdv +#define glViewportArrayv __rglgen_glViewportArrayv +#define glViewportIndexedf __rglgen_glViewportIndexedf +#define glViewportIndexedfv __rglgen_glViewportIndexedfv +#define glScissorArrayv __rglgen_glScissorArrayv +#define glScissorIndexed __rglgen_glScissorIndexed +#define glScissorIndexedv __rglgen_glScissorIndexedv +#define glDepthRangeArrayv __rglgen_glDepthRangeArrayv +#define glDepthRangeIndexed __rglgen_glDepthRangeIndexed +#define glGetFloati_v __rglgen_glGetFloati_v +#define glGetDoublei_v __rglgen_glGetDoublei_v +#define glCreateSyncFromCLeventARB __rglgen_glCreateSyncFromCLeventARB +#define glDebugMessageControlARB __rglgen_glDebugMessageControlARB +#define glDebugMessageInsertARB __rglgen_glDebugMessageInsertARB +#define glDebugMessageCallbackARB __rglgen_glDebugMessageCallbackARB +#define glGetDebugMessageLogARB __rglgen_glGetDebugMessageLogARB +#define glGetGraphicsResetStatusARB __rglgen_glGetGraphicsResetStatusARB +#define glGetnMapdvARB __rglgen_glGetnMapdvARB +#define glGetnMapfvARB __rglgen_glGetnMapfvARB +#define glGetnMapivARB __rglgen_glGetnMapivARB +#define glGetnPixelMapfvARB __rglgen_glGetnPixelMapfvARB +#define glGetnPixelMapuivARB __rglgen_glGetnPixelMapuivARB +#define glGetnPixelMapusvARB __rglgen_glGetnPixelMapusvARB +#define glGetnPolygonStippleARB __rglgen_glGetnPolygonStippleARB +#define glGetnColorTableARB __rglgen_glGetnColorTableARB +#define glGetnConvolutionFilterARB __rglgen_glGetnConvolutionFilterARB +#define glGetnSeparableFilterARB __rglgen_glGetnSeparableFilterARB +#define glGetnHistogramARB __rglgen_glGetnHistogramARB +#define glGetnMinmaxARB __rglgen_glGetnMinmaxARB +#define glGetnTexImageARB __rglgen_glGetnTexImageARB +#define glReadnPixelsARB __rglgen_glReadnPixelsARB +#define glGetnCompressedTexImageARB __rglgen_glGetnCompressedTexImageARB +#define glGetnUniformfvARB __rglgen_glGetnUniformfvARB +#define glGetnUniformivARB __rglgen_glGetnUniformivARB +#define glGetnUniformuivARB __rglgen_glGetnUniformuivARB +#define glGetnUniformdvARB __rglgen_glGetnUniformdvARB +#define glDrawArraysInstancedBaseInstance __rglgen_glDrawArraysInstancedBaseInstance +#define glDrawElementsInstancedBaseInstance __rglgen_glDrawElementsInstancedBaseInstance +#define glDrawElementsInstancedBaseVertexBaseInstance __rglgen_glDrawElementsInstancedBaseVertexBaseInstance +#define glDrawTransformFeedbackInstanced __rglgen_glDrawTransformFeedbackInstanced +#define glDrawTransformFeedbackStreamInstanced __rglgen_glDrawTransformFeedbackStreamInstanced +#define glGetInternalformativ __rglgen_glGetInternalformativ +#define glGetActiveAtomicCounterBufferiv __rglgen_glGetActiveAtomicCounterBufferiv +#define glBindImageTexture __rglgen_glBindImageTexture +#define glMemoryBarrier __rglgen_glMemoryBarrier +#define glTexStorage1D __rglgen_glTexStorage1D +#define glTexStorage2D __rglgen_glTexStorage2D +#define glTexStorage3D __rglgen_glTexStorage3D +#define glDebugMessageControl __rglgen_glDebugMessageControl +#define glDebugMessageInsert __rglgen_glDebugMessageInsert +#define glDebugMessageCallback __rglgen_glDebugMessageCallback +#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog +#define glPushDebugGroup __rglgen_glPushDebugGroup +#define glPopDebugGroup __rglgen_glPopDebugGroup +#define glObjectLabel __rglgen_glObjectLabel +#define glGetObjectLabel __rglgen_glGetObjectLabel +#define glObjectPtrLabel __rglgen_glObjectPtrLabel +#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel +#define glClearBufferData __rglgen_glClearBufferData +#define glClearBufferSubData __rglgen_glClearBufferSubData +#define glDispatchCompute __rglgen_glDispatchCompute +#define glDispatchComputeIndirect __rglgen_glDispatchComputeIndirect +#define glCopyImageSubData __rglgen_glCopyImageSubData +#define glTextureView __rglgen_glTextureView +#define glBindVertexBuffer __rglgen_glBindVertexBuffer +#define glVertexAttribFormat __rglgen_glVertexAttribFormat +#define glVertexAttribIFormat __rglgen_glVertexAttribIFormat +#define glVertexAttribLFormat __rglgen_glVertexAttribLFormat +#define glVertexAttribBinding __rglgen_glVertexAttribBinding +#define glVertexBindingDivisor __rglgen_glVertexBindingDivisor +#define glFramebufferParameteri __rglgen_glFramebufferParameteri +#define glGetFramebufferParameteriv __rglgen_glGetFramebufferParameteriv +#define glGetInternalformati64v __rglgen_glGetInternalformati64v +#define glInvalidateTexSubImage __rglgen_glInvalidateTexSubImage +#define glInvalidateTexImage __rglgen_glInvalidateTexImage +#define glInvalidateBufferSubData __rglgen_glInvalidateBufferSubData +#define glInvalidateBufferData __rglgen_glInvalidateBufferData +#define glInvalidateFramebuffer __rglgen_glInvalidateFramebuffer +#define glInvalidateSubFramebuffer __rglgen_glInvalidateSubFramebuffer +#define glMultiDrawArraysIndirect __rglgen_glMultiDrawArraysIndirect +#define glMultiDrawElementsIndirect __rglgen_glMultiDrawElementsIndirect +#define glGetProgramInterfaceiv __rglgen_glGetProgramInterfaceiv +#define glGetProgramResourceIndex __rglgen_glGetProgramResourceIndex +#define glGetProgramResourceName __rglgen_glGetProgramResourceName +#define glGetProgramResourceiv __rglgen_glGetProgramResourceiv +#define glGetProgramResourceLocation __rglgen_glGetProgramResourceLocation +#define glGetProgramResourceLocationIndex __rglgen_glGetProgramResourceLocationIndex +#define glShaderStorageBlockBinding __rglgen_glShaderStorageBlockBinding +#define glTexBufferRange __rglgen_glTexBufferRange +#define glTexStorage2DMultisample __rglgen_glTexStorage2DMultisample +#define glTexStorage3DMultisample __rglgen_glTexStorage3DMultisample +#define glImageTransformParameteriHP __rglgen_glImageTransformParameteriHP +#define glImageTransformParameterfHP __rglgen_glImageTransformParameterfHP +#define glImageTransformParameterivHP __rglgen_glImageTransformParameterivHP +#define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP +#define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP +#define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP + +extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; +extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; +extern RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; +extern RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; +extern RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; +extern RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; +extern RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; +extern RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; +extern RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; +extern RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; +extern RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; +extern RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; +extern RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; +extern RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; +extern RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; +extern RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; +extern RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; +extern RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; +extern RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; +extern RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; +extern RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; +extern RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; +extern RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; +extern RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; +extern RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; +extern RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; +extern RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; +extern RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; +extern RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; +extern RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; +extern RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; +extern RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; +extern RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; +extern RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; +extern RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; +extern RGLSYMGLMINMAXPROC __rglgen_glMinmax; +extern RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; +extern RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; +extern RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; +extern RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; +extern RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; +extern RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; +extern RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; +extern RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; +extern RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; +extern RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; +extern RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; +extern RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; +extern RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; +extern RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; +extern RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; +extern RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; +extern RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; +extern RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; +extern RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; +extern RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; +extern RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; +extern RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; +extern RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; +extern RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; +extern RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; +extern RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; +extern RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; +extern RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; +extern RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; +extern RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; +extern RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; +extern RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; +extern RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; +extern RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; +extern RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; +extern RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; +extern RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; +extern RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; +extern RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; +extern RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; +extern RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; +extern RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; +extern RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; +extern RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; +extern RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; +extern RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; +extern RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; +extern RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; +extern RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; +extern RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; +extern RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; +extern RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; +extern RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; +extern RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; +extern RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; +extern RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; +extern RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; +extern RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; +extern RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; +extern RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; +extern RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; +extern RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; +extern RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; +extern RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; +extern RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; +extern RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; +extern RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; +extern RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; +extern RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; +extern RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; +extern RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; +extern RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; +extern RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; +extern RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; +extern RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; +extern RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; +extern RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; +extern RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; +extern RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; +extern RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; +extern RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; +extern RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; +extern RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; +extern RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; +extern RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; +extern RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; +extern RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; +extern RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; +extern RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; +extern RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; +extern RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; +extern RGLSYMGLISQUERYPROC __rglgen_glIsQuery; +extern RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; +extern RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; +extern RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; +extern RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; +extern RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; +extern RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; +extern RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; +extern RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; +extern RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; +extern RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; +extern RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; +extern RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; +extern RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; +extern RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; +extern RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; +extern RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; +extern RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; +extern RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; +extern RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; +extern RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; +extern RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; +extern RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; +extern RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; +extern RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; +extern RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; +extern RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; +extern RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; +extern RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; +extern RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; +extern RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; +extern RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; +extern RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; +extern RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; +extern RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; +extern RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; +extern RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; +extern RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; +extern RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; +extern RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; +extern RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; +extern RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; +extern RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; +extern RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; +extern RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; +extern RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; +extern RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; +extern RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; +extern RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; +extern RGLSYMGLISSHADERPROC __rglgen_glIsShader; +extern RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; +extern RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; +extern RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; +extern RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; +extern RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; +extern RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; +extern RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; +extern RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; +extern RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; +extern RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; +extern RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; +extern RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; +extern RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; +extern RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; +extern RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; +extern RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; +extern RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; +extern RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; +extern RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; +extern RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; +extern RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; +extern RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; +extern RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; +extern RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; +extern RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; +extern RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; +extern RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; +extern RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; +extern RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; +extern RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; +extern RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; +extern RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; +extern RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; +extern RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; +extern RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; +extern RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; +extern RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; +extern RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; +extern RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; +extern RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; +extern RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; +extern RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; +extern RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; +extern RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; +extern RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; +extern RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; +extern RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; +extern RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; +extern RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; +extern RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; +extern RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; +extern RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; +extern RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; +extern RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; +extern RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; +extern RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; +extern RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; +extern RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; +extern RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; +extern RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; +extern RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; +extern RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; +extern RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; +extern RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; +extern RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; +extern RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; +extern RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; +extern RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; +extern RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; +extern RGLSYMGLENABLEIPROC __rglgen_glEnablei; +extern RGLSYMGLDISABLEIPROC __rglgen_glDisablei; +extern RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; +extern RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; +extern RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; +extern RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; +extern RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; +extern RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; +extern RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; +extern RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; +extern RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; +extern RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; +extern RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; +extern RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; +extern RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; +extern RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; +extern RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; +extern RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; +extern RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; +extern RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; +extern RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; +extern RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; +extern RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; +extern RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; +extern RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; +extern RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; +extern RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; +extern RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; +extern RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; +extern RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; +extern RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; +extern RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; +extern RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; +extern RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; +extern RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; +extern RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; +extern RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; +extern RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; +extern RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; +extern RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; +extern RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; +extern RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; +extern RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; +extern RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; +extern RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; +extern RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; +extern RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; +extern RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; +extern RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; +extern RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; +extern RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; +extern RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; +extern RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; +extern RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; +extern RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; +extern RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; +extern RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; +extern RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; +extern RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; +extern RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; +extern RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; +extern RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; +extern RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; +extern RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; +extern RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; +extern RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; +extern RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; +extern RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; +extern RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; +extern RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; +extern RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; +extern RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; +extern RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; +extern RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; +extern RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; +extern RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; +extern RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; +extern RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; +extern RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; +extern RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; +extern RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; +extern RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; +extern RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; +extern RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; +extern RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; +extern RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; +extern RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; +extern RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; +extern RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; +extern RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; +extern RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; +extern RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; +extern RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; +extern RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; +extern RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; +extern RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; +extern RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; +extern RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; +extern RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; +extern RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; +extern RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; +extern RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; +extern RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; +extern RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; +extern RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; +extern RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; +extern RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; +extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; +extern RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; +extern RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; +extern RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; +extern RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; +extern RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; +extern RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; +extern RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; +extern RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; +extern RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; +extern RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; +extern RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; +extern RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; +extern RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; +extern RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; +extern RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; +extern RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; +extern RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; +extern RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; +extern RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; +extern RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; +extern RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; +extern RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; +extern RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; +extern RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; +extern RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; +extern RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; +extern RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; +extern RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; +extern RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; +extern RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; +extern RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; +extern RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; +extern RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; +extern RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; +extern RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; +extern RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; +extern RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; +extern RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; +extern RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; +extern RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; +extern RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; +extern RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; +extern RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; +extern RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; +extern RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; +extern RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; +extern RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; +extern RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; +extern RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; +extern RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; +extern RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; +extern RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; +extern RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; +extern RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; +extern RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; +extern RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; +extern RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; +extern RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; +extern RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; +extern RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; +extern RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; +extern RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; +extern RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; +extern RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; +extern RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; +extern RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; +extern RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; +extern RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; +extern RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; +extern RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; +extern RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; +extern RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; +extern RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; +extern RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; +extern RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; +extern RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; +extern RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; +extern RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; +extern RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; +extern RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; +extern RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; +extern RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; +extern RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; +extern RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; +extern RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; +extern RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; +extern RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; +extern RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; +extern RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; +extern RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; +extern RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; +extern RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; +extern RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; +extern RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; +extern RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; +extern RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; +extern RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; +extern RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; +extern RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; +extern RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; +extern RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; +extern RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; +extern RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; +extern RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; +extern RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; +extern RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; +extern RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; +extern RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; +extern RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; +extern RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; +extern RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; +extern RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; +extern RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; +extern RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; +extern RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; +extern RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; +extern RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; +extern RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; +extern RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; +extern RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; +extern RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; +extern RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; +extern RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; +extern RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; +extern RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; +extern RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; +extern RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; +extern RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; +extern RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; +extern RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; +extern RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; +extern RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; +extern RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; +extern RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; +extern RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; +extern RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; +extern RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; +extern RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; +extern RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; +extern RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; +extern RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; +extern RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; +extern RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; +extern RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; +extern RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; +extern RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; +extern RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; +extern RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; +extern RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; +extern RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; +extern RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; +extern RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; +extern RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; +extern RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; +extern RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; +extern RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; +extern RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; +extern RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; +extern RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; +extern RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; +extern RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; +extern RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; +extern RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; +extern RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; +extern RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; +extern RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; +extern RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; +extern RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; +extern RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; +extern RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; +extern RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; +extern RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; +extern RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; +extern RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; +extern RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; +extern RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; +extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; +extern RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; +extern RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; +extern RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; +extern RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; +extern RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; +extern RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; +extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; +extern RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; +extern RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; +extern RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; +extern RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; +extern RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; +extern RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; +extern RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; +extern RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; +extern RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; +extern RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; +extern RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; +extern RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; +extern RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; +extern RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; +extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; +extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; +extern RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; +extern RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; +extern RGLSYMGLISSYNCPROC __rglgen_glIsSync; +extern RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; +extern RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; +extern RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; +extern RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; +extern RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; +extern RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; +extern RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; +extern RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; +extern RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; +extern RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; +extern RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; +extern RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; +extern RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; +extern RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; +extern RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; +extern RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; +extern RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; +extern RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; +extern RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; +extern RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; +extern RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; +extern RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; +extern RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; +extern RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; +extern RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; +extern RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; +extern RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; +extern RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; +extern RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; +extern RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; +extern RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; +extern RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; +extern RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; +extern RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; +extern RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; +extern RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; +extern RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; +extern RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; +extern RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; +extern RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; +extern RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; +extern RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; +extern RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; +extern RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; +extern RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; +extern RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; +extern RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; +extern RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; +extern RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; +extern RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; +extern RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; +extern RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; +extern RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; +extern RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; +extern RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; +extern RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; +extern RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; +extern RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; +extern RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; +extern RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; +extern RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; +extern RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; +extern RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; +extern RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; +extern RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; +extern RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; +extern RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; +extern RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; +extern RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; +extern RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; +extern RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; +extern RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; +extern RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; +extern RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; +extern RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; +extern RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; +extern RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; +extern RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; +extern RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; +extern RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; +extern RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; +extern RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; +extern RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; +extern RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; +extern RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; +extern RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; +extern RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; +extern RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; +extern RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; +extern RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; +extern RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; +extern RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; +extern RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; +extern RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; +extern RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; +extern RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; +extern RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; +extern RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; +extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; +extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; +extern RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; +extern RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; +extern RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; +extern RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; +extern RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; +extern RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; +extern RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; +extern RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; +extern RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; +extern RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; +extern RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; +extern RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; +extern RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; +extern RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; +extern RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; +extern RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; +extern RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; +extern RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; +extern RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; +extern RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; +extern RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; +extern RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; +extern RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; +extern RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; +extern RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; +extern RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; +extern RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; +extern RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; +extern RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; +extern RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; +extern RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; +extern RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; +extern RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; +extern RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; +extern RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; +extern RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; +extern RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; +extern RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; +extern RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; +extern RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; +extern RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; +extern RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; +extern RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; +extern RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; +extern RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; +extern RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; +extern RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; +extern RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; +extern RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; +extern RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; +extern RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; +extern RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; +extern RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; +extern RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; +extern RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; +extern RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; +extern RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; +extern RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; +extern RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; +extern RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; +extern RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; +extern RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; +extern RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; +extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; +extern RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; +extern RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; +extern RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; +extern RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; +extern RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; +extern RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; +extern RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; +extern RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; +extern RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; +extern RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; +extern RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; +extern RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; +extern RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; +extern RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; +extern RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; +extern RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; +extern RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; +extern RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; +extern RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; +extern RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; +extern RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; +extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; +extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; +extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; +extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; +extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; +extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; +extern RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; +extern RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; +extern RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; +extern RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; +extern RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; +extern RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; +extern RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; +extern RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; +extern RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; +extern RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; +extern RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; +extern RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; +extern RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; +extern RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; +extern RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; +extern RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; +extern RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; +extern RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; +extern RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; +extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; +extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; +extern RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; +extern RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; +extern RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; +extern RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; +extern RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; +extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; +extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; +extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; +extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; +extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; +extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; +extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; +extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; +extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; +extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; +extern RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; +extern RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; +extern RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; +extern RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; +extern RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; +extern RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; +extern RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; +extern RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; +extern RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; +extern RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; +extern RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; +extern RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; +extern RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; +extern RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; +extern RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; +extern RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; +extern RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; +extern RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; +extern RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; +extern RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; +extern RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; +extern RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; +extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; +extern RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; +extern RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; +extern RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; +extern RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; +extern RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; +extern RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; +extern RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; +extern RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; +extern RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; +extern RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; +extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; +extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; +extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; + +struct rglgen_sym_map { const char *sym; void *ptr; }; +extern const struct rglgen_sym_map rglgen_symbol_map[]; +#endif diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 70b736d9a3..111b40a755 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -8,20 +8,7 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) static struct retro_hw_render_callback hw_render; -#define GL_GLEXT_PROTOTYPES -#if defined(GLES) -#ifdef IOS -#include -#else -#include -#endif -#elif defined(__APPLE__) -#include -#include -#else -#include -#include -#endif +#include "glsym.h" #define BASE_WIDTH 320 #define BASE_HEIGHT 240 @@ -36,91 +23,6 @@ static struct retro_hw_render_callback hw_render; static unsigned width = BASE_WIDTH; static unsigned height = BASE_HEIGHT; -#if defined(GLES) || defined(__APPLE__) -#define pglCreateProgram glCreateProgram -#define pglCreateShader glCreateShader -#define pglCompileShader glCompileShader -#define pglUseProgram glUseProgram -#define pglShaderSource glShaderSource -#define pglAttachShader glAttachShader -#define pglLinkProgram glLinkProgram -#define pglBindFramebuffer glBindFramebuffer -#define pglGetUniformLocation glGetUniformLocation -#define pglUniformMatrix4fv glUniformMatrix4fv -#define pglGetAttribLocation glGetAttribLocation -#define pglVertexAttribPointer glVertexAttribPointer -#define pglEnableVertexAttribArray glEnableVertexAttribArray -#define pglDisableVertexAttribArray glDisableVertexAttribArray -#define pglGenBuffers glGenBuffers -#define pglBufferData glBufferData -#define pglBindBuffer glBindBuffer -#define init_gl_proc() -#else -static PFNGLCREATEPROGRAMPROC pglCreateProgram; -static PFNGLCREATESHADERPROC pglCreateShader; -static PFNGLCREATESHADERPROC pglCompileShader; -static PFNGLCREATESHADERPROC pglUseProgram; -static PFNGLSHADERSOURCEPROC pglShaderSource; -static PFNGLATTACHSHADERPROC pglAttachShader; -static PFNGLLINKPROGRAMPROC pglLinkProgram; -static PFNGLBINDFRAMEBUFFERPROC pglBindFramebuffer; -static PFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation; -static PFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv; -static PFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation; -static PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer; -static PFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray; -static PFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray; -static PFNGLGENBUFFERSPROC pglGenBuffers; -static PFNGLBUFFERDATAPROC pglBufferData; -static PFNGLBINDBUFFERPROC pglBindBuffer; -#ifdef CORE -static PFNGLGENVERTEXARRAYSPROC pglGenVertexArrays; -static PFNGLBINDVERTEXARRAYPROC pglBindVertexArray; -#endif - -struct gl_proc_map -{ - void *proc; - const char *sym; -}; - -#define PROC_BIND(name) { &(pgl##name), "gl" #name } -static const struct gl_proc_map proc_map[] = { - PROC_BIND(CreateProgram), - PROC_BIND(CreateShader), - PROC_BIND(CompileShader), - PROC_BIND(UseProgram), - PROC_BIND(ShaderSource), - PROC_BIND(AttachShader), - PROC_BIND(LinkProgram), - PROC_BIND(BindFramebuffer), - PROC_BIND(GetUniformLocation), - PROC_BIND(GetAttribLocation), - PROC_BIND(UniformMatrix4fv), - PROC_BIND(VertexAttribPointer), - PROC_BIND(EnableVertexAttribArray), - PROC_BIND(DisableVertexAttribArray), - PROC_BIND(GenBuffers), - PROC_BIND(BufferData), - PROC_BIND(BindBuffer), -#ifdef CORE - PROC_BIND(GenVertexArrays), - PROC_BIND(BindVertexArray), -#endif -}; - -static void init_gl_proc(void) -{ - for (unsigned i = 0; i < ARRAY_SIZE(proc_map); i++) - { - retro_proc_address_t proc = hw_render.get_proc_address(proc_map[i].sym); - if (!proc) - fprintf(stderr, "Symbol %s not found!\n", proc_map[i].sym); - memcpy(proc_map[i].proc, &proc, sizeof(proc)); - } -} -#endif - static GLuint prog; static GLuint vbo; @@ -185,33 +87,33 @@ static const char *fragment_shader[] = { static void compile_program(void) { - prog = pglCreateProgram(); - GLuint vert = pglCreateShader(GL_VERTEX_SHADER); - GLuint frag = pglCreateShader(GL_FRAGMENT_SHADER); + prog = glCreateProgram(); + GLuint vert = glCreateShader(GL_VERTEX_SHADER); + GLuint frag = glCreateShader(GL_FRAGMENT_SHADER); - pglShaderSource(vert, ARRAY_SIZE(vertex_shader), vertex_shader, 0); - pglShaderSource(frag, ARRAY_SIZE(fragment_shader), fragment_shader, 0); - pglCompileShader(vert); - pglCompileShader(frag); + glShaderSource(vert, ARRAY_SIZE(vertex_shader), vertex_shader, 0); + glShaderSource(frag, ARRAY_SIZE(fragment_shader), fragment_shader, 0); + glCompileShader(vert); + glCompileShader(frag); - pglAttachShader(prog, vert); - pglAttachShader(prog, frag); - pglLinkProgram(prog); + glAttachShader(prog, vert); + glAttachShader(prog, frag); + glLinkProgram(prog); } static void setup_vao(void) { #ifdef CORE - pglGenVertexArrays(1, &vao); + glGenVertexArrays(1, &vao); #endif - pglUseProgram(prog); + glUseProgram(prog); - pglGenBuffers(1, &vbo); - pglBindBuffer(GL_ARRAY_BUFFER, vbo); - pglBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW); + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_data), vertex_data, GL_STATIC_DRAW); - pglBindBuffer(GL_ARRAY_BUFFER, 0); - pglUseProgram(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glUseProgram(0); } void retro_init(void) @@ -342,28 +244,28 @@ void retro_run(void) input_poll_cb(); #ifdef CORE - pglBindVertexArray(vao); + glBindVertexArray(vao); #endif - pglBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); + glBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); glClearColor(0.3, 0.4, 0.5, 1.0); glViewport(0, 0, width, height); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - pglUseProgram(prog); + glUseProgram(prog); glEnable(GL_DEPTH_TEST); - pglBindBuffer(GL_ARRAY_BUFFER, vbo); - int vloc = pglGetAttribLocation(prog, "aVertex"); - pglVertexAttribPointer(vloc, 2, GL_FLOAT, GL_FALSE, 0, (void*)0); - pglEnableVertexAttribArray(vloc); - int cloc = pglGetAttribLocation(prog, "aColor"); - pglVertexAttribPointer(cloc, 4, GL_FLOAT, GL_FALSE, 0, (void*)(8 * sizeof(GLfloat))); - pglEnableVertexAttribArray(cloc); - pglBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + int vloc = glGetAttribLocation(prog, "aVertex"); + glVertexAttribPointer(vloc, 2, GL_FLOAT, GL_FALSE, 0, (void*)0); + glEnableVertexAttribArray(vloc); + int cloc = glGetAttribLocation(prog, "aColor"); + glVertexAttribPointer(cloc, 4, GL_FLOAT, GL_FALSE, 0, (void*)(8 * sizeof(GLfloat))); + glEnableVertexAttribArray(cloc); + glBindBuffer(GL_ARRAY_BUFFER, 0); - int loc = pglGetUniformLocation(prog, "uMVP"); + int loc = glGetUniformLocation(prog, "uMVP"); static unsigned frame_count; frame_count++; @@ -377,7 +279,7 @@ void retro_run(void) 0, 0, 1, 0, 0, 0, 0, 1, }; - pglUniformMatrix4fv(loc, 1, GL_FALSE, mvp); + glUniformMatrix4fv(loc, 1, GL_FALSE, mvp); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); cos_angle *= 0.5; @@ -389,23 +291,23 @@ void retro_run(void) 0.4, 0.4, 0.2, 1, }; - pglUniformMatrix4fv(loc, 1, GL_FALSE, mvp2); + glUniformMatrix4fv(loc, 1, GL_FALSE, mvp2); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - pglDisableVertexAttribArray(vloc); - pglDisableVertexAttribArray(cloc); + glDisableVertexAttribArray(vloc); + glDisableVertexAttribArray(cloc); - pglUseProgram(0); + glUseProgram(0); video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0); #ifdef CORE - pglBindVertexArray(0); + glBindVertexArray(0); #endif } static void context_reset(void) { fprintf(stderr, "Context reset!\n"); - init_gl_proc(); + rglgen_resolve_symbols(hw_render.get_proc_address); compile_program(); setup_vao(); } diff --git a/libretro-test-gl/rglgen.c b/libretro-test-gl/rglgen.c new file mode 100644 index 0000000000..06ff488e72 --- /dev/null +++ b/libretro-test-gl/rglgen.c @@ -0,0 +1,19 @@ +#include "rglgen.h" +#include "glsym.h" +#include + +void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, + const struct rglgen_sym_map *map) +{ + for (; map->sym; map++) + { + rglgen_func_t func = proc(map->sym); + memcpy(map->ptr, &func, sizeof(func)); + } +} + +void rglgen_resolve_symbols(rglgen_proc_address_t proc) +{ + rglgen_resolve_symbols_custom(proc, rglgen_symbol_map); +} + diff --git a/libretro-test-gl/rglgen.h b/libretro-test-gl/rglgen.h new file mode 100644 index 0000000000..a4ce2a3875 --- /dev/null +++ b/libretro-test-gl/rglgen.h @@ -0,0 +1,47 @@ +#ifndef RGLGEN_H__ +#define RGLGEN_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_EGL +#include +#include +#endif + +#if defined(IOS) +#include +#include +#elif defined(__APPLE__) +#include +#include +#elif defined(HAVE_PSGL) +#include +#include +#include +#elif defined(HAVE_OPENGL_MODERN) +#include +#include +#elif defined(HAVE_OPENGLES2) +#include +#include +#elif defined(HAVE_OPENGLES1) +#include +#include +#else +#include +#include +#endif + +struct rglgen_sym_map; + +typedef void (*rglgen_func_t)(void); +typedef rglgen_func_t (*rglgen_proc_address_t)(const char*); +void rglgen_resolve_symbols(rglgen_proc_address_t proc); +void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, + const struct rglgen_sym_map *map); + + +#endif + From 3dd5cd39c4466db24e4f45c1ac95b62ce15ce4c6 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 18:53:42 +0200 Subject: [PATCH 098/252] Add cache_context/destroy notification. --- driver.c | 4 ++++ libretro.h | 9 ++++++++- retroarch.c | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/driver.c b/driver.c index 4438d737dd..42d31b1928 100644 --- a/driver.c +++ b/driver.c @@ -387,6 +387,10 @@ void init_drivers(void) void uninit_drivers(void) { uninit_audio(); + + if (g_extern.system.hw_render_callback.context_destroy && !driver.video_cache_context) + g_extern.system.hw_render_callback.context_destroy(); + uninit_video_input(); if (driver.video_data_own) diff --git a/libretro.h b/libretro.h index 7137841abb..1aae5d6d86 100755 --- a/libretro.h +++ b/libretro.h @@ -493,6 +493,8 @@ enum retro_mod #define RETRO_HW_FRAME_BUFFER_VALID ((void*)-1) // Invalidates the current HW context. +// Any GL state is lost, and must not be deinitialized explicitly. If explicit deinitialization is desired by the libretro core, +// it should implement context_destroy callback. // If called, all GPU resources must be reinitialized. // Usually called when frontend reinits video driver. // Also called first time video driver is initialized, allowing libretro core to init resources. @@ -517,7 +519,7 @@ enum retro_hw_context_type struct retro_hw_render_callback { enum retro_hw_context_type context_type; // Which API to use. Set by libretro core. - retro_hw_context_reset_t context_reset; // Set by libretro core. + retro_hw_context_reset_t context_reset; // Called when a context has been created or when it has been reset. retro_hw_get_current_framebuffer_t get_current_framebuffer; // Set by frontend. retro_hw_get_proc_address_t get_proc_address; // Set by frontend. bool depth; // Set if render buffers should have depth component attached. @@ -526,6 +528,11 @@ struct retro_hw_render_callback bool bottom_left_origin; // Use conventional bottom-left origin convention. Is false, standard libretro top-left origin semantics are used. unsigned version_major; // Major version number for core GL context. unsigned version_minor; // Minor version number for core GL context. + + bool cache_context; // If this is true, the frontend will go very far to avoid resetting context in scenarios like toggling fullscreen, etc. + // The reset callback might still be called in extreme situations such as if the context is lost beyond recovery. + // For optimal stability, set this to false, and allow context to be reset at any time. + retro_hw_context_reset_t context_destroy; // A callback to be called before the context is destroyed. Resources can be deinitialized at this step. This can be set to NULL, in which resources will just be destroyed without any notification. }; // Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. Called by the frontend in response to keyboard events. diff --git a/retroarch.c b/retroarch.c index 11c674c084..e9f224a3a5 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1934,7 +1934,7 @@ void rarch_set_fullscreen(bool fullscreen) { g_settings.video.fullscreen = fullscreen; - driver.video_cache_context = true; + driver.video_cache_context = g_extern.system.hw_render_callback.cache_context; driver.video_cache_context_ack = false; uninit_drivers(); init_drivers(); From ed496d20e1e992566596d9004af8f51ea4d26142 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 18:57:51 +0200 Subject: [PATCH 099/252] Use context destroy callback in libretro-test-gl. --- libretro-test-gl/libretro-test.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 111b40a755..a4569adf88 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -99,6 +99,8 @@ static void compile_program(void) glAttachShader(prog, vert); glAttachShader(prog, frag); glLinkProgram(prog); + glDeleteShader(vert); + glDeleteShader(frag); } static void setup_vao(void) @@ -312,6 +314,20 @@ static void context_reset(void) setup_vao(); } +static void context_destroy(void) +{ + fprintf(stderr, "Context destroy!\n"); + +#ifdef CORE + glDeleteVertexArrays(1, &vao); + vao = 0; +#endif + glDeleteBuffers(1, &vbo); + vbo = 0; + + glDeleteProgram(prog); + prog = 0; +} bool retro_load_game(const struct retro_game_info *info) { @@ -336,6 +352,7 @@ bool retro_load_game(const struct retro_game_info *info) #endif #endif hw_render.context_reset = context_reset; + hw_render.context_destroy = context_destroy; hw_render.depth = true; hw_render.stencil = true; hw_render.bottom_left_origin = true; From 80bcbb44bf2e4afa66899efb8337f0876699ab3c Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:10:11 +0200 Subject: [PATCH 100/252] Clean up a bit. --- libretro-test-gl/Makefile | 6 +- libretro-test-gl/glsym/glgen.py | 73 ++++ libretro-test-gl/{ => glsym}/glsym.h | 0 libretro-test-gl/{ => glsym}/glsym_es2.c | 0 libretro-test-gl/{ => glsym}/glsym_es2.h | 0 libretro-test-gl/{ => glsym}/glsym_gl.c | 275 +++++++++++++++- libretro-test-gl/{ => glsym}/glsym_gl.h | 403 +++++++++++++++++++++++ libretro-test-gl/{ => glsym}/rglgen.c | 0 libretro-test-gl/{ => glsym}/rglgen.h | 0 libretro-test-gl/libretro-test.c | 2 +- 10 files changed, 750 insertions(+), 9 deletions(-) create mode 100755 libretro-test-gl/glsym/glgen.py rename libretro-test-gl/{ => glsym}/glsym.h (100%) rename libretro-test-gl/{ => glsym}/glsym_es2.c (100%) rename libretro-test-gl/{ => glsym}/glsym_es2.h (100%) rename libretro-test-gl/{ => glsym}/glsym_gl.c (87%) rename libretro-test-gl/{ => glsym}/glsym_gl.h (87%) rename libretro-test-gl/{ => glsym}/rglgen.c (100%) rename libretro-test-gl/{ => glsym}/rglgen.h (100%) diff --git a/libretro-test-gl/Makefile b/libretro-test-gl/Makefile index 9479663718..68d4a605e3 100644 --- a/libretro-test-gl/Makefile +++ b/libretro-test-gl/Makefile @@ -96,15 +96,15 @@ else CFLAGS += -std=gnu99 endif -OBJECTS := libretro-test.o rglgen.o +OBJECTS := libretro-test.o glsym/rglgen.o CFLAGS += -Wall -pedantic $(fpic) ifeq ($(GLES), 1) CFLAGS += -DGLES -DHAVE_OPENGLES2 LIBS += -lGLESv2 - OBJECTS += glsym_es2.o + OBJECTS += glsym/glsym_es2.o else - OBJECTS += glsym_gl.o + OBJECTS += glsym/glsym_gl.o LIBS += $(GL_LIB) endif diff --git a/libretro-test-gl/glsym/glgen.py b/libretro-test-gl/glsym/glgen.py new file mode 100755 index 0000000000..592dd687cc --- /dev/null +++ b/libretro-test-gl/glsym/glgen.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +import sys +import os +import re + +banned_ext = [ 'AMD', 'APPLE', 'EXT', '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: + m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) + g = re.search(r'^.+(gl\S+)\W*\(.+\).*$', line) + if m and noext(m.group(1)): + typedefs.append(m.group(0).replace('PFN', 'RGLSYM')) + if g and noext(g.group(1)): + syms.append(g.group(1)) + 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 ' + '__rglgen_' + 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__': + 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') + 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('#endif\n') + + with open(sys.argv[3], 'w') as f: + f.write('#include "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/libretro-test-gl/glsym.h b/libretro-test-gl/glsym/glsym.h similarity index 100% rename from libretro-test-gl/glsym.h rename to libretro-test-gl/glsym/glsym.h diff --git a/libretro-test-gl/glsym_es2.c b/libretro-test-gl/glsym/glsym_es2.c similarity index 100% rename from libretro-test-gl/glsym_es2.c rename to libretro-test-gl/glsym/glsym_es2.c diff --git a/libretro-test-gl/glsym_es2.h b/libretro-test-gl/glsym/glsym_es2.h similarity index 100% rename from libretro-test-gl/glsym_es2.h rename to libretro-test-gl/glsym/glsym_es2.h diff --git a/libretro-test-gl/glsym_gl.c b/libretro-test-gl/glsym/glsym_gl.c similarity index 87% rename from libretro-test-gl/glsym_gl.c rename to libretro-test-gl/glsym/glsym_gl.c index f81f74486d..97564bc1f0 100644 --- a/libretro-test-gl/glsym_gl.c +++ b/libretro-test-gl/glsym/glsym_gl.c @@ -1,10 +1,5 @@ #include "glsym.h" #include - -#ifdef HAVE_OPENGLES2 -#error "Wrong symbol file included." -#endif - #define SYM(x) { "gl" #x, &(gl##x) } const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(BlendColor), @@ -787,6 +782,7 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(CreateSyncFromCLeventARB), SYM(DebugMessageControlARB), SYM(DebugMessageInsertARB), + SYM(DebugMessageCallbackARB), SYM(GetDebugMessageLogARB), SYM(GetGraphicsResetStatusARB), SYM(GetnMapdvARB), @@ -822,6 +818,7 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(TexStorage3D), SYM(DebugMessageControl), SYM(DebugMessageInsert), + SYM(DebugMessageCallback), SYM(GetDebugMessageLog), SYM(PushDebugGroup), SYM(PopDebugGroup), @@ -868,6 +865,139 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ImageTransformParameterfvHP), SYM(GetImageTransformParameterivHP), SYM(GetImageTransformParameterfvHP), + SYM(MultiTexCoord1bOES), + SYM(MultiTexCoord1bvOES), + SYM(MultiTexCoord2bOES), + SYM(MultiTexCoord2bvOES), + SYM(MultiTexCoord3bOES), + SYM(MultiTexCoord3bvOES), + SYM(MultiTexCoord4bOES), + SYM(MultiTexCoord4bvOES), + SYM(TexCoord1bOES), + SYM(TexCoord1bvOES), + SYM(TexCoord2bOES), + SYM(TexCoord2bvOES), + SYM(TexCoord3bOES), + SYM(TexCoord3bvOES), + SYM(TexCoord4bOES), + SYM(TexCoord4bvOES), + SYM(Vertex2bOES), + SYM(Vertex2bvOES), + SYM(Vertex3bOES), + SYM(Vertex3bvOES), + SYM(Vertex4bOES), + SYM(Vertex4bvOES), + SYM(AccumxOES), + SYM(AlphaFuncxOES), + SYM(BitmapxOES), + SYM(BlendColorxOES), + SYM(ClearAccumxOES), + SYM(ClearColorxOES), + SYM(ClearDepthxOES), + SYM(ClipPlanexOES), + SYM(Color3xOES), + SYM(Color4xOES), + SYM(Color3xvOES), + SYM(Color4xvOES), + SYM(ConvolutionParameterxOES), + SYM(ConvolutionParameterxvOES), + SYM(DepthRangexOES), + SYM(EvalCoord1xOES), + SYM(EvalCoord2xOES), + SYM(EvalCoord1xvOES), + SYM(EvalCoord2xvOES), + SYM(FeedbackBufferxOES), + SYM(FogxOES), + SYM(FogxvOES), + SYM(FrustumxOES), + SYM(GetClipPlanexOES), + SYM(GetConvolutionParameterxvOES), + SYM(GetFixedvOES), + SYM(GetHistogramParameterxvOES), + SYM(GetLightxOES), + SYM(GetMapxvOES), + SYM(GetMaterialxOES), + SYM(GetPixelMapxv), + SYM(GetTexEnvxvOES), + SYM(GetTexGenxvOES), + SYM(GetTexLevelParameterxvOES), + SYM(GetTexParameterxvOES), + SYM(IndexxOES), + SYM(IndexxvOES), + SYM(LightModelxOES), + SYM(LightModelxvOES), + SYM(LightxOES), + SYM(LightxvOES), + SYM(LineWidthxOES), + SYM(LoadMatrixxOES), + SYM(LoadTransposeMatrixxOES), + SYM(Map1xOES), + SYM(Map2xOES), + SYM(MapGrid1xOES), + SYM(MapGrid2xOES), + SYM(MaterialxOES), + SYM(MaterialxvOES), + SYM(MultMatrixxOES), + SYM(MultTransposeMatrixxOES), + SYM(MultiTexCoord1xOES), + SYM(MultiTexCoord2xOES), + SYM(MultiTexCoord3xOES), + SYM(MultiTexCoord4xOES), + SYM(MultiTexCoord1xvOES), + SYM(MultiTexCoord2xvOES), + SYM(MultiTexCoord3xvOES), + SYM(MultiTexCoord4xvOES), + SYM(Normal3xOES), + SYM(Normal3xvOES), + SYM(OrthoxOES), + SYM(PassThroughxOES), + SYM(PixelMapx), + SYM(PixelStorex), + SYM(PixelTransferxOES), + SYM(PixelZoomxOES), + SYM(PointParameterxvOES), + SYM(PointSizexOES), + SYM(PolygonOffsetxOES), + SYM(PrioritizeTexturesxOES), + SYM(RasterPos2xOES), + SYM(RasterPos3xOES), + SYM(RasterPos4xOES), + SYM(RasterPos2xvOES), + SYM(RasterPos3xvOES), + SYM(RasterPos4xvOES), + SYM(RectxOES), + SYM(RectxvOES), + SYM(RotatexOES), + SYM(SampleCoverageOES), + SYM(ScalexOES), + SYM(TexCoord1xOES), + SYM(TexCoord2xOES), + SYM(TexCoord3xOES), + SYM(TexCoord4xOES), + SYM(TexCoord1xvOES), + SYM(TexCoord2xvOES), + SYM(TexCoord3xvOES), + SYM(TexCoord4xvOES), + SYM(TexEnvxOES), + SYM(TexEnvxvOES), + SYM(TexGenxOES), + SYM(TexGenxvOES), + SYM(TexParameterxOES), + SYM(TexParameterxvOES), + SYM(TranslatexOES), + SYM(Vertex2xOES), + SYM(Vertex3xOES), + SYM(Vertex4xOES), + SYM(Vertex2xvOES), + SYM(Vertex3xvOES), + SYM(Vertex4xvOES), + SYM(DepthRangefOES), + SYM(FrustumfOES), + SYM(OrthofOES), + SYM(ClipPlanefOES), + SYM(ClearDepthfOES), + SYM(GetClipPlanefOES), + SYM(QueryMatrixxOES), { NULL, NULL }, }; @@ -1651,6 +1781,7 @@ RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -1686,6 +1817,7 @@ RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; @@ -1732,4 +1864,137 @@ RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; diff --git a/libretro-test-gl/glsym_gl.h b/libretro-test-gl/glsym/glsym_gl.h similarity index 87% rename from libretro-test-gl/glsym_gl.h rename to libretro-test-gl/glsym/glsym_gl.h index fad8b6725e..e802d8555b 100644 --- a/libretro-test-gl/glsym_gl.h +++ b/libretro-test-gl/glsym/glsym_gl.h @@ -780,6 +780,7 @@ typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); @@ -815,6 +816,7 @@ typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); @@ -861,6 +863,139 @@ typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX2BOESPROC) (GLbyte x); +typedef void (APIENTRYP RGLSYMGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP RGLSYMGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP RGLSYMGLVERTEX4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP RGLSYMGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP RGLSYMGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP RGLSYMGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP RGLSYMGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP RGLSYMGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP RGLSYMGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP RGLSYMGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP RGLSYMGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP RGLSYMGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP RGLSYMGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP RGLSYMGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP RGLSYMGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); #define glBlendColor __rglgen_glBlendColor #define glBlendEquation __rglgen_glBlendEquation @@ -1725,6 +1860,139 @@ typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum targ #define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP #define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP #define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP +#define glMultiTexCoord1bOES __rglgen_glMultiTexCoord1bOES +#define glMultiTexCoord1bvOES __rglgen_glMultiTexCoord1bvOES +#define glMultiTexCoord2bOES __rglgen_glMultiTexCoord2bOES +#define glMultiTexCoord2bvOES __rglgen_glMultiTexCoord2bvOES +#define glMultiTexCoord3bOES __rglgen_glMultiTexCoord3bOES +#define glMultiTexCoord3bvOES __rglgen_glMultiTexCoord3bvOES +#define glMultiTexCoord4bOES __rglgen_glMultiTexCoord4bOES +#define glMultiTexCoord4bvOES __rglgen_glMultiTexCoord4bvOES +#define glTexCoord1bOES __rglgen_glTexCoord1bOES +#define glTexCoord1bvOES __rglgen_glTexCoord1bvOES +#define glTexCoord2bOES __rglgen_glTexCoord2bOES +#define glTexCoord2bvOES __rglgen_glTexCoord2bvOES +#define glTexCoord3bOES __rglgen_glTexCoord3bOES +#define glTexCoord3bvOES __rglgen_glTexCoord3bvOES +#define glTexCoord4bOES __rglgen_glTexCoord4bOES +#define glTexCoord4bvOES __rglgen_glTexCoord4bvOES +#define glVertex2bOES __rglgen_glVertex2bOES +#define glVertex2bvOES __rglgen_glVertex2bvOES +#define glVertex3bOES __rglgen_glVertex3bOES +#define glVertex3bvOES __rglgen_glVertex3bvOES +#define glVertex4bOES __rglgen_glVertex4bOES +#define glVertex4bvOES __rglgen_glVertex4bvOES +#define glAccumxOES __rglgen_glAccumxOES +#define glAlphaFuncxOES __rglgen_glAlphaFuncxOES +#define glBitmapxOES __rglgen_glBitmapxOES +#define glBlendColorxOES __rglgen_glBlendColorxOES +#define glClearAccumxOES __rglgen_glClearAccumxOES +#define glClearColorxOES __rglgen_glClearColorxOES +#define glClearDepthxOES __rglgen_glClearDepthxOES +#define glClipPlanexOES __rglgen_glClipPlanexOES +#define glColor3xOES __rglgen_glColor3xOES +#define glColor4xOES __rglgen_glColor4xOES +#define glColor3xvOES __rglgen_glColor3xvOES +#define glColor4xvOES __rglgen_glColor4xvOES +#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES +#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES +#define glDepthRangexOES __rglgen_glDepthRangexOES +#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES +#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES +#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES +#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES +#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES +#define glFogxOES __rglgen_glFogxOES +#define glFogxvOES __rglgen_glFogxvOES +#define glFrustumxOES __rglgen_glFrustumxOES +#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES +#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES +#define glGetFixedvOES __rglgen_glGetFixedvOES +#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES +#define glGetLightxOES __rglgen_glGetLightxOES +#define glGetMapxvOES __rglgen_glGetMapxvOES +#define glGetMaterialxOES __rglgen_glGetMaterialxOES +#define glGetPixelMapxv __rglgen_glGetPixelMapxv +#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES +#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES +#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES +#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES +#define glIndexxOES __rglgen_glIndexxOES +#define glIndexxvOES __rglgen_glIndexxvOES +#define glLightModelxOES __rglgen_glLightModelxOES +#define glLightModelxvOES __rglgen_glLightModelxvOES +#define glLightxOES __rglgen_glLightxOES +#define glLightxvOES __rglgen_glLightxvOES +#define glLineWidthxOES __rglgen_glLineWidthxOES +#define glLoadMatrixxOES __rglgen_glLoadMatrixxOES +#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES +#define glMap1xOES __rglgen_glMap1xOES +#define glMap2xOES __rglgen_glMap2xOES +#define glMapGrid1xOES __rglgen_glMapGrid1xOES +#define glMapGrid2xOES __rglgen_glMapGrid2xOES +#define glMaterialxOES __rglgen_glMaterialxOES +#define glMaterialxvOES __rglgen_glMaterialxvOES +#define glMultMatrixxOES __rglgen_glMultMatrixxOES +#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES +#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES +#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES +#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES +#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES +#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES +#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES +#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES +#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES +#define glNormal3xOES __rglgen_glNormal3xOES +#define glNormal3xvOES __rglgen_glNormal3xvOES +#define glOrthoxOES __rglgen_glOrthoxOES +#define glPassThroughxOES __rglgen_glPassThroughxOES +#define glPixelMapx __rglgen_glPixelMapx +#define glPixelStorex __rglgen_glPixelStorex +#define glPixelTransferxOES __rglgen_glPixelTransferxOES +#define glPixelZoomxOES __rglgen_glPixelZoomxOES +#define glPointParameterxvOES __rglgen_glPointParameterxvOES +#define glPointSizexOES __rglgen_glPointSizexOES +#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES +#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES +#define glRasterPos2xOES __rglgen_glRasterPos2xOES +#define glRasterPos3xOES __rglgen_glRasterPos3xOES +#define glRasterPos4xOES __rglgen_glRasterPos4xOES +#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES +#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES +#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES +#define glRectxOES __rglgen_glRectxOES +#define glRectxvOES __rglgen_glRectxvOES +#define glRotatexOES __rglgen_glRotatexOES +#define glSampleCoverageOES __rglgen_glSampleCoverageOES +#define glScalexOES __rglgen_glScalexOES +#define glTexCoord1xOES __rglgen_glTexCoord1xOES +#define glTexCoord2xOES __rglgen_glTexCoord2xOES +#define glTexCoord3xOES __rglgen_glTexCoord3xOES +#define glTexCoord4xOES __rglgen_glTexCoord4xOES +#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES +#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES +#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES +#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES +#define glTexEnvxOES __rglgen_glTexEnvxOES +#define glTexEnvxvOES __rglgen_glTexEnvxvOES +#define glTexGenxOES __rglgen_glTexGenxOES +#define glTexGenxvOES __rglgen_glTexGenxvOES +#define glTexParameterxOES __rglgen_glTexParameterxOES +#define glTexParameterxvOES __rglgen_glTexParameterxvOES +#define glTranslatexOES __rglgen_glTranslatexOES +#define glVertex2xOES __rglgen_glVertex2xOES +#define glVertex3xOES __rglgen_glVertex3xOES +#define glVertex4xOES __rglgen_glVertex4xOES +#define glVertex2xvOES __rglgen_glVertex2xvOES +#define glVertex3xvOES __rglgen_glVertex3xvOES +#define glVertex4xvOES __rglgen_glVertex4xvOES +#define glDepthRangefOES __rglgen_glDepthRangefOES +#define glFrustumfOES __rglgen_glFrustumfOES +#define glOrthofOES __rglgen_glOrthofOES +#define glClipPlanefOES __rglgen_glClipPlanefOES +#define glClearDepthfOES __rglgen_glClearDepthfOES +#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES +#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; @@ -2506,6 +2774,7 @@ extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -2541,6 +2810,7 @@ extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; @@ -2587,6 +2857,139 @@ extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParamete extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +extern RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +extern RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +extern RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +extern RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +extern RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +extern RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +extern RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +extern RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +extern RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +extern RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +extern RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +extern RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +extern RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +extern RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +extern RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +extern RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +extern RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +extern RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +extern RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +extern RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +extern RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +extern RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +extern RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +extern RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +extern RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +extern RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +extern RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +extern RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +extern RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +extern RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; diff --git a/libretro-test-gl/rglgen.c b/libretro-test-gl/glsym/rglgen.c similarity index 100% rename from libretro-test-gl/rglgen.c rename to libretro-test-gl/glsym/rglgen.c diff --git a/libretro-test-gl/rglgen.h b/libretro-test-gl/glsym/rglgen.h similarity index 100% rename from libretro-test-gl/rglgen.h rename to libretro-test-gl/glsym/rglgen.h diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index a4569adf88..df9d885a07 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -8,7 +8,7 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) static struct retro_hw_render_callback hw_render; -#include "glsym.h" +#include "glsym/glsym.h" #define BASE_WIDTH 320 #define BASE_HEIGHT 240 From 318b26cc0d99b33918fed0785dab7d9725ae9cbe Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:29:48 +0200 Subject: [PATCH 101/252] Fix Android build. --- dynamic.c | 1 + gfx/gfx_context.c | 2 +- gfx/gl.c | 2 - gfx/glsym/glgen.py | 8 +- gfx/glsym/glsym_es2.c | 2 +- gfx/glsym/glsym_es2.h | 10 +- gfx/glsym/glsym_gl.c | 277 ++++++++++++++++++- gfx/glsym/glsym_gl.h | 411 ++++++++++++++++++++++++++++- gfx/glsym/rglgen.c | 2 +- gfx/shader_glsl.c | 7 + griffin/griffin.c | 6 + libretro-test-gl/glsym/glgen.py | 8 +- libretro-test-gl/glsym/glsym_es2.h | 8 +- libretro-test-gl/glsym/glsym_gl.h | 10 +- libretro-test-gl/jni/Android.mk | 4 +- 15 files changed, 737 insertions(+), 21 deletions(-) diff --git a/dynamic.c b/dynamic.c index 0b23eaff4b..984f8e0ea1 100644 --- a/dynamic.c +++ b/dynamic.c @@ -42,6 +42,7 @@ #endif #ifdef HAVE_DYNAMIC +#undef SYM #define SYM(x) do { \ function_t func = dylib_proc(lib_handle, #x); \ memcpy(&p##x, &func, sizeof(func)); \ diff --git a/gfx/gfx_context.c b/gfx/gfx_context.c index b97c651cda..4d5c45c30e 100644 --- a/gfx/gfx_context.c +++ b/gfx/gfx_context.c @@ -14,7 +14,7 @@ */ #include "gfx_context.h" -#include "general.h" +#include "../general.h" #include #ifdef HAVE_CONFIG_H diff --git a/gfx/gl.c b/gfx/gl.c index d971cd43db..947a4d557b 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -655,8 +655,6 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) if (depth) { - GLenum component = GL_DEPTH_COMPONENT16; - GLenum attachment = GL_DEPTH_ATTACHMENT; if (stencil) { #ifdef HAVE_OPENGLES2 diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 592dd687cc..cf55ab1730 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -19,7 +19,7 @@ def find_gl_symbols(lines): m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) g = re.search(r'^.+(gl\S+)\W*\(.+\).*$', line) if m and noext(m.group(1)): - typedefs.append(m.group(0).replace('PFN', 'RGLSYM')) + typedefs.append(m.group(0).replace('PFN', 'RGLSYM').replace('GLDEBUGPROC', 'RGLGENGLDEBUGPROC')) if g and noext(g.group(1)): syms.append(g.group(1)) return (typedefs, syms) @@ -54,6 +54,12 @@ if __name__ == '__main__': 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 GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\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') dump(f, typedefs) dump(f, overrides) dump(f, externs) diff --git a/gfx/glsym/glsym_es2.c b/gfx/glsym/glsym_es2.c index bf04786ffe..26f2a44e72 100644 --- a/gfx/glsym/glsym_es2.c +++ b/gfx/glsym/glsym_es2.c @@ -1,7 +1,7 @@ #include "glsym.h" #include #define SYM(x) { "gl" #x, &(gl##x) } -const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { +const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(EGLImageTargetTexture2DOES), SYM(EGLImageTargetRenderbufferStorageOES), SYM(GetProgramBinaryOES), diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h index d8fa1233db..a5864ea27f 100644 --- a/gfx/glsym/glsym_es2.h +++ b/gfx/glsym/glsym_es2.h @@ -1,5 +1,11 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef GL_APIENTRY +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#else +typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#endif typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); @@ -19,7 +25,7 @@ typedef void (GL_APIENTRYP RGLSYMGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *a typedef GLboolean (GL_APIENTRYP RGLSYMGLISVERTEXARRAYOESPROC) (GLuint array); typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); @@ -88,5 +94,5 @@ extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; struct rglgen_sym_map { const char *sym; void *ptr; }; -extern const struct rglgen_sym_map rglgen_symbol_map_rarch[]; // Avoid possible collisions with libretro GL. +extern const struct rglgen_sym_map rglgen_symbol_map[]; #endif diff --git a/gfx/glsym/glsym_gl.c b/gfx/glsym/glsym_gl.c index 0b092823dd..97564bc1f0 100644 --- a/gfx/glsym/glsym_gl.c +++ b/gfx/glsym/glsym_gl.c @@ -1,12 +1,7 @@ #include "glsym.h" #include - -#ifdef HAVE_OPENGLES2 -#error "Wrong symbol file included." -#endif - #define SYM(x) { "gl" #x, &(gl##x) } -const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { +const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(BlendColor), SYM(BlendEquation), SYM(DrawRangeElements), @@ -787,6 +782,7 @@ const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { SYM(CreateSyncFromCLeventARB), SYM(DebugMessageControlARB), SYM(DebugMessageInsertARB), + SYM(DebugMessageCallbackARB), SYM(GetDebugMessageLogARB), SYM(GetGraphicsResetStatusARB), SYM(GetnMapdvARB), @@ -822,6 +818,7 @@ const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { SYM(TexStorage3D), SYM(DebugMessageControl), SYM(DebugMessageInsert), + SYM(DebugMessageCallback), SYM(GetDebugMessageLog), SYM(PushDebugGroup), SYM(PopDebugGroup), @@ -868,6 +865,139 @@ const struct rglgen_sym_map rglgen_symbol_map_rarch[] = { SYM(ImageTransformParameterfvHP), SYM(GetImageTransformParameterivHP), SYM(GetImageTransformParameterfvHP), + SYM(MultiTexCoord1bOES), + SYM(MultiTexCoord1bvOES), + SYM(MultiTexCoord2bOES), + SYM(MultiTexCoord2bvOES), + SYM(MultiTexCoord3bOES), + SYM(MultiTexCoord3bvOES), + SYM(MultiTexCoord4bOES), + SYM(MultiTexCoord4bvOES), + SYM(TexCoord1bOES), + SYM(TexCoord1bvOES), + SYM(TexCoord2bOES), + SYM(TexCoord2bvOES), + SYM(TexCoord3bOES), + SYM(TexCoord3bvOES), + SYM(TexCoord4bOES), + SYM(TexCoord4bvOES), + SYM(Vertex2bOES), + SYM(Vertex2bvOES), + SYM(Vertex3bOES), + SYM(Vertex3bvOES), + SYM(Vertex4bOES), + SYM(Vertex4bvOES), + SYM(AccumxOES), + SYM(AlphaFuncxOES), + SYM(BitmapxOES), + SYM(BlendColorxOES), + SYM(ClearAccumxOES), + SYM(ClearColorxOES), + SYM(ClearDepthxOES), + SYM(ClipPlanexOES), + SYM(Color3xOES), + SYM(Color4xOES), + SYM(Color3xvOES), + SYM(Color4xvOES), + SYM(ConvolutionParameterxOES), + SYM(ConvolutionParameterxvOES), + SYM(DepthRangexOES), + SYM(EvalCoord1xOES), + SYM(EvalCoord2xOES), + SYM(EvalCoord1xvOES), + SYM(EvalCoord2xvOES), + SYM(FeedbackBufferxOES), + SYM(FogxOES), + SYM(FogxvOES), + SYM(FrustumxOES), + SYM(GetClipPlanexOES), + SYM(GetConvolutionParameterxvOES), + SYM(GetFixedvOES), + SYM(GetHistogramParameterxvOES), + SYM(GetLightxOES), + SYM(GetMapxvOES), + SYM(GetMaterialxOES), + SYM(GetPixelMapxv), + SYM(GetTexEnvxvOES), + SYM(GetTexGenxvOES), + SYM(GetTexLevelParameterxvOES), + SYM(GetTexParameterxvOES), + SYM(IndexxOES), + SYM(IndexxvOES), + SYM(LightModelxOES), + SYM(LightModelxvOES), + SYM(LightxOES), + SYM(LightxvOES), + SYM(LineWidthxOES), + SYM(LoadMatrixxOES), + SYM(LoadTransposeMatrixxOES), + SYM(Map1xOES), + SYM(Map2xOES), + SYM(MapGrid1xOES), + SYM(MapGrid2xOES), + SYM(MaterialxOES), + SYM(MaterialxvOES), + SYM(MultMatrixxOES), + SYM(MultTransposeMatrixxOES), + SYM(MultiTexCoord1xOES), + SYM(MultiTexCoord2xOES), + SYM(MultiTexCoord3xOES), + SYM(MultiTexCoord4xOES), + SYM(MultiTexCoord1xvOES), + SYM(MultiTexCoord2xvOES), + SYM(MultiTexCoord3xvOES), + SYM(MultiTexCoord4xvOES), + SYM(Normal3xOES), + SYM(Normal3xvOES), + SYM(OrthoxOES), + SYM(PassThroughxOES), + SYM(PixelMapx), + SYM(PixelStorex), + SYM(PixelTransferxOES), + SYM(PixelZoomxOES), + SYM(PointParameterxvOES), + SYM(PointSizexOES), + SYM(PolygonOffsetxOES), + SYM(PrioritizeTexturesxOES), + SYM(RasterPos2xOES), + SYM(RasterPos3xOES), + SYM(RasterPos4xOES), + SYM(RasterPos2xvOES), + SYM(RasterPos3xvOES), + SYM(RasterPos4xvOES), + SYM(RectxOES), + SYM(RectxvOES), + SYM(RotatexOES), + SYM(SampleCoverageOES), + SYM(ScalexOES), + SYM(TexCoord1xOES), + SYM(TexCoord2xOES), + SYM(TexCoord3xOES), + SYM(TexCoord4xOES), + SYM(TexCoord1xvOES), + SYM(TexCoord2xvOES), + SYM(TexCoord3xvOES), + SYM(TexCoord4xvOES), + SYM(TexEnvxOES), + SYM(TexEnvxvOES), + SYM(TexGenxOES), + SYM(TexGenxvOES), + SYM(TexParameterxOES), + SYM(TexParameterxvOES), + SYM(TranslatexOES), + SYM(Vertex2xOES), + SYM(Vertex3xOES), + SYM(Vertex4xOES), + SYM(Vertex2xvOES), + SYM(Vertex3xvOES), + SYM(Vertex4xvOES), + SYM(DepthRangefOES), + SYM(FrustumfOES), + SYM(OrthofOES), + SYM(ClipPlanefOES), + SYM(ClearDepthfOES), + SYM(GetClipPlanefOES), + SYM(QueryMatrixxOES), { NULL, NULL }, }; @@ -1651,6 +1781,7 @@ RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -1686,6 +1817,7 @@ RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; @@ -1732,4 +1864,137 @@ RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index 5be4ed5942..4b56b82174 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -1,5 +1,11 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef GL_APIENTRY +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#else +typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#endif typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); @@ -780,6 +786,7 @@ typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (RGLGENGLDEBUGPROCARB callback, const GLvoid *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); @@ -815,6 +822,7 @@ typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); @@ -861,6 +869,139 @@ typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX2BOESPROC) (GLbyte x); +typedef void (APIENTRYP RGLSYMGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP RGLSYMGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP RGLSYMGLVERTEX4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP RGLSYMGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP RGLSYMGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP RGLSYMGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP RGLSYMGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP RGLSYMGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP RGLSYMGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP RGLSYMGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP RGLSYMGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP RGLSYMGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP RGLSYMGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP RGLSYMGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP RGLSYMGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); #define glBlendColor __rglgen_glBlendColor #define glBlendEquation __rglgen_glBlendEquation @@ -1725,6 +1866,139 @@ typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum targ #define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP #define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP #define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP +#define glMultiTexCoord1bOES __rglgen_glMultiTexCoord1bOES +#define glMultiTexCoord1bvOES __rglgen_glMultiTexCoord1bvOES +#define glMultiTexCoord2bOES __rglgen_glMultiTexCoord2bOES +#define glMultiTexCoord2bvOES __rglgen_glMultiTexCoord2bvOES +#define glMultiTexCoord3bOES __rglgen_glMultiTexCoord3bOES +#define glMultiTexCoord3bvOES __rglgen_glMultiTexCoord3bvOES +#define glMultiTexCoord4bOES __rglgen_glMultiTexCoord4bOES +#define glMultiTexCoord4bvOES __rglgen_glMultiTexCoord4bvOES +#define glTexCoord1bOES __rglgen_glTexCoord1bOES +#define glTexCoord1bvOES __rglgen_glTexCoord1bvOES +#define glTexCoord2bOES __rglgen_glTexCoord2bOES +#define glTexCoord2bvOES __rglgen_glTexCoord2bvOES +#define glTexCoord3bOES __rglgen_glTexCoord3bOES +#define glTexCoord3bvOES __rglgen_glTexCoord3bvOES +#define glTexCoord4bOES __rglgen_glTexCoord4bOES +#define glTexCoord4bvOES __rglgen_glTexCoord4bvOES +#define glVertex2bOES __rglgen_glVertex2bOES +#define glVertex2bvOES __rglgen_glVertex2bvOES +#define glVertex3bOES __rglgen_glVertex3bOES +#define glVertex3bvOES __rglgen_glVertex3bvOES +#define glVertex4bOES __rglgen_glVertex4bOES +#define glVertex4bvOES __rglgen_glVertex4bvOES +#define glAccumxOES __rglgen_glAccumxOES +#define glAlphaFuncxOES __rglgen_glAlphaFuncxOES +#define glBitmapxOES __rglgen_glBitmapxOES +#define glBlendColorxOES __rglgen_glBlendColorxOES +#define glClearAccumxOES __rglgen_glClearAccumxOES +#define glClearColorxOES __rglgen_glClearColorxOES +#define glClearDepthxOES __rglgen_glClearDepthxOES +#define glClipPlanexOES __rglgen_glClipPlanexOES +#define glColor3xOES __rglgen_glColor3xOES +#define glColor4xOES __rglgen_glColor4xOES +#define glColor3xvOES __rglgen_glColor3xvOES +#define glColor4xvOES __rglgen_glColor4xvOES +#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES +#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES +#define glDepthRangexOES __rglgen_glDepthRangexOES +#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES +#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES +#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES +#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES +#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES +#define glFogxOES __rglgen_glFogxOES +#define glFogxvOES __rglgen_glFogxvOES +#define glFrustumxOES __rglgen_glFrustumxOES +#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES +#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES +#define glGetFixedvOES __rglgen_glGetFixedvOES +#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES +#define glGetLightxOES __rglgen_glGetLightxOES +#define glGetMapxvOES __rglgen_glGetMapxvOES +#define glGetMaterialxOES __rglgen_glGetMaterialxOES +#define glGetPixelMapxv __rglgen_glGetPixelMapxv +#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES +#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES +#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES +#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES +#define glIndexxOES __rglgen_glIndexxOES +#define glIndexxvOES __rglgen_glIndexxvOES +#define glLightModelxOES __rglgen_glLightModelxOES +#define glLightModelxvOES __rglgen_glLightModelxvOES +#define glLightxOES __rglgen_glLightxOES +#define glLightxvOES __rglgen_glLightxvOES +#define glLineWidthxOES __rglgen_glLineWidthxOES +#define glLoadMatrixxOES __rglgen_glLoadMatrixxOES +#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES +#define glMap1xOES __rglgen_glMap1xOES +#define glMap2xOES __rglgen_glMap2xOES +#define glMapGrid1xOES __rglgen_glMapGrid1xOES +#define glMapGrid2xOES __rglgen_glMapGrid2xOES +#define glMaterialxOES __rglgen_glMaterialxOES +#define glMaterialxvOES __rglgen_glMaterialxvOES +#define glMultMatrixxOES __rglgen_glMultMatrixxOES +#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES +#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES +#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES +#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES +#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES +#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES +#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES +#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES +#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES +#define glNormal3xOES __rglgen_glNormal3xOES +#define glNormal3xvOES __rglgen_glNormal3xvOES +#define glOrthoxOES __rglgen_glOrthoxOES +#define glPassThroughxOES __rglgen_glPassThroughxOES +#define glPixelMapx __rglgen_glPixelMapx +#define glPixelStorex __rglgen_glPixelStorex +#define glPixelTransferxOES __rglgen_glPixelTransferxOES +#define glPixelZoomxOES __rglgen_glPixelZoomxOES +#define glPointParameterxvOES __rglgen_glPointParameterxvOES +#define glPointSizexOES __rglgen_glPointSizexOES +#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES +#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES +#define glRasterPos2xOES __rglgen_glRasterPos2xOES +#define glRasterPos3xOES __rglgen_glRasterPos3xOES +#define glRasterPos4xOES __rglgen_glRasterPos4xOES +#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES +#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES +#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES +#define glRectxOES __rglgen_glRectxOES +#define glRectxvOES __rglgen_glRectxvOES +#define glRotatexOES __rglgen_glRotatexOES +#define glSampleCoverageOES __rglgen_glSampleCoverageOES +#define glScalexOES __rglgen_glScalexOES +#define glTexCoord1xOES __rglgen_glTexCoord1xOES +#define glTexCoord2xOES __rglgen_glTexCoord2xOES +#define glTexCoord3xOES __rglgen_glTexCoord3xOES +#define glTexCoord4xOES __rglgen_glTexCoord4xOES +#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES +#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES +#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES +#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES +#define glTexEnvxOES __rglgen_glTexEnvxOES +#define glTexEnvxvOES __rglgen_glTexEnvxvOES +#define glTexGenxOES __rglgen_glTexGenxOES +#define glTexGenxvOES __rglgen_glTexGenxvOES +#define glTexParameterxOES __rglgen_glTexParameterxOES +#define glTexParameterxvOES __rglgen_glTexParameterxvOES +#define glTranslatexOES __rglgen_glTranslatexOES +#define glVertex2xOES __rglgen_glVertex2xOES +#define glVertex3xOES __rglgen_glVertex3xOES +#define glVertex4xOES __rglgen_glVertex4xOES +#define glVertex2xvOES __rglgen_glVertex2xvOES +#define glVertex3xvOES __rglgen_glVertex3xvOES +#define glVertex4xvOES __rglgen_glVertex4xvOES +#define glDepthRangefOES __rglgen_glDepthRangefOES +#define glFrustumfOES __rglgen_glFrustumfOES +#define glOrthofOES __rglgen_glOrthofOES +#define glClipPlanefOES __rglgen_glClipPlanefOES +#define glClearDepthfOES __rglgen_glClearDepthfOES +#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES +#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; @@ -2506,6 +2780,7 @@ extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; +extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; @@ -2541,6 +2816,7 @@ extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; +extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; @@ -2587,7 +2863,140 @@ extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParamete extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +extern RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +extern RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +extern RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +extern RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +extern RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +extern RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +extern RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +extern RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +extern RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +extern RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +extern RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +extern RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +extern RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +extern RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +extern RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +extern RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +extern RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +extern RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +extern RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +extern RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +extern RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +extern RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +extern RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +extern RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +extern RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +extern RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +extern RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +extern RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +extern RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +extern RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; -extern const struct rglgen_sym_map rglgen_symbol_map_rarch[]; // Avoid possible symbol collision. +extern const struct rglgen_sym_map rglgen_symbol_map[]; #endif diff --git a/gfx/glsym/rglgen.c b/gfx/glsym/rglgen.c index a4369e4d1a..06ff488e72 100644 --- a/gfx/glsym/rglgen.c +++ b/gfx/glsym/rglgen.c @@ -14,6 +14,6 @@ void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, void rglgen_resolve_symbols(rglgen_proc_address_t proc) { - rglgen_resolve_symbols_custom(proc, rglgen_symbol_map_rarch); + rglgen_resolve_symbols_custom(proc, rglgen_symbol_map); } diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index d0e72204b2..b13fcd0dfa 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -223,6 +223,7 @@ static const char *stock_fragment_modern_blend = " gl_FragColor = color * texture2D(Texture, tex_coord);\n" "}"; +#ifndef HAVE_OPENGLES2 static const char *stock_vertex_core_blend = "in vec2 TexCoord;\n" "in vec2 VertexCoord;\n" @@ -244,6 +245,7 @@ static const char *stock_fragment_core_blend = "void main() {\n" " FragColor = color * texture(Texture, tex_coord);\n" "}"; +#endif static GLint get_uniform(GLuint prog, const char *base) { @@ -803,8 +805,13 @@ static bool gl_glsl_init(const char *path) if (glsl_shader->modern) { +#ifdef HAVE_OPENGLES2 // Avoid compiler warnings. + gl_program[GL_SHADER_STOCK_BLEND] = compile_program(stock_vertex_modern_blend, + stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); +#else gl_program[GL_SHADER_STOCK_BLEND] = compile_program(glsl_core ? stock_vertex_core_blend : stock_vertex_modern_blend, glsl_core ? stock_fragment_modern_blend : stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); +#endif find_uniforms(gl_program[GL_SHADER_STOCK_BLEND], &gl_uniforms[GL_SHADER_STOCK_BLEND]); } diff --git a/griffin/griffin.c b/griffin/griffin.c index af60c99afa..cd152d142b 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -204,6 +204,12 @@ VIDEO DRIVER #ifdef HAVE_OPENGL #include "../gfx/gl.c" +#include "../gfx/glsym/rglgen.c" +#ifdef HAVE_OPENGLES2 +#include "../gfx/glsym/glsym_es2.c" +#else +#include "../gfx/glsym/glsym_gl.c" +#endif #endif #ifdef HAVE_XVIDEO diff --git a/libretro-test-gl/glsym/glgen.py b/libretro-test-gl/glsym/glgen.py index 592dd687cc..cf55ab1730 100755 --- a/libretro-test-gl/glsym/glgen.py +++ b/libretro-test-gl/glsym/glgen.py @@ -19,7 +19,7 @@ def find_gl_symbols(lines): m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) g = re.search(r'^.+(gl\S+)\W*\(.+\).*$', line) if m and noext(m.group(1)): - typedefs.append(m.group(0).replace('PFN', 'RGLSYM')) + typedefs.append(m.group(0).replace('PFN', 'RGLSYM').replace('GLDEBUGPROC', 'RGLGENGLDEBUGPROC')) if g and noext(g.group(1)): syms.append(g.group(1)) return (typedefs, syms) @@ -54,6 +54,12 @@ if __name__ == '__main__': 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 GL_APIENTRY\n') + f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') + f.write('#else\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') dump(f, typedefs) dump(f, overrides) dump(f, externs) diff --git a/libretro-test-gl/glsym/glsym_es2.h b/libretro-test-gl/glsym/glsym_es2.h index fbe98c4b6c..a5864ea27f 100644 --- a/libretro-test-gl/glsym/glsym_es2.h +++ b/libretro-test-gl/glsym/glsym_es2.h @@ -1,5 +1,11 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef GL_APIENTRY +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#else +typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#endif typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); @@ -19,7 +25,7 @@ typedef void (GL_APIENTRYP RGLSYMGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *a typedef GLboolean (GL_APIENTRYP RGLSYMGLISVERTEXARRAYOESPROC) (GLuint array); typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); diff --git a/libretro-test-gl/glsym/glsym_gl.h b/libretro-test-gl/glsym/glsym_gl.h index e802d8555b..4b56b82174 100644 --- a/libretro-test-gl/glsym/glsym_gl.h +++ b/libretro-test-gl/glsym/glsym_gl.h @@ -1,5 +1,11 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef GL_APIENTRY +typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#else +typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); +#endif typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); @@ -780,7 +786,7 @@ typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid *userParam); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (RGLGENGLDEBUGPROCARB callback, const GLvoid *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); @@ -816,7 +822,7 @@ typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); diff --git a/libretro-test-gl/jni/Android.mk b/libretro-test-gl/jni/Android.mk index 2f776bb533..b240874d3c 100644 --- a/libretro-test-gl/jni/Android.mk +++ b/libretro-test-gl/jni/Android.mk @@ -17,8 +17,8 @@ ifeq ($(TARGET_ARCH),mips) LOCAL_CFLAGS += -DANDROID_MIPS endif -LOCAL_SRC_FILES += $(wildcard ../*.c) -LOCAL_CFLAGS += -O2 -Wall -std=gnu99 -ffast-math -DGLES +LOCAL_SRC_FILES += $(wildcard ../*.c) ../glsym/rglgen.c ../glsym/glsym_es2.c +LOCAL_CFLAGS += -O2 -Wall -std=gnu99 -ffast-math -DGLES -DHAVE_OPENGLES2 LOCAL_LDLIBS += -lGLESv2 include $(BUILD_SHARED_LIBRARY) From f8b4b1358fffaf6ceed96fa090d1dbf2093002ef Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:37:24 +0200 Subject: [PATCH 102/252] Update Win builds to 0.9.9.3. --- Makefile.win | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.win b/Makefile.win index f2dc464da0..0314720d97 100644 --- a/Makefile.win +++ b/Makefile.win @@ -301,10 +301,10 @@ clean: rm -f tools/*.o dist_x86: all - zip -r retroarch-win32-0.9.9.zip $(TARGET) $(JTARGET) retroarch.cfg + zip -r retroarch-win32-0.9.9.3.zip $(TARGET) $(JTARGET) retroarch.cfg dist_x86_64: all - zip -r retroarch-win64-0.9.9.zip $(TARGET) $(JTARGET) retroarch.cfg + zip -r retroarch-win64-0.9.9.3.zip $(TARGET) $(JTARGET) retroarch.cfg libs_x86: wget http://themaister.net/retroarch-dl/RetroArch-win32-libs.zip From f8eb0c5a624835a8e285fad366bf526f91587fc1 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:47:33 +0200 Subject: [PATCH 103/252] Query extensions more explicitly. --- gfx/gl.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 947a4d557b..51482848f6 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -142,8 +142,11 @@ static bool check_eglimage_proc(void) #endif #ifdef HAVE_GL_SYNC -static bool check_sync_proc(void) +static bool check_sync_proc(gl_t *gl) { + if (!gl_query_extension(gl, "ARB_sync")) + return false; + return glFenceSync && glDeleteSync && glClientWaitSync; } #endif @@ -151,6 +154,9 @@ static bool check_sync_proc(void) #ifndef HAVE_OPENGLES static bool init_vao(gl_t *gl) { + if (!gl_query_extension(gl, "ARB_vertex_array_object")) + return false; + bool present = glGenVertexArrays && glBindVertexArray && glDeleteVertexArrays; if (!present) return false; @@ -175,10 +181,13 @@ static bool init_vao(gl_t *gl) #define GL_FRAMEBUFFER GL_FRAMEBUFFER_OES #define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT #define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES -#define check_fbo_proc() (true) +#define check_fbo_proc(gl) (true) #elif !defined(HAVE_OPENGLES2) -static bool check_fbo_proc(void) +static bool check_fbo_proc(gl_t *gl) { + if (!gl_query_extension(gl, "ARB_framebuffer_object")) + return false; + return glGenFramebuffers && glBindFramebuffer && glFramebufferTexture2D && glCheckFramebufferStatus && glDeleteFramebuffers && glGenRenderbuffers && glBindRenderbuffer && @@ -186,7 +195,7 @@ static bool check_fbo_proc(void) glDeleteRenderbuffers; } #else -#define check_fbo_proc() (true) +#define check_fbo_proc(gl) (true) #endif #if defined(__APPLE__) || defined(HAVE_PSGL) #define GL_RGBA32F GL_RGBA32F_ARB @@ -565,7 +574,7 @@ void gl_init_fbo(void *data, unsigned width, unsigned height) if (gl_shader_num(gl) == 1 && !scale.valid) return; - if (!check_fbo_proc()) + if (!check_fbo_proc(gl)) { RARCH_ERR("Failed to locate FBO functions. Won't be able to use render-to-texture.\n"); return; @@ -628,7 +637,7 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &max_renderbuffer_size); RARCH_LOG("[GL]: Max texture size: %d px, renderbuffer size: %u px.\n", max_fbo_size, max_renderbuffer_size); - if (!check_fbo_proc()) + if (!check_fbo_proc(gl)) return false; glBindTexture(GL_TEXTURE_2D, 0); @@ -1623,7 +1632,7 @@ static bool resolve_extensions(gl_t *gl) #endif #ifdef HAVE_GL_SYNC - gl->have_sync = check_sync_proc(); + gl->have_sync = check_sync_proc(gl); if (gl->have_sync && g_settings.video.hard_sync) RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n"); #endif From 94b57197aae3f3683a6b94ab89c4b2abe64a4afa Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:50:43 +0200 Subject: [PATCH 104/252] Purge cruft. --- gfx/context/null_ctx.c | 40 ++++++---------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/gfx/context/null_ctx.c b/gfx/context/null_ctx.c index 7b15f627a9..0601c7e773 100644 --- a/gfx/context/null_ctx.c +++ b/gfx/context/null_ctx.c @@ -19,41 +19,24 @@ #include "../gfx_common.h" #include "../gl_common.h" -#include "../image.h" - -#include "../fonts/gl_font.h" -#include - -#ifdef HAVE_GLSL -#include "../shader_glsl.h" -#endif - -GLfloat _angle; - -static enum gfx_ctx_api g_api; - static void gfx_ctx_set_swap_interval(unsigned interval) { - RARCH_LOG("gfx_ctx_set_swap_interval(%d).\n", interval); + (void)interval; } static void gfx_ctx_destroy(void) -{ -} +{} static void gfx_ctx_get_video_size(unsigned *width, unsigned *height) -{ -} +{} static bool gfx_ctx_init(void) { - return true; } static void gfx_ctx_swap_buffers(void) -{ -} +{} static void gfx_ctx_check_window(bool *quit, bool *resize, unsigned *width, unsigned *height, unsigned frame_count) @@ -70,10 +53,6 @@ static void gfx_ctx_check_window(bool *quit, *height = new_height; *resize = true; } - - // Check if we are exiting. - if (g_extern.lifecycle_state & (1ULL << RARCH_QUIT_KEY)) - *quit = true; } static void gfx_ctx_set_resize(unsigned width, unsigned height) @@ -105,17 +84,10 @@ static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data *input_data = NULL; } -static unsigned gfx_ctx_get_resolution_width(unsigned resolution_id) -{ - int gl_width; - - return gl_width; -} - static bool gfx_ctx_bind_api(enum gfx_ctx_api api) { - g_api = api; - return api == GFX_CTX_OPENGL_ES_API; + (void)api; + return true; } static bool gfx_ctx_has_focus(void) From 60b7d633a1ab926061bdd5a12027d98f9e991b33 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 19:58:15 +0200 Subject: [PATCH 105/252] Don't append #version if it's already done. --- gfx/shader_glsl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index b13fcd0dfa..2e3367a309 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -376,7 +376,7 @@ static void print_linker_log(GLuint obj) static bool compile_shader(GLuint shader, const char *define, const char *program) { char version[32] = {0}; - if (glsl_core) + if (glsl_core && !strstr(program, "#version")) { unsigned version_no = 0; unsigned gl_ver = glsl_major * 100 + glsl_minor * 10; From e40e41ee22d9280d5a7d98b4acfe73a0c5711153 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 22:36:30 +0200 Subject: [PATCH 106/252] Add multisampling to libretro-test-gl. --- libretro-test-gl/libretro-test.c | 61 ++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index df9d885a07..e40d465d4e 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -27,7 +27,11 @@ static GLuint prog; static GLuint vbo; #ifdef CORE +static bool multisample_fbo; static GLuint vao; + +static GLuint fbo; +static GLuint rbo_color, rbo_depth_stencil; #endif static const GLfloat vertex_data[] = { @@ -107,7 +111,43 @@ static void setup_vao(void) { #ifdef CORE glGenVertexArrays(1, &vao); + + glGenRenderbuffers(1, &rbo_color); + glGenRenderbuffers(1, &rbo_depth_stencil); + glGenFramebuffers(1, &fbo); + + multisample_fbo = false; + if (glRenderbufferStorageMultisample) + { + glBindRenderbuffer(GL_RENDERBUFFER, rbo_color); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, + 4, GL_RGBA, MAX_WIDTH, MAX_HEIGHT); + glBindRenderbuffer(GL_RENDERBUFFER, rbo_depth_stencil); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, + 4, GL_DEPTH24_STENCIL8, MAX_WIDTH, MAX_HEIGHT); + glBindRenderbuffer(GL_RENDERBUFFER, 0); + + glGenFramebuffers(1, &fbo); + glBindFramebuffer(GL_FRAMEBUFFER, fbo); + + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_RENDERBUFFER, rbo_color); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, + GL_RENDERBUFFER, rbo_depth_stencil); + + GLenum ret = glCheckFramebufferStatus(GL_FRAMEBUFFER); + if (ret == GL_FRAMEBUFFER_COMPLETE) + { + fprintf(stderr, "Using multisampled FBO.\n"); + multisample_fbo = true; + } + else + fprintf(stderr, "Multisampled FBO failed.\n"); + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + } #endif + glUseProgram(prog); glGenBuffers(1, &vbo); @@ -247,9 +287,12 @@ void retro_run(void) #ifdef CORE glBindVertexArray(vao); + if (multisample_fbo) + glBindFramebuffer(GL_FRAMEBUFFER, fbo); + else #endif + glBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); - glBindFramebuffer(GL_FRAMEBUFFER, hw_render.get_current_framebuffer()); glClearColor(0.3, 0.4, 0.5, 1.0); glViewport(0, 0, width, height); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); @@ -300,10 +343,20 @@ void retro_run(void) glUseProgram(0); - video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0); #ifdef CORE glBindVertexArray(0); + if (multisample_fbo) // Resolve the multisample. + { + glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, hw_render.get_current_framebuffer()); + glBlitFramebuffer(0, 0, width, height, + 0, 0, width, height, + GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + } #endif + video_cb(RETRO_HW_FRAME_BUFFER_VALID, width, height, 0); } static void context_reset(void) @@ -321,6 +374,10 @@ static void context_destroy(void) #ifdef CORE glDeleteVertexArrays(1, &vao); vao = 0; + glDeleteRenderbuffers(1, &rbo_color); + glDeleteRenderbuffers(1, &rbo_depth_stencil); + glDeleteFramebuffers(1, &fbo); + rbo_color = rbo_depth_stencil = fbo = 0; #endif glDeleteBuffers(1, &vbo); vbo = 0; From 0b6f92e433bc1f1797b59f42334e3927a999c95c Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 22:42:15 +0200 Subject: [PATCH 107/252] Allow explicitly banning specific exts in glsym. --- gfx/glsym/glgen.py | 5 + gfx/glsym/glsym_gl.c | 266 -------------------- gfx/glsym/glsym_gl.h | 399 ------------------------------ libretro-test-gl/glsym/glsym_gl.c | 266 -------------------- libretro-test-gl/glsym/glsym_gl.h | 399 ------------------------------ 5 files changed, 5 insertions(+), 1330 deletions(-) diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index cf55ab1730..9a1e509b2b 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -41,6 +41,11 @@ def dump(f, 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) diff --git a/gfx/glsym/glsym_gl.c b/gfx/glsym/glsym_gl.c index 97564bc1f0..8d76bd3960 100644 --- a/gfx/glsym/glsym_gl.c +++ b/gfx/glsym/glsym_gl.c @@ -865,139 +865,6 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ImageTransformParameterfvHP), SYM(GetImageTransformParameterivHP), SYM(GetImageTransformParameterfvHP), - SYM(MultiTexCoord1bOES), - SYM(MultiTexCoord1bvOES), - SYM(MultiTexCoord2bOES), - SYM(MultiTexCoord2bvOES), - SYM(MultiTexCoord3bOES), - SYM(MultiTexCoord3bvOES), - SYM(MultiTexCoord4bOES), - SYM(MultiTexCoord4bvOES), - SYM(TexCoord1bOES), - SYM(TexCoord1bvOES), - SYM(TexCoord2bOES), - SYM(TexCoord2bvOES), - SYM(TexCoord3bOES), - SYM(TexCoord3bvOES), - SYM(TexCoord4bOES), - SYM(TexCoord4bvOES), - SYM(Vertex2bOES), - SYM(Vertex2bvOES), - SYM(Vertex3bOES), - SYM(Vertex3bvOES), - SYM(Vertex4bOES), - SYM(Vertex4bvOES), - SYM(AccumxOES), - SYM(AlphaFuncxOES), - SYM(BitmapxOES), - SYM(BlendColorxOES), - SYM(ClearAccumxOES), - SYM(ClearColorxOES), - SYM(ClearDepthxOES), - SYM(ClipPlanexOES), - SYM(Color3xOES), - SYM(Color4xOES), - SYM(Color3xvOES), - SYM(Color4xvOES), - SYM(ConvolutionParameterxOES), - SYM(ConvolutionParameterxvOES), - SYM(DepthRangexOES), - SYM(EvalCoord1xOES), - SYM(EvalCoord2xOES), - SYM(EvalCoord1xvOES), - SYM(EvalCoord2xvOES), - SYM(FeedbackBufferxOES), - SYM(FogxOES), - SYM(FogxvOES), - SYM(FrustumxOES), - SYM(GetClipPlanexOES), - SYM(GetConvolutionParameterxvOES), - SYM(GetFixedvOES), - SYM(GetHistogramParameterxvOES), - SYM(GetLightxOES), - SYM(GetMapxvOES), - SYM(GetMaterialxOES), - SYM(GetPixelMapxv), - SYM(GetTexEnvxvOES), - SYM(GetTexGenxvOES), - SYM(GetTexLevelParameterxvOES), - SYM(GetTexParameterxvOES), - SYM(IndexxOES), - SYM(IndexxvOES), - SYM(LightModelxOES), - SYM(LightModelxvOES), - SYM(LightxOES), - SYM(LightxvOES), - SYM(LineWidthxOES), - SYM(LoadMatrixxOES), - SYM(LoadTransposeMatrixxOES), - SYM(Map1xOES), - SYM(Map2xOES), - SYM(MapGrid1xOES), - SYM(MapGrid2xOES), - SYM(MaterialxOES), - SYM(MaterialxvOES), - SYM(MultMatrixxOES), - SYM(MultTransposeMatrixxOES), - SYM(MultiTexCoord1xOES), - SYM(MultiTexCoord2xOES), - SYM(MultiTexCoord3xOES), - SYM(MultiTexCoord4xOES), - SYM(MultiTexCoord1xvOES), - SYM(MultiTexCoord2xvOES), - SYM(MultiTexCoord3xvOES), - SYM(MultiTexCoord4xvOES), - SYM(Normal3xOES), - SYM(Normal3xvOES), - SYM(OrthoxOES), - SYM(PassThroughxOES), - SYM(PixelMapx), - SYM(PixelStorex), - SYM(PixelTransferxOES), - SYM(PixelZoomxOES), - SYM(PointParameterxvOES), - SYM(PointSizexOES), - SYM(PolygonOffsetxOES), - SYM(PrioritizeTexturesxOES), - SYM(RasterPos2xOES), - SYM(RasterPos3xOES), - SYM(RasterPos4xOES), - SYM(RasterPos2xvOES), - SYM(RasterPos3xvOES), - SYM(RasterPos4xvOES), - SYM(RectxOES), - SYM(RectxvOES), - SYM(RotatexOES), - SYM(SampleCoverageOES), - SYM(ScalexOES), - SYM(TexCoord1xOES), - SYM(TexCoord2xOES), - SYM(TexCoord3xOES), - SYM(TexCoord4xOES), - SYM(TexCoord1xvOES), - SYM(TexCoord2xvOES), - SYM(TexCoord3xvOES), - SYM(TexCoord4xvOES), - SYM(TexEnvxOES), - SYM(TexEnvxvOES), - SYM(TexGenxOES), - SYM(TexGenxvOES), - SYM(TexParameterxOES), - SYM(TexParameterxvOES), - SYM(TranslatexOES), - SYM(Vertex2xOES), - SYM(Vertex3xOES), - SYM(Vertex4xOES), - SYM(Vertex2xvOES), - SYM(Vertex3xvOES), - SYM(Vertex4xvOES), - SYM(DepthRangefOES), - SYM(FrustumfOES), - SYM(OrthofOES), - SYM(ClipPlanefOES), - SYM(ClearDepthfOES), - SYM(GetClipPlanefOES), - SYM(QueryMatrixxOES), { NULL, NULL }, }; @@ -1864,137 +1731,4 @@ RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; -RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; -RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; -RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; -RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; -RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; -RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; -RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; -RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; -RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; -RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; -RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; -RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; -RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; -RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; -RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; -RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; -RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; -RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; -RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; -RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; -RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; -RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; -RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; -RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; -RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; -RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; -RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; -RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; -RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; -RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; -RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; -RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; -RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; -RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; -RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; -RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; -RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; -RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; -RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; -RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; -RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; -RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; -RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; -RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; -RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; -RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; -RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; -RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; -RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; -RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; -RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; -RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; -RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; -RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; -RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; -RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; -RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; -RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; -RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; -RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; -RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; -RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; -RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; -RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; -RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; -RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; -RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; -RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; -RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; -RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; -RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; -RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; -RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; -RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; -RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; -RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; -RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; -RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; -RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; -RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; -RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; -RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; -RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; -RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; -RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; -RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; -RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; -RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; -RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; -RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; -RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; -RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; -RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; -RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; -RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; -RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; -RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; -RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; -RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; -RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; -RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; -RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; -RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; -RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; -RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; -RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; -RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; -RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; -RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; -RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; -RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; -RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; -RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; -RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; -RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; -RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; -RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; -RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; -RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; -RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; -RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; -RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; -RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; -RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; -RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; -RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; -RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; -RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; -RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; -RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; -RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; -RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; -RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index 4b56b82174..8f2c84b8bf 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -869,139 +869,6 @@ typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1BOESPROC) (GLbyte s); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX2BOESPROC) (GLbyte x); -typedef void (APIENTRYP RGLSYMGLVERTEX2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); -typedef void (APIENTRYP RGLSYMGLVERTEX3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); -typedef void (APIENTRYP RGLSYMGLVERTEX4BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); -typedef void (APIENTRYP RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); -typedef void (APIENTRYP RGLSYMGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); -typedef void (APIENTRYP RGLSYMGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARDEPTHXOESPROC) (GLfixed depth); -typedef void (APIENTRYP RGLSYMGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); -typedef void (APIENTRYP RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); -typedef void (APIENTRYP RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCOLOR3XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP RGLSYMGLCOLOR4XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); -typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); -typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); -typedef void (APIENTRYP RGLSYMGLFOGXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); -typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); -typedef void (APIENTRYP RGLSYMGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); -typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); -typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); -typedef void (APIENTRYP RGLSYMGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLLINEWIDTHXOESPROC) (GLfixed width); -typedef void (APIENTRYP RGLSYMGLLOADMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); -typedef void (APIENTRYP RGLSYMGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); -typedef void (APIENTRYP RGLSYMGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); -typedef void (APIENTRYP RGLSYMGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); -typedef void (APIENTRYP RGLSYMGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLMULTMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); -typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLPASSTHROUGHXOESPROC) (GLfixed token); -typedef void (APIENTRYP RGLSYMGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); -typedef void (APIENTRYP RGLSYMGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLPOINTSIZEXOESPROC) (GLfixed size); -typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); -typedef void (APIENTRYP RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); -typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); -typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRASTERPOS4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); -typedef void (APIENTRYP RGLSYMGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); -typedef void (APIENTRYP RGLSYMGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); -typedef void (APIENTRYP RGLSYMGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); -typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (APIENTRYP RGLSYMGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); -typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); -typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); -typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); #define glBlendColor __rglgen_glBlendColor #define glBlendEquation __rglgen_glBlendEquation @@ -1866,139 +1733,6 @@ typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, G #define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP #define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP #define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP -#define glMultiTexCoord1bOES __rglgen_glMultiTexCoord1bOES -#define glMultiTexCoord1bvOES __rglgen_glMultiTexCoord1bvOES -#define glMultiTexCoord2bOES __rglgen_glMultiTexCoord2bOES -#define glMultiTexCoord2bvOES __rglgen_glMultiTexCoord2bvOES -#define glMultiTexCoord3bOES __rglgen_glMultiTexCoord3bOES -#define glMultiTexCoord3bvOES __rglgen_glMultiTexCoord3bvOES -#define glMultiTexCoord4bOES __rglgen_glMultiTexCoord4bOES -#define glMultiTexCoord4bvOES __rglgen_glMultiTexCoord4bvOES -#define glTexCoord1bOES __rglgen_glTexCoord1bOES -#define glTexCoord1bvOES __rglgen_glTexCoord1bvOES -#define glTexCoord2bOES __rglgen_glTexCoord2bOES -#define glTexCoord2bvOES __rglgen_glTexCoord2bvOES -#define glTexCoord3bOES __rglgen_glTexCoord3bOES -#define glTexCoord3bvOES __rglgen_glTexCoord3bvOES -#define glTexCoord4bOES __rglgen_glTexCoord4bOES -#define glTexCoord4bvOES __rglgen_glTexCoord4bvOES -#define glVertex2bOES __rglgen_glVertex2bOES -#define glVertex2bvOES __rglgen_glVertex2bvOES -#define glVertex3bOES __rglgen_glVertex3bOES -#define glVertex3bvOES __rglgen_glVertex3bvOES -#define glVertex4bOES __rglgen_glVertex4bOES -#define glVertex4bvOES __rglgen_glVertex4bvOES -#define glAccumxOES __rglgen_glAccumxOES -#define glAlphaFuncxOES __rglgen_glAlphaFuncxOES -#define glBitmapxOES __rglgen_glBitmapxOES -#define glBlendColorxOES __rglgen_glBlendColorxOES -#define glClearAccumxOES __rglgen_glClearAccumxOES -#define glClearColorxOES __rglgen_glClearColorxOES -#define glClearDepthxOES __rglgen_glClearDepthxOES -#define glClipPlanexOES __rglgen_glClipPlanexOES -#define glColor3xOES __rglgen_glColor3xOES -#define glColor4xOES __rglgen_glColor4xOES -#define glColor3xvOES __rglgen_glColor3xvOES -#define glColor4xvOES __rglgen_glColor4xvOES -#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES -#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES -#define glDepthRangexOES __rglgen_glDepthRangexOES -#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES -#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES -#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES -#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES -#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES -#define glFogxOES __rglgen_glFogxOES -#define glFogxvOES __rglgen_glFogxvOES -#define glFrustumxOES __rglgen_glFrustumxOES -#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES -#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES -#define glGetFixedvOES __rglgen_glGetFixedvOES -#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES -#define glGetLightxOES __rglgen_glGetLightxOES -#define glGetMapxvOES __rglgen_glGetMapxvOES -#define glGetMaterialxOES __rglgen_glGetMaterialxOES -#define glGetPixelMapxv __rglgen_glGetPixelMapxv -#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES -#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES -#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES -#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES -#define glIndexxOES __rglgen_glIndexxOES -#define glIndexxvOES __rglgen_glIndexxvOES -#define glLightModelxOES __rglgen_glLightModelxOES -#define glLightModelxvOES __rglgen_glLightModelxvOES -#define glLightxOES __rglgen_glLightxOES -#define glLightxvOES __rglgen_glLightxvOES -#define glLineWidthxOES __rglgen_glLineWidthxOES -#define glLoadMatrixxOES __rglgen_glLoadMatrixxOES -#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES -#define glMap1xOES __rglgen_glMap1xOES -#define glMap2xOES __rglgen_glMap2xOES -#define glMapGrid1xOES __rglgen_glMapGrid1xOES -#define glMapGrid2xOES __rglgen_glMapGrid2xOES -#define glMaterialxOES __rglgen_glMaterialxOES -#define glMaterialxvOES __rglgen_glMaterialxvOES -#define glMultMatrixxOES __rglgen_glMultMatrixxOES -#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES -#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES -#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES -#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES -#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES -#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES -#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES -#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES -#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES -#define glNormal3xOES __rglgen_glNormal3xOES -#define glNormal3xvOES __rglgen_glNormal3xvOES -#define glOrthoxOES __rglgen_glOrthoxOES -#define glPassThroughxOES __rglgen_glPassThroughxOES -#define glPixelMapx __rglgen_glPixelMapx -#define glPixelStorex __rglgen_glPixelStorex -#define glPixelTransferxOES __rglgen_glPixelTransferxOES -#define glPixelZoomxOES __rglgen_glPixelZoomxOES -#define glPointParameterxvOES __rglgen_glPointParameterxvOES -#define glPointSizexOES __rglgen_glPointSizexOES -#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES -#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES -#define glRasterPos2xOES __rglgen_glRasterPos2xOES -#define glRasterPos3xOES __rglgen_glRasterPos3xOES -#define glRasterPos4xOES __rglgen_glRasterPos4xOES -#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES -#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES -#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES -#define glRectxOES __rglgen_glRectxOES -#define glRectxvOES __rglgen_glRectxvOES -#define glRotatexOES __rglgen_glRotatexOES -#define glSampleCoverageOES __rglgen_glSampleCoverageOES -#define glScalexOES __rglgen_glScalexOES -#define glTexCoord1xOES __rglgen_glTexCoord1xOES -#define glTexCoord2xOES __rglgen_glTexCoord2xOES -#define glTexCoord3xOES __rglgen_glTexCoord3xOES -#define glTexCoord4xOES __rglgen_glTexCoord4xOES -#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES -#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES -#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES -#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES -#define glTexEnvxOES __rglgen_glTexEnvxOES -#define glTexEnvxvOES __rglgen_glTexEnvxvOES -#define glTexGenxOES __rglgen_glTexGenxOES -#define glTexGenxvOES __rglgen_glTexGenxvOES -#define glTexParameterxOES __rglgen_glTexParameterxOES -#define glTexParameterxvOES __rglgen_glTexParameterxvOES -#define glTranslatexOES __rglgen_glTranslatexOES -#define glVertex2xOES __rglgen_glVertex2xOES -#define glVertex3xOES __rglgen_glVertex3xOES -#define glVertex4xOES __rglgen_glVertex4xOES -#define glVertex2xvOES __rglgen_glVertex2xvOES -#define glVertex3xvOES __rglgen_glVertex3xvOES -#define glVertex4xvOES __rglgen_glVertex4xvOES -#define glDepthRangefOES __rglgen_glDepthRangefOES -#define glFrustumfOES __rglgen_glFrustumfOES -#define glOrthofOES __rglgen_glOrthofOES -#define glClipPlanefOES __rglgen_glClipPlanefOES -#define glClearDepthfOES __rglgen_glClearDepthfOES -#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES -#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; @@ -2863,139 +2597,6 @@ extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParamete extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; -extern RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; -extern RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; -extern RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; -extern RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; -extern RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; -extern RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; -extern RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; -extern RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; -extern RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; -extern RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; -extern RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; -extern RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; -extern RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; -extern RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; -extern RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; -extern RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; -extern RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; -extern RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; -extern RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; -extern RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; -extern RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; -extern RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; -extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; -extern RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; -extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; -extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; -extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; -extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; -extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; -extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; -extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; -extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; -extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; -extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; -extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; -extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; -extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; -extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; -extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; -extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; -extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; -extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; -extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; -extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; -extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; -extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; -extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; -extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; -extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; -extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; -extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; -extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; -extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; -extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; -extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; -extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; -extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; -extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; -extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; -extern RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; -extern RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; -extern RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; -extern RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; -extern RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; -extern RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; -extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; -extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; -extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; -extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; -extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; -extern RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; -extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; -extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; -extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; -extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; -extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; -extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; -extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; -extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; -extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; -extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; -extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; -extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; -extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; -extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; -extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; -extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; -extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; -extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; -extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; -extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; -extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; -extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; -extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; -extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; -extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; -extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; -extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; -extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; -extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; -extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; -extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; -extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; -extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; -extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; -extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; -extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; -extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; -extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; -extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; -extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; -extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; -extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; -extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; -extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; -extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; -extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; -extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; -extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; -extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; -extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; -extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; -extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; -extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; -extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; -extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; -extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; -extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; -extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; -extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; -extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; -extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; -extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; diff --git a/libretro-test-gl/glsym/glsym_gl.c b/libretro-test-gl/glsym/glsym_gl.c index 97564bc1f0..8d76bd3960 100644 --- a/libretro-test-gl/glsym/glsym_gl.c +++ b/libretro-test-gl/glsym/glsym_gl.c @@ -865,139 +865,6 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ImageTransformParameterfvHP), SYM(GetImageTransformParameterivHP), SYM(GetImageTransformParameterfvHP), - SYM(MultiTexCoord1bOES), - SYM(MultiTexCoord1bvOES), - SYM(MultiTexCoord2bOES), - SYM(MultiTexCoord2bvOES), - SYM(MultiTexCoord3bOES), - SYM(MultiTexCoord3bvOES), - SYM(MultiTexCoord4bOES), - SYM(MultiTexCoord4bvOES), - SYM(TexCoord1bOES), - SYM(TexCoord1bvOES), - SYM(TexCoord2bOES), - SYM(TexCoord2bvOES), - SYM(TexCoord3bOES), - SYM(TexCoord3bvOES), - SYM(TexCoord4bOES), - SYM(TexCoord4bvOES), - SYM(Vertex2bOES), - SYM(Vertex2bvOES), - SYM(Vertex3bOES), - SYM(Vertex3bvOES), - SYM(Vertex4bOES), - SYM(Vertex4bvOES), - SYM(AccumxOES), - SYM(AlphaFuncxOES), - SYM(BitmapxOES), - SYM(BlendColorxOES), - SYM(ClearAccumxOES), - SYM(ClearColorxOES), - SYM(ClearDepthxOES), - SYM(ClipPlanexOES), - SYM(Color3xOES), - SYM(Color4xOES), - SYM(Color3xvOES), - SYM(Color4xvOES), - SYM(ConvolutionParameterxOES), - SYM(ConvolutionParameterxvOES), - SYM(DepthRangexOES), - SYM(EvalCoord1xOES), - SYM(EvalCoord2xOES), - SYM(EvalCoord1xvOES), - SYM(EvalCoord2xvOES), - SYM(FeedbackBufferxOES), - SYM(FogxOES), - SYM(FogxvOES), - SYM(FrustumxOES), - SYM(GetClipPlanexOES), - SYM(GetConvolutionParameterxvOES), - SYM(GetFixedvOES), - SYM(GetHistogramParameterxvOES), - SYM(GetLightxOES), - SYM(GetMapxvOES), - SYM(GetMaterialxOES), - SYM(GetPixelMapxv), - SYM(GetTexEnvxvOES), - SYM(GetTexGenxvOES), - SYM(GetTexLevelParameterxvOES), - SYM(GetTexParameterxvOES), - SYM(IndexxOES), - SYM(IndexxvOES), - SYM(LightModelxOES), - SYM(LightModelxvOES), - SYM(LightxOES), - SYM(LightxvOES), - SYM(LineWidthxOES), - SYM(LoadMatrixxOES), - SYM(LoadTransposeMatrixxOES), - SYM(Map1xOES), - SYM(Map2xOES), - SYM(MapGrid1xOES), - SYM(MapGrid2xOES), - SYM(MaterialxOES), - SYM(MaterialxvOES), - SYM(MultMatrixxOES), - SYM(MultTransposeMatrixxOES), - SYM(MultiTexCoord1xOES), - SYM(MultiTexCoord2xOES), - SYM(MultiTexCoord3xOES), - SYM(MultiTexCoord4xOES), - SYM(MultiTexCoord1xvOES), - SYM(MultiTexCoord2xvOES), - SYM(MultiTexCoord3xvOES), - SYM(MultiTexCoord4xvOES), - SYM(Normal3xOES), - SYM(Normal3xvOES), - SYM(OrthoxOES), - SYM(PassThroughxOES), - SYM(PixelMapx), - SYM(PixelStorex), - SYM(PixelTransferxOES), - SYM(PixelZoomxOES), - SYM(PointParameterxvOES), - SYM(PointSizexOES), - SYM(PolygonOffsetxOES), - SYM(PrioritizeTexturesxOES), - SYM(RasterPos2xOES), - SYM(RasterPos3xOES), - SYM(RasterPos4xOES), - SYM(RasterPos2xvOES), - SYM(RasterPos3xvOES), - SYM(RasterPos4xvOES), - SYM(RectxOES), - SYM(RectxvOES), - SYM(RotatexOES), - SYM(SampleCoverageOES), - SYM(ScalexOES), - SYM(TexCoord1xOES), - SYM(TexCoord2xOES), - SYM(TexCoord3xOES), - SYM(TexCoord4xOES), - SYM(TexCoord1xvOES), - SYM(TexCoord2xvOES), - SYM(TexCoord3xvOES), - SYM(TexCoord4xvOES), - SYM(TexEnvxOES), - SYM(TexEnvxvOES), - SYM(TexGenxOES), - SYM(TexGenxvOES), - SYM(TexParameterxOES), - SYM(TexParameterxvOES), - SYM(TranslatexOES), - SYM(Vertex2xOES), - SYM(Vertex3xOES), - SYM(Vertex4xOES), - SYM(Vertex2xvOES), - SYM(Vertex3xvOES), - SYM(Vertex4xvOES), - SYM(DepthRangefOES), - SYM(FrustumfOES), - SYM(OrthofOES), - SYM(ClipPlanefOES), - SYM(ClearDepthfOES), - SYM(GetClipPlanefOES), - SYM(QueryMatrixxOES), { NULL, NULL }, }; @@ -1864,137 +1731,4 @@ RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; -RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; -RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; -RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; -RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; -RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; -RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; -RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; -RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; -RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; -RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; -RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; -RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; -RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; -RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; -RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; -RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; -RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; -RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; -RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; -RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; -RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; -RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; -RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; -RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; -RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; -RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; -RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; -RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; -RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; -RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; -RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; -RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; -RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; -RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; -RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; -RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; -RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; -RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; -RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; -RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; -RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; -RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; -RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; -RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; -RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; -RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; -RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; -RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; -RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; -RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; -RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; -RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; -RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; -RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; -RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; -RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; -RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; -RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; -RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; -RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; -RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; -RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; -RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; -RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; -RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; -RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; -RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; -RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; -RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; -RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; -RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; -RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; -RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; -RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; -RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; -RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; -RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; -RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; -RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; -RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; -RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; -RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; -RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; -RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; -RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; -RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; -RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; -RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; -RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; -RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; -RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; -RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; -RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; -RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; -RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; -RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; -RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; -RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; -RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; -RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; -RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; -RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; -RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; -RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; -RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; -RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; -RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; -RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; -RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; -RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; -RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; -RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; -RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; -RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; -RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; -RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; -RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; -RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; -RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; -RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; -RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; -RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; -RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; -RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; -RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; -RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; -RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; -RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; -RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; -RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; -RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; -RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; -RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; diff --git a/libretro-test-gl/glsym/glsym_gl.h b/libretro-test-gl/glsym/glsym_gl.h index 4b56b82174..8f2c84b8bf 100644 --- a/libretro-test-gl/glsym/glsym_gl.h +++ b/libretro-test-gl/glsym/glsym_gl.h @@ -869,139 +869,6 @@ typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1BOESPROC) (GLbyte s); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX2BOESPROC) (GLbyte x); -typedef void (APIENTRYP RGLSYMGLVERTEX2BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); -typedef void (APIENTRYP RGLSYMGLVERTEX3BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); -typedef void (APIENTRYP RGLSYMGLVERTEX4BVOESPROC) (const GLbyte *coords); -typedef void (APIENTRYP RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); -typedef void (APIENTRYP RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); -typedef void (APIENTRYP RGLSYMGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); -typedef void (APIENTRYP RGLSYMGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCLEARDEPTHXOESPROC) (GLfixed depth); -typedef void (APIENTRYP RGLSYMGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); -typedef void (APIENTRYP RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); -typedef void (APIENTRYP RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -typedef void (APIENTRYP RGLSYMGLCOLOR3XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP RGLSYMGLCOLOR4XVOESPROC) (const GLfixed *components); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); -typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); -typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); -typedef void (APIENTRYP RGLSYMGLFOGXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); -typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); -typedef void (APIENTRYP RGLSYMGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); -typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); -typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); -typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); -typedef void (APIENTRYP RGLSYMGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLLINEWIDTHXOESPROC) (GLfixed width); -typedef void (APIENTRYP RGLSYMGLLOADMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); -typedef void (APIENTRYP RGLSYMGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); -typedef void (APIENTRYP RGLSYMGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); -typedef void (APIENTRYP RGLSYMGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); -typedef void (APIENTRYP RGLSYMGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); -typedef void (APIENTRYP RGLSYMGLMULTMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); -typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); -typedef void (APIENTRYP RGLSYMGLPASSTHROUGHXOESPROC) (GLfixed token); -typedef void (APIENTRYP RGLSYMGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); -typedef void (APIENTRYP RGLSYMGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLPOINTSIZEXOESPROC) (GLfixed size); -typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); -typedef void (APIENTRYP RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); -typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); -typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRASTERPOS4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); -typedef void (APIENTRYP RGLSYMGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); -typedef void (APIENTRYP RGLSYMGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); -typedef void (APIENTRYP RGLSYMGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); -typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); -typedef void (APIENTRYP RGLSYMGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); -typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); -typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); -typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (APIENTRYP RGLSYMGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); -typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); -typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); -typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); #define glBlendColor __rglgen_glBlendColor #define glBlendEquation __rglgen_glBlendEquation @@ -1866,139 +1733,6 @@ typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, G #define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP #define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP #define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP -#define glMultiTexCoord1bOES __rglgen_glMultiTexCoord1bOES -#define glMultiTexCoord1bvOES __rglgen_glMultiTexCoord1bvOES -#define glMultiTexCoord2bOES __rglgen_glMultiTexCoord2bOES -#define glMultiTexCoord2bvOES __rglgen_glMultiTexCoord2bvOES -#define glMultiTexCoord3bOES __rglgen_glMultiTexCoord3bOES -#define glMultiTexCoord3bvOES __rglgen_glMultiTexCoord3bvOES -#define glMultiTexCoord4bOES __rglgen_glMultiTexCoord4bOES -#define glMultiTexCoord4bvOES __rglgen_glMultiTexCoord4bvOES -#define glTexCoord1bOES __rglgen_glTexCoord1bOES -#define glTexCoord1bvOES __rglgen_glTexCoord1bvOES -#define glTexCoord2bOES __rglgen_glTexCoord2bOES -#define glTexCoord2bvOES __rglgen_glTexCoord2bvOES -#define glTexCoord3bOES __rglgen_glTexCoord3bOES -#define glTexCoord3bvOES __rglgen_glTexCoord3bvOES -#define glTexCoord4bOES __rglgen_glTexCoord4bOES -#define glTexCoord4bvOES __rglgen_glTexCoord4bvOES -#define glVertex2bOES __rglgen_glVertex2bOES -#define glVertex2bvOES __rglgen_glVertex2bvOES -#define glVertex3bOES __rglgen_glVertex3bOES -#define glVertex3bvOES __rglgen_glVertex3bvOES -#define glVertex4bOES __rglgen_glVertex4bOES -#define glVertex4bvOES __rglgen_glVertex4bvOES -#define glAccumxOES __rglgen_glAccumxOES -#define glAlphaFuncxOES __rglgen_glAlphaFuncxOES -#define glBitmapxOES __rglgen_glBitmapxOES -#define glBlendColorxOES __rglgen_glBlendColorxOES -#define glClearAccumxOES __rglgen_glClearAccumxOES -#define glClearColorxOES __rglgen_glClearColorxOES -#define glClearDepthxOES __rglgen_glClearDepthxOES -#define glClipPlanexOES __rglgen_glClipPlanexOES -#define glColor3xOES __rglgen_glColor3xOES -#define glColor4xOES __rglgen_glColor4xOES -#define glColor3xvOES __rglgen_glColor3xvOES -#define glColor4xvOES __rglgen_glColor4xvOES -#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES -#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES -#define glDepthRangexOES __rglgen_glDepthRangexOES -#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES -#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES -#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES -#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES -#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES -#define glFogxOES __rglgen_glFogxOES -#define glFogxvOES __rglgen_glFogxvOES -#define glFrustumxOES __rglgen_glFrustumxOES -#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES -#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES -#define glGetFixedvOES __rglgen_glGetFixedvOES -#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES -#define glGetLightxOES __rglgen_glGetLightxOES -#define glGetMapxvOES __rglgen_glGetMapxvOES -#define glGetMaterialxOES __rglgen_glGetMaterialxOES -#define glGetPixelMapxv __rglgen_glGetPixelMapxv -#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES -#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES -#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES -#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES -#define glIndexxOES __rglgen_glIndexxOES -#define glIndexxvOES __rglgen_glIndexxvOES -#define glLightModelxOES __rglgen_glLightModelxOES -#define glLightModelxvOES __rglgen_glLightModelxvOES -#define glLightxOES __rglgen_glLightxOES -#define glLightxvOES __rglgen_glLightxvOES -#define glLineWidthxOES __rglgen_glLineWidthxOES -#define glLoadMatrixxOES __rglgen_glLoadMatrixxOES -#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES -#define glMap1xOES __rglgen_glMap1xOES -#define glMap2xOES __rglgen_glMap2xOES -#define glMapGrid1xOES __rglgen_glMapGrid1xOES -#define glMapGrid2xOES __rglgen_glMapGrid2xOES -#define glMaterialxOES __rglgen_glMaterialxOES -#define glMaterialxvOES __rglgen_glMaterialxvOES -#define glMultMatrixxOES __rglgen_glMultMatrixxOES -#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES -#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES -#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES -#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES -#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES -#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES -#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES -#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES -#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES -#define glNormal3xOES __rglgen_glNormal3xOES -#define glNormal3xvOES __rglgen_glNormal3xvOES -#define glOrthoxOES __rglgen_glOrthoxOES -#define glPassThroughxOES __rglgen_glPassThroughxOES -#define glPixelMapx __rglgen_glPixelMapx -#define glPixelStorex __rglgen_glPixelStorex -#define glPixelTransferxOES __rglgen_glPixelTransferxOES -#define glPixelZoomxOES __rglgen_glPixelZoomxOES -#define glPointParameterxvOES __rglgen_glPointParameterxvOES -#define glPointSizexOES __rglgen_glPointSizexOES -#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES -#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES -#define glRasterPos2xOES __rglgen_glRasterPos2xOES -#define glRasterPos3xOES __rglgen_glRasterPos3xOES -#define glRasterPos4xOES __rglgen_glRasterPos4xOES -#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES -#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES -#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES -#define glRectxOES __rglgen_glRectxOES -#define glRectxvOES __rglgen_glRectxvOES -#define glRotatexOES __rglgen_glRotatexOES -#define glSampleCoverageOES __rglgen_glSampleCoverageOES -#define glScalexOES __rglgen_glScalexOES -#define glTexCoord1xOES __rglgen_glTexCoord1xOES -#define glTexCoord2xOES __rglgen_glTexCoord2xOES -#define glTexCoord3xOES __rglgen_glTexCoord3xOES -#define glTexCoord4xOES __rglgen_glTexCoord4xOES -#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES -#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES -#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES -#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES -#define glTexEnvxOES __rglgen_glTexEnvxOES -#define glTexEnvxvOES __rglgen_glTexEnvxvOES -#define glTexGenxOES __rglgen_glTexGenxOES -#define glTexGenxvOES __rglgen_glTexGenxvOES -#define glTexParameterxOES __rglgen_glTexParameterxOES -#define glTexParameterxvOES __rglgen_glTexParameterxvOES -#define glTranslatexOES __rglgen_glTranslatexOES -#define glVertex2xOES __rglgen_glVertex2xOES -#define glVertex3xOES __rglgen_glVertex3xOES -#define glVertex4xOES __rglgen_glVertex4xOES -#define glVertex2xvOES __rglgen_glVertex2xvOES -#define glVertex3xvOES __rglgen_glVertex3xvOES -#define glVertex4xvOES __rglgen_glVertex4xvOES -#define glDepthRangefOES __rglgen_glDepthRangefOES -#define glFrustumfOES __rglgen_glFrustumfOES -#define glOrthofOES __rglgen_glOrthofOES -#define glClipPlanefOES __rglgen_glClipPlanefOES -#define glClearDepthfOES __rglgen_glClearDepthfOES -#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES -#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; @@ -2863,139 +2597,6 @@ extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParamete extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; -extern RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; -extern RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; -extern RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; -extern RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; -extern RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; -extern RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; -extern RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; -extern RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; -extern RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; -extern RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; -extern RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; -extern RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; -extern RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; -extern RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; -extern RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; -extern RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; -extern RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; -extern RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; -extern RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; -extern RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; -extern RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; -extern RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; -extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; -extern RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; -extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; -extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; -extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; -extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; -extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; -extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; -extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; -extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; -extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; -extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; -extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; -extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; -extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; -extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; -extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; -extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; -extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; -extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; -extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; -extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; -extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; -extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; -extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; -extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; -extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; -extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; -extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; -extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; -extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; -extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; -extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; -extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; -extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; -extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; -extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; -extern RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; -extern RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; -extern RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; -extern RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; -extern RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; -extern RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; -extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; -extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; -extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; -extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; -extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; -extern RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; -extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; -extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; -extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; -extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; -extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; -extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; -extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; -extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; -extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; -extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; -extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; -extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; -extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; -extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; -extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; -extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; -extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; -extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; -extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; -extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; -extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; -extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; -extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; -extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; -extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; -extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; -extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; -extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; -extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; -extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; -extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; -extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; -extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; -extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; -extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; -extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; -extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; -extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; -extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; -extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; -extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; -extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; -extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; -extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; -extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; -extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; -extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; -extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; -extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; -extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; -extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; -extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; -extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; -extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; -extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; -extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; -extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; -extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; -extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; -extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; -extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; -extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; From 7f9d61533d93fa99a3fb771a1157be8bfe58dcfa Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 22:57:09 +0200 Subject: [PATCH 108/252] Add configurable multisampling. --- libretro-test-gl/libretro-test.c | 84 +++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 17 deletions(-) diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index e40d465d4e..49727e9352 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -27,7 +27,9 @@ static GLuint prog; static GLuint vbo; #ifdef CORE +static bool context_alive; static bool multisample_fbo; +static unsigned multisample; static GLuint vao; static GLuint fbo; @@ -107,24 +109,37 @@ static void compile_program(void) glDeleteShader(frag); } -static void setup_vao(void) -{ #ifdef CORE - glGenVertexArrays(1, &vao); +static void init_multisample(unsigned samples) +{ + multisample = samples; + if (!context_alive) + return; - glGenRenderbuffers(1, &rbo_color); - glGenRenderbuffers(1, &rbo_depth_stencil); - glGenFramebuffers(1, &fbo); + if (rbo_color) + glDeleteRenderbuffers(1, &rbo_color); + if (rbo_depth_stencil) + glDeleteRenderbuffers(1, &rbo_depth_stencil); + if (fbo) + glDeleteFramebuffers(1, &fbo); + rbo_color = rbo_depth_stencil = fbo = 0; multisample_fbo = false; + if (samples <= 1) + return; + if (glRenderbufferStorageMultisample) { + glGenRenderbuffers(1, &rbo_color); + glGenRenderbuffers(1, &rbo_depth_stencil); + glGenFramebuffers(1, &fbo); + glBindRenderbuffer(GL_RENDERBUFFER, rbo_color); glRenderbufferStorageMultisample(GL_RENDERBUFFER, - 4, GL_RGBA, MAX_WIDTH, MAX_HEIGHT); + samples, GL_RGBA, MAX_WIDTH, MAX_HEIGHT); glBindRenderbuffer(GL_RENDERBUFFER, rbo_depth_stencil); glRenderbufferStorageMultisample(GL_RENDERBUFFER, - 4, GL_DEPTH24_STENCIL8, MAX_WIDTH, MAX_HEIGHT); + samples, GL_DEPTH24_STENCIL8, MAX_WIDTH, MAX_HEIGHT); glBindRenderbuffer(GL_RENDERBUFFER, 0); glGenFramebuffers(1, &fbo); @@ -146,6 +161,15 @@ static void setup_vao(void) glBindFramebuffer(GL_FRAMEBUFFER, 0); } + else + fprintf(stderr, "Multisampled FBOs not supported.\n"); +} +#endif + +static void setup_vao(void) +{ +#ifdef CORE + glGenVertexArrays(1, &vao); #endif glUseProgram(prog); @@ -220,6 +244,9 @@ void retro_set_environment(retro_environment_t cb) "Internal resolution; 320x240|360x480|480x272|512x384|512x512|640x240|640x448|640x480|720x576|800x600|960x720|1024x768|1024x1024|1280x720|1280x960|1600x1200|1920x1080|1920x1440|1920x1600", #endif }, +#ifdef CORE + { "testgl_multisample", "Multisampling; 1x|2x|4x" }, +#endif { NULL, NULL }, }; @@ -255,10 +282,9 @@ void retro_set_video_refresh(retro_video_refresh_t cb) static void update_variables(void) { - struct retro_variable var; - - var.key = "testgl_resolution"; - var.value = NULL; + struct retro_variable var = { + .key = "testgl_resolution", + }; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { @@ -275,6 +301,29 @@ static void update_variables(void) fprintf(stderr, "[libretro-test]: Got size: %u x %u.\n", width, height); } + +#ifdef CORE + var.key = "testgl_multisample"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + switch (*var.value) + { + case '1': + init_multisample(1); + break; + + case '2': + init_multisample(2); + break; + + case '4': + init_multisample(4); + break; + } + } +#endif } void retro_run(void) @@ -365,6 +414,10 @@ static void context_reset(void) rglgen_resolve_symbols(hw_render.get_proc_address); compile_program(); setup_vao(); +#ifdef CORE + context_alive = true; + init_multisample(multisample); +#endif } static void context_destroy(void) @@ -374,14 +427,11 @@ static void context_destroy(void) #ifdef CORE glDeleteVertexArrays(1, &vao); vao = 0; - glDeleteRenderbuffers(1, &rbo_color); - glDeleteRenderbuffers(1, &rbo_depth_stencil); - glDeleteFramebuffers(1, &fbo); - rbo_color = rbo_depth_stencil = fbo = 0; + init_multisample(0); + context_alive = false; #endif glDeleteBuffers(1, &vbo); vbo = 0; - glDeleteProgram(prog); prog = 0; } From f00394e0afe5e640f391f63d1d5b27e17bff9cbb Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 5 Jul 2013 23:33:44 +0200 Subject: [PATCH 109/252] Add license statement to glgen.py. --- gfx/glsym/glgen.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 9a1e509b2b..7e46c5dce9 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -1,5 +1,26 @@ #!/usr/bin/env python3 +""" + License statement applies to this file (glgen.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 From b292caf92b103c06eaa3e3c3146d5e1f38ffdaba Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 10:40:24 +0200 Subject: [PATCH 110/252] Experimental support for PassPrev/PASSPREV. Allows to access passes in a "negative index" way. Helps stitching together multipass shaders from other multipass shaders. Also adds new, cleaner symbols, IN.mvp_matrix, IN.tex_coord, etc. --- gfx/shader_cg.c | 99 +++++++++++++++++++++++++++++++++-------------- gfx/shader_glsl.c | 42 +++++++++++++++----- 2 files changed, 103 insertions(+), 38 deletions(-) diff --git a/gfx/shader_cg.c b/gfx/shader_cg.c index 58b913dd38..74393203f0 100644 --- a/gfx/shader_cg.c +++ b/gfx/shader_cg.c @@ -37,27 +37,33 @@ // Used when we call deactivate() since just unbinding the program didn't seem to work... :( static const char *stock_cg_program = + "struct input" + "{" + " float2 tex_coord;" + " float4 color;" + " float4 vertex_coord;" + " uniform float4x4 mvp_matrix;" + " uniform sampler2D texture;" + "};" + "struct vertex_data" + "{" + " float2 tex;" + " float4 color;" + "};" "void main_vertex" "(" - " float4 position : POSITION," - " float2 texCoord : TEXCOORD0," - " float4 color : COLOR," - "" - " uniform float4x4 modelViewProj," - "" " out float4 oPosition : POSITION," - " out float2 otexCoord : TEXCOORD0," - " out float4 oColor : COLOR" + " input IN," + " out vertex_data vert" ")" "{" - " oPosition = mul(modelViewProj, position);" - " otexCoord = texCoord;" - " oColor = color;" + " oPosition = mul(IN.mvp_matrix, IN.vertex_coord);" + " vert = vertex_data(IN.tex_coord, IN.color);" "}" "" - "float4 main_fragment(in float4 color : COLOR, float2 tex : TEXCOORD0, uniform sampler2D s0 : TEXUNIT0) : COLOR" + "float4 main_fragment(input IN, vertex_data vert, uniform sampler2D s0 : TEXUNIT0) : COLOR" "{" - " return color * tex2D(s0, tex);" + " return vert.color * tex2D(s0, vert.tex);" "}"; #ifdef RARCH_CG_DEBUG @@ -678,6 +684,41 @@ static void set_program_base_attrib(unsigned i) else if (strcmp(semantic, "TEXCOORD1") == 0) prg[i].lut_tex = param; } + + if (!prg[i].tex) + prg[i].tex = cgGetNamedParameter(prg[i].vprg, "IN.tex_coord"); + if (!prg[i].color) + prg[i].color = cgGetNamedParameter(prg[i].vprg, "IN.color"); + if (!prg[i].vertex) + prg[i].vertex = cgGetNamedParameter(prg[i].vprg, "IN.vertex_coord"); + if (!prg[i].lut_tex) + prg[i].lut_tex = cgGetNamedParameter(prg[i].vprg, "IN.lut_tex_coord"); +} + +static void set_pass_attrib(struct cg_program *prg, struct cg_fbo_params *fbo, + const char *attr) +{ + char attr_buf[64]; + + snprintf(attr_buf, sizeof(attr_buf), "%s.texture", attr); + if (!fbo->tex) + fbo->tex = cgGetNamedParameter(prg->fprg, attr_buf); + + snprintf(attr_buf, sizeof(attr_buf), "%s.video_size", attr); + if (!fbo->vid_size_v) + fbo->vid_size_v = cgGetNamedParameter(prg->vprg, attr_buf); + if (!fbo->vid_size_f) + fbo->vid_size_f = cgGetNamedParameter(prg->fprg, attr_buf); + + snprintf(attr_buf, sizeof(attr_buf), "%s.texture_size", attr); + if (!fbo->tex_size_v) + fbo->tex_size_v = cgGetNamedParameter(prg->vprg, attr_buf); + if (!fbo->tex_size_f) + fbo->tex_size_f = cgGetNamedParameter(prg->fprg, attr_buf); + + snprintf(attr_buf, sizeof(attr_buf), "%s.tex_coord", attr); + if (!fbo->coord) + fbo->coord = cgGetNamedParameter(prg->vprg, attr_buf); } static void set_program_attributes(unsigned i) @@ -697,7 +738,10 @@ static void set_program_attributes(unsigned i) prg[i].out_size_v = cgGetNamedParameter(prg[i].vprg, "IN.output_size"); prg[i].frame_cnt_v = cgGetNamedParameter(prg[i].vprg, "IN.frame_count"); prg[i].frame_dir_v = cgGetNamedParameter(prg[i].vprg, "IN.frame_direction"); + prg[i].mvp = cgGetNamedParameter(prg[i].vprg, "modelViewProj"); + if (!prg[i].mvp) + prg[i].mvp = cgGetNamedParameter(prg[i].vprg, "IN.mvp_matrix"); prg[i].orig.tex = cgGetNamedParameter(prg[i].fprg, "ORIG.texture"); prg[i].orig.vid_size_v = cgGetNamedParameter(prg[i].vprg, "ORIG.video_size"); @@ -706,6 +750,13 @@ static void set_program_attributes(unsigned i) prg[i].orig.tex_size_f = cgGetNamedParameter(prg[i].fprg, "ORIG.texture_size"); prg[i].orig.coord = cgGetNamedParameter(prg[i].vprg, "ORIG.tex_coord"); + if (i > 1) + { + char pass_str[64]; + snprintf(pass_str, sizeof(pass_str), "PASSPREV%u", i); + set_pass_attrib(&prg[i], &prg[i].orig, pass_str); + } + for (unsigned j = 0; j < PREV_TEXTURES; j++) { char attr_buf_tex[64]; @@ -740,21 +791,11 @@ static void set_program_attributes(unsigned i) for (unsigned j = 0; j < i - 1; j++) { - char attr_buf[64]; - - snprintf(attr_buf, sizeof(attr_buf), "PASS%u.texture", j + 1); - prg[i].fbo[j].tex = cgGetNamedParameter(prg[i].fprg, attr_buf); - - snprintf(attr_buf, sizeof(attr_buf), "PASS%u.video_size", j + 1); - prg[i].fbo[j].vid_size_v = cgGetNamedParameter(prg[i].vprg, attr_buf); - prg[i].fbo[j].vid_size_f = cgGetNamedParameter(prg[i].fprg, attr_buf); - - snprintf(attr_buf, sizeof(attr_buf), "PASS%u.texture_size", j + 1); - prg[i].fbo[j].tex_size_v = cgGetNamedParameter(prg[i].vprg, attr_buf); - prg[i].fbo[j].tex_size_f = cgGetNamedParameter(prg[i].fprg, attr_buf); - - snprintf(attr_buf, sizeof(attr_buf), "PASS%u.tex_coord", j + 1); - prg[i].fbo[j].coord = cgGetNamedParameter(prg[i].vprg, attr_buf); + char pass_str[64]; + snprintf(pass_str, sizeof(pass_str), "PASS%u", j + 1); + set_pass_attrib(&prg[i], &prg[i].fbo[j], pass_str); + snprintf(pass_str, sizeof(pass_str), "PASSPREV%u", i - j); + set_pass_attrib(&prg[i], &prg[i].fbo[j], pass_str); } } @@ -805,7 +846,7 @@ static bool gl_cg_init(const char *path) goto error; } - prg[0].mvp = cgGetNamedParameter(prg[0].vprg, "modelViewProj"); + prg[0].mvp = cgGetNamedParameter(prg[0].vprg, "IN.mvp_matrix"); for (unsigned i = 1; i <= cg_shader->passes; i++) set_program_attributes(i); diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 2e3367a309..77b1ac69af 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -548,6 +548,14 @@ static void gl_glsl_set_attribs(GLuint vbo, GLfloat *buffer, size_t *buffer_elem glBindBuffer(GL_ARRAY_BUFFER, 0); } +static void clear_uniforms_frame(struct shader_uniforms_frame *frame) +{ + frame->texture = -1; + frame->texture_size = -1; + frame->input_size = -1; + frame->tex_coord = -1; +} + static void find_uniforms_frame(GLuint prog, struct shader_uniforms_frame *frame, const char *base) { char texture[64]; @@ -560,13 +568,17 @@ static void find_uniforms_frame(GLuint prog, struct shader_uniforms_frame *frame snprintf(input_size, sizeof(input_size), "%s%s", base, "InputSize"); snprintf(tex_coord, sizeof(tex_coord), "%s%s", base, "TexCoord"); - frame->texture = get_uniform(prog, texture); - frame->texture_size = get_uniform(prog, texture_size); - frame->input_size = get_uniform(prog, input_size); - frame->tex_coord = get_attrib(prog, tex_coord); + if (frame->texture < 0) + frame->texture = get_uniform(prog, texture); + if (frame->texture_size < 0) + frame->texture_size = get_uniform(prog, texture_size); + if (frame->input_size < 0) + frame->input_size = get_uniform(prog, input_size); + if (frame->tex_coord < 0) + frame->tex_coord = get_attrib(prog, tex_coord); } -static void find_uniforms(GLuint prog, struct shader_uniforms *uni) +static void find_uniforms(unsigned pass, GLuint prog, struct shader_uniforms *uni) { glUseProgram(prog); @@ -586,19 +598,31 @@ static void find_uniforms(GLuint prog, struct shader_uniforms *uni) for (unsigned i = 0; i < glsl_shader->luts; i++) uni->lut_texture[i] = glGetUniformLocation(prog, glsl_shader->lut[i].id); - find_uniforms_frame(prog, &uni->orig, "Orig"); - char frame_base[64]; + clear_uniforms_frame(&uni->orig); + find_uniforms_frame(prog, &uni->orig, "Orig"); + if (pass > 1) + { + snprintf(frame_base, sizeof(frame_base), "PassPrev%u", pass); + find_uniforms_frame(prog, &uni->orig, frame_base); + } + for (unsigned i = 0; i < GFX_MAX_SHADERS; i++) { snprintf(frame_base, sizeof(frame_base), "Pass%u", i + 1); find_uniforms_frame(prog, &uni->pass[i], frame_base); + if (i && pass > i + 1) + { + snprintf(frame_base, sizeof(frame_base), "PassPrev%u", pass - i); + find_uniforms_frame(prog, &uni->pass[i], frame_base); + } } find_uniforms_frame(prog, &uni->prev[0], "Prev"); for (unsigned i = 1; i < PREV_TEXTURES; i++) { snprintf(frame_base, sizeof(frame_base), "Prev%u", i); + clear_uniforms_frame(&uni->prev[i]); find_uniforms_frame(prog, &uni->prev[i], frame_base); } @@ -774,7 +798,7 @@ static bool gl_glsl_init(const char *path) } for (unsigned i = 0; i <= glsl_shader->passes; i++) - find_uniforms(gl_program[i], &gl_uniforms[i]); + find_uniforms(i, gl_program[i], &gl_uniforms[i]); #ifdef GLSL_DEBUG if (!gl_check_error()) @@ -813,7 +837,7 @@ static bool gl_glsl_init(const char *path) glsl_core ? stock_fragment_modern_blend : stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); #endif - find_uniforms(gl_program[GL_SHADER_STOCK_BLEND], &gl_uniforms[GL_SHADER_STOCK_BLEND]); + find_uniforms(0, gl_program[GL_SHADER_STOCK_BLEND], &gl_uniforms[GL_SHADER_STOCK_BLEND]); } else { From 2aaa148adcaef841a1021b88749366995510db5b Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 12:19:12 +0200 Subject: [PATCH 111/252] Fixes to cg2glsl. --- tools/cg2glsl.py | 111 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 25 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 12732afdf5..2772aebba1 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -37,11 +37,11 @@ def replace_global_in(source): ('IN.texture_size', 'TextureSize'), ('IN.output_size', 'OutputSize'), ('IN.frame_count', 'FrameCount'), - ('IN.frame_direction', 'FrameDirection') + ('IN.frame_direction', 'FrameDirection'), ] for line in split_source: - if '//var' in line: + if ('//var' in line) or ('#var' in line): for index, replace in enumerate(replace_table): orig = line.split(' ')[2] if replace[0] == orig: @@ -64,14 +64,19 @@ def replace_global_vertex(source): ('TEXCOORD1', 'LUTTexCoord'), ('TEXCOORD0', 'TexCoord'), ('TEXCOORD', 'TexCoord'), - ('uniform vec4 _modelViewProj1[4]', 'uniform mat4 MVPMatrix'), + ('uniform vec4 _modelViewProj1[4];', ''), ('_modelViewProj1', 'MVPMatrix'), + ('_IN1._mvp_matrix[0]', 'MVPMatrix[0]'), + ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), + ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), + ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), ('MVPMatrix[0]', 'MVPMatrix_[0]'), ('MVPMatrix[1]', 'MVPMatrix_[1]'), ('MVPMatrix[2]', 'MVPMatrix_[2]'), ('MVPMatrix[3]', 'MVPMatrix_[3]'), ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), ('input', 'input_dummy'), # 'input' is reserved in GLSL. ('output', 'output_dummy'), # 'output' is reserved in GLSL. ] @@ -81,11 +86,11 @@ def replace_global_vertex(source): return source -def translate_varyings(varyings, source): +def translate_varyings(varyings, source, direction): dictionary = {} for varying in varyings: for line in source: - if (varying in line) and ('//var' in line): + if (varying in line) and (('//var' in line) or ('#var' in line)) and (direction in line): log('Found line for', varying + ':', line) dictionary[varying] = 'VAR' + line.split(':')[0].split('.')[-1].strip() break @@ -100,6 +105,8 @@ def no_uniform(elem): '_output_dummy_size', '_frame_count', '_frame_direction', + '_mvp_matrix', + '_vertex_coord', 'sampler2D' ] @@ -108,7 +115,7 @@ def no_uniform(elem): return False return True -def destructify_varyings(source): +def destructify_varyings(source, direction): # We have to change varying structs that Cg support to single varyings for GL. # Varying structs aren't supported until later versions # of GLSL. @@ -117,7 +124,7 @@ def destructify_varyings(source): # Don't try to remove this as it breaks compile. vout_lines = [] for line in source: - if ('//var' in line) and (('$vout.' in line) or ('$vin.' in line)): + if (('//var' in line) or ('#var' in line)) and (('$vout.' in line) or ('$vin.' in line)): vout_lines.append(line) struct_types = [] @@ -179,7 +186,7 @@ def destructify_varyings(source): variables.append(variable) break - varyings_dict = translate_varyings(varyings_name, source) + varyings_dict = translate_varyings(varyings_name, source, direction) log('Varyings dict:', varyings_dict) # Append all varyings. Keep the structs as they might be used as regular values. @@ -212,8 +219,12 @@ def destructify_varyings(source): return source def translate_varying(cg): + # Ye, it's ugly as shit. :( #log('Translate:', cg) translations = { + 'IN.tex_coord' : 'TexCoord', + 'IN.vertex_coord' : 'VertexCoord', + 'IN.lut_tex_coord' : 'LUTTexCoord', 'ORIG.tex_coord' : 'OrigTexCoord', 'PREV.tex_coord' : 'PrevTexCoord', 'PREV1.tex_coord' : 'Prev1TexCoord', @@ -230,6 +241,13 @@ def translate_varying(cg): 'PASS6.tex_coord' : 'Pass6TexCoord', 'PASS7.tex_coord' : 'Pass7TexCoord', 'PASS8.tex_coord' : 'Pass8TexCoord', + 'PASSPREV2.tex_coord' : 'PassPrev2TexCoord', + 'PASSPREV3.tex_coord' : 'PassPrev3TexCoord', + 'PASSPREV4.tex_coord' : 'PassPrev4TexCoord', + 'PASSPREV5.tex_coord' : 'PassPrev5TexCoord', + 'PASSPREV6.tex_coord' : 'PassPrev6TexCoord', + 'PASSPREV7.tex_coord' : 'PassPrev7TexCoord', + 'PASSPREV8.tex_coord' : 'PassPrev8TexCoord', } if cg in translations: @@ -238,7 +256,8 @@ def translate_varying(cg): return cg def translate_texture_size(cg): - log('Translate:', cg) + # Ye, it's ugly as shit. :( + #log('Translate:', cg) translations = { 'ORIG.texture_size' : 'OrigTextureSize', 'PREV.texture_size' : 'PrevTextureSize', @@ -256,6 +275,36 @@ def translate_texture_size(cg): 'PASS6.texture_size' : 'Pass6TextureSize', 'PASS7.texture_size' : 'Pass7TextureSize', 'PASS8.texture_size' : 'Pass8TextureSize', + 'PASSPREV2.texture_size' : 'PassPrev2TextureSize', + 'PASSPREV3.texture_size' : 'PassPrev3TextureSize', + 'PASSPREV4.texture_size' : 'PassPrev4TextureSize', + 'PASSPREV5.texture_size' : 'PassPrev5TextureSize', + 'PASSPREV6.texture_size' : 'PassPrev6TextureSize', + 'PASSPREV7.texture_size' : 'PassPrev7TextureSize', + 'PASSPREV8.texture_size' : 'PassPrev8TextureSize', + 'ORIG.video_size' : 'OrigInputSize', + 'PREV.video_size' : 'PrevInputSize', + 'PREV1.video_size' : 'Prev1InputSize', + 'PREV2.video_size' : 'Prev2InputSize', + 'PREV3.video_size' : 'Prev3InputSize', + 'PREV4.video_size' : 'Prev4InputSize', + 'PREV5.video_size' : 'Prev5InputSize', + 'PREV6.video_size' : 'Prev6InputSize', + 'PASS1.video_size' : 'Pass1InputSize', + 'PASS2.video_size' : 'Pass2InputSize', + 'PASS3.video_size' : 'Pass3InputSize', + 'PASS4.video_size' : 'Pass4InputSize', + 'PASS5.video_size' : 'Pass5InputSize', + 'PASS6.video_size' : 'Pass6InputSize', + 'PASS7.video_size' : 'Pass7InputSize', + 'PASS8.video_size' : 'Pass8InputSize', + 'PASSPREV2.video_size' : 'PassPrev2InputSize', + 'PASSPREV3.video_size' : 'PassPrev3InputSize', + 'PASSPREV4.video_size' : 'PassPrev4InputSize', + 'PASSPREV5.video_size' : 'PassPrev5InputSize', + 'PASSPREV6.video_size' : 'PassPrev6InputSize', + 'PASSPREV7.video_size' : 'PassPrev7InputSize', + 'PASSPREV8.video_size' : 'PassPrev8InputSize', } if cg in translations: @@ -271,14 +320,14 @@ def replace_varyings(source): attribs = [] uniforms = [] for index, line in enumerate(source): - if ('//var' in line) and ('$vin.' in line): + if (('//var' in line) or ('#var' in line)) and ('$vin.' in line): orig = line.split(' ')[2] translated = translate_varying(orig) if translated != orig and translated not in attribs: cg_attrib = line.split(':')[2].split(' ')[1] translations.append((cg_attrib, translated)) attribs.append(translated) - elif '//var' in line: + elif ('//var' in line) or ('#var' in line): orig = line.split(' ')[2] translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: @@ -289,7 +338,10 @@ def replace_varyings(source): for index, line in enumerate(source): if 'void main()' in line: for attrib in attribs: - source.insert(index, 'attribute vec2 ' + attrib + ';') + if attrib == 'VertexCoord': + source.insert(index, 'attribute vec4 ' + attrib + ';') + else: + source.insert(index, 'attribute vec2 ' + attrib + ';') for uniform in uniforms: source.insert(index, '#endif') source.insert(index, 'uniform vec2 ' + uniform + ';') @@ -322,17 +374,18 @@ def hack_source_vertex(source): source.insert(index, '#ifdef GL_ES') source.insert(index, 'uniform int FrameCount;') source.insert(index, 'uniform int FrameDirection;') + source.insert(index, 'uniform mat4 MVPMatrix;') source.insert(index, """ - mat4 transpose_(mat4 matrix) - { - mat4 ret; - for (int i = 0; i != 4; i++) - for (int j = 0; j != 4; j++) - ret[i][j] = matrix[j][i]; +mat4 transpose_(mat4 matrix) +{ + mat4 ret; + for (int i = 0; i != 4; i++) + for (int j = 0; j != 4; j++) + ret[i][j] = matrix[j][i]; - return ret; - } + return ret; +} """) ref_index = index break @@ -349,7 +402,7 @@ def hack_source_vertex(source): translations.append(main_sampler) log('Vertex: Sampler:', main_sampler[0], '->', main_sampler[1]) struct_texunit0 = '.' in main_sampler[0] - elif '//var sampler2D' in line: + elif ('//var sampler2D' in line) or ('#var sampler2D' in line): cg_texture = line.split(' ')[2] translated = translate_texture(cg_texture) orig_name = translated @@ -369,7 +422,7 @@ def hack_source_vertex(source): for translation in translations: source[index] = source[index].replace(translation[0], translation[1]) - source = destructify_varyings(source) + source = destructify_varyings(source, '$vout.') source = replace_varyings(source) return source @@ -377,6 +430,7 @@ def replace_global_fragment(source): source = replace_global_in(source) replace_table = [ ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), ('input', 'input_dummy'), ('output', 'output_dummy'), # 'output' is reserved in GLSL. ] @@ -406,6 +460,13 @@ def translate_texture(cg): 'PASS6.texture' : 'Pass6Texture', 'PASS7.texture' : 'Pass7Texture', 'PASS8.texture' : 'Pass8Texture', + 'PASSPREV2.texture' : 'PassPrev2Texture', + 'PASSPREV3.texture' : 'PassPrev3Texture', + 'PASSPREV4.texture' : 'PassPrev4Texture', + 'PASSPREV5.texture' : 'PassPrev5Texture', + 'PASSPREV6.texture' : 'PassPrev6Texture', + 'PASSPREV7.texture' : 'PassPrev7Texture', + 'PASSPREV8.texture' : 'PassPrev8Texture', } if cg in translations: @@ -443,7 +504,7 @@ def hack_source_fragment(source): translations.append(main_sampler) log('Fragment: Sampler:', main_sampler[0], '->', main_sampler[1]) struct_texunit0 = '.' in main_sampler[0] - elif '//var sampler2D' in line: + elif ('//var sampler2D' in line) or ('#var sampler2D' in line): cg_texture = line.split(' ')[2] translated = translate_texture(cg_texture) orig_name = translated @@ -454,7 +515,7 @@ def hack_source_fragment(source): translated_samplers.append(translated) added_samplers.append('uniform sampler2D ' + translated + ';') translations.append((new_name, orig_name)) - elif '//var' in line: + elif ('//var' in line) or ('#var' in line): orig = line.split(' ')[2] translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: @@ -480,7 +541,7 @@ def hack_source_fragment(source): line = line.replace(translation[0], translation[1]) ret.append(line) - ret = destructify_varyings(ret) + ret = destructify_varyings(ret, '$vin.') return ret def validate_shader(source, target): From 5045fc4a4f76f806d0b08fa30a77d29a48834479 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 12:28:45 +0200 Subject: [PATCH 112/252] Fix GLSL regression. --- gfx/shader_glsl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 77b1ac69af..df090608cf 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -610,6 +610,7 @@ static void find_uniforms(unsigned pass, GLuint prog, struct shader_uniforms *un for (unsigned i = 0; i < GFX_MAX_SHADERS; i++) { snprintf(frame_base, sizeof(frame_base), "Pass%u", i + 1); + clear_uniforms_frame(&uni->pass[i]); find_uniforms_frame(prog, &uni->pass[i], frame_base); if (i && pass > i + 1) { @@ -618,6 +619,7 @@ static void find_uniforms(unsigned pass, GLuint prog, struct shader_uniforms *un } } + clear_uniforms_frame(&uni->prev[0]); find_uniforms_frame(prog, &uni->prev[0], "Prev"); for (unsigned i = 1; i < PREV_TEXTURES; i++) { From c2c88e24628f4f983e985cdc0011f804ae188659 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 12:47:26 +0200 Subject: [PATCH 113/252] Append checks for OES_image ext. --- gfx/glsym/glgen.py | 3 + gfx/glsym/glsym_es2.h | 3 + gfx/glsym/glsym_gl.c | 266 +++ gfx/glsym/glsym_gl.h | 402 +++++ libretro-test-gl/Makefile | 6 +- libretro-test-gl/glsym/glgen.py | 79 - libretro-test-gl/glsym/glsym.h | 13 - libretro-test-gl/glsym/glsym_es2.c | 64 - libretro-test-gl/glsym/glsym_es2.h | 98 -- libretro-test-gl/glsym/glsym_gl.c | 1734 ------------------ libretro-test-gl/glsym/glsym_gl.h | 2603 ---------------------------- libretro-test-gl/glsym/rglgen.c | 19 - libretro-test-gl/glsym/rglgen.h | 47 - libretro-test-gl/libretro-test.c | 2 +- 14 files changed, 678 insertions(+), 4661 deletions(-) delete mode 100755 libretro-test-gl/glsym/glgen.py delete mode 100644 libretro-test-gl/glsym/glsym.h delete mode 100644 libretro-test-gl/glsym/glsym_es2.c delete mode 100644 libretro-test-gl/glsym/glsym_es2.h delete mode 100644 libretro-test-gl/glsym/glsym_gl.c delete mode 100644 libretro-test-gl/glsym/glsym_gl.h delete mode 100644 libretro-test-gl/glsym/rglgen.c delete mode 100644 libretro-test-gl/glsym/rglgen.h diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 7e46c5dce9..2ee1a4b1f1 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -86,6 +86,9 @@ if __name__ == '__main__': 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') dump(f, typedefs) dump(f, overrides) dump(f, externs) diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h index a5864ea27f..c8c05511e2 100644 --- a/gfx/glsym/glsym_es2.h +++ b/gfx/glsym/glsym_es2.h @@ -6,6 +6,9 @@ typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GL typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #endif +#ifndef GL_OES_EGL_image +typedef void *GLeglImageOES; +#endif typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); diff --git a/gfx/glsym/glsym_gl.c b/gfx/glsym/glsym_gl.c index 8d76bd3960..97564bc1f0 100644 --- a/gfx/glsym/glsym_gl.c +++ b/gfx/glsym/glsym_gl.c @@ -865,6 +865,139 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ImageTransformParameterfvHP), SYM(GetImageTransformParameterivHP), SYM(GetImageTransformParameterfvHP), + SYM(MultiTexCoord1bOES), + SYM(MultiTexCoord1bvOES), + SYM(MultiTexCoord2bOES), + SYM(MultiTexCoord2bvOES), + SYM(MultiTexCoord3bOES), + SYM(MultiTexCoord3bvOES), + SYM(MultiTexCoord4bOES), + SYM(MultiTexCoord4bvOES), + SYM(TexCoord1bOES), + SYM(TexCoord1bvOES), + SYM(TexCoord2bOES), + SYM(TexCoord2bvOES), + SYM(TexCoord3bOES), + SYM(TexCoord3bvOES), + SYM(TexCoord4bOES), + SYM(TexCoord4bvOES), + SYM(Vertex2bOES), + SYM(Vertex2bvOES), + SYM(Vertex3bOES), + SYM(Vertex3bvOES), + SYM(Vertex4bOES), + SYM(Vertex4bvOES), + SYM(AccumxOES), + SYM(AlphaFuncxOES), + SYM(BitmapxOES), + SYM(BlendColorxOES), + SYM(ClearAccumxOES), + SYM(ClearColorxOES), + SYM(ClearDepthxOES), + SYM(ClipPlanexOES), + SYM(Color3xOES), + SYM(Color4xOES), + SYM(Color3xvOES), + SYM(Color4xvOES), + SYM(ConvolutionParameterxOES), + SYM(ConvolutionParameterxvOES), + SYM(DepthRangexOES), + SYM(EvalCoord1xOES), + SYM(EvalCoord2xOES), + SYM(EvalCoord1xvOES), + SYM(EvalCoord2xvOES), + SYM(FeedbackBufferxOES), + SYM(FogxOES), + SYM(FogxvOES), + SYM(FrustumxOES), + SYM(GetClipPlanexOES), + SYM(GetConvolutionParameterxvOES), + SYM(GetFixedvOES), + SYM(GetHistogramParameterxvOES), + SYM(GetLightxOES), + SYM(GetMapxvOES), + SYM(GetMaterialxOES), + SYM(GetPixelMapxv), + SYM(GetTexEnvxvOES), + SYM(GetTexGenxvOES), + SYM(GetTexLevelParameterxvOES), + SYM(GetTexParameterxvOES), + SYM(IndexxOES), + SYM(IndexxvOES), + SYM(LightModelxOES), + SYM(LightModelxvOES), + SYM(LightxOES), + SYM(LightxvOES), + SYM(LineWidthxOES), + SYM(LoadMatrixxOES), + SYM(LoadTransposeMatrixxOES), + SYM(Map1xOES), + SYM(Map2xOES), + SYM(MapGrid1xOES), + SYM(MapGrid2xOES), + SYM(MaterialxOES), + SYM(MaterialxvOES), + SYM(MultMatrixxOES), + SYM(MultTransposeMatrixxOES), + SYM(MultiTexCoord1xOES), + SYM(MultiTexCoord2xOES), + SYM(MultiTexCoord3xOES), + SYM(MultiTexCoord4xOES), + SYM(MultiTexCoord1xvOES), + SYM(MultiTexCoord2xvOES), + SYM(MultiTexCoord3xvOES), + SYM(MultiTexCoord4xvOES), + SYM(Normal3xOES), + SYM(Normal3xvOES), + SYM(OrthoxOES), + SYM(PassThroughxOES), + SYM(PixelMapx), + SYM(PixelStorex), + SYM(PixelTransferxOES), + SYM(PixelZoomxOES), + SYM(PointParameterxvOES), + SYM(PointSizexOES), + SYM(PolygonOffsetxOES), + SYM(PrioritizeTexturesxOES), + SYM(RasterPos2xOES), + SYM(RasterPos3xOES), + SYM(RasterPos4xOES), + SYM(RasterPos2xvOES), + SYM(RasterPos3xvOES), + SYM(RasterPos4xvOES), + SYM(RectxOES), + SYM(RectxvOES), + SYM(RotatexOES), + SYM(SampleCoverageOES), + SYM(ScalexOES), + SYM(TexCoord1xOES), + SYM(TexCoord2xOES), + SYM(TexCoord3xOES), + SYM(TexCoord4xOES), + SYM(TexCoord1xvOES), + SYM(TexCoord2xvOES), + SYM(TexCoord3xvOES), + SYM(TexCoord4xvOES), + SYM(TexEnvxOES), + SYM(TexEnvxvOES), + SYM(TexGenxOES), + SYM(TexGenxvOES), + SYM(TexParameterxOES), + SYM(TexParameterxvOES), + SYM(TranslatexOES), + SYM(Vertex2xOES), + SYM(Vertex3xOES), + SYM(Vertex4xOES), + SYM(Vertex2xvOES), + SYM(Vertex3xvOES), + SYM(Vertex4xvOES), + SYM(DepthRangefOES), + SYM(FrustumfOES), + SYM(OrthofOES), + SYM(ClipPlanefOES), + SYM(ClearDepthfOES), + SYM(GetClipPlanefOES), + SYM(QueryMatrixxOES), { NULL, NULL }, }; @@ -1731,4 +1864,137 @@ RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index 8f2c84b8bf..f7e3a96506 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -6,6 +6,9 @@ typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GL typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #endif +#ifndef GL_OES_EGL_image +typedef void *GLeglImageOES; +#endif typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); @@ -869,6 +872,139 @@ typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX2BOESPROC) (GLbyte x); +typedef void (APIENTRYP RGLSYMGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP RGLSYMGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP RGLSYMGLVERTEX4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP RGLSYMGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP RGLSYMGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP RGLSYMGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP RGLSYMGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP RGLSYMGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP RGLSYMGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP RGLSYMGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP RGLSYMGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP RGLSYMGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP RGLSYMGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP RGLSYMGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP RGLSYMGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP RGLSYMGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP RGLSYMGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP RGLSYMGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP RGLSYMGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP RGLSYMGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP RGLSYMGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP RGLSYMGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP RGLSYMGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP RGLSYMGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP RGLSYMGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP RGLSYMGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP RGLSYMGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP RGLSYMGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP RGLSYMGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); +typedef void (APIENTRYP RGLSYMGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP RGLSYMGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP RGLSYMGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP RGLSYMGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP RGLSYMGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP RGLSYMGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP RGLSYMGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLVERTEX4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP RGLSYMGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP RGLSYMGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP RGLSYMGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef GLbitfield (APIENTRYP RGLSYMGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); #define glBlendColor __rglgen_glBlendColor #define glBlendEquation __rglgen_glBlendEquation @@ -1733,6 +1869,139 @@ typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum targ #define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP #define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP #define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP +#define glMultiTexCoord1bOES __rglgen_glMultiTexCoord1bOES +#define glMultiTexCoord1bvOES __rglgen_glMultiTexCoord1bvOES +#define glMultiTexCoord2bOES __rglgen_glMultiTexCoord2bOES +#define glMultiTexCoord2bvOES __rglgen_glMultiTexCoord2bvOES +#define glMultiTexCoord3bOES __rglgen_glMultiTexCoord3bOES +#define glMultiTexCoord3bvOES __rglgen_glMultiTexCoord3bvOES +#define glMultiTexCoord4bOES __rglgen_glMultiTexCoord4bOES +#define glMultiTexCoord4bvOES __rglgen_glMultiTexCoord4bvOES +#define glTexCoord1bOES __rglgen_glTexCoord1bOES +#define glTexCoord1bvOES __rglgen_glTexCoord1bvOES +#define glTexCoord2bOES __rglgen_glTexCoord2bOES +#define glTexCoord2bvOES __rglgen_glTexCoord2bvOES +#define glTexCoord3bOES __rglgen_glTexCoord3bOES +#define glTexCoord3bvOES __rglgen_glTexCoord3bvOES +#define glTexCoord4bOES __rglgen_glTexCoord4bOES +#define glTexCoord4bvOES __rglgen_glTexCoord4bvOES +#define glVertex2bOES __rglgen_glVertex2bOES +#define glVertex2bvOES __rglgen_glVertex2bvOES +#define glVertex3bOES __rglgen_glVertex3bOES +#define glVertex3bvOES __rglgen_glVertex3bvOES +#define glVertex4bOES __rglgen_glVertex4bOES +#define glVertex4bvOES __rglgen_glVertex4bvOES +#define glAccumxOES __rglgen_glAccumxOES +#define glAlphaFuncxOES __rglgen_glAlphaFuncxOES +#define glBitmapxOES __rglgen_glBitmapxOES +#define glBlendColorxOES __rglgen_glBlendColorxOES +#define glClearAccumxOES __rglgen_glClearAccumxOES +#define glClearColorxOES __rglgen_glClearColorxOES +#define glClearDepthxOES __rglgen_glClearDepthxOES +#define glClipPlanexOES __rglgen_glClipPlanexOES +#define glColor3xOES __rglgen_glColor3xOES +#define glColor4xOES __rglgen_glColor4xOES +#define glColor3xvOES __rglgen_glColor3xvOES +#define glColor4xvOES __rglgen_glColor4xvOES +#define glConvolutionParameterxOES __rglgen_glConvolutionParameterxOES +#define glConvolutionParameterxvOES __rglgen_glConvolutionParameterxvOES +#define glDepthRangexOES __rglgen_glDepthRangexOES +#define glEvalCoord1xOES __rglgen_glEvalCoord1xOES +#define glEvalCoord2xOES __rglgen_glEvalCoord2xOES +#define glEvalCoord1xvOES __rglgen_glEvalCoord1xvOES +#define glEvalCoord2xvOES __rglgen_glEvalCoord2xvOES +#define glFeedbackBufferxOES __rglgen_glFeedbackBufferxOES +#define glFogxOES __rglgen_glFogxOES +#define glFogxvOES __rglgen_glFogxvOES +#define glFrustumxOES __rglgen_glFrustumxOES +#define glGetClipPlanexOES __rglgen_glGetClipPlanexOES +#define glGetConvolutionParameterxvOES __rglgen_glGetConvolutionParameterxvOES +#define glGetFixedvOES __rglgen_glGetFixedvOES +#define glGetHistogramParameterxvOES __rglgen_glGetHistogramParameterxvOES +#define glGetLightxOES __rglgen_glGetLightxOES +#define glGetMapxvOES __rglgen_glGetMapxvOES +#define glGetMaterialxOES __rglgen_glGetMaterialxOES +#define glGetPixelMapxv __rglgen_glGetPixelMapxv +#define glGetTexEnvxvOES __rglgen_glGetTexEnvxvOES +#define glGetTexGenxvOES __rglgen_glGetTexGenxvOES +#define glGetTexLevelParameterxvOES __rglgen_glGetTexLevelParameterxvOES +#define glGetTexParameterxvOES __rglgen_glGetTexParameterxvOES +#define glIndexxOES __rglgen_glIndexxOES +#define glIndexxvOES __rglgen_glIndexxvOES +#define glLightModelxOES __rglgen_glLightModelxOES +#define glLightModelxvOES __rglgen_glLightModelxvOES +#define glLightxOES __rglgen_glLightxOES +#define glLightxvOES __rglgen_glLightxvOES +#define glLineWidthxOES __rglgen_glLineWidthxOES +#define glLoadMatrixxOES __rglgen_glLoadMatrixxOES +#define glLoadTransposeMatrixxOES __rglgen_glLoadTransposeMatrixxOES +#define glMap1xOES __rglgen_glMap1xOES +#define glMap2xOES __rglgen_glMap2xOES +#define glMapGrid1xOES __rglgen_glMapGrid1xOES +#define glMapGrid2xOES __rglgen_glMapGrid2xOES +#define glMaterialxOES __rglgen_glMaterialxOES +#define glMaterialxvOES __rglgen_glMaterialxvOES +#define glMultMatrixxOES __rglgen_glMultMatrixxOES +#define glMultTransposeMatrixxOES __rglgen_glMultTransposeMatrixxOES +#define glMultiTexCoord1xOES __rglgen_glMultiTexCoord1xOES +#define glMultiTexCoord2xOES __rglgen_glMultiTexCoord2xOES +#define glMultiTexCoord3xOES __rglgen_glMultiTexCoord3xOES +#define glMultiTexCoord4xOES __rglgen_glMultiTexCoord4xOES +#define glMultiTexCoord1xvOES __rglgen_glMultiTexCoord1xvOES +#define glMultiTexCoord2xvOES __rglgen_glMultiTexCoord2xvOES +#define glMultiTexCoord3xvOES __rglgen_glMultiTexCoord3xvOES +#define glMultiTexCoord4xvOES __rglgen_glMultiTexCoord4xvOES +#define glNormal3xOES __rglgen_glNormal3xOES +#define glNormal3xvOES __rglgen_glNormal3xvOES +#define glOrthoxOES __rglgen_glOrthoxOES +#define glPassThroughxOES __rglgen_glPassThroughxOES +#define glPixelMapx __rglgen_glPixelMapx +#define glPixelStorex __rglgen_glPixelStorex +#define glPixelTransferxOES __rglgen_glPixelTransferxOES +#define glPixelZoomxOES __rglgen_glPixelZoomxOES +#define glPointParameterxvOES __rglgen_glPointParameterxvOES +#define glPointSizexOES __rglgen_glPointSizexOES +#define glPolygonOffsetxOES __rglgen_glPolygonOffsetxOES +#define glPrioritizeTexturesxOES __rglgen_glPrioritizeTexturesxOES +#define glRasterPos2xOES __rglgen_glRasterPos2xOES +#define glRasterPos3xOES __rglgen_glRasterPos3xOES +#define glRasterPos4xOES __rglgen_glRasterPos4xOES +#define glRasterPos2xvOES __rglgen_glRasterPos2xvOES +#define glRasterPos3xvOES __rglgen_glRasterPos3xvOES +#define glRasterPos4xvOES __rglgen_glRasterPos4xvOES +#define glRectxOES __rglgen_glRectxOES +#define glRectxvOES __rglgen_glRectxvOES +#define glRotatexOES __rglgen_glRotatexOES +#define glSampleCoverageOES __rglgen_glSampleCoverageOES +#define glScalexOES __rglgen_glScalexOES +#define glTexCoord1xOES __rglgen_glTexCoord1xOES +#define glTexCoord2xOES __rglgen_glTexCoord2xOES +#define glTexCoord3xOES __rglgen_glTexCoord3xOES +#define glTexCoord4xOES __rglgen_glTexCoord4xOES +#define glTexCoord1xvOES __rglgen_glTexCoord1xvOES +#define glTexCoord2xvOES __rglgen_glTexCoord2xvOES +#define glTexCoord3xvOES __rglgen_glTexCoord3xvOES +#define glTexCoord4xvOES __rglgen_glTexCoord4xvOES +#define glTexEnvxOES __rglgen_glTexEnvxOES +#define glTexEnvxvOES __rglgen_glTexEnvxvOES +#define glTexGenxOES __rglgen_glTexGenxOES +#define glTexGenxvOES __rglgen_glTexGenxvOES +#define glTexParameterxOES __rglgen_glTexParameterxOES +#define glTexParameterxvOES __rglgen_glTexParameterxvOES +#define glTranslatexOES __rglgen_glTranslatexOES +#define glVertex2xOES __rglgen_glVertex2xOES +#define glVertex3xOES __rglgen_glVertex3xOES +#define glVertex4xOES __rglgen_glVertex4xOES +#define glVertex2xvOES __rglgen_glVertex2xvOES +#define glVertex3xvOES __rglgen_glVertex3xvOES +#define glVertex4xvOES __rglgen_glVertex4xvOES +#define glDepthRangefOES __rglgen_glDepthRangefOES +#define glFrustumfOES __rglgen_glFrustumfOES +#define glOrthofOES __rglgen_glOrthofOES +#define glClipPlanefOES __rglgen_glClipPlanefOES +#define glClearDepthfOES __rglgen_glClearDepthfOES +#define glGetClipPlanefOES __rglgen_glGetClipPlanefOES +#define glQueryMatrixxOES __rglgen_glQueryMatrixxOES extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; @@ -2597,6 +2866,139 @@ extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParamete extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; +extern RGLSYMGLMULTITEXCOORD1BOESPROC __rglgen_glMultiTexCoord1bOES; +extern RGLSYMGLMULTITEXCOORD1BVOESPROC __rglgen_glMultiTexCoord1bvOES; +extern RGLSYMGLMULTITEXCOORD2BOESPROC __rglgen_glMultiTexCoord2bOES; +extern RGLSYMGLMULTITEXCOORD2BVOESPROC __rglgen_glMultiTexCoord2bvOES; +extern RGLSYMGLMULTITEXCOORD3BOESPROC __rglgen_glMultiTexCoord3bOES; +extern RGLSYMGLMULTITEXCOORD3BVOESPROC __rglgen_glMultiTexCoord3bvOES; +extern RGLSYMGLMULTITEXCOORD4BOESPROC __rglgen_glMultiTexCoord4bOES; +extern RGLSYMGLMULTITEXCOORD4BVOESPROC __rglgen_glMultiTexCoord4bvOES; +extern RGLSYMGLTEXCOORD1BOESPROC __rglgen_glTexCoord1bOES; +extern RGLSYMGLTEXCOORD1BVOESPROC __rglgen_glTexCoord1bvOES; +extern RGLSYMGLTEXCOORD2BOESPROC __rglgen_glTexCoord2bOES; +extern RGLSYMGLTEXCOORD2BVOESPROC __rglgen_glTexCoord2bvOES; +extern RGLSYMGLTEXCOORD3BOESPROC __rglgen_glTexCoord3bOES; +extern RGLSYMGLTEXCOORD3BVOESPROC __rglgen_glTexCoord3bvOES; +extern RGLSYMGLTEXCOORD4BOESPROC __rglgen_glTexCoord4bOES; +extern RGLSYMGLTEXCOORD4BVOESPROC __rglgen_glTexCoord4bvOES; +extern RGLSYMGLVERTEX2BOESPROC __rglgen_glVertex2bOES; +extern RGLSYMGLVERTEX2BVOESPROC __rglgen_glVertex2bvOES; +extern RGLSYMGLVERTEX3BOESPROC __rglgen_glVertex3bOES; +extern RGLSYMGLVERTEX3BVOESPROC __rglgen_glVertex3bvOES; +extern RGLSYMGLVERTEX4BOESPROC __rglgen_glVertex4bOES; +extern RGLSYMGLVERTEX4BVOESPROC __rglgen_glVertex4bvOES; +extern RGLSYMGLACCUMXOESPROC __rglgen_glAccumxOES; +extern RGLSYMGLALPHAFUNCXOESPROC __rglgen_glAlphaFuncxOES; +extern RGLSYMGLBITMAPXOESPROC __rglgen_glBitmapxOES; +extern RGLSYMGLBLENDCOLORXOESPROC __rglgen_glBlendColorxOES; +extern RGLSYMGLCLEARACCUMXOESPROC __rglgen_glClearAccumxOES; +extern RGLSYMGLCLEARCOLORXOESPROC __rglgen_glClearColorxOES; +extern RGLSYMGLCLEARDEPTHXOESPROC __rglgen_glClearDepthxOES; +extern RGLSYMGLCLIPPLANEXOESPROC __rglgen_glClipPlanexOES; +extern RGLSYMGLCOLOR3XOESPROC __rglgen_glColor3xOES; +extern RGLSYMGLCOLOR4XOESPROC __rglgen_glColor4xOES; +extern RGLSYMGLCOLOR3XVOESPROC __rglgen_glColor3xvOES; +extern RGLSYMGLCOLOR4XVOESPROC __rglgen_glColor4xvOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXOESPROC __rglgen_glConvolutionParameterxOES; +extern RGLSYMGLCONVOLUTIONPARAMETERXVOESPROC __rglgen_glConvolutionParameterxvOES; +extern RGLSYMGLDEPTHRANGEXOESPROC __rglgen_glDepthRangexOES; +extern RGLSYMGLEVALCOORD1XOESPROC __rglgen_glEvalCoord1xOES; +extern RGLSYMGLEVALCOORD2XOESPROC __rglgen_glEvalCoord2xOES; +extern RGLSYMGLEVALCOORD1XVOESPROC __rglgen_glEvalCoord1xvOES; +extern RGLSYMGLEVALCOORD2XVOESPROC __rglgen_glEvalCoord2xvOES; +extern RGLSYMGLFEEDBACKBUFFERXOESPROC __rglgen_glFeedbackBufferxOES; +extern RGLSYMGLFOGXOESPROC __rglgen_glFogxOES; +extern RGLSYMGLFOGXVOESPROC __rglgen_glFogxvOES; +extern RGLSYMGLFRUSTUMXOESPROC __rglgen_glFrustumxOES; +extern RGLSYMGLGETCLIPPLANEXOESPROC __rglgen_glGetClipPlanexOES; +extern RGLSYMGLGETCONVOLUTIONPARAMETERXVOESPROC __rglgen_glGetConvolutionParameterxvOES; +extern RGLSYMGLGETFIXEDVOESPROC __rglgen_glGetFixedvOES; +extern RGLSYMGLGETHISTOGRAMPARAMETERXVOESPROC __rglgen_glGetHistogramParameterxvOES; +extern RGLSYMGLGETLIGHTXOESPROC __rglgen_glGetLightxOES; +extern RGLSYMGLGETMAPXVOESPROC __rglgen_glGetMapxvOES; +extern RGLSYMGLGETMATERIALXOESPROC __rglgen_glGetMaterialxOES; +extern RGLSYMGLGETPIXELMAPXVPROC __rglgen_glGetPixelMapxv; +extern RGLSYMGLGETTEXENVXVOESPROC __rglgen_glGetTexEnvxvOES; +extern RGLSYMGLGETTEXGENXVOESPROC __rglgen_glGetTexGenxvOES; +extern RGLSYMGLGETTEXLEVELPARAMETERXVOESPROC __rglgen_glGetTexLevelParameterxvOES; +extern RGLSYMGLGETTEXPARAMETERXVOESPROC __rglgen_glGetTexParameterxvOES; +extern RGLSYMGLINDEXXOESPROC __rglgen_glIndexxOES; +extern RGLSYMGLINDEXXVOESPROC __rglgen_glIndexxvOES; +extern RGLSYMGLLIGHTMODELXOESPROC __rglgen_glLightModelxOES; +extern RGLSYMGLLIGHTMODELXVOESPROC __rglgen_glLightModelxvOES; +extern RGLSYMGLLIGHTXOESPROC __rglgen_glLightxOES; +extern RGLSYMGLLIGHTXVOESPROC __rglgen_glLightxvOES; +extern RGLSYMGLLINEWIDTHXOESPROC __rglgen_glLineWidthxOES; +extern RGLSYMGLLOADMATRIXXOESPROC __rglgen_glLoadMatrixxOES; +extern RGLSYMGLLOADTRANSPOSEMATRIXXOESPROC __rglgen_glLoadTransposeMatrixxOES; +extern RGLSYMGLMAP1XOESPROC __rglgen_glMap1xOES; +extern RGLSYMGLMAP2XOESPROC __rglgen_glMap2xOES; +extern RGLSYMGLMAPGRID1XOESPROC __rglgen_glMapGrid1xOES; +extern RGLSYMGLMAPGRID2XOESPROC __rglgen_glMapGrid2xOES; +extern RGLSYMGLMATERIALXOESPROC __rglgen_glMaterialxOES; +extern RGLSYMGLMATERIALXVOESPROC __rglgen_glMaterialxvOES; +extern RGLSYMGLMULTMATRIXXOESPROC __rglgen_glMultMatrixxOES; +extern RGLSYMGLMULTTRANSPOSEMATRIXXOESPROC __rglgen_glMultTransposeMatrixxOES; +extern RGLSYMGLMULTITEXCOORD1XOESPROC __rglgen_glMultiTexCoord1xOES; +extern RGLSYMGLMULTITEXCOORD2XOESPROC __rglgen_glMultiTexCoord2xOES; +extern RGLSYMGLMULTITEXCOORD3XOESPROC __rglgen_glMultiTexCoord3xOES; +extern RGLSYMGLMULTITEXCOORD4XOESPROC __rglgen_glMultiTexCoord4xOES; +extern RGLSYMGLMULTITEXCOORD1XVOESPROC __rglgen_glMultiTexCoord1xvOES; +extern RGLSYMGLMULTITEXCOORD2XVOESPROC __rglgen_glMultiTexCoord2xvOES; +extern RGLSYMGLMULTITEXCOORD3XVOESPROC __rglgen_glMultiTexCoord3xvOES; +extern RGLSYMGLMULTITEXCOORD4XVOESPROC __rglgen_glMultiTexCoord4xvOES; +extern RGLSYMGLNORMAL3XOESPROC __rglgen_glNormal3xOES; +extern RGLSYMGLNORMAL3XVOESPROC __rglgen_glNormal3xvOES; +extern RGLSYMGLORTHOXOESPROC __rglgen_glOrthoxOES; +extern RGLSYMGLPASSTHROUGHXOESPROC __rglgen_glPassThroughxOES; +extern RGLSYMGLPIXELMAPXPROC __rglgen_glPixelMapx; +extern RGLSYMGLPIXELSTOREXPROC __rglgen_glPixelStorex; +extern RGLSYMGLPIXELTRANSFERXOESPROC __rglgen_glPixelTransferxOES; +extern RGLSYMGLPIXELZOOMXOESPROC __rglgen_glPixelZoomxOES; +extern RGLSYMGLPOINTPARAMETERXVOESPROC __rglgen_glPointParameterxvOES; +extern RGLSYMGLPOINTSIZEXOESPROC __rglgen_glPointSizexOES; +extern RGLSYMGLPOLYGONOFFSETXOESPROC __rglgen_glPolygonOffsetxOES; +extern RGLSYMGLPRIORITIZETEXTURESXOESPROC __rglgen_glPrioritizeTexturesxOES; +extern RGLSYMGLRASTERPOS2XOESPROC __rglgen_glRasterPos2xOES; +extern RGLSYMGLRASTERPOS3XOESPROC __rglgen_glRasterPos3xOES; +extern RGLSYMGLRASTERPOS4XOESPROC __rglgen_glRasterPos4xOES; +extern RGLSYMGLRASTERPOS2XVOESPROC __rglgen_glRasterPos2xvOES; +extern RGLSYMGLRASTERPOS3XVOESPROC __rglgen_glRasterPos3xvOES; +extern RGLSYMGLRASTERPOS4XVOESPROC __rglgen_glRasterPos4xvOES; +extern RGLSYMGLRECTXOESPROC __rglgen_glRectxOES; +extern RGLSYMGLRECTXVOESPROC __rglgen_glRectxvOES; +extern RGLSYMGLROTATEXOESPROC __rglgen_glRotatexOES; +extern RGLSYMGLSAMPLECOVERAGEOESPROC __rglgen_glSampleCoverageOES; +extern RGLSYMGLSCALEXOESPROC __rglgen_glScalexOES; +extern RGLSYMGLTEXCOORD1XOESPROC __rglgen_glTexCoord1xOES; +extern RGLSYMGLTEXCOORD2XOESPROC __rglgen_glTexCoord2xOES; +extern RGLSYMGLTEXCOORD3XOESPROC __rglgen_glTexCoord3xOES; +extern RGLSYMGLTEXCOORD4XOESPROC __rglgen_glTexCoord4xOES; +extern RGLSYMGLTEXCOORD1XVOESPROC __rglgen_glTexCoord1xvOES; +extern RGLSYMGLTEXCOORD2XVOESPROC __rglgen_glTexCoord2xvOES; +extern RGLSYMGLTEXCOORD3XVOESPROC __rglgen_glTexCoord3xvOES; +extern RGLSYMGLTEXCOORD4XVOESPROC __rglgen_glTexCoord4xvOES; +extern RGLSYMGLTEXENVXOESPROC __rglgen_glTexEnvxOES; +extern RGLSYMGLTEXENVXVOESPROC __rglgen_glTexEnvxvOES; +extern RGLSYMGLTEXGENXOESPROC __rglgen_glTexGenxOES; +extern RGLSYMGLTEXGENXVOESPROC __rglgen_glTexGenxvOES; +extern RGLSYMGLTEXPARAMETERXOESPROC __rglgen_glTexParameterxOES; +extern RGLSYMGLTEXPARAMETERXVOESPROC __rglgen_glTexParameterxvOES; +extern RGLSYMGLTRANSLATEXOESPROC __rglgen_glTranslatexOES; +extern RGLSYMGLVERTEX2XOESPROC __rglgen_glVertex2xOES; +extern RGLSYMGLVERTEX3XOESPROC __rglgen_glVertex3xOES; +extern RGLSYMGLVERTEX4XOESPROC __rglgen_glVertex4xOES; +extern RGLSYMGLVERTEX2XVOESPROC __rglgen_glVertex2xvOES; +extern RGLSYMGLVERTEX3XVOESPROC __rglgen_glVertex3xvOES; +extern RGLSYMGLVERTEX4XVOESPROC __rglgen_glVertex4xvOES; +extern RGLSYMGLDEPTHRANGEFOESPROC __rglgen_glDepthRangefOES; +extern RGLSYMGLFRUSTUMFOESPROC __rglgen_glFrustumfOES; +extern RGLSYMGLORTHOFOESPROC __rglgen_glOrthofOES; +extern RGLSYMGLCLIPPLANEFOESPROC __rglgen_glClipPlanefOES; +extern RGLSYMGLCLEARDEPTHFOESPROC __rglgen_glClearDepthfOES; +extern RGLSYMGLGETCLIPPLANEFOESPROC __rglgen_glGetClipPlanefOES; +extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; diff --git a/libretro-test-gl/Makefile b/libretro-test-gl/Makefile index 68d4a605e3..7d1103d128 100644 --- a/libretro-test-gl/Makefile +++ b/libretro-test-gl/Makefile @@ -96,15 +96,15 @@ else CFLAGS += -std=gnu99 endif -OBJECTS := libretro-test.o glsym/rglgen.o +OBJECTS := libretro-test.o ../gfx/glsym/rglgen.o CFLAGS += -Wall -pedantic $(fpic) ifeq ($(GLES), 1) CFLAGS += -DGLES -DHAVE_OPENGLES2 LIBS += -lGLESv2 - OBJECTS += glsym/glsym_es2.o + OBJECTS += ../gfx/glsym/glsym_es2.o else - OBJECTS += glsym/glsym_gl.o + OBJECTS += ../gfx/glsym/glsym_gl.o LIBS += $(GL_LIB) endif diff --git a/libretro-test-gl/glsym/glgen.py b/libretro-test-gl/glsym/glgen.py deleted file mode 100755 index cf55ab1730..0000000000 --- a/libretro-test-gl/glsym/glgen.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import os -import re - -banned_ext = [ 'AMD', 'APPLE', 'EXT', '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: - m = re.search(r'^typedef.+PFN(\S+)PROC.+$', line) - g = re.search(r'^.+(gl\S+)\W*\(.+\).*$', line) - if m and noext(m.group(1)): - typedefs.append(m.group(0).replace('PFN', 'RGLSYM').replace('GLDEBUGPROC', 'RGLGENGLDEBUGPROC')) - if g and noext(g.group(1)): - syms.append(g.group(1)) - 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 ' + '__rglgen_' + 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__': - 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 GL_APIENTRY\n') - f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*);\n') - f.write('#else\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') - 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('#endif\n') - - with open(sys.argv[3], 'w') as f: - f.write('#include "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/libretro-test-gl/glsym/glsym.h b/libretro-test-gl/glsym/glsym.h deleted file mode 100644 index 64838fa2fe..0000000000 --- a/libretro-test-gl/glsym/glsym.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef GLSYM_H__ -#define GLSYM_H__ - -#include "rglgen.h" - -#ifdef HAVE_OPENGLES2 -#include "glsym_es2.h" -#else -#include "glsym_gl.h" -#endif - -#endif - diff --git a/libretro-test-gl/glsym/glsym_es2.c b/libretro-test-gl/glsym/glsym_es2.c deleted file mode 100644 index 26f2a44e72..0000000000 --- a/libretro-test-gl/glsym/glsym_es2.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "glsym.h" -#include -#define SYM(x) { "gl" #x, &(gl##x) } -const struct rglgen_sym_map rglgen_symbol_map[] = { - SYM(EGLImageTargetTexture2DOES), - SYM(EGLImageTargetRenderbufferStorageOES), - SYM(GetProgramBinaryOES), - SYM(ProgramBinaryOES), - SYM(MapBufferOES), - SYM(UnmapBufferOES), - SYM(GetBufferPointervOES), - SYM(TexImage3DOES), - SYM(TexSubImage3DOES), - SYM(CopyTexSubImage3DOES), - SYM(CompressedTexImage3DOES), - SYM(CompressedTexSubImage3DOES), - SYM(FramebufferTexture3DOES), - SYM(BindVertexArrayOES), - SYM(DeleteVertexArraysOES), - SYM(GenVertexArraysOES), - SYM(IsVertexArrayOES), - SYM(DebugMessageControl), - SYM(DebugMessageInsert), - SYM(DebugMessageCallback), - SYM(GetDebugMessageLog), - SYM(PushDebugGroup), - SYM(PopDebugGroup), - SYM(ObjectLabel), - SYM(GetObjectLabel), - SYM(ObjectPtrLabel), - SYM(GetObjectPtrLabel), - SYM(GetPointerv), - - { NULL, NULL }, -}; -RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; -RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; -RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; -RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; -RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; -RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; -RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; -RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; -RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; -RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; -RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; -RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; -RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; -RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; -RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; -RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; -RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; -RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; -RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; -RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; -RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; -RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; -RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; -RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; -RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; -RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; - diff --git a/libretro-test-gl/glsym/glsym_es2.h b/libretro-test-gl/glsym/glsym_es2.h deleted file mode 100644 index a5864ea27f..0000000000 --- a/libretro-test-gl/glsym/glsym_es2.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RGLGEN_DECL_H__ -#define RGLGEN_DECL_H__ -#ifdef GL_APIENTRY -typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -#else -typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -#endif -typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); -typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); -typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -typedef void (GL_APIENTRYP RGLSYMGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); -typedef void* (GL_APIENTRYP RGLSYMGLMAPBUFFEROESPROC) (GLenum target, GLenum access); -typedef GLboolean (GL_APIENTRYP RGLSYMGLUNMAPBUFFEROESPROC) (GLenum target); -typedef void (GL_APIENTRYP RGLSYMGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GL_APIENTRYP RGLSYMGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -typedef void (GL_APIENTRYP RGLSYMGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); -typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); -typedef void (GL_APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GL_APIENTRYP RGLSYMGLBINDVERTEXARRAYOESPROC) (GLuint array); -typedef void (GL_APIENTRYP RGLSYMGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); -typedef void (GL_APIENTRYP RGLSYMGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (GL_APIENTRYP RGLSYMGLISVERTEXARRAYOESPROC) (GLuint array); -typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (GL_APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); -typedef GLuint (GL_APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (GL_APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (GL_APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); -typedef void (GL_APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params); - -#define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES -#define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES -#define glGetProgramBinaryOES __rglgen_glGetProgramBinaryOES -#define glProgramBinaryOES __rglgen_glProgramBinaryOES -#define glMapBufferOES __rglgen_glMapBufferOES -#define glUnmapBufferOES __rglgen_glUnmapBufferOES -#define glGetBufferPointervOES __rglgen_glGetBufferPointervOES -#define glTexImage3DOES __rglgen_glTexImage3DOES -#define glTexSubImage3DOES __rglgen_glTexSubImage3DOES -#define glCopyTexSubImage3DOES __rglgen_glCopyTexSubImage3DOES -#define glCompressedTexImage3DOES __rglgen_glCompressedTexImage3DOES -#define glCompressedTexSubImage3DOES __rglgen_glCompressedTexSubImage3DOES -#define glFramebufferTexture3DOES __rglgen_glFramebufferTexture3DOES -#define glBindVertexArrayOES __rglgen_glBindVertexArrayOES -#define glDeleteVertexArraysOES __rglgen_glDeleteVertexArraysOES -#define glGenVertexArraysOES __rglgen_glGenVertexArraysOES -#define glIsVertexArrayOES __rglgen_glIsVertexArrayOES -#define glDebugMessageControl __rglgen_glDebugMessageControl -#define glDebugMessageInsert __rglgen_glDebugMessageInsert -#define glDebugMessageCallback __rglgen_glDebugMessageCallback -#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog -#define glPushDebugGroup __rglgen_glPushDebugGroup -#define glPopDebugGroup __rglgen_glPopDebugGroup -#define glObjectLabel __rglgen_glObjectLabel -#define glGetObjectLabel __rglgen_glGetObjectLabel -#define glObjectPtrLabel __rglgen_glObjectPtrLabel -#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel -#define glGetPointerv __rglgen_glGetPointerv - -extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; -extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; -extern RGLSYMGLGETPROGRAMBINARYOESPROC __rglgen_glGetProgramBinaryOES; -extern RGLSYMGLPROGRAMBINARYOESPROC __rglgen_glProgramBinaryOES; -extern RGLSYMGLMAPBUFFEROESPROC __rglgen_glMapBufferOES; -extern RGLSYMGLUNMAPBUFFEROESPROC __rglgen_glUnmapBufferOES; -extern RGLSYMGLGETBUFFERPOINTERVOESPROC __rglgen_glGetBufferPointervOES; -extern RGLSYMGLTEXIMAGE3DOESPROC __rglgen_glTexImage3DOES; -extern RGLSYMGLTEXSUBIMAGE3DOESPROC __rglgen_glTexSubImage3DOES; -extern RGLSYMGLCOPYTEXSUBIMAGE3DOESPROC __rglgen_glCopyTexSubImage3DOES; -extern RGLSYMGLCOMPRESSEDTEXIMAGE3DOESPROC __rglgen_glCompressedTexImage3DOES; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DOESPROC __rglgen_glCompressedTexSubImage3DOES; -extern RGLSYMGLFRAMEBUFFERTEXTURE3DOESPROC __rglgen_glFramebufferTexture3DOES; -extern RGLSYMGLBINDVERTEXARRAYOESPROC __rglgen_glBindVertexArrayOES; -extern RGLSYMGLDELETEVERTEXARRAYSOESPROC __rglgen_glDeleteVertexArraysOES; -extern RGLSYMGLGENVERTEXARRAYSOESPROC __rglgen_glGenVertexArraysOES; -extern RGLSYMGLISVERTEXARRAYOESPROC __rglgen_glIsVertexArrayOES; -extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; -extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; -extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; -extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; -extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; -extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; -extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; -extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; -extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; -extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; - -struct rglgen_sym_map { const char *sym; void *ptr; }; -extern const struct rglgen_sym_map rglgen_symbol_map[]; -#endif diff --git a/libretro-test-gl/glsym/glsym_gl.c b/libretro-test-gl/glsym/glsym_gl.c deleted file mode 100644 index 8d76bd3960..0000000000 --- a/libretro-test-gl/glsym/glsym_gl.c +++ /dev/null @@ -1,1734 +0,0 @@ -#include "glsym.h" -#include -#define SYM(x) { "gl" #x, &(gl##x) } -const struct rglgen_sym_map rglgen_symbol_map[] = { - SYM(BlendColor), - SYM(BlendEquation), - SYM(DrawRangeElements), - SYM(TexImage3D), - SYM(TexSubImage3D), - SYM(CopyTexSubImage3D), - SYM(ColorTable), - SYM(ColorTableParameterfv), - SYM(ColorTableParameteriv), - SYM(CopyColorTable), - SYM(GetColorTable), - SYM(GetColorTableParameterfv), - SYM(GetColorTableParameteriv), - SYM(ColorSubTable), - SYM(CopyColorSubTable), - SYM(ConvolutionFilter1D), - SYM(ConvolutionFilter2D), - SYM(ConvolutionParameterf), - SYM(ConvolutionParameterfv), - SYM(ConvolutionParameteri), - SYM(ConvolutionParameteriv), - SYM(CopyConvolutionFilter1D), - SYM(CopyConvolutionFilter2D), - SYM(GetConvolutionFilter), - SYM(GetConvolutionParameterfv), - SYM(GetConvolutionParameteriv), - SYM(GetSeparableFilter), - SYM(SeparableFilter2D), - SYM(GetHistogram), - SYM(GetHistogramParameterfv), - SYM(GetHistogramParameteriv), - SYM(GetMinmax), - SYM(GetMinmaxParameterfv), - SYM(GetMinmaxParameteriv), - SYM(Histogram), - SYM(Minmax), - SYM(ResetHistogram), - SYM(ResetMinmax), - SYM(ActiveTexture), - SYM(SampleCoverage), - SYM(CompressedTexImage3D), - SYM(CompressedTexImage2D), - SYM(CompressedTexImage1D), - SYM(CompressedTexSubImage3D), - SYM(CompressedTexSubImage2D), - SYM(CompressedTexSubImage1D), - SYM(GetCompressedTexImage), - SYM(ClientActiveTexture), - 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(LoadTransposeMatrixf), - SYM(LoadTransposeMatrixd), - SYM(MultTransposeMatrixf), - SYM(MultTransposeMatrixd), - SYM(BlendFuncSeparate), - SYM(MultiDrawArrays), - SYM(MultiDrawElements), - SYM(PointParameterf), - SYM(PointParameterfv), - SYM(PointParameteri), - SYM(PointParameteriv), - SYM(FogCoordf), - SYM(FogCoordfv), - SYM(FogCoordd), - SYM(FogCoorddv), - SYM(FogCoordPointer), - SYM(SecondaryColor3b), - SYM(SecondaryColor3bv), - SYM(SecondaryColor3d), - SYM(SecondaryColor3dv), - SYM(SecondaryColor3f), - SYM(SecondaryColor3fv), - SYM(SecondaryColor3i), - SYM(SecondaryColor3iv), - SYM(SecondaryColor3s), - SYM(SecondaryColor3sv), - SYM(SecondaryColor3ub), - SYM(SecondaryColor3ubv), - SYM(SecondaryColor3ui), - SYM(SecondaryColor3uiv), - SYM(SecondaryColor3us), - SYM(SecondaryColor3usv), - SYM(SecondaryColorPointer), - SYM(WindowPos2d), - SYM(WindowPos2dv), - SYM(WindowPos2f), - SYM(WindowPos2fv), - SYM(WindowPos2i), - SYM(WindowPos2iv), - SYM(WindowPos2s), - SYM(WindowPos2sv), - SYM(WindowPos3d), - SYM(WindowPos3dv), - SYM(WindowPos3f), - SYM(WindowPos3fv), - SYM(WindowPos3i), - SYM(WindowPos3iv), - SYM(WindowPos3s), - SYM(WindowPos3sv), - SYM(GenQueries), - SYM(DeleteQueries), - SYM(IsQuery), - SYM(BeginQuery), - SYM(EndQuery), - SYM(GetQueryiv), - SYM(GetQueryObjectiv), - SYM(GetQueryObjectuiv), - SYM(BindBuffer), - SYM(DeleteBuffers), - SYM(GenBuffers), - SYM(IsBuffer), - SYM(BufferData), - SYM(BufferSubData), - SYM(GetBufferSubData), - SYM(MapBuffer), - SYM(UnmapBuffer), - SYM(GetBufferParameteriv), - SYM(GetBufferPointerv), - SYM(BlendEquationSeparate), - SYM(DrawBuffers), - SYM(StencilOpSeparate), - SYM(StencilFuncSeparate), - SYM(StencilMaskSeparate), - SYM(AttachShader), - SYM(BindAttribLocation), - SYM(CompileShader), - SYM(CreateProgram), - SYM(CreateShader), - SYM(DeleteProgram), - SYM(DeleteShader), - SYM(DetachShader), - SYM(DisableVertexAttribArray), - SYM(EnableVertexAttribArray), - SYM(GetActiveAttrib), - SYM(GetActiveUniform), - SYM(GetAttachedShaders), - SYM(GetAttribLocation), - SYM(GetProgramiv), - SYM(GetProgramInfoLog), - SYM(GetShaderiv), - SYM(GetShaderInfoLog), - SYM(GetShaderSource), - SYM(GetUniformLocation), - SYM(GetUniformfv), - SYM(GetUniformiv), - SYM(GetVertexAttribdv), - SYM(GetVertexAttribfv), - SYM(GetVertexAttribiv), - SYM(GetVertexAttribPointerv), - SYM(IsProgram), - SYM(IsShader), - SYM(LinkProgram), - SYM(ShaderSource), - SYM(UseProgram), - SYM(Uniform1f), - SYM(Uniform2f), - SYM(Uniform3f), - SYM(Uniform4f), - SYM(Uniform1i), - SYM(Uniform2i), - SYM(Uniform3i), - SYM(Uniform4i), - SYM(Uniform1fv), - SYM(Uniform2fv), - SYM(Uniform3fv), - SYM(Uniform4fv), - SYM(Uniform1iv), - SYM(Uniform2iv), - SYM(Uniform3iv), - SYM(Uniform4iv), - SYM(UniformMatrix2fv), - SYM(UniformMatrix3fv), - SYM(UniformMatrix4fv), - SYM(ValidateProgram), - SYM(VertexAttrib1d), - SYM(VertexAttrib1dv), - SYM(VertexAttrib1f), - SYM(VertexAttrib1fv), - SYM(VertexAttrib1s), - SYM(VertexAttrib1sv), - SYM(VertexAttrib2d), - SYM(VertexAttrib2dv), - SYM(VertexAttrib2f), - SYM(VertexAttrib2fv), - SYM(VertexAttrib2s), - SYM(VertexAttrib2sv), - SYM(VertexAttrib3d), - SYM(VertexAttrib3dv), - SYM(VertexAttrib3f), - SYM(VertexAttrib3fv), - SYM(VertexAttrib3s), - SYM(VertexAttrib3sv), - SYM(VertexAttrib4Nbv), - SYM(VertexAttrib4Niv), - SYM(VertexAttrib4Nsv), - SYM(VertexAttrib4Nub), - SYM(VertexAttrib4Nubv), - SYM(VertexAttrib4Nuiv), - SYM(VertexAttrib4Nusv), - SYM(VertexAttrib4bv), - SYM(VertexAttrib4d), - SYM(VertexAttrib4dv), - SYM(VertexAttrib4f), - SYM(VertexAttrib4fv), - SYM(VertexAttrib4iv), - SYM(VertexAttrib4s), - SYM(VertexAttrib4sv), - SYM(VertexAttrib4ubv), - SYM(VertexAttrib4uiv), - SYM(VertexAttrib4usv), - SYM(VertexAttribPointer), - SYM(UniformMatrix2x3fv), - SYM(UniformMatrix3x2fv), - SYM(UniformMatrix2x4fv), - SYM(UniformMatrix4x2fv), - SYM(UniformMatrix3x4fv), - SYM(UniformMatrix4x3fv), - SYM(ColorMaski), - SYM(GetBooleani_v), - SYM(GetIntegeri_v), - SYM(Enablei), - SYM(Disablei), - SYM(IsEnabledi), - SYM(BeginTransformFeedback), - SYM(EndTransformFeedback), - SYM(BindBufferRange), - SYM(BindBufferBase), - SYM(TransformFeedbackVaryings), - SYM(GetTransformFeedbackVarying), - SYM(ClampColor), - SYM(BeginConditionalRender), - SYM(EndConditionalRender), - SYM(VertexAttribIPointer), - SYM(GetVertexAttribIiv), - SYM(GetVertexAttribIuiv), - SYM(VertexAttribI1i), - SYM(VertexAttribI2i), - SYM(VertexAttribI3i), - SYM(VertexAttribI4i), - SYM(VertexAttribI1ui), - SYM(VertexAttribI2ui), - SYM(VertexAttribI3ui), - SYM(VertexAttribI4ui), - SYM(VertexAttribI1iv), - SYM(VertexAttribI2iv), - SYM(VertexAttribI3iv), - SYM(VertexAttribI4iv), - SYM(VertexAttribI1uiv), - SYM(VertexAttribI2uiv), - SYM(VertexAttribI3uiv), - SYM(VertexAttribI4uiv), - SYM(VertexAttribI4bv), - SYM(VertexAttribI4sv), - SYM(VertexAttribI4ubv), - SYM(VertexAttribI4usv), - SYM(GetUniformuiv), - SYM(BindFragDataLocation), - SYM(GetFragDataLocation), - SYM(Uniform1ui), - SYM(Uniform2ui), - SYM(Uniform3ui), - SYM(Uniform4ui), - SYM(Uniform1uiv), - SYM(Uniform2uiv), - SYM(Uniform3uiv), - SYM(Uniform4uiv), - SYM(TexParameterIiv), - SYM(TexParameterIuiv), - SYM(GetTexParameterIiv), - SYM(GetTexParameterIuiv), - SYM(ClearBufferiv), - SYM(ClearBufferuiv), - SYM(ClearBufferfv), - SYM(ClearBufferfi), - SYM(GetStringi), - SYM(DrawArraysInstanced), - SYM(DrawElementsInstanced), - SYM(TexBuffer), - SYM(PrimitiveRestartIndex), - SYM(GetInteger64i_v), - SYM(GetBufferParameteri64v), - SYM(FramebufferTexture), - SYM(VertexAttribDivisor), - SYM(MinSampleShading), - SYM(BlendEquationi), - SYM(BlendEquationSeparatei), - SYM(BlendFunci), - SYM(BlendFuncSeparatei), - 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(LoadTransposeMatrixfARB), - SYM(LoadTransposeMatrixdARB), - SYM(MultTransposeMatrixfARB), - SYM(MultTransposeMatrixdARB), - SYM(SampleCoverageARB), - SYM(CompressedTexImage3DARB), - SYM(CompressedTexImage2DARB), - SYM(CompressedTexImage1DARB), - SYM(CompressedTexSubImage3DARB), - SYM(CompressedTexSubImage2DARB), - SYM(CompressedTexSubImage1DARB), - SYM(GetCompressedTexImageARB), - SYM(PointParameterfARB), - SYM(PointParameterfvARB), - SYM(WeightbvARB), - SYM(WeightsvARB), - SYM(WeightivARB), - SYM(WeightfvARB), - SYM(WeightdvARB), - SYM(WeightubvARB), - SYM(WeightusvARB), - SYM(WeightuivARB), - SYM(WeightPointerARB), - SYM(VertexBlendARB), - SYM(CurrentPaletteMatrixARB), - SYM(MatrixIndexubvARB), - SYM(MatrixIndexusvARB), - SYM(MatrixIndexuivARB), - SYM(MatrixIndexPointerARB), - SYM(WindowPos2dARB), - SYM(WindowPos2dvARB), - SYM(WindowPos2fARB), - SYM(WindowPos2fvARB), - SYM(WindowPos2iARB), - SYM(WindowPos2ivARB), - SYM(WindowPos2sARB), - SYM(WindowPos2svARB), - SYM(WindowPos3dARB), - SYM(WindowPos3dvARB), - SYM(WindowPos3fARB), - SYM(WindowPos3fvARB), - SYM(WindowPos3iARB), - SYM(WindowPos3ivARB), - SYM(WindowPos3sARB), - SYM(WindowPos3svARB), - SYM(VertexAttrib1dARB), - SYM(VertexAttrib1dvARB), - SYM(VertexAttrib1fARB), - SYM(VertexAttrib1fvARB), - SYM(VertexAttrib1sARB), - SYM(VertexAttrib1svARB), - SYM(VertexAttrib2dARB), - SYM(VertexAttrib2dvARB), - SYM(VertexAttrib2fARB), - SYM(VertexAttrib2fvARB), - SYM(VertexAttrib2sARB), - SYM(VertexAttrib2svARB), - SYM(VertexAttrib3dARB), - SYM(VertexAttrib3dvARB), - SYM(VertexAttrib3fARB), - SYM(VertexAttrib3fvARB), - SYM(VertexAttrib3sARB), - SYM(VertexAttrib3svARB), - SYM(VertexAttrib4NbvARB), - SYM(VertexAttrib4NivARB), - SYM(VertexAttrib4NsvARB), - SYM(VertexAttrib4NubARB), - SYM(VertexAttrib4NubvARB), - SYM(VertexAttrib4NuivARB), - SYM(VertexAttrib4NusvARB), - SYM(VertexAttrib4bvARB), - SYM(VertexAttrib4dARB), - SYM(VertexAttrib4dvARB), - SYM(VertexAttrib4fARB), - SYM(VertexAttrib4fvARB), - SYM(VertexAttrib4ivARB), - SYM(VertexAttrib4sARB), - SYM(VertexAttrib4svARB), - SYM(VertexAttrib4ubvARB), - SYM(VertexAttrib4uivARB), - SYM(VertexAttrib4usvARB), - SYM(VertexAttribPointerARB), - SYM(EnableVertexAttribArrayARB), - SYM(DisableVertexAttribArrayARB), - SYM(ProgramStringARB), - SYM(BindProgramARB), - SYM(DeleteProgramsARB), - SYM(GenProgramsARB), - SYM(ProgramEnvParameter4dARB), - SYM(ProgramEnvParameter4dvARB), - SYM(ProgramEnvParameter4fARB), - SYM(ProgramEnvParameter4fvARB), - SYM(ProgramLocalParameter4dARB), - SYM(ProgramLocalParameter4dvARB), - SYM(ProgramLocalParameter4fARB), - SYM(ProgramLocalParameter4fvARB), - SYM(GetProgramEnvParameterdvARB), - SYM(GetProgramEnvParameterfvARB), - SYM(GetProgramLocalParameterdvARB), - SYM(GetProgramLocalParameterfvARB), - SYM(GetProgramivARB), - SYM(GetProgramStringARB), - SYM(GetVertexAttribdvARB), - SYM(GetVertexAttribfvARB), - SYM(GetVertexAttribivARB), - SYM(GetVertexAttribPointervARB), - SYM(IsProgramARB), - SYM(BindBufferARB), - SYM(DeleteBuffersARB), - SYM(GenBuffersARB), - SYM(IsBufferARB), - SYM(BufferDataARB), - SYM(BufferSubDataARB), - SYM(GetBufferSubDataARB), - SYM(MapBufferARB), - SYM(UnmapBufferARB), - SYM(GetBufferParameterivARB), - SYM(GetBufferPointervARB), - SYM(GenQueriesARB), - SYM(DeleteQueriesARB), - SYM(IsQueryARB), - SYM(BeginQueryARB), - SYM(EndQueryARB), - SYM(GetQueryivARB), - SYM(GetQueryObjectivARB), - SYM(GetQueryObjectuivARB), - SYM(DeleteObjectARB), - SYM(GetHandleARB), - SYM(DetachObjectARB), - SYM(CreateShaderObjectARB), - SYM(ShaderSourceARB), - SYM(CompileShaderARB), - SYM(CreateProgramObjectARB), - SYM(AttachObjectARB), - SYM(LinkProgramARB), - SYM(UseProgramObjectARB), - SYM(ValidateProgramARB), - SYM(Uniform1fARB), - SYM(Uniform2fARB), - SYM(Uniform3fARB), - SYM(Uniform4fARB), - SYM(Uniform1iARB), - SYM(Uniform2iARB), - SYM(Uniform3iARB), - SYM(Uniform4iARB), - SYM(Uniform1fvARB), - SYM(Uniform2fvARB), - SYM(Uniform3fvARB), - SYM(Uniform4fvARB), - SYM(Uniform1ivARB), - SYM(Uniform2ivARB), - SYM(Uniform3ivARB), - SYM(Uniform4ivARB), - SYM(UniformMatrix2fvARB), - SYM(UniformMatrix3fvARB), - SYM(UniformMatrix4fvARB), - SYM(GetObjectParameterfvARB), - SYM(GetObjectParameterivARB), - SYM(GetInfoLogARB), - SYM(GetAttachedObjectsARB), - SYM(GetUniformLocationARB), - SYM(GetActiveUniformARB), - SYM(GetUniformfvARB), - SYM(GetUniformivARB), - SYM(GetShaderSourceARB), - SYM(BindAttribLocationARB), - SYM(GetActiveAttribARB), - SYM(GetAttribLocationARB), - SYM(DrawBuffersARB), - SYM(ClampColorARB), - SYM(DrawArraysInstancedARB), - SYM(DrawElementsInstancedARB), - SYM(IsRenderbuffer), - SYM(BindRenderbuffer), - SYM(DeleteRenderbuffers), - SYM(GenRenderbuffers), - SYM(RenderbufferStorage), - SYM(GetRenderbufferParameteriv), - SYM(IsFramebuffer), - SYM(BindFramebuffer), - SYM(DeleteFramebuffers), - SYM(GenFramebuffers), - SYM(CheckFramebufferStatus), - SYM(FramebufferTexture1D), - SYM(FramebufferTexture2D), - SYM(FramebufferTexture3D), - SYM(FramebufferRenderbuffer), - SYM(GetFramebufferAttachmentParameteriv), - SYM(GenerateMipmap), - SYM(BlitFramebuffer), - SYM(RenderbufferStorageMultisample), - SYM(FramebufferTextureLayer), - SYM(ProgramParameteriARB), - SYM(FramebufferTextureARB), - SYM(FramebufferTextureLayerARB), - SYM(FramebufferTextureFaceARB), - SYM(VertexAttribDivisorARB), - SYM(MapBufferRange), - SYM(FlushMappedBufferRange), - SYM(TexBufferARB), - SYM(BindVertexArray), - SYM(DeleteVertexArrays), - SYM(GenVertexArrays), - SYM(IsVertexArray), - SYM(GetUniformIndices), - SYM(GetActiveUniformsiv), - SYM(GetActiveUniformName), - SYM(GetUniformBlockIndex), - SYM(GetActiveUniformBlockiv), - SYM(GetActiveUniformBlockName), - SYM(UniformBlockBinding), - SYM(CopyBufferSubData), - SYM(DrawElementsBaseVertex), - SYM(DrawRangeElementsBaseVertex), - SYM(DrawElementsInstancedBaseVertex), - SYM(MultiDrawElementsBaseVertex), - SYM(ProvokingVertex), - SYM(FenceSync), - SYM(IsSync), - SYM(DeleteSync), - SYM(ClientWaitSync), - SYM(WaitSync), - SYM(GetInteger64v), - SYM(GetSynciv), - SYM(TexImage2DMultisample), - SYM(TexImage3DMultisample), - SYM(GetMultisamplefv), - SYM(SampleMaski), - SYM(BlendEquationiARB), - SYM(BlendEquationSeparateiARB), - SYM(BlendFunciARB), - SYM(BlendFuncSeparateiARB), - SYM(MinSampleShadingARB), - SYM(NamedStringARB), - SYM(DeleteNamedStringARB), - SYM(CompileShaderIncludeARB), - SYM(IsNamedStringARB), - SYM(GetNamedStringARB), - SYM(GetNamedStringivARB), - SYM(BindFragDataLocationIndexed), - SYM(GetFragDataIndex), - SYM(GenSamplers), - SYM(DeleteSamplers), - SYM(IsSampler), - SYM(BindSampler), - SYM(SamplerParameteri), - SYM(SamplerParameteriv), - SYM(SamplerParameterf), - SYM(SamplerParameterfv), - SYM(SamplerParameterIiv), - SYM(SamplerParameterIuiv), - SYM(GetSamplerParameteriv), - SYM(GetSamplerParameterIiv), - SYM(GetSamplerParameterfv), - SYM(GetSamplerParameterIuiv), - SYM(QueryCounter), - SYM(GetQueryObjecti64v), - SYM(GetQueryObjectui64v), - SYM(VertexP2ui), - SYM(VertexP2uiv), - SYM(VertexP3ui), - SYM(VertexP3uiv), - SYM(VertexP4ui), - SYM(VertexP4uiv), - SYM(TexCoordP1ui), - SYM(TexCoordP1uiv), - SYM(TexCoordP2ui), - SYM(TexCoordP2uiv), - SYM(TexCoordP3ui), - SYM(TexCoordP3uiv), - SYM(TexCoordP4ui), - SYM(TexCoordP4uiv), - SYM(MultiTexCoordP1ui), - SYM(MultiTexCoordP1uiv), - SYM(MultiTexCoordP2ui), - SYM(MultiTexCoordP2uiv), - SYM(MultiTexCoordP3ui), - SYM(MultiTexCoordP3uiv), - SYM(MultiTexCoordP4ui), - SYM(MultiTexCoordP4uiv), - SYM(NormalP3ui), - SYM(NormalP3uiv), - SYM(ColorP3ui), - SYM(ColorP3uiv), - SYM(ColorP4ui), - SYM(ColorP4uiv), - SYM(SecondaryColorP3ui), - SYM(SecondaryColorP3uiv), - SYM(VertexAttribP1ui), - SYM(VertexAttribP1uiv), - SYM(VertexAttribP2ui), - SYM(VertexAttribP2uiv), - SYM(VertexAttribP3ui), - SYM(VertexAttribP3uiv), - SYM(VertexAttribP4ui), - SYM(VertexAttribP4uiv), - SYM(DrawArraysIndirect), - SYM(DrawElementsIndirect), - SYM(Uniform1d), - SYM(Uniform2d), - SYM(Uniform3d), - SYM(Uniform4d), - SYM(Uniform1dv), - SYM(Uniform2dv), - SYM(Uniform3dv), - SYM(Uniform4dv), - SYM(UniformMatrix2dv), - SYM(UniformMatrix3dv), - SYM(UniformMatrix4dv), - SYM(UniformMatrix2x3dv), - SYM(UniformMatrix2x4dv), - SYM(UniformMatrix3x2dv), - SYM(UniformMatrix3x4dv), - SYM(UniformMatrix4x2dv), - SYM(UniformMatrix4x3dv), - SYM(GetUniformdv), - SYM(GetSubroutineUniformLocation), - SYM(GetSubroutineIndex), - SYM(GetActiveSubroutineUniformiv), - SYM(GetActiveSubroutineUniformName), - SYM(GetActiveSubroutineName), - SYM(UniformSubroutinesuiv), - SYM(GetUniformSubroutineuiv), - SYM(GetProgramStageiv), - SYM(PatchParameteri), - SYM(PatchParameterfv), - SYM(BindTransformFeedback), - SYM(DeleteTransformFeedbacks), - SYM(GenTransformFeedbacks), - SYM(IsTransformFeedback), - SYM(PauseTransformFeedback), - SYM(ResumeTransformFeedback), - SYM(DrawTransformFeedback), - SYM(DrawTransformFeedbackStream), - SYM(BeginQueryIndexed), - SYM(EndQueryIndexed), - SYM(GetQueryIndexediv), - SYM(ReleaseShaderCompiler), - SYM(ShaderBinary), - SYM(GetShaderPrecisionFormat), - SYM(DepthRangef), - SYM(ClearDepthf), - SYM(GetProgramBinary), - SYM(ProgramBinary), - SYM(ProgramParameteri), - SYM(UseProgramStages), - SYM(ActiveShaderProgram), - SYM(CreateShaderProgramv), - SYM(BindProgramPipeline), - SYM(DeleteProgramPipelines), - SYM(GenProgramPipelines), - SYM(IsProgramPipeline), - SYM(GetProgramPipelineiv), - SYM(ProgramUniform1i), - SYM(ProgramUniform1iv), - SYM(ProgramUniform1f), - SYM(ProgramUniform1fv), - SYM(ProgramUniform1d), - SYM(ProgramUniform1dv), - SYM(ProgramUniform1ui), - SYM(ProgramUniform1uiv), - SYM(ProgramUniform2i), - SYM(ProgramUniform2iv), - SYM(ProgramUniform2f), - SYM(ProgramUniform2fv), - SYM(ProgramUniform2d), - SYM(ProgramUniform2dv), - SYM(ProgramUniform2ui), - SYM(ProgramUniform2uiv), - SYM(ProgramUniform3i), - SYM(ProgramUniform3iv), - SYM(ProgramUniform3f), - SYM(ProgramUniform3fv), - SYM(ProgramUniform3d), - SYM(ProgramUniform3dv), - SYM(ProgramUniform3ui), - SYM(ProgramUniform3uiv), - SYM(ProgramUniform4i), - SYM(ProgramUniform4iv), - SYM(ProgramUniform4f), - SYM(ProgramUniform4fv), - SYM(ProgramUniform4d), - SYM(ProgramUniform4dv), - SYM(ProgramUniform4ui), - SYM(ProgramUniform4uiv), - SYM(ProgramUniformMatrix2fv), - SYM(ProgramUniformMatrix3fv), - SYM(ProgramUniformMatrix4fv), - SYM(ProgramUniformMatrix2dv), - SYM(ProgramUniformMatrix3dv), - SYM(ProgramUniformMatrix4dv), - SYM(ProgramUniformMatrix2x3fv), - SYM(ProgramUniformMatrix3x2fv), - SYM(ProgramUniformMatrix2x4fv), - SYM(ProgramUniformMatrix4x2fv), - SYM(ProgramUniformMatrix3x4fv), - SYM(ProgramUniformMatrix4x3fv), - SYM(ProgramUniformMatrix2x3dv), - SYM(ProgramUniformMatrix3x2dv), - SYM(ProgramUniformMatrix2x4dv), - SYM(ProgramUniformMatrix4x2dv), - SYM(ProgramUniformMatrix3x4dv), - SYM(ProgramUniformMatrix4x3dv), - SYM(ValidateProgramPipeline), - SYM(GetProgramPipelineInfoLog), - SYM(VertexAttribL1d), - SYM(VertexAttribL2d), - SYM(VertexAttribL3d), - SYM(VertexAttribL4d), - SYM(VertexAttribL1dv), - SYM(VertexAttribL2dv), - SYM(VertexAttribL3dv), - SYM(VertexAttribL4dv), - SYM(VertexAttribLPointer), - SYM(GetVertexAttribLdv), - SYM(ViewportArrayv), - SYM(ViewportIndexedf), - SYM(ViewportIndexedfv), - SYM(ScissorArrayv), - SYM(ScissorIndexed), - SYM(ScissorIndexedv), - SYM(DepthRangeArrayv), - SYM(DepthRangeIndexed), - SYM(GetFloati_v), - SYM(GetDoublei_v), - SYM(CreateSyncFromCLeventARB), - SYM(DebugMessageControlARB), - SYM(DebugMessageInsertARB), - SYM(DebugMessageCallbackARB), - SYM(GetDebugMessageLogARB), - SYM(GetGraphicsResetStatusARB), - SYM(GetnMapdvARB), - SYM(GetnMapfvARB), - SYM(GetnMapivARB), - SYM(GetnPixelMapfvARB), - SYM(GetnPixelMapuivARB), - SYM(GetnPixelMapusvARB), - SYM(GetnPolygonStippleARB), - SYM(GetnColorTableARB), - SYM(GetnConvolutionFilterARB), - SYM(GetnSeparableFilterARB), - SYM(GetnHistogramARB), - SYM(GetnMinmaxARB), - SYM(GetnTexImageARB), - SYM(ReadnPixelsARB), - SYM(GetnCompressedTexImageARB), - SYM(GetnUniformfvARB), - SYM(GetnUniformivARB), - SYM(GetnUniformuivARB), - SYM(GetnUniformdvARB), - SYM(DrawArraysInstancedBaseInstance), - SYM(DrawElementsInstancedBaseInstance), - SYM(DrawElementsInstancedBaseVertexBaseInstance), - SYM(DrawTransformFeedbackInstanced), - SYM(DrawTransformFeedbackStreamInstanced), - SYM(GetInternalformativ), - SYM(GetActiveAtomicCounterBufferiv), - SYM(BindImageTexture), - SYM(MemoryBarrier), - SYM(TexStorage1D), - SYM(TexStorage2D), - SYM(TexStorage3D), - SYM(DebugMessageControl), - SYM(DebugMessageInsert), - SYM(DebugMessageCallback), - SYM(GetDebugMessageLog), - SYM(PushDebugGroup), - SYM(PopDebugGroup), - SYM(ObjectLabel), - SYM(GetObjectLabel), - SYM(ObjectPtrLabel), - SYM(GetObjectPtrLabel), - SYM(ClearBufferData), - SYM(ClearBufferSubData), - SYM(DispatchCompute), - SYM(DispatchComputeIndirect), - SYM(CopyImageSubData), - SYM(TextureView), - SYM(BindVertexBuffer), - SYM(VertexAttribFormat), - SYM(VertexAttribIFormat), - SYM(VertexAttribLFormat), - SYM(VertexAttribBinding), - SYM(VertexBindingDivisor), - SYM(FramebufferParameteri), - SYM(GetFramebufferParameteriv), - SYM(GetInternalformati64v), - SYM(InvalidateTexSubImage), - SYM(InvalidateTexImage), - SYM(InvalidateBufferSubData), - SYM(InvalidateBufferData), - SYM(InvalidateFramebuffer), - SYM(InvalidateSubFramebuffer), - SYM(MultiDrawArraysIndirect), - SYM(MultiDrawElementsIndirect), - SYM(GetProgramInterfaceiv), - SYM(GetProgramResourceIndex), - SYM(GetProgramResourceName), - SYM(GetProgramResourceiv), - SYM(GetProgramResourceLocation), - SYM(GetProgramResourceLocationIndex), - SYM(ShaderStorageBlockBinding), - SYM(TexBufferRange), - SYM(TexStorage2DMultisample), - SYM(TexStorage3DMultisample), - SYM(ImageTransformParameteriHP), - SYM(ImageTransformParameterfHP), - SYM(ImageTransformParameterivHP), - SYM(ImageTransformParameterfvHP), - SYM(GetImageTransformParameterivHP), - SYM(GetImageTransformParameterfvHP), - - { NULL, NULL }, -}; -RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; -RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; -RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; -RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; -RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; -RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; -RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; -RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; -RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; -RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; -RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; -RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; -RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; -RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; -RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; -RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; -RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; -RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; -RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; -RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; -RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; -RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; -RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; -RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; -RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; -RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; -RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; -RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; -RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; -RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; -RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; -RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; -RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; -RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; -RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; -RGLSYMGLMINMAXPROC __rglgen_glMinmax; -RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; -RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; -RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; -RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; -RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; -RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; -RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; -RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; -RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; -RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; -RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; -RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; -RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; -RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; -RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; -RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; -RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; -RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; -RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; -RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; -RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; -RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; -RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; -RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; -RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; -RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; -RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; -RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; -RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; -RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; -RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; -RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; -RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; -RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; -RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; -RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; -RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; -RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; -RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; -RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; -RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; -RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; -RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; -RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; -RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; -RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; -RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; -RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; -RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; -RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; -RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; -RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; -RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; -RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; -RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; -RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; -RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; -RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; -RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; -RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; -RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; -RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; -RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; -RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; -RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; -RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; -RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; -RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; -RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; -RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; -RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; -RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; -RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; -RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; -RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; -RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; -RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; -RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; -RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; -RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; -RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; -RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; -RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; -RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; -RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; -RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; -RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; -RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; -RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; -RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; -RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; -RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; -RGLSYMGLISQUERYPROC __rglgen_glIsQuery; -RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; -RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; -RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; -RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; -RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; -RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; -RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; -RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; -RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; -RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; -RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; -RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; -RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; -RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; -RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; -RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; -RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; -RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; -RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; -RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; -RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; -RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; -RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; -RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; -RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; -RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; -RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; -RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; -RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; -RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; -RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; -RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; -RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; -RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; -RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; -RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; -RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; -RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; -RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; -RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; -RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; -RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; -RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; -RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; -RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; -RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; -RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; -RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; -RGLSYMGLISSHADERPROC __rglgen_glIsShader; -RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; -RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; -RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; -RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; -RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; -RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; -RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; -RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; -RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; -RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; -RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; -RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; -RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; -RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; -RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; -RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; -RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; -RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; -RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; -RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; -RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; -RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; -RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; -RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; -RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; -RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; -RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; -RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; -RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; -RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; -RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; -RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; -RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; -RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; -RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; -RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; -RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; -RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; -RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; -RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; -RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; -RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; -RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; -RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; -RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; -RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; -RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; -RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; -RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; -RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; -RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; -RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; -RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; -RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; -RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; -RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; -RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; -RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; -RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; -RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; -RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; -RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; -RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; -RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; -RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; -RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; -RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; -RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; -RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; -RGLSYMGLENABLEIPROC __rglgen_glEnablei; -RGLSYMGLDISABLEIPROC __rglgen_glDisablei; -RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; -RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; -RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; -RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; -RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; -RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; -RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; -RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; -RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; -RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; -RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; -RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; -RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; -RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; -RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; -RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; -RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; -RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; -RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; -RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; -RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; -RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; -RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; -RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; -RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; -RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; -RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; -RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; -RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; -RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; -RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; -RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; -RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; -RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; -RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; -RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; -RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; -RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; -RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; -RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; -RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; -RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; -RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; -RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; -RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; -RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; -RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; -RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; -RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; -RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; -RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; -RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; -RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; -RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; -RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; -RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; -RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; -RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; -RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; -RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; -RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; -RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; -RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; -RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; -RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; -RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; -RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; -RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; -RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; -RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; -RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; -RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; -RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; -RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; -RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; -RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; -RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; -RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; -RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; -RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; -RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; -RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; -RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; -RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; -RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; -RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; -RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; -RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; -RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; -RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; -RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; -RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; -RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; -RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; -RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; -RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; -RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; -RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; -RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; -RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; -RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; -RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; -RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; -RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; -RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; -RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; -RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; -RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; -RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; -RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; -RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; -RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; -RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; -RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; -RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; -RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; -RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; -RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; -RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; -RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; -RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; -RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; -RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; -RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; -RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; -RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; -RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; -RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; -RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; -RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; -RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; -RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; -RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; -RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; -RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; -RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; -RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; -RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; -RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; -RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; -RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; -RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; -RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; -RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; -RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; -RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; -RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; -RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; -RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; -RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; -RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; -RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; -RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; -RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; -RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; -RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; -RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; -RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; -RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; -RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; -RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; -RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; -RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; -RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; -RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; -RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; -RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; -RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; -RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; -RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; -RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; -RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; -RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; -RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; -RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; -RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; -RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; -RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; -RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; -RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; -RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; -RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; -RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; -RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; -RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; -RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; -RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; -RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; -RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; -RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; -RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; -RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; -RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; -RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; -RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; -RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; -RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; -RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; -RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; -RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; -RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; -RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; -RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; -RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; -RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; -RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; -RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; -RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; -RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; -RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; -RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; -RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; -RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; -RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; -RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; -RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; -RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; -RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; -RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; -RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; -RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; -RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; -RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; -RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; -RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; -RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; -RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; -RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; -RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; -RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; -RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; -RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; -RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; -RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; -RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; -RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; -RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; -RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; -RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; -RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; -RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; -RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; -RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; -RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; -RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; -RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; -RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; -RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; -RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; -RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; -RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; -RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; -RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; -RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; -RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; -RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; -RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; -RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; -RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; -RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; -RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; -RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; -RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; -RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; -RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; -RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; -RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; -RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; -RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; -RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; -RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; -RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; -RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; -RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; -RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; -RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; -RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; -RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; -RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; -RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; -RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; -RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; -RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; -RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; -RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; -RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; -RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; -RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; -RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; -RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; -RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; -RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; -RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; -RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; -RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; -RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; -RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; -RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; -RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; -RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; -RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; -RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; -RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; -RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; -RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; -RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; -RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; -RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; -RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; -RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; -RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; -RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; -RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; -RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; -RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; -RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; -RGLSYMGLISSYNCPROC __rglgen_glIsSync; -RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; -RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; -RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; -RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; -RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; -RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; -RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; -RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; -RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; -RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; -RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; -RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; -RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; -RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; -RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; -RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; -RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; -RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; -RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; -RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; -RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; -RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; -RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; -RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; -RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; -RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; -RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; -RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; -RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; -RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; -RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; -RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; -RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; -RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; -RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; -RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; -RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; -RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; -RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; -RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; -RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; -RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; -RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; -RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; -RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; -RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; -RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; -RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; -RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; -RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; -RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; -RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; -RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; -RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; -RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; -RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; -RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; -RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; -RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; -RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; -RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; -RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; -RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; -RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; -RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; -RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; -RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; -RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; -RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; -RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; -RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; -RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; -RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; -RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; -RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; -RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; -RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; -RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; -RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; -RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; -RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; -RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; -RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; -RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; -RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; -RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; -RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; -RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; -RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; -RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; -RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; -RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; -RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; -RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; -RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; -RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; -RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; -RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; -RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; -RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; -RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; -RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; -RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; -RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; -RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; -RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; -RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; -RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; -RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; -RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; -RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; -RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; -RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; -RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; -RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; -RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; -RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; -RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; -RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; -RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; -RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; -RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; -RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; -RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; -RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; -RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; -RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; -RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; -RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; -RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; -RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; -RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; -RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; -RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; -RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; -RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; -RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; -RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; -RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; -RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; -RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; -RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; -RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; -RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; -RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; -RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; -RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; -RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; -RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; -RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; -RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; -RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; -RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; -RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; -RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; -RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; -RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; -RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; -RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; -RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; -RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; -RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; -RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; -RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; -RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; -RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; -RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; -RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; -RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; -RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; -RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; -RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; -RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; -RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; -RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; -RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; -RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; -RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; -RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; -RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; -RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; -RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; -RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; -RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; -RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; -RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; -RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; -RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; -RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; -RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; -RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; -RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; -RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; -RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; -RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; -RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; -RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; -RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; -RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; -RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; -RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; -RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; -RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; -RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; -RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; -RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; -RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; -RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; -RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; -RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; -RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; -RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; -RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; -RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; -RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; -RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; -RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; -RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; -RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; -RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; -RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; -RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; -RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; -RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; -RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; -RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; -RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; -RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; -RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; -RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; -RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; -RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; -RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; -RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; -RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; -RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; -RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; -RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; -RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; -RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; -RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; -RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; -RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; -RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; -RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; -RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; -RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; -RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; -RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; -RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; -RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; -RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; -RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; -RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; -RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; -RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; -RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; -RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; -RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; -RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; -RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; -RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; -RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; -RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; -RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; -RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; -RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; -RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; -RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; -RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; -RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; -RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; -RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; -RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; -RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; -RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; -RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; -RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; -RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; -RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; -RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; -RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; -RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; -RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; -RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; -RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; -RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; -RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; -RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; -RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; -RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; - diff --git a/libretro-test-gl/glsym/glsym_gl.h b/libretro-test-gl/glsym/glsym_gl.h deleted file mode 100644 index 8f2c84b8bf..0000000000 --- a/libretro-test-gl/glsym/glsym_gl.h +++ /dev/null @@ -1,2603 +0,0 @@ -#ifndef RGLGEN_DECL_H__ -#define RGLGEN_DECL_H__ -#ifdef GL_APIENTRY -typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -#else -typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); -#endif -typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP RGLSYMGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP RGLSYMGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP RGLSYMGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP RGLSYMGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP RGLSYMGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP RGLSYMGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP RGLSYMGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLRESETMINMAXPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); -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 RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, 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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, 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 RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); -typedef void (APIENTRYP RGLSYMGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -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 RGLSYMGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP RGLSYMGLFOGCOORDFPROC) (GLfloat coord); -typedef void (APIENTRYP RGLSYMGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (APIENTRYP RGLSYMGLFOGCOORDDPROC) (GLdouble coord); -typedef void (APIENTRYP RGLSYMGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (APIENTRYP RGLSYMGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVPROC) (const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVPROC) (const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVPROC) (const GLint *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVPROC) (const GLshort *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVPROC) (const GLint *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVPROC) (const GLshort *v); -typedef void (APIENTRYP RGLSYMGLGENQUERIESPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP RGLSYMGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP RGLSYMGLISQUERYPROC) (GLuint id); -typedef void (APIENTRYP RGLSYMGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP RGLSYMGLENDQUERYPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (APIENTRYP RGLSYMGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP RGLSYMGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERPROC) (GLuint buffer); -typedef void (APIENTRYP RGLSYMGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP RGLSYMGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP RGLSYMGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); -typedef void (APIENTRYP RGLSYMGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); -typedef void (APIENTRYP RGLSYMGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (APIENTRYP RGLSYMGLCREATEPROGRAMPROC) (void); -typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROC) (GLenum type); -typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP RGLSYMGLDELETESHADERPROC) (GLuint shader); -typedef void (APIENTRYP RGLSYMGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); -typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP RGLSYMGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (APIENTRYP RGLSYMGLISSHADERPROC) (GLuint shader); -typedef void (APIENTRYP RGLSYMGLLINKPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP RGLSYMGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); -typedef void (APIENTRYP RGLSYMGLUSEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP RGLSYMGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP RGLSYMGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP RGLSYMGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP RGLSYMGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP RGLSYMGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (APIENTRYP RGLSYMGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP RGLSYMGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP RGLSYMGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP RGLSYMGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (APIENTRYP RGLSYMGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP RGLSYMGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP RGLSYMGLENABLEIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP RGLSYMGLDISABLEIPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP RGLSYMGLISENABLEDIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP RGLSYMGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); -typedef void (APIENTRYP RGLSYMGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP RGLSYMGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP RGLSYMGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); -typedef void (APIENTRYP RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP RGLSYMGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); -typedef void (APIENTRYP RGLSYMGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); -typedef void (APIENTRYP RGLSYMGLENDCONDITIONALRENDERPROC) (void); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLUNIFORM1UIPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP RGLSYMGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP RGLSYMGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP RGLSYMGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP RGLSYMGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP RGLSYMGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -typedef const GLubyte * (APIENTRYP RGLSYMGLGETSTRINGIPROC) (GLenum name, GLuint index); -typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); -typedef void (APIENTRYP RGLSYMGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP RGLSYMGLPRIMITIVERESTARTINDEXPROC) (GLuint index); -typedef void (APIENTRYP RGLSYMGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); -typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); -typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGPROC) (GLfloat value); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP RGLSYMGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -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 RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -typedef void (APIENTRYP RGLSYMGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (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 RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP RGLSYMGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); -typedef void (APIENTRYP RGLSYMGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLVERTEXBLENDARBPROC) (GLint count); -typedef void (APIENTRYP RGLSYMGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); -typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); -typedef void (APIENTRYP RGLSYMGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); -typedef void (APIENTRYP RGLSYMGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2IVARBPROC) (const GLint *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS2SVARBPROC) (const GLshort *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3IVARBPROC) (const GLint *v); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP RGLSYMGLWINDOWPOS3SVARBPROC) (const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP RGLSYMGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP RGLSYMGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP RGLSYMGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMARBPROC) (GLuint program); -typedef void (APIENTRYP RGLSYMGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP RGLSYMGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP RGLSYMGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP RGLSYMGLISBUFFERARBPROC) (GLuint buffer); -typedef void (APIENTRYP RGLSYMGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP RGLSYMGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); -typedef void (APIENTRYP RGLSYMGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); -typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP RGLSYMGLUNMAPBUFFERARBPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); -typedef void (APIENTRYP RGLSYMGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP RGLSYMGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP RGLSYMGLISQUERYARBPROC) (GLuint id); -typedef void (APIENTRYP RGLSYMGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP RGLSYMGLENDQUERYARBPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (APIENTRYP RGLSYMGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef GLhandleARB (APIENTRYP RGLSYMGLGETHANDLEARBPROC) (GLenum pname); -typedef void (APIENTRYP RGLSYMGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef GLhandleARB (APIENTRYP RGLSYMGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (APIENTRYP RGLSYMGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); -typedef void (APIENTRYP RGLSYMGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (APIENTRYP RGLSYMGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef void (APIENTRYP RGLSYMGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (APIENTRYP RGLSYMGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP RGLSYMGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP RGLSYMGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP RGLSYMGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP RGLSYMGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP RGLSYMGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP RGLSYMGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (APIENTRYP RGLSYMGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP RGLSYMGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP RGLSYMGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP RGLSYMGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); -typedef void (APIENTRYP RGLSYMGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); -typedef GLint (APIENTRYP RGLSYMGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); -typedef void (APIENTRYP RGLSYMGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); -typedef void (APIENTRYP RGLSYMGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (APIENTRYP RGLSYMGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -typedef void (APIENTRYP RGLSYMGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP RGLSYMGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); -typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -typedef GLboolean (APIENTRYP RGLSYMGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (APIENTRYP RGLSYMGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP RGLSYMGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP RGLSYMGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP RGLSYMGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef void (APIENTRYP RGLSYMGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP RGLSYMGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP RGLSYMGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (APIENTRYP RGLSYMGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef void (APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); -typedef GLvoid* (APIENTRYP RGLSYMGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (APIENTRYP RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP RGLSYMGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP RGLSYMGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (APIENTRYP RGLSYMGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP RGLSYMGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP RGLSYMGLISVERTEXARRAYPROC) (GLuint array); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -typedef GLuint (APIENTRYP RGLSYMGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -typedef void (APIENTRYP RGLSYMGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -typedef void (APIENTRYP RGLSYMGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); -typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); -typedef void (APIENTRYP RGLSYMGLPROVOKINGVERTEXPROC) (GLenum mode); -typedef GLsync (APIENTRYP RGLSYMGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (APIENTRYP RGLSYMGLISSYNCPROC) (GLsync sync); -typedef void (APIENTRYP RGLSYMGLDELETESYNCPROC) (GLsync sync); -typedef GLenum (APIENTRYP RGLSYMGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP RGLSYMGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP RGLSYMGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params); -typedef void (APIENTRYP RGLSYMGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -typedef void (APIENTRYP RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP RGLSYMGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP RGLSYMGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP RGLSYMGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP RGLSYMGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (APIENTRYP RGLSYMGLMINSAMPLESHADINGARBPROC) (GLfloat value); -typedef void (APIENTRYP RGLSYMGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); -typedef void (APIENTRYP RGLSYMGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); -typedef GLboolean (APIENTRYP RGLSYMGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); -typedef void (APIENTRYP RGLSYMGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -typedef GLint (APIENTRYP RGLSYMGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); -typedef void (APIENTRYP RGLSYMGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); -typedef GLboolean (APIENTRYP RGLSYMGLISSAMPLERPROC) (GLuint sampler); -typedef void (APIENTRYP RGLSYMGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); -typedef void (APIENTRYP RGLSYMGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); -typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); -typedef void (APIENTRYP RGLSYMGLQUERYCOUNTERPROC) (GLuint id, GLenum target); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); -typedef void (APIENTRYP RGLSYMGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); -typedef void (APIENTRYP RGLSYMGLVERTEXP2UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLVERTEXP3UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLVERTEXP4UIPROC) (GLenum type, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLNORMALP3UIPROC) (GLenum type, GLuint coords); -typedef void (APIENTRYP RGLSYMGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); -typedef void (APIENTRYP RGLSYMGLCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP RGLSYMGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); -typedef void (APIENTRYP RGLSYMGLCOLORP4UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP RGLSYMGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); -typedef void (APIENTRYP RGLSYMGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect); -typedef void (APIENTRYP RGLSYMGLUNIFORM1DPROC) (GLint location, GLdouble x); -typedef void (APIENTRYP RGLSYMGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); -typedef GLint (APIENTRYP RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); -typedef GLuint (APIENTRYP RGLSYMGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); -typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP RGLSYMGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); -typedef void (APIENTRYP RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); -typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); -typedef void (APIENTRYP RGLSYMGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); -typedef void (APIENTRYP RGLSYMGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP RGLSYMGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); -typedef void (APIENTRYP RGLSYMGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); -typedef GLboolean (APIENTRYP RGLSYMGLISTRANSFORMFEEDBACKPROC) (GLuint id); -typedef void (APIENTRYP RGLSYMGLPAUSETRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP RGLSYMGLRESUMETRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); -typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); -typedef void (APIENTRYP RGLSYMGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); -typedef void (APIENTRYP RGLSYMGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP RGLSYMGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLRELEASESHADERCOMPILERPROC) (void); -typedef void (APIENTRYP RGLSYMGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); -typedef void (APIENTRYP RGLSYMGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); -typedef void (APIENTRYP RGLSYMGLCLEARDEPTHFPROC) (GLfloat d); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -typedef void (APIENTRYP RGLSYMGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); -typedef void (APIENTRYP RGLSYMGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP RGLSYMGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (APIENTRYP RGLSYMGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); -typedef GLuint (APIENTRYP RGLSYMGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const *strings); -typedef void (APIENTRYP RGLSYMGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP RGLSYMGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); -typedef void (APIENTRYP RGLSYMGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); -typedef GLboolean (APIENTRYP RGLSYMGLISPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -typedef void (APIENTRYP RGLSYMGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP RGLSYMGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -typedef void (APIENTRYP RGLSYMGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP RGLSYMGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); -typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP RGLSYMGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); -typedef void (APIENTRYP RGLSYMGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); -typedef void (APIENTRYP RGLSYMGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); -typedef GLsync (APIENTRYP RGLSYMGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKARBPROC) (RGLGENGLDEBUGPROCARB callback, const GLvoid *userParam); -typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef GLenum (APIENTRYP RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC) (void); -typedef void (APIENTRYP RGLSYMGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); -typedef void (APIENTRYP RGLSYMGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); -typedef void (APIENTRYP RGLSYMGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); -typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); -typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); -typedef void (APIENTRYP RGLSYMGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); -typedef void (APIENTRYP RGLSYMGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); -typedef void (APIENTRYP RGLSYMGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); -typedef void (APIENTRYP RGLSYMGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); -typedef void (APIENTRYP RGLSYMGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP RGLSYMGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -typedef void (APIENTRYP RGLSYMGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); -typedef void (APIENTRYP RGLSYMGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); -typedef void (APIENTRYP RGLSYMGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); -typedef void (APIENTRYP RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); -typedef void (APIENTRYP RGLSYMGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); -typedef void (APIENTRYP RGLSYMGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); -typedef void (APIENTRYP RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); -typedef void (APIENTRYP RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); -typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); -typedef void (APIENTRYP RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); -typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); -typedef void (APIENTRYP RGLSYMGLMEMORYBARRIERPROC) (GLbitfield barriers); -typedef void (APIENTRYP RGLSYMGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (APIENTRYP RGLSYMGLDEBUGMESSAGECALLBACKPROC) (RGLGENGLDEBUGPROC callback, const void *userParam); -typedef GLuint (APIENTRYP RGLSYMGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (APIENTRYP RGLSYMGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (APIENTRYP RGLSYMGLPOPDEBUGGROUPPROC) (void); -typedef void (APIENTRYP RGLSYMGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP RGLSYMGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); -typedef void (APIENTRYP RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); -typedef void (APIENTRYP RGLSYMGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); -typedef void (APIENTRYP RGLSYMGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); -typedef void (APIENTRYP RGLSYMGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); -typedef void (APIENTRYP RGLSYMGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); -typedef void (APIENTRYP RGLSYMGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); -typedef void (APIENTRYP RGLSYMGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); -typedef void (APIENTRYP RGLSYMGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); -typedef void (APIENTRYP RGLSYMGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); -typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); -typedef void (APIENTRYP RGLSYMGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); -typedef void (APIENTRYP RGLSYMGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); -typedef void (APIENTRYP RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); -typedef void (APIENTRYP RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); -typedef GLuint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -typedef void (APIENTRYP RGLSYMGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); -typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef GLint (APIENTRYP RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); -typedef void (APIENTRYP RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); -typedef void (APIENTRYP RGLSYMGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); - -#define glBlendColor __rglgen_glBlendColor -#define glBlendEquation __rglgen_glBlendEquation -#define glDrawRangeElements __rglgen_glDrawRangeElements -#define glTexImage3D __rglgen_glTexImage3D -#define glTexSubImage3D __rglgen_glTexSubImage3D -#define glCopyTexSubImage3D __rglgen_glCopyTexSubImage3D -#define glColorTable __rglgen_glColorTable -#define glColorTableParameterfv __rglgen_glColorTableParameterfv -#define glColorTableParameteriv __rglgen_glColorTableParameteriv -#define glCopyColorTable __rglgen_glCopyColorTable -#define glGetColorTable __rglgen_glGetColorTable -#define glGetColorTableParameterfv __rglgen_glGetColorTableParameterfv -#define glGetColorTableParameteriv __rglgen_glGetColorTableParameteriv -#define glColorSubTable __rglgen_glColorSubTable -#define glCopyColorSubTable __rglgen_glCopyColorSubTable -#define glConvolutionFilter1D __rglgen_glConvolutionFilter1D -#define glConvolutionFilter2D __rglgen_glConvolutionFilter2D -#define glConvolutionParameterf __rglgen_glConvolutionParameterf -#define glConvolutionParameterfv __rglgen_glConvolutionParameterfv -#define glConvolutionParameteri __rglgen_glConvolutionParameteri -#define glConvolutionParameteriv __rglgen_glConvolutionParameteriv -#define glCopyConvolutionFilter1D __rglgen_glCopyConvolutionFilter1D -#define glCopyConvolutionFilter2D __rglgen_glCopyConvolutionFilter2D -#define glGetConvolutionFilter __rglgen_glGetConvolutionFilter -#define glGetConvolutionParameterfv __rglgen_glGetConvolutionParameterfv -#define glGetConvolutionParameteriv __rglgen_glGetConvolutionParameteriv -#define glGetSeparableFilter __rglgen_glGetSeparableFilter -#define glSeparableFilter2D __rglgen_glSeparableFilter2D -#define glGetHistogram __rglgen_glGetHistogram -#define glGetHistogramParameterfv __rglgen_glGetHistogramParameterfv -#define glGetHistogramParameteriv __rglgen_glGetHistogramParameteriv -#define glGetMinmax __rglgen_glGetMinmax -#define glGetMinmaxParameterfv __rglgen_glGetMinmaxParameterfv -#define glGetMinmaxParameteriv __rglgen_glGetMinmaxParameteriv -#define glHistogram __rglgen_glHistogram -#define glMinmax __rglgen_glMinmax -#define glResetHistogram __rglgen_glResetHistogram -#define glResetMinmax __rglgen_glResetMinmax -#define glActiveTexture __rglgen_glActiveTexture -#define glSampleCoverage __rglgen_glSampleCoverage -#define glCompressedTexImage3D __rglgen_glCompressedTexImage3D -#define glCompressedTexImage2D __rglgen_glCompressedTexImage2D -#define glCompressedTexImage1D __rglgen_glCompressedTexImage1D -#define glCompressedTexSubImage3D __rglgen_glCompressedTexSubImage3D -#define glCompressedTexSubImage2D __rglgen_glCompressedTexSubImage2D -#define glCompressedTexSubImage1D __rglgen_glCompressedTexSubImage1D -#define glGetCompressedTexImage __rglgen_glGetCompressedTexImage -#define glClientActiveTexture __rglgen_glClientActiveTexture -#define glMultiTexCoord1d __rglgen_glMultiTexCoord1d -#define glMultiTexCoord1dv __rglgen_glMultiTexCoord1dv -#define glMultiTexCoord1f __rglgen_glMultiTexCoord1f -#define glMultiTexCoord1fv __rglgen_glMultiTexCoord1fv -#define glMultiTexCoord1i __rglgen_glMultiTexCoord1i -#define glMultiTexCoord1iv __rglgen_glMultiTexCoord1iv -#define glMultiTexCoord1s __rglgen_glMultiTexCoord1s -#define glMultiTexCoord1sv __rglgen_glMultiTexCoord1sv -#define glMultiTexCoord2d __rglgen_glMultiTexCoord2d -#define glMultiTexCoord2dv __rglgen_glMultiTexCoord2dv -#define glMultiTexCoord2f __rglgen_glMultiTexCoord2f -#define glMultiTexCoord2fv __rglgen_glMultiTexCoord2fv -#define glMultiTexCoord2i __rglgen_glMultiTexCoord2i -#define glMultiTexCoord2iv __rglgen_glMultiTexCoord2iv -#define glMultiTexCoord2s __rglgen_glMultiTexCoord2s -#define glMultiTexCoord2sv __rglgen_glMultiTexCoord2sv -#define glMultiTexCoord3d __rglgen_glMultiTexCoord3d -#define glMultiTexCoord3dv __rglgen_glMultiTexCoord3dv -#define glMultiTexCoord3f __rglgen_glMultiTexCoord3f -#define glMultiTexCoord3fv __rglgen_glMultiTexCoord3fv -#define glMultiTexCoord3i __rglgen_glMultiTexCoord3i -#define glMultiTexCoord3iv __rglgen_glMultiTexCoord3iv -#define glMultiTexCoord3s __rglgen_glMultiTexCoord3s -#define glMultiTexCoord3sv __rglgen_glMultiTexCoord3sv -#define glMultiTexCoord4d __rglgen_glMultiTexCoord4d -#define glMultiTexCoord4dv __rglgen_glMultiTexCoord4dv -#define glMultiTexCoord4f __rglgen_glMultiTexCoord4f -#define glMultiTexCoord4fv __rglgen_glMultiTexCoord4fv -#define glMultiTexCoord4i __rglgen_glMultiTexCoord4i -#define glMultiTexCoord4iv __rglgen_glMultiTexCoord4iv -#define glMultiTexCoord4s __rglgen_glMultiTexCoord4s -#define glMultiTexCoord4sv __rglgen_glMultiTexCoord4sv -#define glLoadTransposeMatrixf __rglgen_glLoadTransposeMatrixf -#define glLoadTransposeMatrixd __rglgen_glLoadTransposeMatrixd -#define glMultTransposeMatrixf __rglgen_glMultTransposeMatrixf -#define glMultTransposeMatrixd __rglgen_glMultTransposeMatrixd -#define glBlendFuncSeparate __rglgen_glBlendFuncSeparate -#define glMultiDrawArrays __rglgen_glMultiDrawArrays -#define glMultiDrawElements __rglgen_glMultiDrawElements -#define glPointParameterf __rglgen_glPointParameterf -#define glPointParameterfv __rglgen_glPointParameterfv -#define glPointParameteri __rglgen_glPointParameteri -#define glPointParameteriv __rglgen_glPointParameteriv -#define glFogCoordf __rglgen_glFogCoordf -#define glFogCoordfv __rglgen_glFogCoordfv -#define glFogCoordd __rglgen_glFogCoordd -#define glFogCoorddv __rglgen_glFogCoorddv -#define glFogCoordPointer __rglgen_glFogCoordPointer -#define glSecondaryColor3b __rglgen_glSecondaryColor3b -#define glSecondaryColor3bv __rglgen_glSecondaryColor3bv -#define glSecondaryColor3d __rglgen_glSecondaryColor3d -#define glSecondaryColor3dv __rglgen_glSecondaryColor3dv -#define glSecondaryColor3f __rglgen_glSecondaryColor3f -#define glSecondaryColor3fv __rglgen_glSecondaryColor3fv -#define glSecondaryColor3i __rglgen_glSecondaryColor3i -#define glSecondaryColor3iv __rglgen_glSecondaryColor3iv -#define glSecondaryColor3s __rglgen_glSecondaryColor3s -#define glSecondaryColor3sv __rglgen_glSecondaryColor3sv -#define glSecondaryColor3ub __rglgen_glSecondaryColor3ub -#define glSecondaryColor3ubv __rglgen_glSecondaryColor3ubv -#define glSecondaryColor3ui __rglgen_glSecondaryColor3ui -#define glSecondaryColor3uiv __rglgen_glSecondaryColor3uiv -#define glSecondaryColor3us __rglgen_glSecondaryColor3us -#define glSecondaryColor3usv __rglgen_glSecondaryColor3usv -#define glSecondaryColorPointer __rglgen_glSecondaryColorPointer -#define glWindowPos2d __rglgen_glWindowPos2d -#define glWindowPos2dv __rglgen_glWindowPos2dv -#define glWindowPos2f __rglgen_glWindowPos2f -#define glWindowPos2fv __rglgen_glWindowPos2fv -#define glWindowPos2i __rglgen_glWindowPos2i -#define glWindowPos2iv __rglgen_glWindowPos2iv -#define glWindowPos2s __rglgen_glWindowPos2s -#define glWindowPos2sv __rglgen_glWindowPos2sv -#define glWindowPos3d __rglgen_glWindowPos3d -#define glWindowPos3dv __rglgen_glWindowPos3dv -#define glWindowPos3f __rglgen_glWindowPos3f -#define glWindowPos3fv __rglgen_glWindowPos3fv -#define glWindowPos3i __rglgen_glWindowPos3i -#define glWindowPos3iv __rglgen_glWindowPos3iv -#define glWindowPos3s __rglgen_glWindowPos3s -#define glWindowPos3sv __rglgen_glWindowPos3sv -#define glGenQueries __rglgen_glGenQueries -#define glDeleteQueries __rglgen_glDeleteQueries -#define glIsQuery __rglgen_glIsQuery -#define glBeginQuery __rglgen_glBeginQuery -#define glEndQuery __rglgen_glEndQuery -#define glGetQueryiv __rglgen_glGetQueryiv -#define glGetQueryObjectiv __rglgen_glGetQueryObjectiv -#define glGetQueryObjectuiv __rglgen_glGetQueryObjectuiv -#define glBindBuffer __rglgen_glBindBuffer -#define glDeleteBuffers __rglgen_glDeleteBuffers -#define glGenBuffers __rglgen_glGenBuffers -#define glIsBuffer __rglgen_glIsBuffer -#define glBufferData __rglgen_glBufferData -#define glBufferSubData __rglgen_glBufferSubData -#define glGetBufferSubData __rglgen_glGetBufferSubData -#define glMapBuffer __rglgen_glMapBuffer -#define glUnmapBuffer __rglgen_glUnmapBuffer -#define glGetBufferParameteriv __rglgen_glGetBufferParameteriv -#define glGetBufferPointerv __rglgen_glGetBufferPointerv -#define glBlendEquationSeparate __rglgen_glBlendEquationSeparate -#define glDrawBuffers __rglgen_glDrawBuffers -#define glStencilOpSeparate __rglgen_glStencilOpSeparate -#define glStencilFuncSeparate __rglgen_glStencilFuncSeparate -#define glStencilMaskSeparate __rglgen_glStencilMaskSeparate -#define glAttachShader __rglgen_glAttachShader -#define glBindAttribLocation __rglgen_glBindAttribLocation -#define glCompileShader __rglgen_glCompileShader -#define glCreateProgram __rglgen_glCreateProgram -#define glCreateShader __rglgen_glCreateShader -#define glDeleteProgram __rglgen_glDeleteProgram -#define glDeleteShader __rglgen_glDeleteShader -#define glDetachShader __rglgen_glDetachShader -#define glDisableVertexAttribArray __rglgen_glDisableVertexAttribArray -#define glEnableVertexAttribArray __rglgen_glEnableVertexAttribArray -#define glGetActiveAttrib __rglgen_glGetActiveAttrib -#define glGetActiveUniform __rglgen_glGetActiveUniform -#define glGetAttachedShaders __rglgen_glGetAttachedShaders -#define glGetAttribLocation __rglgen_glGetAttribLocation -#define glGetProgramiv __rglgen_glGetProgramiv -#define glGetProgramInfoLog __rglgen_glGetProgramInfoLog -#define glGetShaderiv __rglgen_glGetShaderiv -#define glGetShaderInfoLog __rglgen_glGetShaderInfoLog -#define glGetShaderSource __rglgen_glGetShaderSource -#define glGetUniformLocation __rglgen_glGetUniformLocation -#define glGetUniformfv __rglgen_glGetUniformfv -#define glGetUniformiv __rglgen_glGetUniformiv -#define glGetVertexAttribdv __rglgen_glGetVertexAttribdv -#define glGetVertexAttribfv __rglgen_glGetVertexAttribfv -#define glGetVertexAttribiv __rglgen_glGetVertexAttribiv -#define glGetVertexAttribPointerv __rglgen_glGetVertexAttribPointerv -#define glIsProgram __rglgen_glIsProgram -#define glIsShader __rglgen_glIsShader -#define glLinkProgram __rglgen_glLinkProgram -#define glShaderSource __rglgen_glShaderSource -#define glUseProgram __rglgen_glUseProgram -#define glUniform1f __rglgen_glUniform1f -#define glUniform2f __rglgen_glUniform2f -#define glUniform3f __rglgen_glUniform3f -#define glUniform4f __rglgen_glUniform4f -#define glUniform1i __rglgen_glUniform1i -#define glUniform2i __rglgen_glUniform2i -#define glUniform3i __rglgen_glUniform3i -#define glUniform4i __rglgen_glUniform4i -#define glUniform1fv __rglgen_glUniform1fv -#define glUniform2fv __rglgen_glUniform2fv -#define glUniform3fv __rglgen_glUniform3fv -#define glUniform4fv __rglgen_glUniform4fv -#define glUniform1iv __rglgen_glUniform1iv -#define glUniform2iv __rglgen_glUniform2iv -#define glUniform3iv __rglgen_glUniform3iv -#define glUniform4iv __rglgen_glUniform4iv -#define glUniformMatrix2fv __rglgen_glUniformMatrix2fv -#define glUniformMatrix3fv __rglgen_glUniformMatrix3fv -#define glUniformMatrix4fv __rglgen_glUniformMatrix4fv -#define glValidateProgram __rglgen_glValidateProgram -#define glVertexAttrib1d __rglgen_glVertexAttrib1d -#define glVertexAttrib1dv __rglgen_glVertexAttrib1dv -#define glVertexAttrib1f __rglgen_glVertexAttrib1f -#define glVertexAttrib1fv __rglgen_glVertexAttrib1fv -#define glVertexAttrib1s __rglgen_glVertexAttrib1s -#define glVertexAttrib1sv __rglgen_glVertexAttrib1sv -#define glVertexAttrib2d __rglgen_glVertexAttrib2d -#define glVertexAttrib2dv __rglgen_glVertexAttrib2dv -#define glVertexAttrib2f __rglgen_glVertexAttrib2f -#define glVertexAttrib2fv __rglgen_glVertexAttrib2fv -#define glVertexAttrib2s __rglgen_glVertexAttrib2s -#define glVertexAttrib2sv __rglgen_glVertexAttrib2sv -#define glVertexAttrib3d __rglgen_glVertexAttrib3d -#define glVertexAttrib3dv __rglgen_glVertexAttrib3dv -#define glVertexAttrib3f __rglgen_glVertexAttrib3f -#define glVertexAttrib3fv __rglgen_glVertexAttrib3fv -#define glVertexAttrib3s __rglgen_glVertexAttrib3s -#define glVertexAttrib3sv __rglgen_glVertexAttrib3sv -#define glVertexAttrib4Nbv __rglgen_glVertexAttrib4Nbv -#define glVertexAttrib4Niv __rglgen_glVertexAttrib4Niv -#define glVertexAttrib4Nsv __rglgen_glVertexAttrib4Nsv -#define glVertexAttrib4Nub __rglgen_glVertexAttrib4Nub -#define glVertexAttrib4Nubv __rglgen_glVertexAttrib4Nubv -#define glVertexAttrib4Nuiv __rglgen_glVertexAttrib4Nuiv -#define glVertexAttrib4Nusv __rglgen_glVertexAttrib4Nusv -#define glVertexAttrib4bv __rglgen_glVertexAttrib4bv -#define glVertexAttrib4d __rglgen_glVertexAttrib4d -#define glVertexAttrib4dv __rglgen_glVertexAttrib4dv -#define glVertexAttrib4f __rglgen_glVertexAttrib4f -#define glVertexAttrib4fv __rglgen_glVertexAttrib4fv -#define glVertexAttrib4iv __rglgen_glVertexAttrib4iv -#define glVertexAttrib4s __rglgen_glVertexAttrib4s -#define glVertexAttrib4sv __rglgen_glVertexAttrib4sv -#define glVertexAttrib4ubv __rglgen_glVertexAttrib4ubv -#define glVertexAttrib4uiv __rglgen_glVertexAttrib4uiv -#define glVertexAttrib4usv __rglgen_glVertexAttrib4usv -#define glVertexAttribPointer __rglgen_glVertexAttribPointer -#define glUniformMatrix2x3fv __rglgen_glUniformMatrix2x3fv -#define glUniformMatrix3x2fv __rglgen_glUniformMatrix3x2fv -#define glUniformMatrix2x4fv __rglgen_glUniformMatrix2x4fv -#define glUniformMatrix4x2fv __rglgen_glUniformMatrix4x2fv -#define glUniformMatrix3x4fv __rglgen_glUniformMatrix3x4fv -#define glUniformMatrix4x3fv __rglgen_glUniformMatrix4x3fv -#define glColorMaski __rglgen_glColorMaski -#define glGetBooleani_v __rglgen_glGetBooleani_v -#define glGetIntegeri_v __rglgen_glGetIntegeri_v -#define glEnablei __rglgen_glEnablei -#define glDisablei __rglgen_glDisablei -#define glIsEnabledi __rglgen_glIsEnabledi -#define glBeginTransformFeedback __rglgen_glBeginTransformFeedback -#define glEndTransformFeedback __rglgen_glEndTransformFeedback -#define glBindBufferRange __rglgen_glBindBufferRange -#define glBindBufferBase __rglgen_glBindBufferBase -#define glTransformFeedbackVaryings __rglgen_glTransformFeedbackVaryings -#define glGetTransformFeedbackVarying __rglgen_glGetTransformFeedbackVarying -#define glClampColor __rglgen_glClampColor -#define glBeginConditionalRender __rglgen_glBeginConditionalRender -#define glEndConditionalRender __rglgen_glEndConditionalRender -#define glVertexAttribIPointer __rglgen_glVertexAttribIPointer -#define glGetVertexAttribIiv __rglgen_glGetVertexAttribIiv -#define glGetVertexAttribIuiv __rglgen_glGetVertexAttribIuiv -#define glVertexAttribI1i __rglgen_glVertexAttribI1i -#define glVertexAttribI2i __rglgen_glVertexAttribI2i -#define glVertexAttribI3i __rglgen_glVertexAttribI3i -#define glVertexAttribI4i __rglgen_glVertexAttribI4i -#define glVertexAttribI1ui __rglgen_glVertexAttribI1ui -#define glVertexAttribI2ui __rglgen_glVertexAttribI2ui -#define glVertexAttribI3ui __rglgen_glVertexAttribI3ui -#define glVertexAttribI4ui __rglgen_glVertexAttribI4ui -#define glVertexAttribI1iv __rglgen_glVertexAttribI1iv -#define glVertexAttribI2iv __rglgen_glVertexAttribI2iv -#define glVertexAttribI3iv __rglgen_glVertexAttribI3iv -#define glVertexAttribI4iv __rglgen_glVertexAttribI4iv -#define glVertexAttribI1uiv __rglgen_glVertexAttribI1uiv -#define glVertexAttribI2uiv __rglgen_glVertexAttribI2uiv -#define glVertexAttribI3uiv __rglgen_glVertexAttribI3uiv -#define glVertexAttribI4uiv __rglgen_glVertexAttribI4uiv -#define glVertexAttribI4bv __rglgen_glVertexAttribI4bv -#define glVertexAttribI4sv __rglgen_glVertexAttribI4sv -#define glVertexAttribI4ubv __rglgen_glVertexAttribI4ubv -#define glVertexAttribI4usv __rglgen_glVertexAttribI4usv -#define glGetUniformuiv __rglgen_glGetUniformuiv -#define glBindFragDataLocation __rglgen_glBindFragDataLocation -#define glGetFragDataLocation __rglgen_glGetFragDataLocation -#define glUniform1ui __rglgen_glUniform1ui -#define glUniform2ui __rglgen_glUniform2ui -#define glUniform3ui __rglgen_glUniform3ui -#define glUniform4ui __rglgen_glUniform4ui -#define glUniform1uiv __rglgen_glUniform1uiv -#define glUniform2uiv __rglgen_glUniform2uiv -#define glUniform3uiv __rglgen_glUniform3uiv -#define glUniform4uiv __rglgen_glUniform4uiv -#define glTexParameterIiv __rglgen_glTexParameterIiv -#define glTexParameterIuiv __rglgen_glTexParameterIuiv -#define glGetTexParameterIiv __rglgen_glGetTexParameterIiv -#define glGetTexParameterIuiv __rglgen_glGetTexParameterIuiv -#define glClearBufferiv __rglgen_glClearBufferiv -#define glClearBufferuiv __rglgen_glClearBufferuiv -#define glClearBufferfv __rglgen_glClearBufferfv -#define glClearBufferfi __rglgen_glClearBufferfi -#define glGetStringi __rglgen_glGetStringi -#define glDrawArraysInstanced __rglgen_glDrawArraysInstanced -#define glDrawElementsInstanced __rglgen_glDrawElementsInstanced -#define glTexBuffer __rglgen_glTexBuffer -#define glPrimitiveRestartIndex __rglgen_glPrimitiveRestartIndex -#define glGetInteger64i_v __rglgen_glGetInteger64i_v -#define glGetBufferParameteri64v __rglgen_glGetBufferParameteri64v -#define glFramebufferTexture __rglgen_glFramebufferTexture -#define glVertexAttribDivisor __rglgen_glVertexAttribDivisor -#define glMinSampleShading __rglgen_glMinSampleShading -#define glBlendEquationi __rglgen_glBlendEquationi -#define glBlendEquationSeparatei __rglgen_glBlendEquationSeparatei -#define glBlendFunci __rglgen_glBlendFunci -#define glBlendFuncSeparatei __rglgen_glBlendFuncSeparatei -#define glActiveTextureARB __rglgen_glActiveTextureARB -#define glClientActiveTextureARB __rglgen_glClientActiveTextureARB -#define glMultiTexCoord1dARB __rglgen_glMultiTexCoord1dARB -#define glMultiTexCoord1dvARB __rglgen_glMultiTexCoord1dvARB -#define glMultiTexCoord1fARB __rglgen_glMultiTexCoord1fARB -#define glMultiTexCoord1fvARB __rglgen_glMultiTexCoord1fvARB -#define glMultiTexCoord1iARB __rglgen_glMultiTexCoord1iARB -#define glMultiTexCoord1ivARB __rglgen_glMultiTexCoord1ivARB -#define glMultiTexCoord1sARB __rglgen_glMultiTexCoord1sARB -#define glMultiTexCoord1svARB __rglgen_glMultiTexCoord1svARB -#define glMultiTexCoord2dARB __rglgen_glMultiTexCoord2dARB -#define glMultiTexCoord2dvARB __rglgen_glMultiTexCoord2dvARB -#define glMultiTexCoord2fARB __rglgen_glMultiTexCoord2fARB -#define glMultiTexCoord2fvARB __rglgen_glMultiTexCoord2fvARB -#define glMultiTexCoord2iARB __rglgen_glMultiTexCoord2iARB -#define glMultiTexCoord2ivARB __rglgen_glMultiTexCoord2ivARB -#define glMultiTexCoord2sARB __rglgen_glMultiTexCoord2sARB -#define glMultiTexCoord2svARB __rglgen_glMultiTexCoord2svARB -#define glMultiTexCoord3dARB __rglgen_glMultiTexCoord3dARB -#define glMultiTexCoord3dvARB __rglgen_glMultiTexCoord3dvARB -#define glMultiTexCoord3fARB __rglgen_glMultiTexCoord3fARB -#define glMultiTexCoord3fvARB __rglgen_glMultiTexCoord3fvARB -#define glMultiTexCoord3iARB __rglgen_glMultiTexCoord3iARB -#define glMultiTexCoord3ivARB __rglgen_glMultiTexCoord3ivARB -#define glMultiTexCoord3sARB __rglgen_glMultiTexCoord3sARB -#define glMultiTexCoord3svARB __rglgen_glMultiTexCoord3svARB -#define glMultiTexCoord4dARB __rglgen_glMultiTexCoord4dARB -#define glMultiTexCoord4dvARB __rglgen_glMultiTexCoord4dvARB -#define glMultiTexCoord4fARB __rglgen_glMultiTexCoord4fARB -#define glMultiTexCoord4fvARB __rglgen_glMultiTexCoord4fvARB -#define glMultiTexCoord4iARB __rglgen_glMultiTexCoord4iARB -#define glMultiTexCoord4ivARB __rglgen_glMultiTexCoord4ivARB -#define glMultiTexCoord4sARB __rglgen_glMultiTexCoord4sARB -#define glMultiTexCoord4svARB __rglgen_glMultiTexCoord4svARB -#define glLoadTransposeMatrixfARB __rglgen_glLoadTransposeMatrixfARB -#define glLoadTransposeMatrixdARB __rglgen_glLoadTransposeMatrixdARB -#define glMultTransposeMatrixfARB __rglgen_glMultTransposeMatrixfARB -#define glMultTransposeMatrixdARB __rglgen_glMultTransposeMatrixdARB -#define glSampleCoverageARB __rglgen_glSampleCoverageARB -#define glCompressedTexImage3DARB __rglgen_glCompressedTexImage3DARB -#define glCompressedTexImage2DARB __rglgen_glCompressedTexImage2DARB -#define glCompressedTexImage1DARB __rglgen_glCompressedTexImage1DARB -#define glCompressedTexSubImage3DARB __rglgen_glCompressedTexSubImage3DARB -#define glCompressedTexSubImage2DARB __rglgen_glCompressedTexSubImage2DARB -#define glCompressedTexSubImage1DARB __rglgen_glCompressedTexSubImage1DARB -#define glGetCompressedTexImageARB __rglgen_glGetCompressedTexImageARB -#define glPointParameterfARB __rglgen_glPointParameterfARB -#define glPointParameterfvARB __rglgen_glPointParameterfvARB -#define glWeightbvARB __rglgen_glWeightbvARB -#define glWeightsvARB __rglgen_glWeightsvARB -#define glWeightivARB __rglgen_glWeightivARB -#define glWeightfvARB __rglgen_glWeightfvARB -#define glWeightdvARB __rglgen_glWeightdvARB -#define glWeightubvARB __rglgen_glWeightubvARB -#define glWeightusvARB __rglgen_glWeightusvARB -#define glWeightuivARB __rglgen_glWeightuivARB -#define glWeightPointerARB __rglgen_glWeightPointerARB -#define glVertexBlendARB __rglgen_glVertexBlendARB -#define glCurrentPaletteMatrixARB __rglgen_glCurrentPaletteMatrixARB -#define glMatrixIndexubvARB __rglgen_glMatrixIndexubvARB -#define glMatrixIndexusvARB __rglgen_glMatrixIndexusvARB -#define glMatrixIndexuivARB __rglgen_glMatrixIndexuivARB -#define glMatrixIndexPointerARB __rglgen_glMatrixIndexPointerARB -#define glWindowPos2dARB __rglgen_glWindowPos2dARB -#define glWindowPos2dvARB __rglgen_glWindowPos2dvARB -#define glWindowPos2fARB __rglgen_glWindowPos2fARB -#define glWindowPos2fvARB __rglgen_glWindowPos2fvARB -#define glWindowPos2iARB __rglgen_glWindowPos2iARB -#define glWindowPos2ivARB __rglgen_glWindowPos2ivARB -#define glWindowPos2sARB __rglgen_glWindowPos2sARB -#define glWindowPos2svARB __rglgen_glWindowPos2svARB -#define glWindowPos3dARB __rglgen_glWindowPos3dARB -#define glWindowPos3dvARB __rglgen_glWindowPos3dvARB -#define glWindowPos3fARB __rglgen_glWindowPos3fARB -#define glWindowPos3fvARB __rglgen_glWindowPos3fvARB -#define glWindowPos3iARB __rglgen_glWindowPos3iARB -#define glWindowPos3ivARB __rglgen_glWindowPos3ivARB -#define glWindowPos3sARB __rglgen_glWindowPos3sARB -#define glWindowPos3svARB __rglgen_glWindowPos3svARB -#define glVertexAttrib1dARB __rglgen_glVertexAttrib1dARB -#define glVertexAttrib1dvARB __rglgen_glVertexAttrib1dvARB -#define glVertexAttrib1fARB __rglgen_glVertexAttrib1fARB -#define glVertexAttrib1fvARB __rglgen_glVertexAttrib1fvARB -#define glVertexAttrib1sARB __rglgen_glVertexAttrib1sARB -#define glVertexAttrib1svARB __rglgen_glVertexAttrib1svARB -#define glVertexAttrib2dARB __rglgen_glVertexAttrib2dARB -#define glVertexAttrib2dvARB __rglgen_glVertexAttrib2dvARB -#define glVertexAttrib2fARB __rglgen_glVertexAttrib2fARB -#define glVertexAttrib2fvARB __rglgen_glVertexAttrib2fvARB -#define glVertexAttrib2sARB __rglgen_glVertexAttrib2sARB -#define glVertexAttrib2svARB __rglgen_glVertexAttrib2svARB -#define glVertexAttrib3dARB __rglgen_glVertexAttrib3dARB -#define glVertexAttrib3dvARB __rglgen_glVertexAttrib3dvARB -#define glVertexAttrib3fARB __rglgen_glVertexAttrib3fARB -#define glVertexAttrib3fvARB __rglgen_glVertexAttrib3fvARB -#define glVertexAttrib3sARB __rglgen_glVertexAttrib3sARB -#define glVertexAttrib3svARB __rglgen_glVertexAttrib3svARB -#define glVertexAttrib4NbvARB __rglgen_glVertexAttrib4NbvARB -#define glVertexAttrib4NivARB __rglgen_glVertexAttrib4NivARB -#define glVertexAttrib4NsvARB __rglgen_glVertexAttrib4NsvARB -#define glVertexAttrib4NubARB __rglgen_glVertexAttrib4NubARB -#define glVertexAttrib4NubvARB __rglgen_glVertexAttrib4NubvARB -#define glVertexAttrib4NuivARB __rglgen_glVertexAttrib4NuivARB -#define glVertexAttrib4NusvARB __rglgen_glVertexAttrib4NusvARB -#define glVertexAttrib4bvARB __rglgen_glVertexAttrib4bvARB -#define glVertexAttrib4dARB __rglgen_glVertexAttrib4dARB -#define glVertexAttrib4dvARB __rglgen_glVertexAttrib4dvARB -#define glVertexAttrib4fARB __rglgen_glVertexAttrib4fARB -#define glVertexAttrib4fvARB __rglgen_glVertexAttrib4fvARB -#define glVertexAttrib4ivARB __rglgen_glVertexAttrib4ivARB -#define glVertexAttrib4sARB __rglgen_glVertexAttrib4sARB -#define glVertexAttrib4svARB __rglgen_glVertexAttrib4svARB -#define glVertexAttrib4ubvARB __rglgen_glVertexAttrib4ubvARB -#define glVertexAttrib4uivARB __rglgen_glVertexAttrib4uivARB -#define glVertexAttrib4usvARB __rglgen_glVertexAttrib4usvARB -#define glVertexAttribPointerARB __rglgen_glVertexAttribPointerARB -#define glEnableVertexAttribArrayARB __rglgen_glEnableVertexAttribArrayARB -#define glDisableVertexAttribArrayARB __rglgen_glDisableVertexAttribArrayARB -#define glProgramStringARB __rglgen_glProgramStringARB -#define glBindProgramARB __rglgen_glBindProgramARB -#define glDeleteProgramsARB __rglgen_glDeleteProgramsARB -#define glGenProgramsARB __rglgen_glGenProgramsARB -#define glProgramEnvParameter4dARB __rglgen_glProgramEnvParameter4dARB -#define glProgramEnvParameter4dvARB __rglgen_glProgramEnvParameter4dvARB -#define glProgramEnvParameter4fARB __rglgen_glProgramEnvParameter4fARB -#define glProgramEnvParameter4fvARB __rglgen_glProgramEnvParameter4fvARB -#define glProgramLocalParameter4dARB __rglgen_glProgramLocalParameter4dARB -#define glProgramLocalParameter4dvARB __rglgen_glProgramLocalParameter4dvARB -#define glProgramLocalParameter4fARB __rglgen_glProgramLocalParameter4fARB -#define glProgramLocalParameter4fvARB __rglgen_glProgramLocalParameter4fvARB -#define glGetProgramEnvParameterdvARB __rglgen_glGetProgramEnvParameterdvARB -#define glGetProgramEnvParameterfvARB __rglgen_glGetProgramEnvParameterfvARB -#define glGetProgramLocalParameterdvARB __rglgen_glGetProgramLocalParameterdvARB -#define glGetProgramLocalParameterfvARB __rglgen_glGetProgramLocalParameterfvARB -#define glGetProgramivARB __rglgen_glGetProgramivARB -#define glGetProgramStringARB __rglgen_glGetProgramStringARB -#define glGetVertexAttribdvARB __rglgen_glGetVertexAttribdvARB -#define glGetVertexAttribfvARB __rglgen_glGetVertexAttribfvARB -#define glGetVertexAttribivARB __rglgen_glGetVertexAttribivARB -#define glGetVertexAttribPointervARB __rglgen_glGetVertexAttribPointervARB -#define glIsProgramARB __rglgen_glIsProgramARB -#define glBindBufferARB __rglgen_glBindBufferARB -#define glDeleteBuffersARB __rglgen_glDeleteBuffersARB -#define glGenBuffersARB __rglgen_glGenBuffersARB -#define glIsBufferARB __rglgen_glIsBufferARB -#define glBufferDataARB __rglgen_glBufferDataARB -#define glBufferSubDataARB __rglgen_glBufferSubDataARB -#define glGetBufferSubDataARB __rglgen_glGetBufferSubDataARB -#define glMapBufferARB __rglgen_glMapBufferARB -#define glUnmapBufferARB __rglgen_glUnmapBufferARB -#define glGetBufferParameterivARB __rglgen_glGetBufferParameterivARB -#define glGetBufferPointervARB __rglgen_glGetBufferPointervARB -#define glGenQueriesARB __rglgen_glGenQueriesARB -#define glDeleteQueriesARB __rglgen_glDeleteQueriesARB -#define glIsQueryARB __rglgen_glIsQueryARB -#define glBeginQueryARB __rglgen_glBeginQueryARB -#define glEndQueryARB __rglgen_glEndQueryARB -#define glGetQueryivARB __rglgen_glGetQueryivARB -#define glGetQueryObjectivARB __rglgen_glGetQueryObjectivARB -#define glGetQueryObjectuivARB __rglgen_glGetQueryObjectuivARB -#define glDeleteObjectARB __rglgen_glDeleteObjectARB -#define glGetHandleARB __rglgen_glGetHandleARB -#define glDetachObjectARB __rglgen_glDetachObjectARB -#define glCreateShaderObjectARB __rglgen_glCreateShaderObjectARB -#define glShaderSourceARB __rglgen_glShaderSourceARB -#define glCompileShaderARB __rglgen_glCompileShaderARB -#define glCreateProgramObjectARB __rglgen_glCreateProgramObjectARB -#define glAttachObjectARB __rglgen_glAttachObjectARB -#define glLinkProgramARB __rglgen_glLinkProgramARB -#define glUseProgramObjectARB __rglgen_glUseProgramObjectARB -#define glValidateProgramARB __rglgen_glValidateProgramARB -#define glUniform1fARB __rglgen_glUniform1fARB -#define glUniform2fARB __rglgen_glUniform2fARB -#define glUniform3fARB __rglgen_glUniform3fARB -#define glUniform4fARB __rglgen_glUniform4fARB -#define glUniform1iARB __rglgen_glUniform1iARB -#define glUniform2iARB __rglgen_glUniform2iARB -#define glUniform3iARB __rglgen_glUniform3iARB -#define glUniform4iARB __rglgen_glUniform4iARB -#define glUniform1fvARB __rglgen_glUniform1fvARB -#define glUniform2fvARB __rglgen_glUniform2fvARB -#define glUniform3fvARB __rglgen_glUniform3fvARB -#define glUniform4fvARB __rglgen_glUniform4fvARB -#define glUniform1ivARB __rglgen_glUniform1ivARB -#define glUniform2ivARB __rglgen_glUniform2ivARB -#define glUniform3ivARB __rglgen_glUniform3ivARB -#define glUniform4ivARB __rglgen_glUniform4ivARB -#define glUniformMatrix2fvARB __rglgen_glUniformMatrix2fvARB -#define glUniformMatrix3fvARB __rglgen_glUniformMatrix3fvARB -#define glUniformMatrix4fvARB __rglgen_glUniformMatrix4fvARB -#define glGetObjectParameterfvARB __rglgen_glGetObjectParameterfvARB -#define glGetObjectParameterivARB __rglgen_glGetObjectParameterivARB -#define glGetInfoLogARB __rglgen_glGetInfoLogARB -#define glGetAttachedObjectsARB __rglgen_glGetAttachedObjectsARB -#define glGetUniformLocationARB __rglgen_glGetUniformLocationARB -#define glGetActiveUniformARB __rglgen_glGetActiveUniformARB -#define glGetUniformfvARB __rglgen_glGetUniformfvARB -#define glGetUniformivARB __rglgen_glGetUniformivARB -#define glGetShaderSourceARB __rglgen_glGetShaderSourceARB -#define glBindAttribLocationARB __rglgen_glBindAttribLocationARB -#define glGetActiveAttribARB __rglgen_glGetActiveAttribARB -#define glGetAttribLocationARB __rglgen_glGetAttribLocationARB -#define glDrawBuffersARB __rglgen_glDrawBuffersARB -#define glClampColorARB __rglgen_glClampColorARB -#define glDrawArraysInstancedARB __rglgen_glDrawArraysInstancedARB -#define glDrawElementsInstancedARB __rglgen_glDrawElementsInstancedARB -#define glIsRenderbuffer __rglgen_glIsRenderbuffer -#define glBindRenderbuffer __rglgen_glBindRenderbuffer -#define glDeleteRenderbuffers __rglgen_glDeleteRenderbuffers -#define glGenRenderbuffers __rglgen_glGenRenderbuffers -#define glRenderbufferStorage __rglgen_glRenderbufferStorage -#define glGetRenderbufferParameteriv __rglgen_glGetRenderbufferParameteriv -#define glIsFramebuffer __rglgen_glIsFramebuffer -#define glBindFramebuffer __rglgen_glBindFramebuffer -#define glDeleteFramebuffers __rglgen_glDeleteFramebuffers -#define glGenFramebuffers __rglgen_glGenFramebuffers -#define glCheckFramebufferStatus __rglgen_glCheckFramebufferStatus -#define glFramebufferTexture1D __rglgen_glFramebufferTexture1D -#define glFramebufferTexture2D __rglgen_glFramebufferTexture2D -#define glFramebufferTexture3D __rglgen_glFramebufferTexture3D -#define glFramebufferRenderbuffer __rglgen_glFramebufferRenderbuffer -#define glGetFramebufferAttachmentParameteriv __rglgen_glGetFramebufferAttachmentParameteriv -#define glGenerateMipmap __rglgen_glGenerateMipmap -#define glBlitFramebuffer __rglgen_glBlitFramebuffer -#define glRenderbufferStorageMultisample __rglgen_glRenderbufferStorageMultisample -#define glFramebufferTextureLayer __rglgen_glFramebufferTextureLayer -#define glProgramParameteriARB __rglgen_glProgramParameteriARB -#define glFramebufferTextureARB __rglgen_glFramebufferTextureARB -#define glFramebufferTextureLayerARB __rglgen_glFramebufferTextureLayerARB -#define glFramebufferTextureFaceARB __rglgen_glFramebufferTextureFaceARB -#define glVertexAttribDivisorARB __rglgen_glVertexAttribDivisorARB -#define glMapBufferRange __rglgen_glMapBufferRange -#define glFlushMappedBufferRange __rglgen_glFlushMappedBufferRange -#define glTexBufferARB __rglgen_glTexBufferARB -#define glBindVertexArray __rglgen_glBindVertexArray -#define glDeleteVertexArrays __rglgen_glDeleteVertexArrays -#define glGenVertexArrays __rglgen_glGenVertexArrays -#define glIsVertexArray __rglgen_glIsVertexArray -#define glGetUniformIndices __rglgen_glGetUniformIndices -#define glGetActiveUniformsiv __rglgen_glGetActiveUniformsiv -#define glGetActiveUniformName __rglgen_glGetActiveUniformName -#define glGetUniformBlockIndex __rglgen_glGetUniformBlockIndex -#define glGetActiveUniformBlockiv __rglgen_glGetActiveUniformBlockiv -#define glGetActiveUniformBlockName __rglgen_glGetActiveUniformBlockName -#define glUniformBlockBinding __rglgen_glUniformBlockBinding -#define glCopyBufferSubData __rglgen_glCopyBufferSubData -#define glDrawElementsBaseVertex __rglgen_glDrawElementsBaseVertex -#define glDrawRangeElementsBaseVertex __rglgen_glDrawRangeElementsBaseVertex -#define glDrawElementsInstancedBaseVertex __rglgen_glDrawElementsInstancedBaseVertex -#define glMultiDrawElementsBaseVertex __rglgen_glMultiDrawElementsBaseVertex -#define glProvokingVertex __rglgen_glProvokingVertex -#define glFenceSync __rglgen_glFenceSync -#define glIsSync __rglgen_glIsSync -#define glDeleteSync __rglgen_glDeleteSync -#define glClientWaitSync __rglgen_glClientWaitSync -#define glWaitSync __rglgen_glWaitSync -#define glGetInteger64v __rglgen_glGetInteger64v -#define glGetSynciv __rglgen_glGetSynciv -#define glTexImage2DMultisample __rglgen_glTexImage2DMultisample -#define glTexImage3DMultisample __rglgen_glTexImage3DMultisample -#define glGetMultisamplefv __rglgen_glGetMultisamplefv -#define glSampleMaski __rglgen_glSampleMaski -#define glBlendEquationiARB __rglgen_glBlendEquationiARB -#define glBlendEquationSeparateiARB __rglgen_glBlendEquationSeparateiARB -#define glBlendFunciARB __rglgen_glBlendFunciARB -#define glBlendFuncSeparateiARB __rglgen_glBlendFuncSeparateiARB -#define glMinSampleShadingARB __rglgen_glMinSampleShadingARB -#define glNamedStringARB __rglgen_glNamedStringARB -#define glDeleteNamedStringARB __rglgen_glDeleteNamedStringARB -#define glCompileShaderIncludeARB __rglgen_glCompileShaderIncludeARB -#define glIsNamedStringARB __rglgen_glIsNamedStringARB -#define glGetNamedStringARB __rglgen_glGetNamedStringARB -#define glGetNamedStringivARB __rglgen_glGetNamedStringivARB -#define glBindFragDataLocationIndexed __rglgen_glBindFragDataLocationIndexed -#define glGetFragDataIndex __rglgen_glGetFragDataIndex -#define glGenSamplers __rglgen_glGenSamplers -#define glDeleteSamplers __rglgen_glDeleteSamplers -#define glIsSampler __rglgen_glIsSampler -#define glBindSampler __rglgen_glBindSampler -#define glSamplerParameteri __rglgen_glSamplerParameteri -#define glSamplerParameteriv __rglgen_glSamplerParameteriv -#define glSamplerParameterf __rglgen_glSamplerParameterf -#define glSamplerParameterfv __rglgen_glSamplerParameterfv -#define glSamplerParameterIiv __rglgen_glSamplerParameterIiv -#define glSamplerParameterIuiv __rglgen_glSamplerParameterIuiv -#define glGetSamplerParameteriv __rglgen_glGetSamplerParameteriv -#define glGetSamplerParameterIiv __rglgen_glGetSamplerParameterIiv -#define glGetSamplerParameterfv __rglgen_glGetSamplerParameterfv -#define glGetSamplerParameterIuiv __rglgen_glGetSamplerParameterIuiv -#define glQueryCounter __rglgen_glQueryCounter -#define glGetQueryObjecti64v __rglgen_glGetQueryObjecti64v -#define glGetQueryObjectui64v __rglgen_glGetQueryObjectui64v -#define glVertexP2ui __rglgen_glVertexP2ui -#define glVertexP2uiv __rglgen_glVertexP2uiv -#define glVertexP3ui __rglgen_glVertexP3ui -#define glVertexP3uiv __rglgen_glVertexP3uiv -#define glVertexP4ui __rglgen_glVertexP4ui -#define glVertexP4uiv __rglgen_glVertexP4uiv -#define glTexCoordP1ui __rglgen_glTexCoordP1ui -#define glTexCoordP1uiv __rglgen_glTexCoordP1uiv -#define glTexCoordP2ui __rglgen_glTexCoordP2ui -#define glTexCoordP2uiv __rglgen_glTexCoordP2uiv -#define glTexCoordP3ui __rglgen_glTexCoordP3ui -#define glTexCoordP3uiv __rglgen_glTexCoordP3uiv -#define glTexCoordP4ui __rglgen_glTexCoordP4ui -#define glTexCoordP4uiv __rglgen_glTexCoordP4uiv -#define glMultiTexCoordP1ui __rglgen_glMultiTexCoordP1ui -#define glMultiTexCoordP1uiv __rglgen_glMultiTexCoordP1uiv -#define glMultiTexCoordP2ui __rglgen_glMultiTexCoordP2ui -#define glMultiTexCoordP2uiv __rglgen_glMultiTexCoordP2uiv -#define glMultiTexCoordP3ui __rglgen_glMultiTexCoordP3ui -#define glMultiTexCoordP3uiv __rglgen_glMultiTexCoordP3uiv -#define glMultiTexCoordP4ui __rglgen_glMultiTexCoordP4ui -#define glMultiTexCoordP4uiv __rglgen_glMultiTexCoordP4uiv -#define glNormalP3ui __rglgen_glNormalP3ui -#define glNormalP3uiv __rglgen_glNormalP3uiv -#define glColorP3ui __rglgen_glColorP3ui -#define glColorP3uiv __rglgen_glColorP3uiv -#define glColorP4ui __rglgen_glColorP4ui -#define glColorP4uiv __rglgen_glColorP4uiv -#define glSecondaryColorP3ui __rglgen_glSecondaryColorP3ui -#define glSecondaryColorP3uiv __rglgen_glSecondaryColorP3uiv -#define glVertexAttribP1ui __rglgen_glVertexAttribP1ui -#define glVertexAttribP1uiv __rglgen_glVertexAttribP1uiv -#define glVertexAttribP2ui __rglgen_glVertexAttribP2ui -#define glVertexAttribP2uiv __rglgen_glVertexAttribP2uiv -#define glVertexAttribP3ui __rglgen_glVertexAttribP3ui -#define glVertexAttribP3uiv __rglgen_glVertexAttribP3uiv -#define glVertexAttribP4ui __rglgen_glVertexAttribP4ui -#define glVertexAttribP4uiv __rglgen_glVertexAttribP4uiv -#define glDrawArraysIndirect __rglgen_glDrawArraysIndirect -#define glDrawElementsIndirect __rglgen_glDrawElementsIndirect -#define glUniform1d __rglgen_glUniform1d -#define glUniform2d __rglgen_glUniform2d -#define glUniform3d __rglgen_glUniform3d -#define glUniform4d __rglgen_glUniform4d -#define glUniform1dv __rglgen_glUniform1dv -#define glUniform2dv __rglgen_glUniform2dv -#define glUniform3dv __rglgen_glUniform3dv -#define glUniform4dv __rglgen_glUniform4dv -#define glUniformMatrix2dv __rglgen_glUniformMatrix2dv -#define glUniformMatrix3dv __rglgen_glUniformMatrix3dv -#define glUniformMatrix4dv __rglgen_glUniformMatrix4dv -#define glUniformMatrix2x3dv __rglgen_glUniformMatrix2x3dv -#define glUniformMatrix2x4dv __rglgen_glUniformMatrix2x4dv -#define glUniformMatrix3x2dv __rglgen_glUniformMatrix3x2dv -#define glUniformMatrix3x4dv __rglgen_glUniformMatrix3x4dv -#define glUniformMatrix4x2dv __rglgen_glUniformMatrix4x2dv -#define glUniformMatrix4x3dv __rglgen_glUniformMatrix4x3dv -#define glGetUniformdv __rglgen_glGetUniformdv -#define glGetSubroutineUniformLocation __rglgen_glGetSubroutineUniformLocation -#define glGetSubroutineIndex __rglgen_glGetSubroutineIndex -#define glGetActiveSubroutineUniformiv __rglgen_glGetActiveSubroutineUniformiv -#define glGetActiveSubroutineUniformName __rglgen_glGetActiveSubroutineUniformName -#define glGetActiveSubroutineName __rglgen_glGetActiveSubroutineName -#define glUniformSubroutinesuiv __rglgen_glUniformSubroutinesuiv -#define glGetUniformSubroutineuiv __rglgen_glGetUniformSubroutineuiv -#define glGetProgramStageiv __rglgen_glGetProgramStageiv -#define glPatchParameteri __rglgen_glPatchParameteri -#define glPatchParameterfv __rglgen_glPatchParameterfv -#define glBindTransformFeedback __rglgen_glBindTransformFeedback -#define glDeleteTransformFeedbacks __rglgen_glDeleteTransformFeedbacks -#define glGenTransformFeedbacks __rglgen_glGenTransformFeedbacks -#define glIsTransformFeedback __rglgen_glIsTransformFeedback -#define glPauseTransformFeedback __rglgen_glPauseTransformFeedback -#define glResumeTransformFeedback __rglgen_glResumeTransformFeedback -#define glDrawTransformFeedback __rglgen_glDrawTransformFeedback -#define glDrawTransformFeedbackStream __rglgen_glDrawTransformFeedbackStream -#define glBeginQueryIndexed __rglgen_glBeginQueryIndexed -#define glEndQueryIndexed __rglgen_glEndQueryIndexed -#define glGetQueryIndexediv __rglgen_glGetQueryIndexediv -#define glReleaseShaderCompiler __rglgen_glReleaseShaderCompiler -#define glShaderBinary __rglgen_glShaderBinary -#define glGetShaderPrecisionFormat __rglgen_glGetShaderPrecisionFormat -#define glDepthRangef __rglgen_glDepthRangef -#define glClearDepthf __rglgen_glClearDepthf -#define glGetProgramBinary __rglgen_glGetProgramBinary -#define glProgramBinary __rglgen_glProgramBinary -#define glProgramParameteri __rglgen_glProgramParameteri -#define glUseProgramStages __rglgen_glUseProgramStages -#define glActiveShaderProgram __rglgen_glActiveShaderProgram -#define glCreateShaderProgramv __rglgen_glCreateShaderProgramv -#define glBindProgramPipeline __rglgen_glBindProgramPipeline -#define glDeleteProgramPipelines __rglgen_glDeleteProgramPipelines -#define glGenProgramPipelines __rglgen_glGenProgramPipelines -#define glIsProgramPipeline __rglgen_glIsProgramPipeline -#define glGetProgramPipelineiv __rglgen_glGetProgramPipelineiv -#define glProgramUniform1i __rglgen_glProgramUniform1i -#define glProgramUniform1iv __rglgen_glProgramUniform1iv -#define glProgramUniform1f __rglgen_glProgramUniform1f -#define glProgramUniform1fv __rglgen_glProgramUniform1fv -#define glProgramUniform1d __rglgen_glProgramUniform1d -#define glProgramUniform1dv __rglgen_glProgramUniform1dv -#define glProgramUniform1ui __rglgen_glProgramUniform1ui -#define glProgramUniform1uiv __rglgen_glProgramUniform1uiv -#define glProgramUniform2i __rglgen_glProgramUniform2i -#define glProgramUniform2iv __rglgen_glProgramUniform2iv -#define glProgramUniform2f __rglgen_glProgramUniform2f -#define glProgramUniform2fv __rglgen_glProgramUniform2fv -#define glProgramUniform2d __rglgen_glProgramUniform2d -#define glProgramUniform2dv __rglgen_glProgramUniform2dv -#define glProgramUniform2ui __rglgen_glProgramUniform2ui -#define glProgramUniform2uiv __rglgen_glProgramUniform2uiv -#define glProgramUniform3i __rglgen_glProgramUniform3i -#define glProgramUniform3iv __rglgen_glProgramUniform3iv -#define glProgramUniform3f __rglgen_glProgramUniform3f -#define glProgramUniform3fv __rglgen_glProgramUniform3fv -#define glProgramUniform3d __rglgen_glProgramUniform3d -#define glProgramUniform3dv __rglgen_glProgramUniform3dv -#define glProgramUniform3ui __rglgen_glProgramUniform3ui -#define glProgramUniform3uiv __rglgen_glProgramUniform3uiv -#define glProgramUniform4i __rglgen_glProgramUniform4i -#define glProgramUniform4iv __rglgen_glProgramUniform4iv -#define glProgramUniform4f __rglgen_glProgramUniform4f -#define glProgramUniform4fv __rglgen_glProgramUniform4fv -#define glProgramUniform4d __rglgen_glProgramUniform4d -#define glProgramUniform4dv __rglgen_glProgramUniform4dv -#define glProgramUniform4ui __rglgen_glProgramUniform4ui -#define glProgramUniform4uiv __rglgen_glProgramUniform4uiv -#define glProgramUniformMatrix2fv __rglgen_glProgramUniformMatrix2fv -#define glProgramUniformMatrix3fv __rglgen_glProgramUniformMatrix3fv -#define glProgramUniformMatrix4fv __rglgen_glProgramUniformMatrix4fv -#define glProgramUniformMatrix2dv __rglgen_glProgramUniformMatrix2dv -#define glProgramUniformMatrix3dv __rglgen_glProgramUniformMatrix3dv -#define glProgramUniformMatrix4dv __rglgen_glProgramUniformMatrix4dv -#define glProgramUniformMatrix2x3fv __rglgen_glProgramUniformMatrix2x3fv -#define glProgramUniformMatrix3x2fv __rglgen_glProgramUniformMatrix3x2fv -#define glProgramUniformMatrix2x4fv __rglgen_glProgramUniformMatrix2x4fv -#define glProgramUniformMatrix4x2fv __rglgen_glProgramUniformMatrix4x2fv -#define glProgramUniformMatrix3x4fv __rglgen_glProgramUniformMatrix3x4fv -#define glProgramUniformMatrix4x3fv __rglgen_glProgramUniformMatrix4x3fv -#define glProgramUniformMatrix2x3dv __rglgen_glProgramUniformMatrix2x3dv -#define glProgramUniformMatrix3x2dv __rglgen_glProgramUniformMatrix3x2dv -#define glProgramUniformMatrix2x4dv __rglgen_glProgramUniformMatrix2x4dv -#define glProgramUniformMatrix4x2dv __rglgen_glProgramUniformMatrix4x2dv -#define glProgramUniformMatrix3x4dv __rglgen_glProgramUniformMatrix3x4dv -#define glProgramUniformMatrix4x3dv __rglgen_glProgramUniformMatrix4x3dv -#define glValidateProgramPipeline __rglgen_glValidateProgramPipeline -#define glGetProgramPipelineInfoLog __rglgen_glGetProgramPipelineInfoLog -#define glVertexAttribL1d __rglgen_glVertexAttribL1d -#define glVertexAttribL2d __rglgen_glVertexAttribL2d -#define glVertexAttribL3d __rglgen_glVertexAttribL3d -#define glVertexAttribL4d __rglgen_glVertexAttribL4d -#define glVertexAttribL1dv __rglgen_glVertexAttribL1dv -#define glVertexAttribL2dv __rglgen_glVertexAttribL2dv -#define glVertexAttribL3dv __rglgen_glVertexAttribL3dv -#define glVertexAttribL4dv __rglgen_glVertexAttribL4dv -#define glVertexAttribLPointer __rglgen_glVertexAttribLPointer -#define glGetVertexAttribLdv __rglgen_glGetVertexAttribLdv -#define glViewportArrayv __rglgen_glViewportArrayv -#define glViewportIndexedf __rglgen_glViewportIndexedf -#define glViewportIndexedfv __rglgen_glViewportIndexedfv -#define glScissorArrayv __rglgen_glScissorArrayv -#define glScissorIndexed __rglgen_glScissorIndexed -#define glScissorIndexedv __rglgen_glScissorIndexedv -#define glDepthRangeArrayv __rglgen_glDepthRangeArrayv -#define glDepthRangeIndexed __rglgen_glDepthRangeIndexed -#define glGetFloati_v __rglgen_glGetFloati_v -#define glGetDoublei_v __rglgen_glGetDoublei_v -#define glCreateSyncFromCLeventARB __rglgen_glCreateSyncFromCLeventARB -#define glDebugMessageControlARB __rglgen_glDebugMessageControlARB -#define glDebugMessageInsertARB __rglgen_glDebugMessageInsertARB -#define glDebugMessageCallbackARB __rglgen_glDebugMessageCallbackARB -#define glGetDebugMessageLogARB __rglgen_glGetDebugMessageLogARB -#define glGetGraphicsResetStatusARB __rglgen_glGetGraphicsResetStatusARB -#define glGetnMapdvARB __rglgen_glGetnMapdvARB -#define glGetnMapfvARB __rglgen_glGetnMapfvARB -#define glGetnMapivARB __rglgen_glGetnMapivARB -#define glGetnPixelMapfvARB __rglgen_glGetnPixelMapfvARB -#define glGetnPixelMapuivARB __rglgen_glGetnPixelMapuivARB -#define glGetnPixelMapusvARB __rglgen_glGetnPixelMapusvARB -#define glGetnPolygonStippleARB __rglgen_glGetnPolygonStippleARB -#define glGetnColorTableARB __rglgen_glGetnColorTableARB -#define glGetnConvolutionFilterARB __rglgen_glGetnConvolutionFilterARB -#define glGetnSeparableFilterARB __rglgen_glGetnSeparableFilterARB -#define glGetnHistogramARB __rglgen_glGetnHistogramARB -#define glGetnMinmaxARB __rglgen_glGetnMinmaxARB -#define glGetnTexImageARB __rglgen_glGetnTexImageARB -#define glReadnPixelsARB __rglgen_glReadnPixelsARB -#define glGetnCompressedTexImageARB __rglgen_glGetnCompressedTexImageARB -#define glGetnUniformfvARB __rglgen_glGetnUniformfvARB -#define glGetnUniformivARB __rglgen_glGetnUniformivARB -#define glGetnUniformuivARB __rglgen_glGetnUniformuivARB -#define glGetnUniformdvARB __rglgen_glGetnUniformdvARB -#define glDrawArraysInstancedBaseInstance __rglgen_glDrawArraysInstancedBaseInstance -#define glDrawElementsInstancedBaseInstance __rglgen_glDrawElementsInstancedBaseInstance -#define glDrawElementsInstancedBaseVertexBaseInstance __rglgen_glDrawElementsInstancedBaseVertexBaseInstance -#define glDrawTransformFeedbackInstanced __rglgen_glDrawTransformFeedbackInstanced -#define glDrawTransformFeedbackStreamInstanced __rglgen_glDrawTransformFeedbackStreamInstanced -#define glGetInternalformativ __rglgen_glGetInternalformativ -#define glGetActiveAtomicCounterBufferiv __rglgen_glGetActiveAtomicCounterBufferiv -#define glBindImageTexture __rglgen_glBindImageTexture -#define glMemoryBarrier __rglgen_glMemoryBarrier -#define glTexStorage1D __rglgen_glTexStorage1D -#define glTexStorage2D __rglgen_glTexStorage2D -#define glTexStorage3D __rglgen_glTexStorage3D -#define glDebugMessageControl __rglgen_glDebugMessageControl -#define glDebugMessageInsert __rglgen_glDebugMessageInsert -#define glDebugMessageCallback __rglgen_glDebugMessageCallback -#define glGetDebugMessageLog __rglgen_glGetDebugMessageLog -#define glPushDebugGroup __rglgen_glPushDebugGroup -#define glPopDebugGroup __rglgen_glPopDebugGroup -#define glObjectLabel __rglgen_glObjectLabel -#define glGetObjectLabel __rglgen_glGetObjectLabel -#define glObjectPtrLabel __rglgen_glObjectPtrLabel -#define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel -#define glClearBufferData __rglgen_glClearBufferData -#define glClearBufferSubData __rglgen_glClearBufferSubData -#define glDispatchCompute __rglgen_glDispatchCompute -#define glDispatchComputeIndirect __rglgen_glDispatchComputeIndirect -#define glCopyImageSubData __rglgen_glCopyImageSubData -#define glTextureView __rglgen_glTextureView -#define glBindVertexBuffer __rglgen_glBindVertexBuffer -#define glVertexAttribFormat __rglgen_glVertexAttribFormat -#define glVertexAttribIFormat __rglgen_glVertexAttribIFormat -#define glVertexAttribLFormat __rglgen_glVertexAttribLFormat -#define glVertexAttribBinding __rglgen_glVertexAttribBinding -#define glVertexBindingDivisor __rglgen_glVertexBindingDivisor -#define glFramebufferParameteri __rglgen_glFramebufferParameteri -#define glGetFramebufferParameteriv __rglgen_glGetFramebufferParameteriv -#define glGetInternalformati64v __rglgen_glGetInternalformati64v -#define glInvalidateTexSubImage __rglgen_glInvalidateTexSubImage -#define glInvalidateTexImage __rglgen_glInvalidateTexImage -#define glInvalidateBufferSubData __rglgen_glInvalidateBufferSubData -#define glInvalidateBufferData __rglgen_glInvalidateBufferData -#define glInvalidateFramebuffer __rglgen_glInvalidateFramebuffer -#define glInvalidateSubFramebuffer __rglgen_glInvalidateSubFramebuffer -#define glMultiDrawArraysIndirect __rglgen_glMultiDrawArraysIndirect -#define glMultiDrawElementsIndirect __rglgen_glMultiDrawElementsIndirect -#define glGetProgramInterfaceiv __rglgen_glGetProgramInterfaceiv -#define glGetProgramResourceIndex __rglgen_glGetProgramResourceIndex -#define glGetProgramResourceName __rglgen_glGetProgramResourceName -#define glGetProgramResourceiv __rglgen_glGetProgramResourceiv -#define glGetProgramResourceLocation __rglgen_glGetProgramResourceLocation -#define glGetProgramResourceLocationIndex __rglgen_glGetProgramResourceLocationIndex -#define glShaderStorageBlockBinding __rglgen_glShaderStorageBlockBinding -#define glTexBufferRange __rglgen_glTexBufferRange -#define glTexStorage2DMultisample __rglgen_glTexStorage2DMultisample -#define glTexStorage3DMultisample __rglgen_glTexStorage3DMultisample -#define glImageTransformParameteriHP __rglgen_glImageTransformParameteriHP -#define glImageTransformParameterfHP __rglgen_glImageTransformParameterfHP -#define glImageTransformParameterivHP __rglgen_glImageTransformParameterivHP -#define glImageTransformParameterfvHP __rglgen_glImageTransformParameterfvHP -#define glGetImageTransformParameterivHP __rglgen_glGetImageTransformParameterivHP -#define glGetImageTransformParameterfvHP __rglgen_glGetImageTransformParameterfvHP - -extern RGLSYMGLBLENDCOLORPROC __rglgen_glBlendColor; -extern RGLSYMGLBLENDEQUATIONPROC __rglgen_glBlendEquation; -extern RGLSYMGLDRAWRANGEELEMENTSPROC __rglgen_glDrawRangeElements; -extern RGLSYMGLTEXIMAGE3DPROC __rglgen_glTexImage3D; -extern RGLSYMGLTEXSUBIMAGE3DPROC __rglgen_glTexSubImage3D; -extern RGLSYMGLCOPYTEXSUBIMAGE3DPROC __rglgen_glCopyTexSubImage3D; -extern RGLSYMGLCOLORTABLEPROC __rglgen_glColorTable; -extern RGLSYMGLCOLORTABLEPARAMETERFVPROC __rglgen_glColorTableParameterfv; -extern RGLSYMGLCOLORTABLEPARAMETERIVPROC __rglgen_glColorTableParameteriv; -extern RGLSYMGLCOPYCOLORTABLEPROC __rglgen_glCopyColorTable; -extern RGLSYMGLGETCOLORTABLEPROC __rglgen_glGetColorTable; -extern RGLSYMGLGETCOLORTABLEPARAMETERFVPROC __rglgen_glGetColorTableParameterfv; -extern RGLSYMGLGETCOLORTABLEPARAMETERIVPROC __rglgen_glGetColorTableParameteriv; -extern RGLSYMGLCOLORSUBTABLEPROC __rglgen_glColorSubTable; -extern RGLSYMGLCOPYCOLORSUBTABLEPROC __rglgen_glCopyColorSubTable; -extern RGLSYMGLCONVOLUTIONFILTER1DPROC __rglgen_glConvolutionFilter1D; -extern RGLSYMGLCONVOLUTIONFILTER2DPROC __rglgen_glConvolutionFilter2D; -extern RGLSYMGLCONVOLUTIONPARAMETERFPROC __rglgen_glConvolutionParameterf; -extern RGLSYMGLCONVOLUTIONPARAMETERFVPROC __rglgen_glConvolutionParameterfv; -extern RGLSYMGLCONVOLUTIONPARAMETERIPROC __rglgen_glConvolutionParameteri; -extern RGLSYMGLCONVOLUTIONPARAMETERIVPROC __rglgen_glConvolutionParameteriv; -extern RGLSYMGLCOPYCONVOLUTIONFILTER1DPROC __rglgen_glCopyConvolutionFilter1D; -extern RGLSYMGLCOPYCONVOLUTIONFILTER2DPROC __rglgen_glCopyConvolutionFilter2D; -extern RGLSYMGLGETCONVOLUTIONFILTERPROC __rglgen_glGetConvolutionFilter; -extern RGLSYMGLGETCONVOLUTIONPARAMETERFVPROC __rglgen_glGetConvolutionParameterfv; -extern RGLSYMGLGETCONVOLUTIONPARAMETERIVPROC __rglgen_glGetConvolutionParameteriv; -extern RGLSYMGLGETSEPARABLEFILTERPROC __rglgen_glGetSeparableFilter; -extern RGLSYMGLSEPARABLEFILTER2DPROC __rglgen_glSeparableFilter2D; -extern RGLSYMGLGETHISTOGRAMPROC __rglgen_glGetHistogram; -extern RGLSYMGLGETHISTOGRAMPARAMETERFVPROC __rglgen_glGetHistogramParameterfv; -extern RGLSYMGLGETHISTOGRAMPARAMETERIVPROC __rglgen_glGetHistogramParameteriv; -extern RGLSYMGLGETMINMAXPROC __rglgen_glGetMinmax; -extern RGLSYMGLGETMINMAXPARAMETERFVPROC __rglgen_glGetMinmaxParameterfv; -extern RGLSYMGLGETMINMAXPARAMETERIVPROC __rglgen_glGetMinmaxParameteriv; -extern RGLSYMGLHISTOGRAMPROC __rglgen_glHistogram; -extern RGLSYMGLMINMAXPROC __rglgen_glMinmax; -extern RGLSYMGLRESETHISTOGRAMPROC __rglgen_glResetHistogram; -extern RGLSYMGLRESETMINMAXPROC __rglgen_glResetMinmax; -extern RGLSYMGLACTIVETEXTUREPROC __rglgen_glActiveTexture; -extern RGLSYMGLSAMPLECOVERAGEPROC __rglgen_glSampleCoverage; -extern RGLSYMGLCOMPRESSEDTEXIMAGE3DPROC __rglgen_glCompressedTexImage3D; -extern RGLSYMGLCOMPRESSEDTEXIMAGE2DPROC __rglgen_glCompressedTexImage2D; -extern RGLSYMGLCOMPRESSEDTEXIMAGE1DPROC __rglgen_glCompressedTexImage1D; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DPROC __rglgen_glCompressedTexSubImage3D; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DPROC __rglgen_glCompressedTexSubImage2D; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DPROC __rglgen_glCompressedTexSubImage1D; -extern RGLSYMGLGETCOMPRESSEDTEXIMAGEPROC __rglgen_glGetCompressedTexImage; -extern RGLSYMGLCLIENTACTIVETEXTUREPROC __rglgen_glClientActiveTexture; -extern RGLSYMGLMULTITEXCOORD1DPROC __rglgen_glMultiTexCoord1d; -extern RGLSYMGLMULTITEXCOORD1DVPROC __rglgen_glMultiTexCoord1dv; -extern RGLSYMGLMULTITEXCOORD1FPROC __rglgen_glMultiTexCoord1f; -extern RGLSYMGLMULTITEXCOORD1FVPROC __rglgen_glMultiTexCoord1fv; -extern RGLSYMGLMULTITEXCOORD1IPROC __rglgen_glMultiTexCoord1i; -extern RGLSYMGLMULTITEXCOORD1IVPROC __rglgen_glMultiTexCoord1iv; -extern RGLSYMGLMULTITEXCOORD1SPROC __rglgen_glMultiTexCoord1s; -extern RGLSYMGLMULTITEXCOORD1SVPROC __rglgen_glMultiTexCoord1sv; -extern RGLSYMGLMULTITEXCOORD2DPROC __rglgen_glMultiTexCoord2d; -extern RGLSYMGLMULTITEXCOORD2DVPROC __rglgen_glMultiTexCoord2dv; -extern RGLSYMGLMULTITEXCOORD2FPROC __rglgen_glMultiTexCoord2f; -extern RGLSYMGLMULTITEXCOORD2FVPROC __rglgen_glMultiTexCoord2fv; -extern RGLSYMGLMULTITEXCOORD2IPROC __rglgen_glMultiTexCoord2i; -extern RGLSYMGLMULTITEXCOORD2IVPROC __rglgen_glMultiTexCoord2iv; -extern RGLSYMGLMULTITEXCOORD2SPROC __rglgen_glMultiTexCoord2s; -extern RGLSYMGLMULTITEXCOORD2SVPROC __rglgen_glMultiTexCoord2sv; -extern RGLSYMGLMULTITEXCOORD3DPROC __rglgen_glMultiTexCoord3d; -extern RGLSYMGLMULTITEXCOORD3DVPROC __rglgen_glMultiTexCoord3dv; -extern RGLSYMGLMULTITEXCOORD3FPROC __rglgen_glMultiTexCoord3f; -extern RGLSYMGLMULTITEXCOORD3FVPROC __rglgen_glMultiTexCoord3fv; -extern RGLSYMGLMULTITEXCOORD3IPROC __rglgen_glMultiTexCoord3i; -extern RGLSYMGLMULTITEXCOORD3IVPROC __rglgen_glMultiTexCoord3iv; -extern RGLSYMGLMULTITEXCOORD3SPROC __rglgen_glMultiTexCoord3s; -extern RGLSYMGLMULTITEXCOORD3SVPROC __rglgen_glMultiTexCoord3sv; -extern RGLSYMGLMULTITEXCOORD4DPROC __rglgen_glMultiTexCoord4d; -extern RGLSYMGLMULTITEXCOORD4DVPROC __rglgen_glMultiTexCoord4dv; -extern RGLSYMGLMULTITEXCOORD4FPROC __rglgen_glMultiTexCoord4f; -extern RGLSYMGLMULTITEXCOORD4FVPROC __rglgen_glMultiTexCoord4fv; -extern RGLSYMGLMULTITEXCOORD4IPROC __rglgen_glMultiTexCoord4i; -extern RGLSYMGLMULTITEXCOORD4IVPROC __rglgen_glMultiTexCoord4iv; -extern RGLSYMGLMULTITEXCOORD4SPROC __rglgen_glMultiTexCoord4s; -extern RGLSYMGLMULTITEXCOORD4SVPROC __rglgen_glMultiTexCoord4sv; -extern RGLSYMGLLOADTRANSPOSEMATRIXFPROC __rglgen_glLoadTransposeMatrixf; -extern RGLSYMGLLOADTRANSPOSEMATRIXDPROC __rglgen_glLoadTransposeMatrixd; -extern RGLSYMGLMULTTRANSPOSEMATRIXFPROC __rglgen_glMultTransposeMatrixf; -extern RGLSYMGLMULTTRANSPOSEMATRIXDPROC __rglgen_glMultTransposeMatrixd; -extern RGLSYMGLBLENDFUNCSEPARATEPROC __rglgen_glBlendFuncSeparate; -extern RGLSYMGLMULTIDRAWARRAYSPROC __rglgen_glMultiDrawArrays; -extern RGLSYMGLMULTIDRAWELEMENTSPROC __rglgen_glMultiDrawElements; -extern RGLSYMGLPOINTPARAMETERFPROC __rglgen_glPointParameterf; -extern RGLSYMGLPOINTPARAMETERFVPROC __rglgen_glPointParameterfv; -extern RGLSYMGLPOINTPARAMETERIPROC __rglgen_glPointParameteri; -extern RGLSYMGLPOINTPARAMETERIVPROC __rglgen_glPointParameteriv; -extern RGLSYMGLFOGCOORDFPROC __rglgen_glFogCoordf; -extern RGLSYMGLFOGCOORDFVPROC __rglgen_glFogCoordfv; -extern RGLSYMGLFOGCOORDDPROC __rglgen_glFogCoordd; -extern RGLSYMGLFOGCOORDDVPROC __rglgen_glFogCoorddv; -extern RGLSYMGLFOGCOORDPOINTERPROC __rglgen_glFogCoordPointer; -extern RGLSYMGLSECONDARYCOLOR3BPROC __rglgen_glSecondaryColor3b; -extern RGLSYMGLSECONDARYCOLOR3BVPROC __rglgen_glSecondaryColor3bv; -extern RGLSYMGLSECONDARYCOLOR3DPROC __rglgen_glSecondaryColor3d; -extern RGLSYMGLSECONDARYCOLOR3DVPROC __rglgen_glSecondaryColor3dv; -extern RGLSYMGLSECONDARYCOLOR3FPROC __rglgen_glSecondaryColor3f; -extern RGLSYMGLSECONDARYCOLOR3FVPROC __rglgen_glSecondaryColor3fv; -extern RGLSYMGLSECONDARYCOLOR3IPROC __rglgen_glSecondaryColor3i; -extern RGLSYMGLSECONDARYCOLOR3IVPROC __rglgen_glSecondaryColor3iv; -extern RGLSYMGLSECONDARYCOLOR3SPROC __rglgen_glSecondaryColor3s; -extern RGLSYMGLSECONDARYCOLOR3SVPROC __rglgen_glSecondaryColor3sv; -extern RGLSYMGLSECONDARYCOLOR3UBPROC __rglgen_glSecondaryColor3ub; -extern RGLSYMGLSECONDARYCOLOR3UBVPROC __rglgen_glSecondaryColor3ubv; -extern RGLSYMGLSECONDARYCOLOR3UIPROC __rglgen_glSecondaryColor3ui; -extern RGLSYMGLSECONDARYCOLOR3UIVPROC __rglgen_glSecondaryColor3uiv; -extern RGLSYMGLSECONDARYCOLOR3USPROC __rglgen_glSecondaryColor3us; -extern RGLSYMGLSECONDARYCOLOR3USVPROC __rglgen_glSecondaryColor3usv; -extern RGLSYMGLSECONDARYCOLORPOINTERPROC __rglgen_glSecondaryColorPointer; -extern RGLSYMGLWINDOWPOS2DPROC __rglgen_glWindowPos2d; -extern RGLSYMGLWINDOWPOS2DVPROC __rglgen_glWindowPos2dv; -extern RGLSYMGLWINDOWPOS2FPROC __rglgen_glWindowPos2f; -extern RGLSYMGLWINDOWPOS2FVPROC __rglgen_glWindowPos2fv; -extern RGLSYMGLWINDOWPOS2IPROC __rglgen_glWindowPos2i; -extern RGLSYMGLWINDOWPOS2IVPROC __rglgen_glWindowPos2iv; -extern RGLSYMGLWINDOWPOS2SPROC __rglgen_glWindowPos2s; -extern RGLSYMGLWINDOWPOS2SVPROC __rglgen_glWindowPos2sv; -extern RGLSYMGLWINDOWPOS3DPROC __rglgen_glWindowPos3d; -extern RGLSYMGLWINDOWPOS3DVPROC __rglgen_glWindowPos3dv; -extern RGLSYMGLWINDOWPOS3FPROC __rglgen_glWindowPos3f; -extern RGLSYMGLWINDOWPOS3FVPROC __rglgen_glWindowPos3fv; -extern RGLSYMGLWINDOWPOS3IPROC __rglgen_glWindowPos3i; -extern RGLSYMGLWINDOWPOS3IVPROC __rglgen_glWindowPos3iv; -extern RGLSYMGLWINDOWPOS3SPROC __rglgen_glWindowPos3s; -extern RGLSYMGLWINDOWPOS3SVPROC __rglgen_glWindowPos3sv; -extern RGLSYMGLGENQUERIESPROC __rglgen_glGenQueries; -extern RGLSYMGLDELETEQUERIESPROC __rglgen_glDeleteQueries; -extern RGLSYMGLISQUERYPROC __rglgen_glIsQuery; -extern RGLSYMGLBEGINQUERYPROC __rglgen_glBeginQuery; -extern RGLSYMGLENDQUERYPROC __rglgen_glEndQuery; -extern RGLSYMGLGETQUERYIVPROC __rglgen_glGetQueryiv; -extern RGLSYMGLGETQUERYOBJECTIVPROC __rglgen_glGetQueryObjectiv; -extern RGLSYMGLGETQUERYOBJECTUIVPROC __rglgen_glGetQueryObjectuiv; -extern RGLSYMGLBINDBUFFERPROC __rglgen_glBindBuffer; -extern RGLSYMGLDELETEBUFFERSPROC __rglgen_glDeleteBuffers; -extern RGLSYMGLGENBUFFERSPROC __rglgen_glGenBuffers; -extern RGLSYMGLISBUFFERPROC __rglgen_glIsBuffer; -extern RGLSYMGLBUFFERDATAPROC __rglgen_glBufferData; -extern RGLSYMGLBUFFERSUBDATAPROC __rglgen_glBufferSubData; -extern RGLSYMGLGETBUFFERSUBDATAPROC __rglgen_glGetBufferSubData; -extern RGLSYMGLMAPBUFFERPROC __rglgen_glMapBuffer; -extern RGLSYMGLUNMAPBUFFERPROC __rglgen_glUnmapBuffer; -extern RGLSYMGLGETBUFFERPARAMETERIVPROC __rglgen_glGetBufferParameteriv; -extern RGLSYMGLGETBUFFERPOINTERVPROC __rglgen_glGetBufferPointerv; -extern RGLSYMGLBLENDEQUATIONSEPARATEPROC __rglgen_glBlendEquationSeparate; -extern RGLSYMGLDRAWBUFFERSPROC __rglgen_glDrawBuffers; -extern RGLSYMGLSTENCILOPSEPARATEPROC __rglgen_glStencilOpSeparate; -extern RGLSYMGLSTENCILFUNCSEPARATEPROC __rglgen_glStencilFuncSeparate; -extern RGLSYMGLSTENCILMASKSEPARATEPROC __rglgen_glStencilMaskSeparate; -extern RGLSYMGLATTACHSHADERPROC __rglgen_glAttachShader; -extern RGLSYMGLBINDATTRIBLOCATIONPROC __rglgen_glBindAttribLocation; -extern RGLSYMGLCOMPILESHADERPROC __rglgen_glCompileShader; -extern RGLSYMGLCREATEPROGRAMPROC __rglgen_glCreateProgram; -extern RGLSYMGLCREATESHADERPROC __rglgen_glCreateShader; -extern RGLSYMGLDELETEPROGRAMPROC __rglgen_glDeleteProgram; -extern RGLSYMGLDELETESHADERPROC __rglgen_glDeleteShader; -extern RGLSYMGLDETACHSHADERPROC __rglgen_glDetachShader; -extern RGLSYMGLDISABLEVERTEXATTRIBARRAYPROC __rglgen_glDisableVertexAttribArray; -extern RGLSYMGLENABLEVERTEXATTRIBARRAYPROC __rglgen_glEnableVertexAttribArray; -extern RGLSYMGLGETACTIVEATTRIBPROC __rglgen_glGetActiveAttrib; -extern RGLSYMGLGETACTIVEUNIFORMPROC __rglgen_glGetActiveUniform; -extern RGLSYMGLGETATTACHEDSHADERSPROC __rglgen_glGetAttachedShaders; -extern RGLSYMGLGETATTRIBLOCATIONPROC __rglgen_glGetAttribLocation; -extern RGLSYMGLGETPROGRAMIVPROC __rglgen_glGetProgramiv; -extern RGLSYMGLGETPROGRAMINFOLOGPROC __rglgen_glGetProgramInfoLog; -extern RGLSYMGLGETSHADERIVPROC __rglgen_glGetShaderiv; -extern RGLSYMGLGETSHADERINFOLOGPROC __rglgen_glGetShaderInfoLog; -extern RGLSYMGLGETSHADERSOURCEPROC __rglgen_glGetShaderSource; -extern RGLSYMGLGETUNIFORMLOCATIONPROC __rglgen_glGetUniformLocation; -extern RGLSYMGLGETUNIFORMFVPROC __rglgen_glGetUniformfv; -extern RGLSYMGLGETUNIFORMIVPROC __rglgen_glGetUniformiv; -extern RGLSYMGLGETVERTEXATTRIBDVPROC __rglgen_glGetVertexAttribdv; -extern RGLSYMGLGETVERTEXATTRIBFVPROC __rglgen_glGetVertexAttribfv; -extern RGLSYMGLGETVERTEXATTRIBIVPROC __rglgen_glGetVertexAttribiv; -extern RGLSYMGLGETVERTEXATTRIBPOINTERVPROC __rglgen_glGetVertexAttribPointerv; -extern RGLSYMGLISPROGRAMPROC __rglgen_glIsProgram; -extern RGLSYMGLISSHADERPROC __rglgen_glIsShader; -extern RGLSYMGLLINKPROGRAMPROC __rglgen_glLinkProgram; -extern RGLSYMGLSHADERSOURCEPROC __rglgen_glShaderSource; -extern RGLSYMGLUSEPROGRAMPROC __rglgen_glUseProgram; -extern RGLSYMGLUNIFORM1FPROC __rglgen_glUniform1f; -extern RGLSYMGLUNIFORM2FPROC __rglgen_glUniform2f; -extern RGLSYMGLUNIFORM3FPROC __rglgen_glUniform3f; -extern RGLSYMGLUNIFORM4FPROC __rglgen_glUniform4f; -extern RGLSYMGLUNIFORM1IPROC __rglgen_glUniform1i; -extern RGLSYMGLUNIFORM2IPROC __rglgen_glUniform2i; -extern RGLSYMGLUNIFORM3IPROC __rglgen_glUniform3i; -extern RGLSYMGLUNIFORM4IPROC __rglgen_glUniform4i; -extern RGLSYMGLUNIFORM1FVPROC __rglgen_glUniform1fv; -extern RGLSYMGLUNIFORM2FVPROC __rglgen_glUniform2fv; -extern RGLSYMGLUNIFORM3FVPROC __rglgen_glUniform3fv; -extern RGLSYMGLUNIFORM4FVPROC __rglgen_glUniform4fv; -extern RGLSYMGLUNIFORM1IVPROC __rglgen_glUniform1iv; -extern RGLSYMGLUNIFORM2IVPROC __rglgen_glUniform2iv; -extern RGLSYMGLUNIFORM3IVPROC __rglgen_glUniform3iv; -extern RGLSYMGLUNIFORM4IVPROC __rglgen_glUniform4iv; -extern RGLSYMGLUNIFORMMATRIX2FVPROC __rglgen_glUniformMatrix2fv; -extern RGLSYMGLUNIFORMMATRIX3FVPROC __rglgen_glUniformMatrix3fv; -extern RGLSYMGLUNIFORMMATRIX4FVPROC __rglgen_glUniformMatrix4fv; -extern RGLSYMGLVALIDATEPROGRAMPROC __rglgen_glValidateProgram; -extern RGLSYMGLVERTEXATTRIB1DPROC __rglgen_glVertexAttrib1d; -extern RGLSYMGLVERTEXATTRIB1DVPROC __rglgen_glVertexAttrib1dv; -extern RGLSYMGLVERTEXATTRIB1FPROC __rglgen_glVertexAttrib1f; -extern RGLSYMGLVERTEXATTRIB1FVPROC __rglgen_glVertexAttrib1fv; -extern RGLSYMGLVERTEXATTRIB1SPROC __rglgen_glVertexAttrib1s; -extern RGLSYMGLVERTEXATTRIB1SVPROC __rglgen_glVertexAttrib1sv; -extern RGLSYMGLVERTEXATTRIB2DPROC __rglgen_glVertexAttrib2d; -extern RGLSYMGLVERTEXATTRIB2DVPROC __rglgen_glVertexAttrib2dv; -extern RGLSYMGLVERTEXATTRIB2FPROC __rglgen_glVertexAttrib2f; -extern RGLSYMGLVERTEXATTRIB2FVPROC __rglgen_glVertexAttrib2fv; -extern RGLSYMGLVERTEXATTRIB2SPROC __rglgen_glVertexAttrib2s; -extern RGLSYMGLVERTEXATTRIB2SVPROC __rglgen_glVertexAttrib2sv; -extern RGLSYMGLVERTEXATTRIB3DPROC __rglgen_glVertexAttrib3d; -extern RGLSYMGLVERTEXATTRIB3DVPROC __rglgen_glVertexAttrib3dv; -extern RGLSYMGLVERTEXATTRIB3FPROC __rglgen_glVertexAttrib3f; -extern RGLSYMGLVERTEXATTRIB3FVPROC __rglgen_glVertexAttrib3fv; -extern RGLSYMGLVERTEXATTRIB3SPROC __rglgen_glVertexAttrib3s; -extern RGLSYMGLVERTEXATTRIB3SVPROC __rglgen_glVertexAttrib3sv; -extern RGLSYMGLVERTEXATTRIB4NBVPROC __rglgen_glVertexAttrib4Nbv; -extern RGLSYMGLVERTEXATTRIB4NIVPROC __rglgen_glVertexAttrib4Niv; -extern RGLSYMGLVERTEXATTRIB4NSVPROC __rglgen_glVertexAttrib4Nsv; -extern RGLSYMGLVERTEXATTRIB4NUBPROC __rglgen_glVertexAttrib4Nub; -extern RGLSYMGLVERTEXATTRIB4NUBVPROC __rglgen_glVertexAttrib4Nubv; -extern RGLSYMGLVERTEXATTRIB4NUIVPROC __rglgen_glVertexAttrib4Nuiv; -extern RGLSYMGLVERTEXATTRIB4NUSVPROC __rglgen_glVertexAttrib4Nusv; -extern RGLSYMGLVERTEXATTRIB4BVPROC __rglgen_glVertexAttrib4bv; -extern RGLSYMGLVERTEXATTRIB4DPROC __rglgen_glVertexAttrib4d; -extern RGLSYMGLVERTEXATTRIB4DVPROC __rglgen_glVertexAttrib4dv; -extern RGLSYMGLVERTEXATTRIB4FPROC __rglgen_glVertexAttrib4f; -extern RGLSYMGLVERTEXATTRIB4FVPROC __rglgen_glVertexAttrib4fv; -extern RGLSYMGLVERTEXATTRIB4IVPROC __rglgen_glVertexAttrib4iv; -extern RGLSYMGLVERTEXATTRIB4SPROC __rglgen_glVertexAttrib4s; -extern RGLSYMGLVERTEXATTRIB4SVPROC __rglgen_glVertexAttrib4sv; -extern RGLSYMGLVERTEXATTRIB4UBVPROC __rglgen_glVertexAttrib4ubv; -extern RGLSYMGLVERTEXATTRIB4UIVPROC __rglgen_glVertexAttrib4uiv; -extern RGLSYMGLVERTEXATTRIB4USVPROC __rglgen_glVertexAttrib4usv; -extern RGLSYMGLVERTEXATTRIBPOINTERPROC __rglgen_glVertexAttribPointer; -extern RGLSYMGLUNIFORMMATRIX2X3FVPROC __rglgen_glUniformMatrix2x3fv; -extern RGLSYMGLUNIFORMMATRIX3X2FVPROC __rglgen_glUniformMatrix3x2fv; -extern RGLSYMGLUNIFORMMATRIX2X4FVPROC __rglgen_glUniformMatrix2x4fv; -extern RGLSYMGLUNIFORMMATRIX4X2FVPROC __rglgen_glUniformMatrix4x2fv; -extern RGLSYMGLUNIFORMMATRIX3X4FVPROC __rglgen_glUniformMatrix3x4fv; -extern RGLSYMGLUNIFORMMATRIX4X3FVPROC __rglgen_glUniformMatrix4x3fv; -extern RGLSYMGLCOLORMASKIPROC __rglgen_glColorMaski; -extern RGLSYMGLGETBOOLEANI_VPROC __rglgen_glGetBooleani_v; -extern RGLSYMGLGETINTEGERI_VPROC __rglgen_glGetIntegeri_v; -extern RGLSYMGLENABLEIPROC __rglgen_glEnablei; -extern RGLSYMGLDISABLEIPROC __rglgen_glDisablei; -extern RGLSYMGLISENABLEDIPROC __rglgen_glIsEnabledi; -extern RGLSYMGLBEGINTRANSFORMFEEDBACKPROC __rglgen_glBeginTransformFeedback; -extern RGLSYMGLENDTRANSFORMFEEDBACKPROC __rglgen_glEndTransformFeedback; -extern RGLSYMGLBINDBUFFERRANGEPROC __rglgen_glBindBufferRange; -extern RGLSYMGLBINDBUFFERBASEPROC __rglgen_glBindBufferBase; -extern RGLSYMGLTRANSFORMFEEDBACKVARYINGSPROC __rglgen_glTransformFeedbackVaryings; -extern RGLSYMGLGETTRANSFORMFEEDBACKVARYINGPROC __rglgen_glGetTransformFeedbackVarying; -extern RGLSYMGLCLAMPCOLORPROC __rglgen_glClampColor; -extern RGLSYMGLBEGINCONDITIONALRENDERPROC __rglgen_glBeginConditionalRender; -extern RGLSYMGLENDCONDITIONALRENDERPROC __rglgen_glEndConditionalRender; -extern RGLSYMGLVERTEXATTRIBIPOINTERPROC __rglgen_glVertexAttribIPointer; -extern RGLSYMGLGETVERTEXATTRIBIIVPROC __rglgen_glGetVertexAttribIiv; -extern RGLSYMGLGETVERTEXATTRIBIUIVPROC __rglgen_glGetVertexAttribIuiv; -extern RGLSYMGLVERTEXATTRIBI1IPROC __rglgen_glVertexAttribI1i; -extern RGLSYMGLVERTEXATTRIBI2IPROC __rglgen_glVertexAttribI2i; -extern RGLSYMGLVERTEXATTRIBI3IPROC __rglgen_glVertexAttribI3i; -extern RGLSYMGLVERTEXATTRIBI4IPROC __rglgen_glVertexAttribI4i; -extern RGLSYMGLVERTEXATTRIBI1UIPROC __rglgen_glVertexAttribI1ui; -extern RGLSYMGLVERTEXATTRIBI2UIPROC __rglgen_glVertexAttribI2ui; -extern RGLSYMGLVERTEXATTRIBI3UIPROC __rglgen_glVertexAttribI3ui; -extern RGLSYMGLVERTEXATTRIBI4UIPROC __rglgen_glVertexAttribI4ui; -extern RGLSYMGLVERTEXATTRIBI1IVPROC __rglgen_glVertexAttribI1iv; -extern RGLSYMGLVERTEXATTRIBI2IVPROC __rglgen_glVertexAttribI2iv; -extern RGLSYMGLVERTEXATTRIBI3IVPROC __rglgen_glVertexAttribI3iv; -extern RGLSYMGLVERTEXATTRIBI4IVPROC __rglgen_glVertexAttribI4iv; -extern RGLSYMGLVERTEXATTRIBI1UIVPROC __rglgen_glVertexAttribI1uiv; -extern RGLSYMGLVERTEXATTRIBI2UIVPROC __rglgen_glVertexAttribI2uiv; -extern RGLSYMGLVERTEXATTRIBI3UIVPROC __rglgen_glVertexAttribI3uiv; -extern RGLSYMGLVERTEXATTRIBI4UIVPROC __rglgen_glVertexAttribI4uiv; -extern RGLSYMGLVERTEXATTRIBI4BVPROC __rglgen_glVertexAttribI4bv; -extern RGLSYMGLVERTEXATTRIBI4SVPROC __rglgen_glVertexAttribI4sv; -extern RGLSYMGLVERTEXATTRIBI4UBVPROC __rglgen_glVertexAttribI4ubv; -extern RGLSYMGLVERTEXATTRIBI4USVPROC __rglgen_glVertexAttribI4usv; -extern RGLSYMGLGETUNIFORMUIVPROC __rglgen_glGetUniformuiv; -extern RGLSYMGLBINDFRAGDATALOCATIONPROC __rglgen_glBindFragDataLocation; -extern RGLSYMGLGETFRAGDATALOCATIONPROC __rglgen_glGetFragDataLocation; -extern RGLSYMGLUNIFORM1UIPROC __rglgen_glUniform1ui; -extern RGLSYMGLUNIFORM2UIPROC __rglgen_glUniform2ui; -extern RGLSYMGLUNIFORM3UIPROC __rglgen_glUniform3ui; -extern RGLSYMGLUNIFORM4UIPROC __rglgen_glUniform4ui; -extern RGLSYMGLUNIFORM1UIVPROC __rglgen_glUniform1uiv; -extern RGLSYMGLUNIFORM2UIVPROC __rglgen_glUniform2uiv; -extern RGLSYMGLUNIFORM3UIVPROC __rglgen_glUniform3uiv; -extern RGLSYMGLUNIFORM4UIVPROC __rglgen_glUniform4uiv; -extern RGLSYMGLTEXPARAMETERIIVPROC __rglgen_glTexParameterIiv; -extern RGLSYMGLTEXPARAMETERIUIVPROC __rglgen_glTexParameterIuiv; -extern RGLSYMGLGETTEXPARAMETERIIVPROC __rglgen_glGetTexParameterIiv; -extern RGLSYMGLGETTEXPARAMETERIUIVPROC __rglgen_glGetTexParameterIuiv; -extern RGLSYMGLCLEARBUFFERIVPROC __rglgen_glClearBufferiv; -extern RGLSYMGLCLEARBUFFERUIVPROC __rglgen_glClearBufferuiv; -extern RGLSYMGLCLEARBUFFERFVPROC __rglgen_glClearBufferfv; -extern RGLSYMGLCLEARBUFFERFIPROC __rglgen_glClearBufferfi; -extern RGLSYMGLGETSTRINGIPROC __rglgen_glGetStringi; -extern RGLSYMGLDRAWARRAYSINSTANCEDPROC __rglgen_glDrawArraysInstanced; -extern RGLSYMGLDRAWELEMENTSINSTANCEDPROC __rglgen_glDrawElementsInstanced; -extern RGLSYMGLTEXBUFFERPROC __rglgen_glTexBuffer; -extern RGLSYMGLPRIMITIVERESTARTINDEXPROC __rglgen_glPrimitiveRestartIndex; -extern RGLSYMGLGETINTEGER64I_VPROC __rglgen_glGetInteger64i_v; -extern RGLSYMGLGETBUFFERPARAMETERI64VPROC __rglgen_glGetBufferParameteri64v; -extern RGLSYMGLFRAMEBUFFERTEXTUREPROC __rglgen_glFramebufferTexture; -extern RGLSYMGLVERTEXATTRIBDIVISORPROC __rglgen_glVertexAttribDivisor; -extern RGLSYMGLMINSAMPLESHADINGPROC __rglgen_glMinSampleShading; -extern RGLSYMGLBLENDEQUATIONIPROC __rglgen_glBlendEquationi; -extern RGLSYMGLBLENDEQUATIONSEPARATEIPROC __rglgen_glBlendEquationSeparatei; -extern RGLSYMGLBLENDFUNCIPROC __rglgen_glBlendFunci; -extern RGLSYMGLBLENDFUNCSEPARATEIPROC __rglgen_glBlendFuncSeparatei; -extern RGLSYMGLACTIVETEXTUREARBPROC __rglgen_glActiveTextureARB; -extern RGLSYMGLCLIENTACTIVETEXTUREARBPROC __rglgen_glClientActiveTextureARB; -extern RGLSYMGLMULTITEXCOORD1DARBPROC __rglgen_glMultiTexCoord1dARB; -extern RGLSYMGLMULTITEXCOORD1DVARBPROC __rglgen_glMultiTexCoord1dvARB; -extern RGLSYMGLMULTITEXCOORD1FARBPROC __rglgen_glMultiTexCoord1fARB; -extern RGLSYMGLMULTITEXCOORD1FVARBPROC __rglgen_glMultiTexCoord1fvARB; -extern RGLSYMGLMULTITEXCOORD1IARBPROC __rglgen_glMultiTexCoord1iARB; -extern RGLSYMGLMULTITEXCOORD1IVARBPROC __rglgen_glMultiTexCoord1ivARB; -extern RGLSYMGLMULTITEXCOORD1SARBPROC __rglgen_glMultiTexCoord1sARB; -extern RGLSYMGLMULTITEXCOORD1SVARBPROC __rglgen_glMultiTexCoord1svARB; -extern RGLSYMGLMULTITEXCOORD2DARBPROC __rglgen_glMultiTexCoord2dARB; -extern RGLSYMGLMULTITEXCOORD2DVARBPROC __rglgen_glMultiTexCoord2dvARB; -extern RGLSYMGLMULTITEXCOORD2FARBPROC __rglgen_glMultiTexCoord2fARB; -extern RGLSYMGLMULTITEXCOORD2FVARBPROC __rglgen_glMultiTexCoord2fvARB; -extern RGLSYMGLMULTITEXCOORD2IARBPROC __rglgen_glMultiTexCoord2iARB; -extern RGLSYMGLMULTITEXCOORD2IVARBPROC __rglgen_glMultiTexCoord2ivARB; -extern RGLSYMGLMULTITEXCOORD2SARBPROC __rglgen_glMultiTexCoord2sARB; -extern RGLSYMGLMULTITEXCOORD2SVARBPROC __rglgen_glMultiTexCoord2svARB; -extern RGLSYMGLMULTITEXCOORD3DARBPROC __rglgen_glMultiTexCoord3dARB; -extern RGLSYMGLMULTITEXCOORD3DVARBPROC __rglgen_glMultiTexCoord3dvARB; -extern RGLSYMGLMULTITEXCOORD3FARBPROC __rglgen_glMultiTexCoord3fARB; -extern RGLSYMGLMULTITEXCOORD3FVARBPROC __rglgen_glMultiTexCoord3fvARB; -extern RGLSYMGLMULTITEXCOORD3IARBPROC __rglgen_glMultiTexCoord3iARB; -extern RGLSYMGLMULTITEXCOORD3IVARBPROC __rglgen_glMultiTexCoord3ivARB; -extern RGLSYMGLMULTITEXCOORD3SARBPROC __rglgen_glMultiTexCoord3sARB; -extern RGLSYMGLMULTITEXCOORD3SVARBPROC __rglgen_glMultiTexCoord3svARB; -extern RGLSYMGLMULTITEXCOORD4DARBPROC __rglgen_glMultiTexCoord4dARB; -extern RGLSYMGLMULTITEXCOORD4DVARBPROC __rglgen_glMultiTexCoord4dvARB; -extern RGLSYMGLMULTITEXCOORD4FARBPROC __rglgen_glMultiTexCoord4fARB; -extern RGLSYMGLMULTITEXCOORD4FVARBPROC __rglgen_glMultiTexCoord4fvARB; -extern RGLSYMGLMULTITEXCOORD4IARBPROC __rglgen_glMultiTexCoord4iARB; -extern RGLSYMGLMULTITEXCOORD4IVARBPROC __rglgen_glMultiTexCoord4ivARB; -extern RGLSYMGLMULTITEXCOORD4SARBPROC __rglgen_glMultiTexCoord4sARB; -extern RGLSYMGLMULTITEXCOORD4SVARBPROC __rglgen_glMultiTexCoord4svARB; -extern RGLSYMGLLOADTRANSPOSEMATRIXFARBPROC __rglgen_glLoadTransposeMatrixfARB; -extern RGLSYMGLLOADTRANSPOSEMATRIXDARBPROC __rglgen_glLoadTransposeMatrixdARB; -extern RGLSYMGLMULTTRANSPOSEMATRIXFARBPROC __rglgen_glMultTransposeMatrixfARB; -extern RGLSYMGLMULTTRANSPOSEMATRIXDARBPROC __rglgen_glMultTransposeMatrixdARB; -extern RGLSYMGLSAMPLECOVERAGEARBPROC __rglgen_glSampleCoverageARB; -extern RGLSYMGLCOMPRESSEDTEXIMAGE3DARBPROC __rglgen_glCompressedTexImage3DARB; -extern RGLSYMGLCOMPRESSEDTEXIMAGE2DARBPROC __rglgen_glCompressedTexImage2DARB; -extern RGLSYMGLCOMPRESSEDTEXIMAGE1DARBPROC __rglgen_glCompressedTexImage1DARB; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __rglgen_glCompressedTexSubImage3DARB; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __rglgen_glCompressedTexSubImage2DARB; -extern RGLSYMGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __rglgen_glCompressedTexSubImage1DARB; -extern RGLSYMGLGETCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetCompressedTexImageARB; -extern RGLSYMGLPOINTPARAMETERFARBPROC __rglgen_glPointParameterfARB; -extern RGLSYMGLPOINTPARAMETERFVARBPROC __rglgen_glPointParameterfvARB; -extern RGLSYMGLWEIGHTBVARBPROC __rglgen_glWeightbvARB; -extern RGLSYMGLWEIGHTSVARBPROC __rglgen_glWeightsvARB; -extern RGLSYMGLWEIGHTIVARBPROC __rglgen_glWeightivARB; -extern RGLSYMGLWEIGHTFVARBPROC __rglgen_glWeightfvARB; -extern RGLSYMGLWEIGHTDVARBPROC __rglgen_glWeightdvARB; -extern RGLSYMGLWEIGHTUBVARBPROC __rglgen_glWeightubvARB; -extern RGLSYMGLWEIGHTUSVARBPROC __rglgen_glWeightusvARB; -extern RGLSYMGLWEIGHTUIVARBPROC __rglgen_glWeightuivARB; -extern RGLSYMGLWEIGHTPOINTERARBPROC __rglgen_glWeightPointerARB; -extern RGLSYMGLVERTEXBLENDARBPROC __rglgen_glVertexBlendARB; -extern RGLSYMGLCURRENTPALETTEMATRIXARBPROC __rglgen_glCurrentPaletteMatrixARB; -extern RGLSYMGLMATRIXINDEXUBVARBPROC __rglgen_glMatrixIndexubvARB; -extern RGLSYMGLMATRIXINDEXUSVARBPROC __rglgen_glMatrixIndexusvARB; -extern RGLSYMGLMATRIXINDEXUIVARBPROC __rglgen_glMatrixIndexuivARB; -extern RGLSYMGLMATRIXINDEXPOINTERARBPROC __rglgen_glMatrixIndexPointerARB; -extern RGLSYMGLWINDOWPOS2DARBPROC __rglgen_glWindowPos2dARB; -extern RGLSYMGLWINDOWPOS2DVARBPROC __rglgen_glWindowPos2dvARB; -extern RGLSYMGLWINDOWPOS2FARBPROC __rglgen_glWindowPos2fARB; -extern RGLSYMGLWINDOWPOS2FVARBPROC __rglgen_glWindowPos2fvARB; -extern RGLSYMGLWINDOWPOS2IARBPROC __rglgen_glWindowPos2iARB; -extern RGLSYMGLWINDOWPOS2IVARBPROC __rglgen_glWindowPos2ivARB; -extern RGLSYMGLWINDOWPOS2SARBPROC __rglgen_glWindowPos2sARB; -extern RGLSYMGLWINDOWPOS2SVARBPROC __rglgen_glWindowPos2svARB; -extern RGLSYMGLWINDOWPOS3DARBPROC __rglgen_glWindowPos3dARB; -extern RGLSYMGLWINDOWPOS3DVARBPROC __rglgen_glWindowPos3dvARB; -extern RGLSYMGLWINDOWPOS3FARBPROC __rglgen_glWindowPos3fARB; -extern RGLSYMGLWINDOWPOS3FVARBPROC __rglgen_glWindowPos3fvARB; -extern RGLSYMGLWINDOWPOS3IARBPROC __rglgen_glWindowPos3iARB; -extern RGLSYMGLWINDOWPOS3IVARBPROC __rglgen_glWindowPos3ivARB; -extern RGLSYMGLWINDOWPOS3SARBPROC __rglgen_glWindowPos3sARB; -extern RGLSYMGLWINDOWPOS3SVARBPROC __rglgen_glWindowPos3svARB; -extern RGLSYMGLVERTEXATTRIB1DARBPROC __rglgen_glVertexAttrib1dARB; -extern RGLSYMGLVERTEXATTRIB1DVARBPROC __rglgen_glVertexAttrib1dvARB; -extern RGLSYMGLVERTEXATTRIB1FARBPROC __rglgen_glVertexAttrib1fARB; -extern RGLSYMGLVERTEXATTRIB1FVARBPROC __rglgen_glVertexAttrib1fvARB; -extern RGLSYMGLVERTEXATTRIB1SARBPROC __rglgen_glVertexAttrib1sARB; -extern RGLSYMGLVERTEXATTRIB1SVARBPROC __rglgen_glVertexAttrib1svARB; -extern RGLSYMGLVERTEXATTRIB2DARBPROC __rglgen_glVertexAttrib2dARB; -extern RGLSYMGLVERTEXATTRIB2DVARBPROC __rglgen_glVertexAttrib2dvARB; -extern RGLSYMGLVERTEXATTRIB2FARBPROC __rglgen_glVertexAttrib2fARB; -extern RGLSYMGLVERTEXATTRIB2FVARBPROC __rglgen_glVertexAttrib2fvARB; -extern RGLSYMGLVERTEXATTRIB2SARBPROC __rglgen_glVertexAttrib2sARB; -extern RGLSYMGLVERTEXATTRIB2SVARBPROC __rglgen_glVertexAttrib2svARB; -extern RGLSYMGLVERTEXATTRIB3DARBPROC __rglgen_glVertexAttrib3dARB; -extern RGLSYMGLVERTEXATTRIB3DVARBPROC __rglgen_glVertexAttrib3dvARB; -extern RGLSYMGLVERTEXATTRIB3FARBPROC __rglgen_glVertexAttrib3fARB; -extern RGLSYMGLVERTEXATTRIB3FVARBPROC __rglgen_glVertexAttrib3fvARB; -extern RGLSYMGLVERTEXATTRIB3SARBPROC __rglgen_glVertexAttrib3sARB; -extern RGLSYMGLVERTEXATTRIB3SVARBPROC __rglgen_glVertexAttrib3svARB; -extern RGLSYMGLVERTEXATTRIB4NBVARBPROC __rglgen_glVertexAttrib4NbvARB; -extern RGLSYMGLVERTEXATTRIB4NIVARBPROC __rglgen_glVertexAttrib4NivARB; -extern RGLSYMGLVERTEXATTRIB4NSVARBPROC __rglgen_glVertexAttrib4NsvARB; -extern RGLSYMGLVERTEXATTRIB4NUBARBPROC __rglgen_glVertexAttrib4NubARB; -extern RGLSYMGLVERTEXATTRIB4NUBVARBPROC __rglgen_glVertexAttrib4NubvARB; -extern RGLSYMGLVERTEXATTRIB4NUIVARBPROC __rglgen_glVertexAttrib4NuivARB; -extern RGLSYMGLVERTEXATTRIB4NUSVARBPROC __rglgen_glVertexAttrib4NusvARB; -extern RGLSYMGLVERTEXATTRIB4BVARBPROC __rglgen_glVertexAttrib4bvARB; -extern RGLSYMGLVERTEXATTRIB4DARBPROC __rglgen_glVertexAttrib4dARB; -extern RGLSYMGLVERTEXATTRIB4DVARBPROC __rglgen_glVertexAttrib4dvARB; -extern RGLSYMGLVERTEXATTRIB4FARBPROC __rglgen_glVertexAttrib4fARB; -extern RGLSYMGLVERTEXATTRIB4FVARBPROC __rglgen_glVertexAttrib4fvARB; -extern RGLSYMGLVERTEXATTRIB4IVARBPROC __rglgen_glVertexAttrib4ivARB; -extern RGLSYMGLVERTEXATTRIB4SARBPROC __rglgen_glVertexAttrib4sARB; -extern RGLSYMGLVERTEXATTRIB4SVARBPROC __rglgen_glVertexAttrib4svARB; -extern RGLSYMGLVERTEXATTRIB4UBVARBPROC __rglgen_glVertexAttrib4ubvARB; -extern RGLSYMGLVERTEXATTRIB4UIVARBPROC __rglgen_glVertexAttrib4uivARB; -extern RGLSYMGLVERTEXATTRIB4USVARBPROC __rglgen_glVertexAttrib4usvARB; -extern RGLSYMGLVERTEXATTRIBPOINTERARBPROC __rglgen_glVertexAttribPointerARB; -extern RGLSYMGLENABLEVERTEXATTRIBARRAYARBPROC __rglgen_glEnableVertexAttribArrayARB; -extern RGLSYMGLDISABLEVERTEXATTRIBARRAYARBPROC __rglgen_glDisableVertexAttribArrayARB; -extern RGLSYMGLPROGRAMSTRINGARBPROC __rglgen_glProgramStringARB; -extern RGLSYMGLBINDPROGRAMARBPROC __rglgen_glBindProgramARB; -extern RGLSYMGLDELETEPROGRAMSARBPROC __rglgen_glDeleteProgramsARB; -extern RGLSYMGLGENPROGRAMSARBPROC __rglgen_glGenProgramsARB; -extern RGLSYMGLPROGRAMENVPARAMETER4DARBPROC __rglgen_glProgramEnvParameter4dARB; -extern RGLSYMGLPROGRAMENVPARAMETER4DVARBPROC __rglgen_glProgramEnvParameter4dvARB; -extern RGLSYMGLPROGRAMENVPARAMETER4FARBPROC __rglgen_glProgramEnvParameter4fARB; -extern RGLSYMGLPROGRAMENVPARAMETER4FVARBPROC __rglgen_glProgramEnvParameter4fvARB; -extern RGLSYMGLPROGRAMLOCALPARAMETER4DARBPROC __rglgen_glProgramLocalParameter4dARB; -extern RGLSYMGLPROGRAMLOCALPARAMETER4DVARBPROC __rglgen_glProgramLocalParameter4dvARB; -extern RGLSYMGLPROGRAMLOCALPARAMETER4FARBPROC __rglgen_glProgramLocalParameter4fARB; -extern RGLSYMGLPROGRAMLOCALPARAMETER4FVARBPROC __rglgen_glProgramLocalParameter4fvARB; -extern RGLSYMGLGETPROGRAMENVPARAMETERDVARBPROC __rglgen_glGetProgramEnvParameterdvARB; -extern RGLSYMGLGETPROGRAMENVPARAMETERFVARBPROC __rglgen_glGetProgramEnvParameterfvARB; -extern RGLSYMGLGETPROGRAMLOCALPARAMETERDVARBPROC __rglgen_glGetProgramLocalParameterdvARB; -extern RGLSYMGLGETPROGRAMLOCALPARAMETERFVARBPROC __rglgen_glGetProgramLocalParameterfvARB; -extern RGLSYMGLGETPROGRAMIVARBPROC __rglgen_glGetProgramivARB; -extern RGLSYMGLGETPROGRAMSTRINGARBPROC __rglgen_glGetProgramStringARB; -extern RGLSYMGLGETVERTEXATTRIBDVARBPROC __rglgen_glGetVertexAttribdvARB; -extern RGLSYMGLGETVERTEXATTRIBFVARBPROC __rglgen_glGetVertexAttribfvARB; -extern RGLSYMGLGETVERTEXATTRIBIVARBPROC __rglgen_glGetVertexAttribivARB; -extern RGLSYMGLGETVERTEXATTRIBPOINTERVARBPROC __rglgen_glGetVertexAttribPointervARB; -extern RGLSYMGLISPROGRAMARBPROC __rglgen_glIsProgramARB; -extern RGLSYMGLBINDBUFFERARBPROC __rglgen_glBindBufferARB; -extern RGLSYMGLDELETEBUFFERSARBPROC __rglgen_glDeleteBuffersARB; -extern RGLSYMGLGENBUFFERSARBPROC __rglgen_glGenBuffersARB; -extern RGLSYMGLISBUFFERARBPROC __rglgen_glIsBufferARB; -extern RGLSYMGLBUFFERDATAARBPROC __rglgen_glBufferDataARB; -extern RGLSYMGLBUFFERSUBDATAARBPROC __rglgen_glBufferSubDataARB; -extern RGLSYMGLGETBUFFERSUBDATAARBPROC __rglgen_glGetBufferSubDataARB; -extern RGLSYMGLMAPBUFFERARBPROC __rglgen_glMapBufferARB; -extern RGLSYMGLUNMAPBUFFERARBPROC __rglgen_glUnmapBufferARB; -extern RGLSYMGLGETBUFFERPARAMETERIVARBPROC __rglgen_glGetBufferParameterivARB; -extern RGLSYMGLGETBUFFERPOINTERVARBPROC __rglgen_glGetBufferPointervARB; -extern RGLSYMGLGENQUERIESARBPROC __rglgen_glGenQueriesARB; -extern RGLSYMGLDELETEQUERIESARBPROC __rglgen_glDeleteQueriesARB; -extern RGLSYMGLISQUERYARBPROC __rglgen_glIsQueryARB; -extern RGLSYMGLBEGINQUERYARBPROC __rglgen_glBeginQueryARB; -extern RGLSYMGLENDQUERYARBPROC __rglgen_glEndQueryARB; -extern RGLSYMGLGETQUERYIVARBPROC __rglgen_glGetQueryivARB; -extern RGLSYMGLGETQUERYOBJECTIVARBPROC __rglgen_glGetQueryObjectivARB; -extern RGLSYMGLGETQUERYOBJECTUIVARBPROC __rglgen_glGetQueryObjectuivARB; -extern RGLSYMGLDELETEOBJECTARBPROC __rglgen_glDeleteObjectARB; -extern RGLSYMGLGETHANDLEARBPROC __rglgen_glGetHandleARB; -extern RGLSYMGLDETACHOBJECTARBPROC __rglgen_glDetachObjectARB; -extern RGLSYMGLCREATESHADEROBJECTARBPROC __rglgen_glCreateShaderObjectARB; -extern RGLSYMGLSHADERSOURCEARBPROC __rglgen_glShaderSourceARB; -extern RGLSYMGLCOMPILESHADERARBPROC __rglgen_glCompileShaderARB; -extern RGLSYMGLCREATEPROGRAMOBJECTARBPROC __rglgen_glCreateProgramObjectARB; -extern RGLSYMGLATTACHOBJECTARBPROC __rglgen_glAttachObjectARB; -extern RGLSYMGLLINKPROGRAMARBPROC __rglgen_glLinkProgramARB; -extern RGLSYMGLUSEPROGRAMOBJECTARBPROC __rglgen_glUseProgramObjectARB; -extern RGLSYMGLVALIDATEPROGRAMARBPROC __rglgen_glValidateProgramARB; -extern RGLSYMGLUNIFORM1FARBPROC __rglgen_glUniform1fARB; -extern RGLSYMGLUNIFORM2FARBPROC __rglgen_glUniform2fARB; -extern RGLSYMGLUNIFORM3FARBPROC __rglgen_glUniform3fARB; -extern RGLSYMGLUNIFORM4FARBPROC __rglgen_glUniform4fARB; -extern RGLSYMGLUNIFORM1IARBPROC __rglgen_glUniform1iARB; -extern RGLSYMGLUNIFORM2IARBPROC __rglgen_glUniform2iARB; -extern RGLSYMGLUNIFORM3IARBPROC __rglgen_glUniform3iARB; -extern RGLSYMGLUNIFORM4IARBPROC __rglgen_glUniform4iARB; -extern RGLSYMGLUNIFORM1FVARBPROC __rglgen_glUniform1fvARB; -extern RGLSYMGLUNIFORM2FVARBPROC __rglgen_glUniform2fvARB; -extern RGLSYMGLUNIFORM3FVARBPROC __rglgen_glUniform3fvARB; -extern RGLSYMGLUNIFORM4FVARBPROC __rglgen_glUniform4fvARB; -extern RGLSYMGLUNIFORM1IVARBPROC __rglgen_glUniform1ivARB; -extern RGLSYMGLUNIFORM2IVARBPROC __rglgen_glUniform2ivARB; -extern RGLSYMGLUNIFORM3IVARBPROC __rglgen_glUniform3ivARB; -extern RGLSYMGLUNIFORM4IVARBPROC __rglgen_glUniform4ivARB; -extern RGLSYMGLUNIFORMMATRIX2FVARBPROC __rglgen_glUniformMatrix2fvARB; -extern RGLSYMGLUNIFORMMATRIX3FVARBPROC __rglgen_glUniformMatrix3fvARB; -extern RGLSYMGLUNIFORMMATRIX4FVARBPROC __rglgen_glUniformMatrix4fvARB; -extern RGLSYMGLGETOBJECTPARAMETERFVARBPROC __rglgen_glGetObjectParameterfvARB; -extern RGLSYMGLGETOBJECTPARAMETERIVARBPROC __rglgen_glGetObjectParameterivARB; -extern RGLSYMGLGETINFOLOGARBPROC __rglgen_glGetInfoLogARB; -extern RGLSYMGLGETATTACHEDOBJECTSARBPROC __rglgen_glGetAttachedObjectsARB; -extern RGLSYMGLGETUNIFORMLOCATIONARBPROC __rglgen_glGetUniformLocationARB; -extern RGLSYMGLGETACTIVEUNIFORMARBPROC __rglgen_glGetActiveUniformARB; -extern RGLSYMGLGETUNIFORMFVARBPROC __rglgen_glGetUniformfvARB; -extern RGLSYMGLGETUNIFORMIVARBPROC __rglgen_glGetUniformivARB; -extern RGLSYMGLGETSHADERSOURCEARBPROC __rglgen_glGetShaderSourceARB; -extern RGLSYMGLBINDATTRIBLOCATIONARBPROC __rglgen_glBindAttribLocationARB; -extern RGLSYMGLGETACTIVEATTRIBARBPROC __rglgen_glGetActiveAttribARB; -extern RGLSYMGLGETATTRIBLOCATIONARBPROC __rglgen_glGetAttribLocationARB; -extern RGLSYMGLDRAWBUFFERSARBPROC __rglgen_glDrawBuffersARB; -extern RGLSYMGLCLAMPCOLORARBPROC __rglgen_glClampColorARB; -extern RGLSYMGLDRAWARRAYSINSTANCEDARBPROC __rglgen_glDrawArraysInstancedARB; -extern RGLSYMGLDRAWELEMENTSINSTANCEDARBPROC __rglgen_glDrawElementsInstancedARB; -extern RGLSYMGLISRENDERBUFFERPROC __rglgen_glIsRenderbuffer; -extern RGLSYMGLBINDRENDERBUFFERPROC __rglgen_glBindRenderbuffer; -extern RGLSYMGLDELETERENDERBUFFERSPROC __rglgen_glDeleteRenderbuffers; -extern RGLSYMGLGENRENDERBUFFERSPROC __rglgen_glGenRenderbuffers; -extern RGLSYMGLRENDERBUFFERSTORAGEPROC __rglgen_glRenderbufferStorage; -extern RGLSYMGLGETRENDERBUFFERPARAMETERIVPROC __rglgen_glGetRenderbufferParameteriv; -extern RGLSYMGLISFRAMEBUFFERPROC __rglgen_glIsFramebuffer; -extern RGLSYMGLBINDFRAMEBUFFERPROC __rglgen_glBindFramebuffer; -extern RGLSYMGLDELETEFRAMEBUFFERSPROC __rglgen_glDeleteFramebuffers; -extern RGLSYMGLGENFRAMEBUFFERSPROC __rglgen_glGenFramebuffers; -extern RGLSYMGLCHECKFRAMEBUFFERSTATUSPROC __rglgen_glCheckFramebufferStatus; -extern RGLSYMGLFRAMEBUFFERTEXTURE1DPROC __rglgen_glFramebufferTexture1D; -extern RGLSYMGLFRAMEBUFFERTEXTURE2DPROC __rglgen_glFramebufferTexture2D; -extern RGLSYMGLFRAMEBUFFERTEXTURE3DPROC __rglgen_glFramebufferTexture3D; -extern RGLSYMGLFRAMEBUFFERRENDERBUFFERPROC __rglgen_glFramebufferRenderbuffer; -extern RGLSYMGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __rglgen_glGetFramebufferAttachmentParameteriv; -extern RGLSYMGLGENERATEMIPMAPPROC __rglgen_glGenerateMipmap; -extern RGLSYMGLBLITFRAMEBUFFERPROC __rglgen_glBlitFramebuffer; -extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __rglgen_glRenderbufferStorageMultisample; -extern RGLSYMGLFRAMEBUFFERTEXTURELAYERPROC __rglgen_glFramebufferTextureLayer; -extern RGLSYMGLPROGRAMPARAMETERIARBPROC __rglgen_glProgramParameteriARB; -extern RGLSYMGLFRAMEBUFFERTEXTUREARBPROC __rglgen_glFramebufferTextureARB; -extern RGLSYMGLFRAMEBUFFERTEXTURELAYERARBPROC __rglgen_glFramebufferTextureLayerARB; -extern RGLSYMGLFRAMEBUFFERTEXTUREFACEARBPROC __rglgen_glFramebufferTextureFaceARB; -extern RGLSYMGLVERTEXATTRIBDIVISORARBPROC __rglgen_glVertexAttribDivisorARB; -extern RGLSYMGLMAPBUFFERRANGEPROC __rglgen_glMapBufferRange; -extern RGLSYMGLFLUSHMAPPEDBUFFERRANGEPROC __rglgen_glFlushMappedBufferRange; -extern RGLSYMGLTEXBUFFERARBPROC __rglgen_glTexBufferARB; -extern RGLSYMGLBINDVERTEXARRAYPROC __rglgen_glBindVertexArray; -extern RGLSYMGLDELETEVERTEXARRAYSPROC __rglgen_glDeleteVertexArrays; -extern RGLSYMGLGENVERTEXARRAYSPROC __rglgen_glGenVertexArrays; -extern RGLSYMGLISVERTEXARRAYPROC __rglgen_glIsVertexArray; -extern RGLSYMGLGETUNIFORMINDICESPROC __rglgen_glGetUniformIndices; -extern RGLSYMGLGETACTIVEUNIFORMSIVPROC __rglgen_glGetActiveUniformsiv; -extern RGLSYMGLGETACTIVEUNIFORMNAMEPROC __rglgen_glGetActiveUniformName; -extern RGLSYMGLGETUNIFORMBLOCKINDEXPROC __rglgen_glGetUniformBlockIndex; -extern RGLSYMGLGETACTIVEUNIFORMBLOCKIVPROC __rglgen_glGetActiveUniformBlockiv; -extern RGLSYMGLGETACTIVEUNIFORMBLOCKNAMEPROC __rglgen_glGetActiveUniformBlockName; -extern RGLSYMGLUNIFORMBLOCKBINDINGPROC __rglgen_glUniformBlockBinding; -extern RGLSYMGLCOPYBUFFERSUBDATAPROC __rglgen_glCopyBufferSubData; -extern RGLSYMGLDRAWELEMENTSBASEVERTEXPROC __rglgen_glDrawElementsBaseVertex; -extern RGLSYMGLDRAWRANGEELEMENTSBASEVERTEXPROC __rglgen_glDrawRangeElementsBaseVertex; -extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __rglgen_glDrawElementsInstancedBaseVertex; -extern RGLSYMGLMULTIDRAWELEMENTSBASEVERTEXPROC __rglgen_glMultiDrawElementsBaseVertex; -extern RGLSYMGLPROVOKINGVERTEXPROC __rglgen_glProvokingVertex; -extern RGLSYMGLFENCESYNCPROC __rglgen_glFenceSync; -extern RGLSYMGLISSYNCPROC __rglgen_glIsSync; -extern RGLSYMGLDELETESYNCPROC __rglgen_glDeleteSync; -extern RGLSYMGLCLIENTWAITSYNCPROC __rglgen_glClientWaitSync; -extern RGLSYMGLWAITSYNCPROC __rglgen_glWaitSync; -extern RGLSYMGLGETINTEGER64VPROC __rglgen_glGetInteger64v; -extern RGLSYMGLGETSYNCIVPROC __rglgen_glGetSynciv; -extern RGLSYMGLTEXIMAGE2DMULTISAMPLEPROC __rglgen_glTexImage2DMultisample; -extern RGLSYMGLTEXIMAGE3DMULTISAMPLEPROC __rglgen_glTexImage3DMultisample; -extern RGLSYMGLGETMULTISAMPLEFVPROC __rglgen_glGetMultisamplefv; -extern RGLSYMGLSAMPLEMASKIPROC __rglgen_glSampleMaski; -extern RGLSYMGLBLENDEQUATIONIARBPROC __rglgen_glBlendEquationiARB; -extern RGLSYMGLBLENDEQUATIONSEPARATEIARBPROC __rglgen_glBlendEquationSeparateiARB; -extern RGLSYMGLBLENDFUNCIARBPROC __rglgen_glBlendFunciARB; -extern RGLSYMGLBLENDFUNCSEPARATEIARBPROC __rglgen_glBlendFuncSeparateiARB; -extern RGLSYMGLMINSAMPLESHADINGARBPROC __rglgen_glMinSampleShadingARB; -extern RGLSYMGLNAMEDSTRINGARBPROC __rglgen_glNamedStringARB; -extern RGLSYMGLDELETENAMEDSTRINGARBPROC __rglgen_glDeleteNamedStringARB; -extern RGLSYMGLCOMPILESHADERINCLUDEARBPROC __rglgen_glCompileShaderIncludeARB; -extern RGLSYMGLISNAMEDSTRINGARBPROC __rglgen_glIsNamedStringARB; -extern RGLSYMGLGETNAMEDSTRINGARBPROC __rglgen_glGetNamedStringARB; -extern RGLSYMGLGETNAMEDSTRINGIVARBPROC __rglgen_glGetNamedStringivARB; -extern RGLSYMGLBINDFRAGDATALOCATIONINDEXEDPROC __rglgen_glBindFragDataLocationIndexed; -extern RGLSYMGLGETFRAGDATAINDEXPROC __rglgen_glGetFragDataIndex; -extern RGLSYMGLGENSAMPLERSPROC __rglgen_glGenSamplers; -extern RGLSYMGLDELETESAMPLERSPROC __rglgen_glDeleteSamplers; -extern RGLSYMGLISSAMPLERPROC __rglgen_glIsSampler; -extern RGLSYMGLBINDSAMPLERPROC __rglgen_glBindSampler; -extern RGLSYMGLSAMPLERPARAMETERIPROC __rglgen_glSamplerParameteri; -extern RGLSYMGLSAMPLERPARAMETERIVPROC __rglgen_glSamplerParameteriv; -extern RGLSYMGLSAMPLERPARAMETERFPROC __rglgen_glSamplerParameterf; -extern RGLSYMGLSAMPLERPARAMETERFVPROC __rglgen_glSamplerParameterfv; -extern RGLSYMGLSAMPLERPARAMETERIIVPROC __rglgen_glSamplerParameterIiv; -extern RGLSYMGLSAMPLERPARAMETERIUIVPROC __rglgen_glSamplerParameterIuiv; -extern RGLSYMGLGETSAMPLERPARAMETERIVPROC __rglgen_glGetSamplerParameteriv; -extern RGLSYMGLGETSAMPLERPARAMETERIIVPROC __rglgen_glGetSamplerParameterIiv; -extern RGLSYMGLGETSAMPLERPARAMETERFVPROC __rglgen_glGetSamplerParameterfv; -extern RGLSYMGLGETSAMPLERPARAMETERIUIVPROC __rglgen_glGetSamplerParameterIuiv; -extern RGLSYMGLQUERYCOUNTERPROC __rglgen_glQueryCounter; -extern RGLSYMGLGETQUERYOBJECTI64VPROC __rglgen_glGetQueryObjecti64v; -extern RGLSYMGLGETQUERYOBJECTUI64VPROC __rglgen_glGetQueryObjectui64v; -extern RGLSYMGLVERTEXP2UIPROC __rglgen_glVertexP2ui; -extern RGLSYMGLVERTEXP2UIVPROC __rglgen_glVertexP2uiv; -extern RGLSYMGLVERTEXP3UIPROC __rglgen_glVertexP3ui; -extern RGLSYMGLVERTEXP3UIVPROC __rglgen_glVertexP3uiv; -extern RGLSYMGLVERTEXP4UIPROC __rglgen_glVertexP4ui; -extern RGLSYMGLVERTEXP4UIVPROC __rglgen_glVertexP4uiv; -extern RGLSYMGLTEXCOORDP1UIPROC __rglgen_glTexCoordP1ui; -extern RGLSYMGLTEXCOORDP1UIVPROC __rglgen_glTexCoordP1uiv; -extern RGLSYMGLTEXCOORDP2UIPROC __rglgen_glTexCoordP2ui; -extern RGLSYMGLTEXCOORDP2UIVPROC __rglgen_glTexCoordP2uiv; -extern RGLSYMGLTEXCOORDP3UIPROC __rglgen_glTexCoordP3ui; -extern RGLSYMGLTEXCOORDP3UIVPROC __rglgen_glTexCoordP3uiv; -extern RGLSYMGLTEXCOORDP4UIPROC __rglgen_glTexCoordP4ui; -extern RGLSYMGLTEXCOORDP4UIVPROC __rglgen_glTexCoordP4uiv; -extern RGLSYMGLMULTITEXCOORDP1UIPROC __rglgen_glMultiTexCoordP1ui; -extern RGLSYMGLMULTITEXCOORDP1UIVPROC __rglgen_glMultiTexCoordP1uiv; -extern RGLSYMGLMULTITEXCOORDP2UIPROC __rglgen_glMultiTexCoordP2ui; -extern RGLSYMGLMULTITEXCOORDP2UIVPROC __rglgen_glMultiTexCoordP2uiv; -extern RGLSYMGLMULTITEXCOORDP3UIPROC __rglgen_glMultiTexCoordP3ui; -extern RGLSYMGLMULTITEXCOORDP3UIVPROC __rglgen_glMultiTexCoordP3uiv; -extern RGLSYMGLMULTITEXCOORDP4UIPROC __rglgen_glMultiTexCoordP4ui; -extern RGLSYMGLMULTITEXCOORDP4UIVPROC __rglgen_glMultiTexCoordP4uiv; -extern RGLSYMGLNORMALP3UIPROC __rglgen_glNormalP3ui; -extern RGLSYMGLNORMALP3UIVPROC __rglgen_glNormalP3uiv; -extern RGLSYMGLCOLORP3UIPROC __rglgen_glColorP3ui; -extern RGLSYMGLCOLORP3UIVPROC __rglgen_glColorP3uiv; -extern RGLSYMGLCOLORP4UIPROC __rglgen_glColorP4ui; -extern RGLSYMGLCOLORP4UIVPROC __rglgen_glColorP4uiv; -extern RGLSYMGLSECONDARYCOLORP3UIPROC __rglgen_glSecondaryColorP3ui; -extern RGLSYMGLSECONDARYCOLORP3UIVPROC __rglgen_glSecondaryColorP3uiv; -extern RGLSYMGLVERTEXATTRIBP1UIPROC __rglgen_glVertexAttribP1ui; -extern RGLSYMGLVERTEXATTRIBP1UIVPROC __rglgen_glVertexAttribP1uiv; -extern RGLSYMGLVERTEXATTRIBP2UIPROC __rglgen_glVertexAttribP2ui; -extern RGLSYMGLVERTEXATTRIBP2UIVPROC __rglgen_glVertexAttribP2uiv; -extern RGLSYMGLVERTEXATTRIBP3UIPROC __rglgen_glVertexAttribP3ui; -extern RGLSYMGLVERTEXATTRIBP3UIVPROC __rglgen_glVertexAttribP3uiv; -extern RGLSYMGLVERTEXATTRIBP4UIPROC __rglgen_glVertexAttribP4ui; -extern RGLSYMGLVERTEXATTRIBP4UIVPROC __rglgen_glVertexAttribP4uiv; -extern RGLSYMGLDRAWARRAYSINDIRECTPROC __rglgen_glDrawArraysIndirect; -extern RGLSYMGLDRAWELEMENTSINDIRECTPROC __rglgen_glDrawElementsIndirect; -extern RGLSYMGLUNIFORM1DPROC __rglgen_glUniform1d; -extern RGLSYMGLUNIFORM2DPROC __rglgen_glUniform2d; -extern RGLSYMGLUNIFORM3DPROC __rglgen_glUniform3d; -extern RGLSYMGLUNIFORM4DPROC __rglgen_glUniform4d; -extern RGLSYMGLUNIFORM1DVPROC __rglgen_glUniform1dv; -extern RGLSYMGLUNIFORM2DVPROC __rglgen_glUniform2dv; -extern RGLSYMGLUNIFORM3DVPROC __rglgen_glUniform3dv; -extern RGLSYMGLUNIFORM4DVPROC __rglgen_glUniform4dv; -extern RGLSYMGLUNIFORMMATRIX2DVPROC __rglgen_glUniformMatrix2dv; -extern RGLSYMGLUNIFORMMATRIX3DVPROC __rglgen_glUniformMatrix3dv; -extern RGLSYMGLUNIFORMMATRIX4DVPROC __rglgen_glUniformMatrix4dv; -extern RGLSYMGLUNIFORMMATRIX2X3DVPROC __rglgen_glUniformMatrix2x3dv; -extern RGLSYMGLUNIFORMMATRIX2X4DVPROC __rglgen_glUniformMatrix2x4dv; -extern RGLSYMGLUNIFORMMATRIX3X2DVPROC __rglgen_glUniformMatrix3x2dv; -extern RGLSYMGLUNIFORMMATRIX3X4DVPROC __rglgen_glUniformMatrix3x4dv; -extern RGLSYMGLUNIFORMMATRIX4X2DVPROC __rglgen_glUniformMatrix4x2dv; -extern RGLSYMGLUNIFORMMATRIX4X3DVPROC __rglgen_glUniformMatrix4x3dv; -extern RGLSYMGLGETUNIFORMDVPROC __rglgen_glGetUniformdv; -extern RGLSYMGLGETSUBROUTINEUNIFORMLOCATIONPROC __rglgen_glGetSubroutineUniformLocation; -extern RGLSYMGLGETSUBROUTINEINDEXPROC __rglgen_glGetSubroutineIndex; -extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMIVPROC __rglgen_glGetActiveSubroutineUniformiv; -extern RGLSYMGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __rglgen_glGetActiveSubroutineUniformName; -extern RGLSYMGLGETACTIVESUBROUTINENAMEPROC __rglgen_glGetActiveSubroutineName; -extern RGLSYMGLUNIFORMSUBROUTINESUIVPROC __rglgen_glUniformSubroutinesuiv; -extern RGLSYMGLGETUNIFORMSUBROUTINEUIVPROC __rglgen_glGetUniformSubroutineuiv; -extern RGLSYMGLGETPROGRAMSTAGEIVPROC __rglgen_glGetProgramStageiv; -extern RGLSYMGLPATCHPARAMETERIPROC __rglgen_glPatchParameteri; -extern RGLSYMGLPATCHPARAMETERFVPROC __rglgen_glPatchParameterfv; -extern RGLSYMGLBINDTRANSFORMFEEDBACKPROC __rglgen_glBindTransformFeedback; -extern RGLSYMGLDELETETRANSFORMFEEDBACKSPROC __rglgen_glDeleteTransformFeedbacks; -extern RGLSYMGLGENTRANSFORMFEEDBACKSPROC __rglgen_glGenTransformFeedbacks; -extern RGLSYMGLISTRANSFORMFEEDBACKPROC __rglgen_glIsTransformFeedback; -extern RGLSYMGLPAUSETRANSFORMFEEDBACKPROC __rglgen_glPauseTransformFeedback; -extern RGLSYMGLRESUMETRANSFORMFEEDBACKPROC __rglgen_glResumeTransformFeedback; -extern RGLSYMGLDRAWTRANSFORMFEEDBACKPROC __rglgen_glDrawTransformFeedback; -extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMPROC __rglgen_glDrawTransformFeedbackStream; -extern RGLSYMGLBEGINQUERYINDEXEDPROC __rglgen_glBeginQueryIndexed; -extern RGLSYMGLENDQUERYINDEXEDPROC __rglgen_glEndQueryIndexed; -extern RGLSYMGLGETQUERYINDEXEDIVPROC __rglgen_glGetQueryIndexediv; -extern RGLSYMGLRELEASESHADERCOMPILERPROC __rglgen_glReleaseShaderCompiler; -extern RGLSYMGLSHADERBINARYPROC __rglgen_glShaderBinary; -extern RGLSYMGLGETSHADERPRECISIONFORMATPROC __rglgen_glGetShaderPrecisionFormat; -extern RGLSYMGLDEPTHRANGEFPROC __rglgen_glDepthRangef; -extern RGLSYMGLCLEARDEPTHFPROC __rglgen_glClearDepthf; -extern RGLSYMGLGETPROGRAMBINARYPROC __rglgen_glGetProgramBinary; -extern RGLSYMGLPROGRAMBINARYPROC __rglgen_glProgramBinary; -extern RGLSYMGLPROGRAMPARAMETERIPROC __rglgen_glProgramParameteri; -extern RGLSYMGLUSEPROGRAMSTAGESPROC __rglgen_glUseProgramStages; -extern RGLSYMGLACTIVESHADERPROGRAMPROC __rglgen_glActiveShaderProgram; -extern RGLSYMGLCREATESHADERPROGRAMVPROC __rglgen_glCreateShaderProgramv; -extern RGLSYMGLBINDPROGRAMPIPELINEPROC __rglgen_glBindProgramPipeline; -extern RGLSYMGLDELETEPROGRAMPIPELINESPROC __rglgen_glDeleteProgramPipelines; -extern RGLSYMGLGENPROGRAMPIPELINESPROC __rglgen_glGenProgramPipelines; -extern RGLSYMGLISPROGRAMPIPELINEPROC __rglgen_glIsProgramPipeline; -extern RGLSYMGLGETPROGRAMPIPELINEIVPROC __rglgen_glGetProgramPipelineiv; -extern RGLSYMGLPROGRAMUNIFORM1IPROC __rglgen_glProgramUniform1i; -extern RGLSYMGLPROGRAMUNIFORM1IVPROC __rglgen_glProgramUniform1iv; -extern RGLSYMGLPROGRAMUNIFORM1FPROC __rglgen_glProgramUniform1f; -extern RGLSYMGLPROGRAMUNIFORM1FVPROC __rglgen_glProgramUniform1fv; -extern RGLSYMGLPROGRAMUNIFORM1DPROC __rglgen_glProgramUniform1d; -extern RGLSYMGLPROGRAMUNIFORM1DVPROC __rglgen_glProgramUniform1dv; -extern RGLSYMGLPROGRAMUNIFORM1UIPROC __rglgen_glProgramUniform1ui; -extern RGLSYMGLPROGRAMUNIFORM1UIVPROC __rglgen_glProgramUniform1uiv; -extern RGLSYMGLPROGRAMUNIFORM2IPROC __rglgen_glProgramUniform2i; -extern RGLSYMGLPROGRAMUNIFORM2IVPROC __rglgen_glProgramUniform2iv; -extern RGLSYMGLPROGRAMUNIFORM2FPROC __rglgen_glProgramUniform2f; -extern RGLSYMGLPROGRAMUNIFORM2FVPROC __rglgen_glProgramUniform2fv; -extern RGLSYMGLPROGRAMUNIFORM2DPROC __rglgen_glProgramUniform2d; -extern RGLSYMGLPROGRAMUNIFORM2DVPROC __rglgen_glProgramUniform2dv; -extern RGLSYMGLPROGRAMUNIFORM2UIPROC __rglgen_glProgramUniform2ui; -extern RGLSYMGLPROGRAMUNIFORM2UIVPROC __rglgen_glProgramUniform2uiv; -extern RGLSYMGLPROGRAMUNIFORM3IPROC __rglgen_glProgramUniform3i; -extern RGLSYMGLPROGRAMUNIFORM3IVPROC __rglgen_glProgramUniform3iv; -extern RGLSYMGLPROGRAMUNIFORM3FPROC __rglgen_glProgramUniform3f; -extern RGLSYMGLPROGRAMUNIFORM3FVPROC __rglgen_glProgramUniform3fv; -extern RGLSYMGLPROGRAMUNIFORM3DPROC __rglgen_glProgramUniform3d; -extern RGLSYMGLPROGRAMUNIFORM3DVPROC __rglgen_glProgramUniform3dv; -extern RGLSYMGLPROGRAMUNIFORM3UIPROC __rglgen_glProgramUniform3ui; -extern RGLSYMGLPROGRAMUNIFORM3UIVPROC __rglgen_glProgramUniform3uiv; -extern RGLSYMGLPROGRAMUNIFORM4IPROC __rglgen_glProgramUniform4i; -extern RGLSYMGLPROGRAMUNIFORM4IVPROC __rglgen_glProgramUniform4iv; -extern RGLSYMGLPROGRAMUNIFORM4FPROC __rglgen_glProgramUniform4f; -extern RGLSYMGLPROGRAMUNIFORM4FVPROC __rglgen_glProgramUniform4fv; -extern RGLSYMGLPROGRAMUNIFORM4DPROC __rglgen_glProgramUniform4d; -extern RGLSYMGLPROGRAMUNIFORM4DVPROC __rglgen_glProgramUniform4dv; -extern RGLSYMGLPROGRAMUNIFORM4UIPROC __rglgen_glProgramUniform4ui; -extern RGLSYMGLPROGRAMUNIFORM4UIVPROC __rglgen_glProgramUniform4uiv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2FVPROC __rglgen_glProgramUniformMatrix2fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3FVPROC __rglgen_glProgramUniformMatrix3fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4FVPROC __rglgen_glProgramUniformMatrix4fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2DVPROC __rglgen_glProgramUniformMatrix2dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3DVPROC __rglgen_glProgramUniformMatrix3dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4DVPROC __rglgen_glProgramUniformMatrix4dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3FVPROC __rglgen_glProgramUniformMatrix2x3fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2FVPROC __rglgen_glProgramUniformMatrix3x2fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4FVPROC __rglgen_glProgramUniformMatrix2x4fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2FVPROC __rglgen_glProgramUniformMatrix4x2fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4FVPROC __rglgen_glProgramUniformMatrix3x4fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3FVPROC __rglgen_glProgramUniformMatrix4x3fv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2X3DVPROC __rglgen_glProgramUniformMatrix2x3dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3X2DVPROC __rglgen_glProgramUniformMatrix3x2dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX2X4DVPROC __rglgen_glProgramUniformMatrix2x4dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4X2DVPROC __rglgen_glProgramUniformMatrix4x2dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX3X4DVPROC __rglgen_glProgramUniformMatrix3x4dv; -extern RGLSYMGLPROGRAMUNIFORMMATRIX4X3DVPROC __rglgen_glProgramUniformMatrix4x3dv; -extern RGLSYMGLVALIDATEPROGRAMPIPELINEPROC __rglgen_glValidateProgramPipeline; -extern RGLSYMGLGETPROGRAMPIPELINEINFOLOGPROC __rglgen_glGetProgramPipelineInfoLog; -extern RGLSYMGLVERTEXATTRIBL1DPROC __rglgen_glVertexAttribL1d; -extern RGLSYMGLVERTEXATTRIBL2DPROC __rglgen_glVertexAttribL2d; -extern RGLSYMGLVERTEXATTRIBL3DPROC __rglgen_glVertexAttribL3d; -extern RGLSYMGLVERTEXATTRIBL4DPROC __rglgen_glVertexAttribL4d; -extern RGLSYMGLVERTEXATTRIBL1DVPROC __rglgen_glVertexAttribL1dv; -extern RGLSYMGLVERTEXATTRIBL2DVPROC __rglgen_glVertexAttribL2dv; -extern RGLSYMGLVERTEXATTRIBL3DVPROC __rglgen_glVertexAttribL3dv; -extern RGLSYMGLVERTEXATTRIBL4DVPROC __rglgen_glVertexAttribL4dv; -extern RGLSYMGLVERTEXATTRIBLPOINTERPROC __rglgen_glVertexAttribLPointer; -extern RGLSYMGLGETVERTEXATTRIBLDVPROC __rglgen_glGetVertexAttribLdv; -extern RGLSYMGLVIEWPORTARRAYVPROC __rglgen_glViewportArrayv; -extern RGLSYMGLVIEWPORTINDEXEDFPROC __rglgen_glViewportIndexedf; -extern RGLSYMGLVIEWPORTINDEXEDFVPROC __rglgen_glViewportIndexedfv; -extern RGLSYMGLSCISSORARRAYVPROC __rglgen_glScissorArrayv; -extern RGLSYMGLSCISSORINDEXEDPROC __rglgen_glScissorIndexed; -extern RGLSYMGLSCISSORINDEXEDVPROC __rglgen_glScissorIndexedv; -extern RGLSYMGLDEPTHRANGEARRAYVPROC __rglgen_glDepthRangeArrayv; -extern RGLSYMGLDEPTHRANGEINDEXEDPROC __rglgen_glDepthRangeIndexed; -extern RGLSYMGLGETFLOATI_VPROC __rglgen_glGetFloati_v; -extern RGLSYMGLGETDOUBLEI_VPROC __rglgen_glGetDoublei_v; -extern RGLSYMGLCREATESYNCFROMCLEVENTARBPROC __rglgen_glCreateSyncFromCLeventARB; -extern RGLSYMGLDEBUGMESSAGECONTROLARBPROC __rglgen_glDebugMessageControlARB; -extern RGLSYMGLDEBUGMESSAGEINSERTARBPROC __rglgen_glDebugMessageInsertARB; -extern RGLSYMGLDEBUGMESSAGECALLBACKARBPROC __rglgen_glDebugMessageCallbackARB; -extern RGLSYMGLGETDEBUGMESSAGELOGARBPROC __rglgen_glGetDebugMessageLogARB; -extern RGLSYMGLGETGRAPHICSRESETSTATUSARBPROC __rglgen_glGetGraphicsResetStatusARB; -extern RGLSYMGLGETNMAPDVARBPROC __rglgen_glGetnMapdvARB; -extern RGLSYMGLGETNMAPFVARBPROC __rglgen_glGetnMapfvARB; -extern RGLSYMGLGETNMAPIVARBPROC __rglgen_glGetnMapivARB; -extern RGLSYMGLGETNPIXELMAPFVARBPROC __rglgen_glGetnPixelMapfvARB; -extern RGLSYMGLGETNPIXELMAPUIVARBPROC __rglgen_glGetnPixelMapuivARB; -extern RGLSYMGLGETNPIXELMAPUSVARBPROC __rglgen_glGetnPixelMapusvARB; -extern RGLSYMGLGETNPOLYGONSTIPPLEARBPROC __rglgen_glGetnPolygonStippleARB; -extern RGLSYMGLGETNCOLORTABLEARBPROC __rglgen_glGetnColorTableARB; -extern RGLSYMGLGETNCONVOLUTIONFILTERARBPROC __rglgen_glGetnConvolutionFilterARB; -extern RGLSYMGLGETNSEPARABLEFILTERARBPROC __rglgen_glGetnSeparableFilterARB; -extern RGLSYMGLGETNHISTOGRAMARBPROC __rglgen_glGetnHistogramARB; -extern RGLSYMGLGETNMINMAXARBPROC __rglgen_glGetnMinmaxARB; -extern RGLSYMGLGETNTEXIMAGEARBPROC __rglgen_glGetnTexImageARB; -extern RGLSYMGLREADNPIXELSARBPROC __rglgen_glReadnPixelsARB; -extern RGLSYMGLGETNCOMPRESSEDTEXIMAGEARBPROC __rglgen_glGetnCompressedTexImageARB; -extern RGLSYMGLGETNUNIFORMFVARBPROC __rglgen_glGetnUniformfvARB; -extern RGLSYMGLGETNUNIFORMIVARBPROC __rglgen_glGetnUniformivARB; -extern RGLSYMGLGETNUNIFORMUIVARBPROC __rglgen_glGetnUniformuivARB; -extern RGLSYMGLGETNUNIFORMDVARBPROC __rglgen_glGetnUniformdvARB; -extern RGLSYMGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawArraysInstancedBaseInstance; -extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseInstance; -extern RGLSYMGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __rglgen_glDrawElementsInstancedBaseVertexBaseInstance; -extern RGLSYMGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __rglgen_glDrawTransformFeedbackInstanced; -extern RGLSYMGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __rglgen_glDrawTransformFeedbackStreamInstanced; -extern RGLSYMGLGETINTERNALFORMATIVPROC __rglgen_glGetInternalformativ; -extern RGLSYMGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __rglgen_glGetActiveAtomicCounterBufferiv; -extern RGLSYMGLBINDIMAGETEXTUREPROC __rglgen_glBindImageTexture; -extern RGLSYMGLMEMORYBARRIERPROC __rglgen_glMemoryBarrier; -extern RGLSYMGLTEXSTORAGE1DPROC __rglgen_glTexStorage1D; -extern RGLSYMGLTEXSTORAGE2DPROC __rglgen_glTexStorage2D; -extern RGLSYMGLTEXSTORAGE3DPROC __rglgen_glTexStorage3D; -extern RGLSYMGLDEBUGMESSAGECONTROLPROC __rglgen_glDebugMessageControl; -extern RGLSYMGLDEBUGMESSAGEINSERTPROC __rglgen_glDebugMessageInsert; -extern RGLSYMGLDEBUGMESSAGECALLBACKPROC __rglgen_glDebugMessageCallback; -extern RGLSYMGLGETDEBUGMESSAGELOGPROC __rglgen_glGetDebugMessageLog; -extern RGLSYMGLPUSHDEBUGGROUPPROC __rglgen_glPushDebugGroup; -extern RGLSYMGLPOPDEBUGGROUPPROC __rglgen_glPopDebugGroup; -extern RGLSYMGLOBJECTLABELPROC __rglgen_glObjectLabel; -extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; -extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; -extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; -extern RGLSYMGLCLEARBUFFERDATAPROC __rglgen_glClearBufferData; -extern RGLSYMGLCLEARBUFFERSUBDATAPROC __rglgen_glClearBufferSubData; -extern RGLSYMGLDISPATCHCOMPUTEPROC __rglgen_glDispatchCompute; -extern RGLSYMGLDISPATCHCOMPUTEINDIRECTPROC __rglgen_glDispatchComputeIndirect; -extern RGLSYMGLCOPYIMAGESUBDATAPROC __rglgen_glCopyImageSubData; -extern RGLSYMGLTEXTUREVIEWPROC __rglgen_glTextureView; -extern RGLSYMGLBINDVERTEXBUFFERPROC __rglgen_glBindVertexBuffer; -extern RGLSYMGLVERTEXATTRIBFORMATPROC __rglgen_glVertexAttribFormat; -extern RGLSYMGLVERTEXATTRIBIFORMATPROC __rglgen_glVertexAttribIFormat; -extern RGLSYMGLVERTEXATTRIBLFORMATPROC __rglgen_glVertexAttribLFormat; -extern RGLSYMGLVERTEXATTRIBBINDINGPROC __rglgen_glVertexAttribBinding; -extern RGLSYMGLVERTEXBINDINGDIVISORPROC __rglgen_glVertexBindingDivisor; -extern RGLSYMGLFRAMEBUFFERPARAMETERIPROC __rglgen_glFramebufferParameteri; -extern RGLSYMGLGETFRAMEBUFFERPARAMETERIVPROC __rglgen_glGetFramebufferParameteriv; -extern RGLSYMGLGETINTERNALFORMATI64VPROC __rglgen_glGetInternalformati64v; -extern RGLSYMGLINVALIDATETEXSUBIMAGEPROC __rglgen_glInvalidateTexSubImage; -extern RGLSYMGLINVALIDATETEXIMAGEPROC __rglgen_glInvalidateTexImage; -extern RGLSYMGLINVALIDATEBUFFERSUBDATAPROC __rglgen_glInvalidateBufferSubData; -extern RGLSYMGLINVALIDATEBUFFERDATAPROC __rglgen_glInvalidateBufferData; -extern RGLSYMGLINVALIDATEFRAMEBUFFERPROC __rglgen_glInvalidateFramebuffer; -extern RGLSYMGLINVALIDATESUBFRAMEBUFFERPROC __rglgen_glInvalidateSubFramebuffer; -extern RGLSYMGLMULTIDRAWARRAYSINDIRECTPROC __rglgen_glMultiDrawArraysIndirect; -extern RGLSYMGLMULTIDRAWELEMENTSINDIRECTPROC __rglgen_glMultiDrawElementsIndirect; -extern RGLSYMGLGETPROGRAMINTERFACEIVPROC __rglgen_glGetProgramInterfaceiv; -extern RGLSYMGLGETPROGRAMRESOURCEINDEXPROC __rglgen_glGetProgramResourceIndex; -extern RGLSYMGLGETPROGRAMRESOURCENAMEPROC __rglgen_glGetProgramResourceName; -extern RGLSYMGLGETPROGRAMRESOURCEIVPROC __rglgen_glGetProgramResourceiv; -extern RGLSYMGLGETPROGRAMRESOURCELOCATIONPROC __rglgen_glGetProgramResourceLocation; -extern RGLSYMGLGETPROGRAMRESOURCELOCATIONINDEXPROC __rglgen_glGetProgramResourceLocationIndex; -extern RGLSYMGLSHADERSTORAGEBLOCKBINDINGPROC __rglgen_glShaderStorageBlockBinding; -extern RGLSYMGLTEXBUFFERRANGEPROC __rglgen_glTexBufferRange; -extern RGLSYMGLTEXSTORAGE2DMULTISAMPLEPROC __rglgen_glTexStorage2DMultisample; -extern RGLSYMGLTEXSTORAGE3DMULTISAMPLEPROC __rglgen_glTexStorage3DMultisample; -extern RGLSYMGLIMAGETRANSFORMPARAMETERIHPPROC __rglgen_glImageTransformParameteriHP; -extern RGLSYMGLIMAGETRANSFORMPARAMETERFHPPROC __rglgen_glImageTransformParameterfHP; -extern RGLSYMGLIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glImageTransformParameterivHP; -extern RGLSYMGLIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glImageTransformParameterfvHP; -extern RGLSYMGLGETIMAGETRANSFORMPARAMETERIVHPPROC __rglgen_glGetImageTransformParameterivHP; -extern RGLSYMGLGETIMAGETRANSFORMPARAMETERFVHPPROC __rglgen_glGetImageTransformParameterfvHP; - -struct rglgen_sym_map { const char *sym; void *ptr; }; -extern const struct rglgen_sym_map rglgen_symbol_map[]; -#endif diff --git a/libretro-test-gl/glsym/rglgen.c b/libretro-test-gl/glsym/rglgen.c deleted file mode 100644 index 06ff488e72..0000000000 --- a/libretro-test-gl/glsym/rglgen.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "rglgen.h" -#include "glsym.h" -#include - -void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, - const struct rglgen_sym_map *map) -{ - for (; map->sym; map++) - { - rglgen_func_t func = proc(map->sym); - memcpy(map->ptr, &func, sizeof(func)); - } -} - -void rglgen_resolve_symbols(rglgen_proc_address_t proc) -{ - rglgen_resolve_symbols_custom(proc, rglgen_symbol_map); -} - diff --git a/libretro-test-gl/glsym/rglgen.h b/libretro-test-gl/glsym/rglgen.h deleted file mode 100644 index a4ce2a3875..0000000000 --- a/libretro-test-gl/glsym/rglgen.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef RGLGEN_H__ -#define RGLGEN_H__ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef HAVE_EGL -#include -#include -#endif - -#if defined(IOS) -#include -#include -#elif defined(__APPLE__) -#include -#include -#elif defined(HAVE_PSGL) -#include -#include -#include -#elif defined(HAVE_OPENGL_MODERN) -#include -#include -#elif defined(HAVE_OPENGLES2) -#include -#include -#elif defined(HAVE_OPENGLES1) -#include -#include -#else -#include -#include -#endif - -struct rglgen_sym_map; - -typedef void (*rglgen_func_t)(void); -typedef rglgen_func_t (*rglgen_proc_address_t)(const char*); -void rglgen_resolve_symbols(rglgen_proc_address_t proc); -void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, - const struct rglgen_sym_map *map); - - -#endif - diff --git a/libretro-test-gl/libretro-test.c b/libretro-test-gl/libretro-test.c index 49727e9352..8cb0fbdff3 100644 --- a/libretro-test-gl/libretro-test.c +++ b/libretro-test-gl/libretro-test.c @@ -8,7 +8,7 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) static struct retro_hw_render_callback hw_render; -#include "glsym/glsym.h" +#include "../gfx/glsym/glsym.h" #define BASE_WIDTH 320 #define BASE_HEIGHT 240 From db7d60018495d4034815b2690a00711951e14f38 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 12:55:16 +0200 Subject: [PATCH 114/252] Apply glsym APIENTRY fixups. --- gfx/glsym/glgen.py | 6 ++++++ gfx/glsym/glsym_gl.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 2ee1a4b1f1..6380a028a3 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -83,6 +83,12 @@ if __name__ == '__main__': f.write('#ifdef GL_APIENTRY\n') f.write('typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(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') diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index f7e3a96506..2026c9d3d4 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -3,6 +3,12 @@ #ifdef GL_APIENTRY typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #else +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #endif From 108d2e5c1214a2e06b63f851834d718b599361e4 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 13:03:45 +0200 Subject: [PATCH 115/252] Add fixups for GLfixed. --- gfx/glsym/glgen.py | 3 +++ gfx/glsym/glsym_gl.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 6380a028a3..d4faabc20a 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -95,6 +95,9 @@ if __name__ == '__main__': 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') dump(f, typedefs) dump(f, overrides) dump(f, externs) diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index 2026c9d3d4..541ec3e935 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -15,6 +15,9 @@ typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsiz #ifndef GL_OES_EGL_image typedef void *GLeglImageOES; #endif +#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2) +typedef GLint GLfixed; +#endif typedef void (APIENTRYP RGLSYMGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); typedef void (APIENTRYP RGLSYMGLBLENDEQUATIONPROC) (GLenum mode); typedef void (APIENTRYP RGLSYMGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); From c71777f5ec74967d3920ccb18add732e47f7eb23 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 15:25:34 +0200 Subject: [PATCH 116/252] Clear out uniform struct and use stock shader. --- gfx/shader_glsl.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index df090608cf..dc7b1a1a6d 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -23,6 +23,8 @@ #include "../dynamic.h" #include "../file.h" +#define GLSL_DEBUG + #ifdef HAVE_CONFIG_H #include "../config.h" #endif @@ -677,6 +679,7 @@ static void gl_glsl_deinit(void) glDeleteTextures(glsl_shader->luts, gl_teximage); memset(gl_program, 0, sizeof(gl_program)); + memset(gl_uniforms, 0, sizeof(gl_uniforms)); glsl_enable = false; active_index = 0; @@ -770,6 +773,14 @@ static bool gl_glsl_init(const char *path) const char *stock_fragment = glsl_shader->modern ? stock_fragment_modern : stock_fragment_legacy; +#ifndef HAVE_OPENGLES2 + if (glsl_core) + { + stock_vertex = stock_vertex_core; + stock_fragment = stock_fragment_core; + } +#endif + #ifdef HAVE_OPENGLES2 if (!glsl_shader->modern) { From 911558462a64e750042ee54d0a0f54a4e9e83ecb Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 15:35:32 +0200 Subject: [PATCH 117/252] Use core blend correctly when using core context. --- gfx/shader_glsl.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index dc7b1a1a6d..531a2efcd2 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -23,8 +23,6 @@ #include "../dynamic.h" #include "../file.h" -#define GLSL_DEBUG - #ifdef HAVE_CONFIG_H #include "../config.h" #endif @@ -225,7 +223,6 @@ static const char *stock_fragment_modern_blend = " gl_FragColor = color * texture2D(Texture, tex_coord);\n" "}"; -#ifndef HAVE_OPENGLES2 static const char *stock_vertex_core_blend = "in vec2 TexCoord;\n" "in vec2 VertexCoord;\n" @@ -247,7 +244,6 @@ static const char *stock_fragment_core_blend = "void main() {\n" " FragColor = color * texture(Texture, tex_coord);\n" "}"; -#endif static GLint get_uniform(GLuint prog, const char *base) { @@ -773,13 +769,11 @@ static bool gl_glsl_init(const char *path) const char *stock_fragment = glsl_shader->modern ? stock_fragment_modern : stock_fragment_legacy; -#ifndef HAVE_OPENGLES2 if (glsl_core) { stock_vertex = stock_vertex_core; stock_fragment = stock_fragment_core; } -#endif #ifdef HAVE_OPENGLES2 if (!glsl_shader->modern) @@ -842,14 +836,8 @@ static bool gl_glsl_init(const char *path) if (glsl_shader->modern) { -#ifdef HAVE_OPENGLES2 // Avoid compiler warnings. - gl_program[GL_SHADER_STOCK_BLEND] = compile_program(stock_vertex_modern_blend, - stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); -#else gl_program[GL_SHADER_STOCK_BLEND] = compile_program(glsl_core ? stock_vertex_core_blend : stock_vertex_modern_blend, - glsl_core ? stock_fragment_modern_blend : stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); -#endif - + glsl_core ? stock_fragment_core_blend : stock_fragment_modern_blend, GL_SHADER_STOCK_BLEND); find_uniforms(0, gl_program[GL_SHADER_STOCK_BLEND], &gl_uniforms[GL_SHADER_STOCK_BLEND]); } else From 6b4924c84487b42f98472ffdcd826499ff08e0e7 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 22:10:09 +0200 Subject: [PATCH 118/252] Be more conservative about texture memory usage. --- gfx/gl.c | 91 +++++++++++++++++++++++++++++++++------------ gfx/gl_common.h | 22 +++++------ gfx/shader_cg.c | 21 +++++++++-- gfx/shader_common.h | 1 + gfx/shader_glsl.c | 17 ++++++++- 5 files changed, 112 insertions(+), 40 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 51482848f6..6273211902 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -627,8 +627,16 @@ void gl_init_fbo(void *data, unsigned width, unsigned height) } #ifndef HAVE_RGL +static void gl_deinit_hw_render(gl_t *gl) +{ + if (gl->hw_render_fbo_init) + glDeleteFramebuffers(gl->textures, gl->hw_render_fbo); + if (gl->hw_render_depth_init) + glDeleteRenderbuffers(gl->textures, gl->hw_render_depth); + gl->hw_render_fbo_init = false; +} -bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) +static bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) { RARCH_LOG("[GL]: Initializing HW render (%u x %u).\n", width, height); GLint max_fbo_size = 0; @@ -641,7 +649,7 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) return false; glBindTexture(GL_TEXTURE_2D, 0); - glGenFramebuffers(TEXTURES, gl->hw_render_fbo); + glGenFramebuffers(gl->textures, gl->hw_render_fbo); bool depth = g_extern.system.hw_render_callback.depth; bool stencil = g_extern.system.hw_render_callback.stencil; @@ -653,11 +661,11 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) if (depth) { - glGenRenderbuffers(TEXTURES, gl->hw_render_depth); + glGenRenderbuffers(gl->textures, gl->hw_render_depth); gl->hw_render_depth_init = true; } - for (unsigned i = 0; i < TEXTURES; i++) + for (unsigned i = 0; i < gl->textures; i++) { glBindFramebuffer(GL_FRAMEBUFFER, gl->hw_render_fbo[i]); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->texture[i], 0); @@ -1019,8 +1027,8 @@ static void gl_update_input_size(void *data, unsigned width, unsigned height, un set_texture_coords(gl->tex_coords, xamt, yamt); } // We might have used different texture coordinates last frame. Edge case if resolution changes very rapidly. - else if (width != gl->last_width[(gl->tex_index - 1) & TEXTURES_MASK] || - height != gl->last_height[(gl->tex_index - 1) & TEXTURES_MASK]) + else if (width != gl->last_width[(gl->tex_index + gl->textures - 1) % gl->textures] || + height != gl->last_height[(gl->tex_index + gl->textures - 1) % gl->textures]) { GLfloat xamt = (GLfloat)width / gl->tex_w; GLfloat yamt = (GLfloat)height / gl->tex_h; @@ -1077,13 +1085,13 @@ static inline void gl_convert_frame_argb8888_abgr8888(void *data, void *output, static void gl_init_textures_data(void *data) { gl_t *gl = (gl_t*)data; - for (unsigned i = 0; i < TEXTURES; i++) + for (unsigned i = 0; i < gl->textures; i++) { gl->last_width[i] = gl->tex_w; gl->last_height[i] = gl->tex_h; } - for (unsigned i = 0; i < TEXTURES; i++) + for (unsigned i = 0; i < gl->textures; i++) { gl->prev_info[i].tex = gl->texture[0]; gl->prev_info[i].input_size[0] = gl->tex_w; @@ -1110,7 +1118,7 @@ static void gl_init_textures(void *data, const video_info_t *video) glBindBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE, gl->pbo); glBufferData(GL_TEXTURE_REFERENCE_BUFFER_SCE, - gl->tex_w * gl->tex_h * gl->base_size * TEXTURES, NULL, GL_STREAM_DRAW); + gl->tex_w * gl->tex_h * gl->base_size * gl->textures, NULL, GL_STREAM_DRAW); #endif GLenum internal_fmt = gl->internal_fmt; @@ -1141,9 +1149,9 @@ static void gl_init_textures(void *data, const video_info_t *video) } #endif - glGenTextures(TEXTURES, gl->texture); + glGenTextures(gl->textures, gl->texture); - for (unsigned i = 0; i < TEXTURES; i++) + for (unsigned i = 0; i < gl->textures; i++) { glBindTexture(GL_TEXTURE_2D, gl->texture[i]); @@ -1264,7 +1272,7 @@ static inline void gl_copy_frame(void *data, const void *frame, unsigned width, static inline void gl_set_prev_texture(void *data, const struct gl_tex_info *tex_info) { gl_t *gl = (gl_t*)data; - memmove(gl->prev_info + 1, gl->prev_info, sizeof(*tex_info) * (TEXTURES - 1)); + memmove(gl->prev_info + 1, gl->prev_info, sizeof(*tex_info) * (gl->textures - 1)); memcpy(&gl->prev_info[0], tex_info, sizeof(*tex_info)); } @@ -1386,7 +1394,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei if (frame) // Can be NULL for frame dupe / NULL render. { - gl->tex_index = (gl->tex_index + 1) & TEXTURES_MASK; + gl->tex_index = (gl->tex_index + 1) % gl->textures; glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); #ifdef HAVE_FBO @@ -1555,7 +1563,7 @@ static void gl_free(void *data) gl_disable_client_arrays(gl); #endif - glDeleteTextures(TEXTURES, gl->texture); + glDeleteTextures(gl->textures, gl->texture); #if defined(HAVE_RGUI) || defined(HAVE_RMENU) if (gl->rgui_texture) @@ -1584,13 +1592,8 @@ static void gl_free(void *data) #ifdef HAVE_FBO gl_deinit_fbo(gl); - #ifndef HAVE_RGL - if (gl->hw_render_fbo_init) - glDeleteFramebuffers(TEXTURES, gl->hw_render_fbo); - if (gl->hw_render_depth_init) - glDeleteRenderbuffers(TEXTURES, gl->hw_render_depth); - gl->hw_render_fbo_init = false; + gl_deinit_hw_render(gl); #endif #endif @@ -1707,7 +1710,7 @@ static inline void gl_reinit_textures(void *data, const video_info_t *video) #endif glBindTexture(GL_TEXTURE_2D, 0); - glDeleteTextures(TEXTURES, gl->texture); + glDeleteTextures(gl->textures, gl->texture); gl_init_textures(gl, video); gl_init_textures_data(gl); @@ -1836,6 +1839,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } + gl->video_info = *video; + RARCH_LOG("Found GL context: %s\n", gl->ctx_driver->ident); context_get_video_size_func(&gl->full_x, &gl->full_y); @@ -1887,6 +1892,9 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo struct retro_hw_render_callback *hw_render = &g_extern.system.hw_render_callback; gl->vertex_ptr = hw_render->bottom_left_origin ? vertexes : vertexes_flipped; + // Better pipelining with GPU due to synchronous glSubTexImage. Multiple async PBOs would be an alternative, + // but still need multiple textures with PREV. + gl->textures = 4; #ifdef HAVE_FBO #ifdef HAVE_OPENGLES2 gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGLES2; @@ -1894,6 +1902,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->hw_render_use = hw_render->context_type == RETRO_HW_CONTEXT_OPENGL || g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; #endif + if (gl->hw_render_use) + gl->textures = 1; // All on GPU, no need to excessively create textures. #endif gl->white_color_ptr = white_color; @@ -1910,6 +1920,13 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } + if (gl->shader) + { + unsigned minimum = gl->shader->get_prev_textures(); + gl->textures = max(minimum + 1, gl->textures); + } + + RARCH_LOG("GL: Using %u textures.\n", gl->textures); RARCH_LOG("GL: Loaded %u program(s).\n", gl_shader_num(gl)); gl->tex_w = RARCH_SCALE_BASE * video->input_scale; @@ -2027,12 +2044,13 @@ static void gl_update_tex_filter_frame(gl_t *gl) if (!gl_shader_filter_type(gl, 1, &smooth)) smooth = g_settings.video.smooth; + gl->video_info.smooth = smooth; GLuint new_filt = smooth ? GL_LINEAR : GL_NEAREST; if (new_filt == gl->tex_filter) return; gl->tex_filter = new_filt; - for (unsigned i = 0; i < TEXTURES; i++) + for (unsigned i = 0; i < gl->textures; i++) { if (gl->texture[i]) { @@ -2096,6 +2114,33 @@ static bool gl_set_shader(void *data, enum rarch_shader_type type, const char *p gl_update_tex_filter_frame(gl); + if (gl->shader) + { + unsigned textures = gl->shader->get_prev_textures() + 1; + if (textures > gl->textures) // Have to reinit a bit. + { +#if defined(HAVE_FBO) && !defined(HAVE_RGL) + gl_deinit_hw_render(gl); +#endif + + glDeleteTextures(gl->textures, gl->texture); +#if defined(HAVE_PSGL) + glBindBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE, 0); + glDeleteBuffers(1, &gl->pbo); +#endif + gl->textures = textures; + RARCH_LOG("GL: Using %u textures.\n", gl->textures); + gl->tex_index = 0; + gl_init_textures(gl, &gl->video_info); + gl_init_textures_data(gl); + +#if defined(HAVE_FBO) && !defined(HAVE_RGL) + if (gl->hw_render_use) + gl_init_hw_render(gl, gl->tex_w, gl->tex_h); +#endif + } + } + #ifdef HAVE_FBO // Set up render to texture again. gl_init_fbo(gl, gl->tex_w, gl->tex_h); @@ -2362,7 +2407,7 @@ static void gl_get_overlay_interface(void *data, const video_overlay_interface_t static uintptr_t gl_get_current_framebuffer(void *data) { gl_t *gl = (gl_t*)data; - return gl->hw_render_fbo[(gl->tex_index + 1) & TEXTURES_MASK]; + return gl->hw_render_fbo[(gl->tex_index + 1) % gl->textures]; } static retro_proc_address_t gl_get_proc_address(void *data, const char *sym) diff --git a/gfx/gl_common.h b/gfx/gl_common.h index cba40b520c..88f41253b1 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -137,13 +137,7 @@ struct gl_coords typedef struct gl_shader_backend gl_shader_backend_t; #define MAX_SHADERS 16 - -#if (defined(HAVE_GLSL) || defined(HAVE_CG)) -#define TEXTURES 8 -#else -#define TEXTURES 1 -#endif -#define TEXTURES_MASK (TEXTURES - 1) +#define MAX_TEXTURES 8 typedef struct gl { @@ -151,9 +145,10 @@ typedef struct gl const gl_shader_backend_t *shader; bool vsync; - GLuint texture[TEXTURES]; + GLuint texture[MAX_TEXTURES]; unsigned tex_index; // For use with PREV. - struct gl_tex_info prev_info[TEXTURES]; + unsigned textures; + struct gl_tex_info prev_info[MAX_TEXTURES]; GLuint tex_filter; void *empty_buf; @@ -172,8 +167,8 @@ typedef struct gl int fbo_pass; bool fbo_inited; - GLuint hw_render_fbo[TEXTURES]; - GLuint hw_render_depth[TEXTURES]; + GLuint hw_render_fbo[MAX_TEXTURES]; + GLuint hw_render_depth[MAX_TEXTURES]; bool hw_render_fbo_init; bool hw_render_depth_init; #endif @@ -192,8 +187,8 @@ typedef struct gl struct rarch_viewport vp; unsigned vp_out_width; unsigned vp_out_height; - unsigned last_width[TEXTURES]; - unsigned last_height[TEXTURES]; + unsigned last_width[MAX_TEXTURES]; + unsigned last_height[MAX_TEXTURES]; unsigned tex_w, tex_h; GLfloat tex_coords[8]; math_matrix mvp, mvp_no_rot; @@ -223,6 +218,7 @@ typedef struct gl GLfloat font_color_dark[16]; bool egl_images; + video_info_t video_info; #ifdef HAVE_OVERLAY // Overlay rendering diff --git a/gfx/shader_cg.c b/gfx/shader_cg.c index 74393203f0..a634d99253 100644 --- a/gfx/shader_cg.c +++ b/gfx/shader_cg.c @@ -102,9 +102,9 @@ struct cg_fbo_params CGparameter coord; }; -#define MAX_TEXTURES 8 +#define MAX_LUT_TEXTURES 8 #define MAX_VARIABLES 64 -#define PREV_TEXTURES (TEXTURES - 1) +#define PREV_TEXTURES (MAX_TEXTURES - 1) struct cg_program { @@ -142,7 +142,7 @@ static unsigned active_index; static struct gfx_shader *cg_shader; static state_tracker_t *state_tracker; -static GLuint lut_textures[MAX_TEXTURES]; +static GLuint lut_textures[MAX_LUT_TEXTURES]; static CGparameter cg_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; static unsigned cg_attrib_index; @@ -911,6 +911,20 @@ static void gl_cg_shader_scale(unsigned index, struct gfx_fbo_scale *scale) scale->valid = false; } +static unsigned gl_cg_get_prev_textures(void) +{ + if (!cg_active) + return 0; + + unsigned max_prev = 0; + for (unsigned i = 1; i <= cg_shader->passes; i++) + for (unsigned j = 0; j < PREV_TEXTURES; j++) + if (prg[i].prev[j].tex) + max_prev = max(j + 1, max_prev); + + return max_prev; +} + void gl_cg_set_compiler_args(const char **argv) { cg_arguments = argv; @@ -931,6 +945,7 @@ const gl_shader_backend_t gl_cg_backend = { gl_cg_shader_scale, gl_cg_set_coords, gl_cg_set_mvp, + gl_cg_get_prev_textures, RARCH_SHADER_CG, }; diff --git a/gfx/shader_common.h b/gfx/shader_common.h index 2635fa67b9..2b72da2bed 100644 --- a/gfx/shader_common.h +++ b/gfx/shader_common.h @@ -50,6 +50,7 @@ struct gl_shader_backend void (*shader_scale)(unsigned index, struct gfx_fbo_scale *scale); bool (*set_coords)(const struct gl_coords *coords); bool (*set_mvp)(const math_matrix *mat); + unsigned (*get_prev_textures)(void); enum rarch_shader_type type; }; diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 531a2efcd2..a15d2ef0e5 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -64,7 +64,7 @@ #define BORDER_FUNC GL_CLAMP_TO_BORDER #endif -#define PREV_TEXTURES (TEXTURES - 1) +#define PREV_TEXTURES (MAX_TEXTURES - 1) static struct gfx_shader *glsl_shader; static bool glsl_core; @@ -1188,6 +1188,20 @@ static void gl_glsl_shader_scale(unsigned index, struct gfx_fbo_scale *scale) scale->valid = false; } +static unsigned gl_glsl_get_prev_textures(void) +{ + if (!glsl_enable) + return 0; + + unsigned max_prev = 0; + for (unsigned i = 1; i <= glsl_shader->passes; i++) + for (unsigned j = 0; j < PREV_TEXTURES; j++) + if (gl_uniforms[i].prev[j].texture >= 0) + max_prev = max(j + 1, max_prev); + + return max_prev; +} + void gl_glsl_set_get_proc_address(gfx_ctx_proc_t (*proc)(const char*)) { glsl_get_proc_address = proc; @@ -1210,6 +1224,7 @@ const gl_shader_backend_t gl_glsl_backend = { gl_glsl_shader_scale, gl_glsl_set_coords, gl_glsl_set_mvp, + gl_glsl_get_prev_textures, RARCH_SHADER_GLSL, }; From 335c32d95d458ecb1caf928eb463a18fee90a388 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 6 Jul 2013 23:26:01 +0200 Subject: [PATCH 119/252] Support creating debug contexts. --- gfx/context/glx_ctx.c | 1 + gfx/context/wgl_ctx.c | 7 +++++++ libretro.h | 1 + 3 files changed, 9 insertions(+) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index 04ecd3fd2e..99f0fcd9a4 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -382,6 +382,7 @@ static bool gfx_ctx_set_video_mode( GLX_CONTEXT_MAJOR_VERSION_ARB, g_major, GLX_CONTEXT_MINOR_VERSION_ARB, g_minor, GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + GLX_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0, None, }; diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index 1af72a9420..fd5865508f 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -117,11 +117,18 @@ static void create_gl_context(HWND hwnd) #endif #ifndef WGL_CONTEXT_CORE_PROFILE_BIT_ARB #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x0001 +#endif +#ifndef WGL_CONTEXT_FLAGS_ARB +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#endif +#ifndef WGL_CONTEXT_DEBUG_BIT_ARB +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 #endif const int attribs[] = { WGL_CONTEXT_MAJOR_VERSION_ARB, g_major, WGL_CONTEXT_MINOR_VERSION_ARB, g_minor, WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, + WGL_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? WGL_CONTEXT_DEBUG_BIT_ARB : 0, 0, }; diff --git a/libretro.h b/libretro.h index 1aae5d6d86..54873fd551 100755 --- a/libretro.h +++ b/libretro.h @@ -533,6 +533,7 @@ struct retro_hw_render_callback // The reset callback might still be called in extreme situations such as if the context is lost beyond recovery. // For optimal stability, set this to false, and allow context to be reset at any time. retro_hw_context_reset_t context_destroy; // A callback to be called before the context is destroyed. Resources can be deinitialized at this step. This can be set to NULL, in which resources will just be destroyed without any notification. + bool debug_context; // Creates a debug context. Only takes effect when using GL core. }; // Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. Called by the frontend in response to keyboard events. From 26d74be8b8c447633de5768348a091dd456aa4ed Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 7 Jul 2013 10:35:13 +0200 Subject: [PATCH 120/252] Disable blending per frame with HW render. --- gfx/gl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gfx/gl.c b/gfx/gl.c index 6273211902..086f473f5d 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1434,6 +1434,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei glDisable(GL_STENCIL_TEST); glDisable(GL_CULL_FACE); glDisable(GL_DITHER); + glDisable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } From c007e5860c6f8a25b6220aa08fb8e0e920b7ac7b Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 7 Jul 2013 11:22:58 +0200 Subject: [PATCH 121/252] Add extern "C" to glsym headers. --- gfx/glsym/glgen.py | 14 ++++++++++++++ gfx/glsym/glsym_es2.h | 15 +++++++++++++++ gfx/glsym/glsym_gl.h | 6 ++++++ 3 files changed, 35 insertions(+) diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index d4faabc20a..0d07fbbf92 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -80,6 +80,11 @@ if __name__ == '__main__': 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('#else\n') @@ -92,17 +97,26 @@ if __name__ == '__main__': 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') + 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: diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h index c8c05511e2..55efec49f6 100644 --- a/gfx/glsym/glsym_es2.h +++ b/gfx/glsym/glsym_es2.h @@ -1,14 +1,26 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef __cplusplus +extern "C" { +#endif #ifdef GL_APIENTRY typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #else +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif typedef void (APIENTRY *RGLGENGLDEBUGPROCARB)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); typedef void (APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #endif #ifndef GL_OES_EGL_image typedef void *GLeglImageOES; #endif +#if !defined(GL_OES_fixed_point) && !defined(HAVE_OPENGLES2) +typedef GLint GLfixed; +#endif typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); typedef void (GL_APIENTRYP RGLSYMGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); @@ -98,4 +110,7 @@ extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; +#ifdef __cplusplus +} +#endif #endif diff --git a/gfx/glsym/glsym_gl.h b/gfx/glsym/glsym_gl.h index 541ec3e935..6e71aefda1 100644 --- a/gfx/glsym/glsym_gl.h +++ b/gfx/glsym/glsym_gl.h @@ -1,5 +1,8 @@ #ifndef RGLGEN_DECL_H__ #define RGLGEN_DECL_H__ +#ifdef __cplusplus +extern "C" { +#endif #ifdef GL_APIENTRY typedef void (GL_APIENTRY *RGLGENGLDEBUGPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar*, GLvoid*); #else @@ -3011,4 +3014,7 @@ extern RGLSYMGLQUERYMATRIXXOESPROC __rglgen_glQueryMatrixxOES; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; +#ifdef __cplusplus +} +#endif #endif From a9df0a230d406423fb73e19628d6aa84fb16eece Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 7 Jul 2013 11:24:41 +0200 Subject: [PATCH 122/252] Fix CXX_BUILD. --- gfx/context/glx_ctx.c | 4 ++-- gfx/context/wgl_ctx.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index 99f0fcd9a4..a4d08652e1 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -379,8 +379,8 @@ static bool gfx_ctx_set_video_mode( if (g_core) { const int attribs[] = { - GLX_CONTEXT_MAJOR_VERSION_ARB, g_major, - GLX_CONTEXT_MINOR_VERSION_ARB, g_minor, + GLX_CONTEXT_MAJOR_VERSION_ARB, (int)g_major, + GLX_CONTEXT_MINOR_VERSION_ARB, (int)g_minor, GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, GLX_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0, None, diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index fd5865508f..cb8caf6ad3 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -125,8 +125,8 @@ static void create_gl_context(HWND hwnd) #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 #endif const int attribs[] = { - WGL_CONTEXT_MAJOR_VERSION_ARB, g_major, - WGL_CONTEXT_MINOR_VERSION_ARB, g_minor, + WGL_CONTEXT_MAJOR_VERSION_ARB, (int)g_major, + WGL_CONTEXT_MINOR_VERSION_ARB, (int)g_minor, WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, WGL_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? WGL_CONTEXT_DEBUG_BIT_ARB : 0, 0, From d3cfe85a19a07fe46ff94eb63fc6ead9b11fce3e Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 7 Jul 2013 11:28:41 +0200 Subject: [PATCH 123/252] Add extern "C" to rglgen.h as well. --- gfx/glsym/rglgen.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gfx/glsym/rglgen.h b/gfx/glsym/rglgen.h index a4ce2a3875..6bb6ca35a9 100644 --- a/gfx/glsym/rglgen.h +++ b/gfx/glsym/rglgen.h @@ -34,6 +34,10 @@ #include #endif +#ifdef __cplusplus +extern "C" { +#endif + struct rglgen_sym_map; typedef void (*rglgen_func_t)(void); @@ -42,6 +46,9 @@ void rglgen_resolve_symbols(rglgen_proc_address_t proc); void rglgen_resolve_symbols_custom(rglgen_proc_address_t proc, const struct rglgen_sym_map *map); +#ifdef __cplusplus +} +#endif #endif From eb95798016264172744af813fd21647b185cc017 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 8 Jul 2013 20:34:41 +0200 Subject: [PATCH 124/252] Style fixups. --- gfx/context/wgl_ctx.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index cb8caf6ad3..b0d70cdc58 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -158,19 +158,18 @@ static void create_gl_context(HWND hwnd) static bool BrowseForFile(char *filename) { OPENFILENAME ofn; - memset((void *)&ofn, 0, sizeof(OPENFILENAME)); + memset(&ofn, 0, sizeof(OPENFILENAME)); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = g_hwnd; - ofn.lpstrFilter = "All Files\0*.*\0\0"; - ofn.lpstrFile = filename; - ofn.lpstrTitle = "Select ROM"; - ofn.lpstrDefExt = ""; - ofn.nMaxFile = PATH_MAX; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - if(GetOpenFileName(&ofn)) { - return true; - } + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = g_hwnd; + ofn.lpstrFilter = "All Files\0*.*\0\0"; + ofn.lpstrFile = filename; + ofn.lpstrTitle = "Select ROM"; + ofn.lpstrDefExt = ""; + ofn.nMaxFile = PATH_MAX; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; + if (GetOpenFileName(&ofn)) + return true; return false; } @@ -224,20 +223,21 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, g_resized = true; } return 0; + case WM_COMMAND: - switch(wparam & 0xffff) + switch (wparam & 0xffff) { case ID_M_OPENROM: { char rom_file[PATH_MAX] = {0}; - if(BrowseForFile(rom_file)) + if (BrowseForFile(rom_file)) { strlcpy(g_extern.fullpath, rom_file, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); PostMessage(g_hwnd, WM_CLOSE, 0, 0); } + break; } - break; case ID_M_RESET: rarch_game_reset(); break; @@ -448,9 +448,9 @@ static bool gfx_ctx_set_video_mode( if (!g_hwnd) goto error; - if(!fullscreen) + if (!fullscreen) { - SetMenu(g_hwnd,LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU))); + SetMenu(g_hwnd, LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU))); RECT rcTemp = {0, 0, g_resize_height, 0x7FFF}; // 0x7FFF="Infinite" height SendMessage(g_hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&rcTemp); // recalculate margin, taking possible menu wrap into account g_resize_height += rcTemp.top + rect.top; // extend by new top margin and substract previous margin From 27399deed9dc120e101ab04370a622ad9bdb64ef Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 13 Jul 2013 00:53:26 +0200 Subject: [PATCH 125/252] Log vendor/renderer in GL. --- gfx/gl.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gfx/gl.c b/gfx/gl.c index 086f473f5d..efa4f39a58 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1626,7 +1626,8 @@ static bool resolve_extensions(gl_t *gl) { #ifndef HAVE_OPENGLES gl->core_context = g_extern.system.hw_render_callback.context_type == RETRO_HW_CONTEXT_OPENGL_CORE; - RARCH_LOG("[GL]: Using Core GL context.\n"); + if (gl->core_context) + RARCH_LOG("[GL]: Using Core GL context.\n"); if (gl->core_context && !init_vao(gl)) { @@ -1868,6 +1869,11 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); + + const char *vendor = (const char*)glGetString(GL_VENDOR); + const char *renderer = (const char*)glGetString(GL_RENDERER); + RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); if (!resolve_extensions(gl)) From eac16d0d7fce591559ee2c030dd79db6791ddd66 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Jul 2013 03:48:02 +0200 Subject: [PATCH 126/252] Add config params for hard float/soft float --- qb/config.libs.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 98f2b54cc4..c13a73f122 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -33,6 +33,18 @@ if [ "$HAVE_VIDEOCORE" = 'yes' ]; then EXTRA_GL_LIBS="-lGLESv2 -lbcm_host -lvcos -lvchiq_arm" fi +if [ "$HAVE_FLOATHARD" = "yes" ]; then + CFLAGS="$CFLAGS -mfloat-abi=hard" + CXXFLAGS="$CFLAGS -mfloat-abi=hard" + ASFLAGS="$CFLAGS -mfloat-abi=hard" +fi + +if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then + CFLAGS="$CFLAGS -mfloat-abi=softfp" + CXXFLAGS="$CFLAGS -mfloat-abi=softfp" + ASFLAGS="$CFLAGS -mfloat-abi=softfp" +fi + if [ "$HAVE_NEON" = "yes" ]; then CFLAGS="$CFLAGS -mfpu=neon -marm" CXXFLAGS="$CXXFLAGS -mfpu=neon -marm" From 1c17baa4c13887bf6830928c92e0b9f4f9861e60 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Jul 2013 03:52:22 +0200 Subject: [PATCH 127/252] (config) Fix hard float/soft float's CXXFLAGS/ASFLAGS --- qb/config.libs.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index c13a73f122..79b3517b92 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -35,14 +35,14 @@ fi if [ "$HAVE_FLOATHARD" = "yes" ]; then CFLAGS="$CFLAGS -mfloat-abi=hard" - CXXFLAGS="$CFLAGS -mfloat-abi=hard" - ASFLAGS="$CFLAGS -mfloat-abi=hard" + CXXFLAGS="$CXXFLAGS -mfloat-abi=hard" + ASFLAGS="$ASFLAGS -mfloat-abi=hard" fi if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then CFLAGS="$CFLAGS -mfloat-abi=softfp" - CXXFLAGS="$CFLAGS -mfloat-abi=softfp" - ASFLAGS="$CFLAGS -mfloat-abi=softfp" + CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" + ASFLAGS="$ASFLAGS -mfloat-abi=softfp" fi if [ "$HAVE_NEON" = "yes" ]; then From 5e508c7a34fda9017ca94c8ac1a4650318f8fb1a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Jul 2013 04:07:38 +0200 Subject: [PATCH 128/252] Place HAVE_NEON before HAVE_FLOATHARD and HAVE_FLOATSOFT --- qb/config.libs.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 79b3517b92..1af4a1f5cb 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -33,6 +33,12 @@ if [ "$HAVE_VIDEOCORE" = 'yes' ]; then EXTRA_GL_LIBS="-lGLESv2 -lbcm_host -lvcos -lvchiq_arm" fi +if [ "$HAVE_NEON" = "yes" ]; then + CFLAGS="$CFLAGS -mfpu=neon" + CXXFLAGS="$CXXFLAGS -mfpu=neon" + ASFLAGS="$ASFLAGS -mfpu=neon" +fi + if [ "$HAVE_FLOATHARD" = "yes" ]; then CFLAGS="$CFLAGS -mfloat-abi=hard" CXXFLAGS="$CXXFLAGS -mfloat-abi=hard" From fbf029939ce09964ecaa35f1da7bf571ec643934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Munhoz=20Pe=CC=81los?= Date: Tue, 9 Jul 2013 16:51:02 -0300 Subject: [PATCH 129/252] Adds new Folder option in ROM list. --- apple/iOS/browser.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apple/iOS/browser.m b/apple/iOS/browser.m index 13a9ea10b4..dcdf2b90b9 100644 --- a/apple/iOS/browser.m +++ b/apple/iOS/browser.m @@ -36,7 +36,7 @@ NSString* rootPath = RetroArch_iOS.get.documentsDirectory; NSString* ragPath = [rootPath stringByAppendingPathComponent:@"RetroArchGames"]; RADirectoryList* list = [RADirectoryList directoryListForPath:path_is_directory(ragPath.UTF8String) ? ragPath : rootPath]; - + return list; } @@ -216,7 +216,11 @@ if (didCreateFolder) { [self refresh]; } else { +<<<<<<< HEAD apple_display_alert(@"It was not possible to create folder.", 0); +======= + apple_display_alert(@"Not possible to create folder.", 0); +>>>>>>> Adds new Folder option in ROM list. } } } From f4d25deba1f00b2360ed2b4d3c605aff117fa40f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Munhoz=20P=C3=A9los?= Date: Thu, 11 Jul 2013 23:40:40 -0300 Subject: [PATCH 130/252] Implements file move option in ROM list. --- apple/iOS/browser.m | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apple/iOS/browser.m b/apple/iOS/browser.m index dcdf2b90b9..278ae756b2 100644 --- a/apple/iOS/browser.m +++ b/apple/iOS/browser.m @@ -216,11 +216,7 @@ if (didCreateFolder) { [self refresh]; } else { -<<<<<<< HEAD apple_display_alert(@"It was not possible to create folder.", 0); -======= - apple_display_alert(@"Not possible to create folder.", 0); ->>>>>>> Adds new Folder option in ROM list. } } } From d35b806f98169a84c7421d03fd90b1425fa2ff38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcelo=20Munhoz=20P=C3=A9los?= Date: Sat, 13 Jul 2013 00:05:21 -0300 Subject: [PATCH 131/252] Add toolbar in Rom's list to accommodate refresh and new folder buttons. --- apple/iOS/browser.m | 1 - 1 file changed, 1 deletion(-) diff --git a/apple/iOS/browser.m b/apple/iOS/browser.m index 278ae756b2..5f70ed1d9a 100644 --- a/apple/iOS/browser.m +++ b/apple/iOS/browser.m @@ -36,7 +36,6 @@ NSString* rootPath = RetroArch_iOS.get.documentsDirectory; NSString* ragPath = [rootPath stringByAppendingPathComponent:@"RetroArchGames"]; RADirectoryList* list = [RADirectoryList directoryListForPath:path_is_directory(ragPath.UTF8String) ? ragPath : rootPath]; - return list; } From 1e83c59823a676cbac1dc0d8c5ed02317a4456a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Jul 2013 15:03:35 +0200 Subject: [PATCH 132/252] (ARM NEON) Define -marm for --enable-neon --- qb/config.libs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 1af4a1f5cb..e19ac3b923 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -34,8 +34,8 @@ if [ "$HAVE_VIDEOCORE" = 'yes' ]; then fi if [ "$HAVE_NEON" = "yes" ]; then - CFLAGS="$CFLAGS -mfpu=neon" - CXXFLAGS="$CXXFLAGS -mfpu=neon" + CFLAGS="$CFLAGS -mfpu=neon -marm" + CXXFLAGS="$CXXFLAGS -mfpu=neon -marm" ASFLAGS="$ASFLAGS -mfpu=neon" fi From f4a23115c24215271022d44dfc315b718131dad5 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 14 Jul 2013 13:09:53 +0200 Subject: [PATCH 133/252] Begin adding AUDIO_CALLBACK/FRAME_TIME_CALLBACK. --- Makefile | 2 +- audio/thread_wrapper.c | 180 +++++++++++++++++++++++++++++++++++++++++ audio/thread_wrapper.h | 30 +++++++ driver.c | 33 +++++++- dynamic.c | 21 +++++ general.h | 5 +- gfx/thread_wrapper.h | 5 ++ griffin/griffin.c | 1 + libretro.h | 41 ++++++++++ retroarch.c | 29 ++++++- 10 files changed, 340 insertions(+), 7 deletions(-) create mode 100644 audio/thread_wrapper.c create mode 100644 audio/thread_wrapper.h diff --git a/Makefile b/Makefile index 46c49f529b..acf4054dbf 100644 --- a/Makefile +++ b/Makefile @@ -93,7 +93,7 @@ ifeq ($(HAVE_RGUI), 1) endif ifeq ($(HAVE_THREADS), 1) - OBJ += autosave.o thread.o gfx/thread_wrapper.o + OBJ += autosave.o thread.o gfx/thread_wrapper.o audio/thread_wrapper.o ifeq ($(findstring Haiku,$(OS)),) LIBS += -lpthread endif diff --git a/audio/thread_wrapper.c b/audio/thread_wrapper.c new file mode 100644 index 0000000000..f3f173b7b9 --- /dev/null +++ b/audio/thread_wrapper.c @@ -0,0 +1,180 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include "thread_wrapper.h" +#include "../thread.h" +#include "../general.h" +#include "../performance.h" +#include "../fifo_buffer.h" +#include +#include + +typedef struct audio_thread +{ + const audio_driver_t *driver; + void *driver_data; + + sthread_t *thread; + slock_t *lock; + scond_t *cond; + bool alive; + bool stopped; +} audio_thread_t; + +static void audio_thread_loop(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + + for (;;) + { + slock_lock(thr->lock); + + if (!thr->alive) + { + scond_signal(thr->cond); + slock_unlock(thr->lock); + break; + } + + if (thr->stopped) + { + thr->driver->stop(thr->driver_data); + while (thr->stopped) + scond_wait(thr->cond, thr->lock); + thr->driver->start(thr->driver_data); + } + + slock_unlock(thr->lock); + g_extern.system.audio_callback(); + } +} + +static void audio_thread_block(audio_thread_t *thr) +{ + slock_lock(thr->lock); + thr->stopped = true; + scond_signal(thr->cond); + slock_unlock(thr->lock); +} + +static void audio_thread_unblock(audio_thread_t *thr) +{ + slock_lock(thr->lock); + thr->stopped = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); +} + +static void audio_thread_free(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + slock_lock(thr->lock); + thr->alive = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); + + sthread_join(thr->thread); + + thr->driver->free(thr->driver_data); + slock_free(thr->lock); + scond_free(thr->cond); + free(thr); +} + +static bool audio_thread_stop(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + audio_thread_block(thr); + return true; +} + +static bool audio_thread_start(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + audio_thread_unblock(thr); + return true; +} + +static void audio_thread_set_nonblock_state(void *data, bool state) +{ + audio_thread_t *thr = (audio_thread_t*)data; + (void)state; +} + +static bool audio_thread_use_float(void *data) +{ + audio_thread_t *thr = (audio_thread_t*)data; + return thr->driver->use_float(thr->driver_data); +} + +static ssize_t audio_thread_write(void *data, const void *buf, size_t size) +{ + audio_thread_t *thr = (audio_thread_t*)data; + ssize_t ret = thr->driver->write(thr->driver_data, buf, size); + if (ret < 0) + { + slock_lock(thr->lock); + thr->alive = false; + scond_signal(thr->cond); + slock_unlock(thr->lock); + return ret; + } + + return ret; +} + +static const audio_driver_t audio_thread = { + NULL, + audio_thread_write, + audio_thread_stop, + audio_thread_start, + audio_thread_set_nonblock_state, + audio_thread_free, + audio_thread_use_float, + "audio-thread", + NULL, // No point in using rate control with threaded audio. + NULL, +}; + +bool rarch_threaded_audio_init(const audio_driver_t **out_driver, void **out_data, + const char *device, unsigned out_rate, unsigned latency, + const audio_driver_t *driver) +{ + void *audio_handle = driver->init(device, out_rate, latency); + if (!audio_handle) + return false; + + audio_thread_t *thr = (audio_thread_t*)calloc(1, sizeof(*thr)); + if (!thr) + { + driver->free(audio_handle); + return false; + } + + thr->driver = driver; + thr->driver_data = audio_handle; + + thr->cond = scond_new(); + thr->lock = slock_new(); + thr->alive = true; + thr->stopped = true; + + thr->thread = sthread_create(audio_thread_loop, thr); + + *out_driver = &audio_thread; + *out_data = thr; + return true; +} + diff --git a/audio/thread_wrapper.h b/audio/thread_wrapper.h new file mode 100644 index 0000000000..87e6f88fdb --- /dev/null +++ b/audio/thread_wrapper.h @@ -0,0 +1,30 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#ifndef RARCH_AUDIO_THREAD_H__ +#define RARCH_AUDIO_THREAD_H__ + +#include "../driver.h" +#include "../boolean.h" + +// Starts a audio driver in a new thread. +// Access to audio driver will be mediated through this driver. +// This driver interfaces with audio callback and is only used in that case. +bool rarch_threaded_audio_init(const audio_driver_t **out_driver, void **out_data, + const char *device, unsigned out_rate, unsigned latency, + const audio_driver_t *driver); + +#endif + diff --git a/driver.c b/driver.c index 42d31b1928..0ee6dac1ae 100644 --- a/driver.c +++ b/driver.c @@ -24,6 +24,7 @@ #include "audio/utils.h" #include "audio/resampler.h" #include "gfx/thread_wrapper.h" +#include "audio/thread_wrapper.h" #include "gfx/gfx_common.h" #ifdef HAVE_X11 @@ -357,7 +358,7 @@ void global_uninit_drivers(void) if (driver.input_data) { - driver.input->free(NULL); + driver.input->free(driver.input_data); driver.input_data = NULL; } } @@ -382,6 +383,8 @@ void init_drivers(void) // Keep non-throttled state as good as possible. if (driver.nonblock_state) driver_set_nonblock_state(driver.nonblock_state); + + g_extern.system.frame_time_last = 0; } void uninit_drivers(void) @@ -501,8 +504,26 @@ void init_audio(void) return; } - driver.audio_data = audio_init_func(*g_settings.audio.device ? g_settings.audio.device : NULL, - g_settings.audio.out_rate, g_settings.audio.latency); +#ifdef HAVE_THREADS + find_audio_driver(); + if (g_extern.system.audio_callback) + { + RARCH_LOG("Starting threaded audio driver ...\n"); + if (!rarch_threaded_audio_init(&driver.audio, &driver.audio_data, + *g_settings.audio.device ? g_settings.audio.device : NULL, + g_settings.audio.out_rate, g_settings.audio.latency, + driver.audio)) + { + RARCH_ERR("Cannot open threaded audio driver ... Exiting ...\n"); + rarch_fail(1, "init_audio()"); + } + } + else +#endif + { + driver.audio_data = audio_init_func(*g_settings.audio.device ? g_settings.audio.device : NULL, + g_settings.audio.out_rate, g_settings.audio.latency); + } if (!driver.audio_data) { @@ -538,7 +559,8 @@ void init_audio(void) rarch_assert(g_settings.audio.out_rate < g_settings.audio.in_rate * AUDIO_MAX_RATIO); rarch_assert(g_extern.audio_data.outsamples = (float*)malloc(outsamples_max * sizeof(float))); - if (g_extern.audio_active && g_settings.audio.rate_control) + g_extern.audio_data.rate_control = false; + if (!g_extern.system.audio_callback && g_extern.audio_active && g_settings.audio.rate_control) { if (driver.audio->buffer_size && driver.audio->write_avail) { @@ -557,6 +579,9 @@ void init_audio(void) #endif g_extern.measure_data.buffer_free_samples_count = 0; + + if (g_extern.audio_active && g_extern.system.audio_callback) // Threaded driver is initially stopped. + audio_start_func(); } static void compute_audio_buffer_statistics(void) diff --git a/dynamic.c b/dynamic.c index 984f8e0ea1..7e50ab976e 100644 --- a/dynamic.c +++ b/dynamic.c @@ -723,6 +723,27 @@ static bool environment_cb(unsigned cmd, void *data) break; } +#ifdef HAVE_THREADS + case RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK: + { + RARCH_LOG("Environ SET_AUDIO_CALLBACK.\n"); + const struct retro_audio_callback *info = (const struct retro_audio_callback*)data; + + if (g_extern.recording || g_extern.netplay_enable) // A/V sync is a must. + return false; + g_extern.system.audio_callback = info->callback; + break; + } +#endif + + case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK: + RARCH_LOG("Environ SET_FRAME_TIME_CALLBACK.\n"); + if (g_extern.netplay_enable) // retro_run() will be called in very strange and mysterious ways, have to disable it. + return false; + const struct retro_frame_time_callback *info = (const struct retro_frame_time_callback*)data; + g_extern.system.frame_time_callback = info->callback; + break; + default: RARCH_LOG("Environ UNSUPPORTED (#%u).\n", cmd); return false; diff --git a/general.h b/general.h index 89834a87ba..55dab63154 100644 --- a/general.h +++ b/general.h @@ -386,6 +386,10 @@ struct global char valid_extensions[PATH_MAX]; retro_keyboard_event_t key_event; + retro_audio_callback_t audio_callback; + + retro_usec_t frame_time_last; + retro_frame_time_callback_t frame_time_callback; struct retro_disk_control_callback disk_control; struct retro_hw_render_callback hw_render_callback; @@ -427,7 +431,6 @@ struct global float volume_db; float volume_gain; - } audio_data; struct diff --git a/gfx/thread_wrapper.h b/gfx/thread_wrapper.h index 6019803525..5858ac1e4f 100644 --- a/gfx/thread_wrapper.h +++ b/gfx/thread_wrapper.h @@ -13,6 +13,9 @@ * If not, see . */ +#ifndef RARCH_VIDEO_THREAD_H__ +#define RARCH_VIDEO_THREAD_H__ + #include "../driver.h" #include "../boolean.h" @@ -22,3 +25,5 @@ bool rarch_threaded_video_init(const video_driver_t **out_driver, void **out_dat const input_driver_t **input, void **input_data, const video_driver_t *driver, const video_info_t *info); +#endif + diff --git a/griffin/griffin.c b/griffin/griffin.c index cd152d142b..6865685aba 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -494,6 +494,7 @@ THREAD #elif defined(HAVE_THREADS) #include "../thread.c" #include "../gfx/thread_wrapper.c" +#include "../audio/thread_wrapper.c" #ifndef RARCH_CONSOLE #include "../autosave.c" #endif diff --git a/libretro.h b/libretro.h index 54873fd551..f2d7d1568b 100755 --- a/libretro.h +++ b/libretro.h @@ -486,8 +486,49 @@ enum retro_mod // Retrieves the absolute path from where this libretro implementation was loaded. // NULL is returned if the libretro was loaded statically (i.e. linked statically to frontend), or if the path cannot be determined. // Mostly useful in cooperation with SET_SUPPORT_NO_GAME as assets can be loaded without ugly hacks. + // +#define RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK 20 + // const struct retro_audio_callback * -- + // Sets an interface which is used to notify a libretro core about audio being available for writing. + // The callback can be called from any thread, so a core using this must have a thread safe audio implementation. + // It is intended for games where audio and video are completely asynchronous and audio can be generated on the fly. + // This interface is not recommended for use with emulators which have highly synchronous audio. + // + // The callback only notifies about writability; the libretro core still has to call the normal audio callbacks + // to write audio. The audio callbacks must be called from within the notification callback. + // The amount of audio data to write is up to the implementation. + // Generally, the audio callback will be called continously in a loop. + // + // Due to thread safety guarantees and lack of sync between audio and video, a frontend + // can selectively disallow this interface based on internal configuration. A core using + // this interface must also implement the "normal" audio interface. + // + // A libretro core using SET_AUDIO_CALLBACK should also make use of SET_FRAME_TIME_CALLBACK. +#define RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK 21 + // const struct retro_frame_time_callback * -- + // Lets the core know how much time has passed since last invocation of retro_run(). + // The frontend can tamper with the timing to fake fast-forward, slow-motion, frame stepping, etc. + // In this case the delta time will use the FPS value reported in get_av_info(). +// Notifies libretro that audio data should be written. +typedef void (*retro_audio_callback_t)(void); +struct retro_audio_callback +{ + retro_audio_callback_t callback; +}; + +// Notifies a libretro core of time spent since last invocation of retro_run() in microseconds. +// It will be called right before retro_run() every frame. +// The frontend can tamper with timing to support cases like fast-forward, slow-motion and framestepping. +// In those scenarios the FPS value in av_info will be used to fake the frame time. +typedef int64_t retro_usec_t; +typedef void (*retro_frame_time_callback_t)(retro_usec_t usec); +struct retro_frame_time_callback +{ + retro_frame_time_callback_t callback; +}; + // Pass this to retro_video_refresh_t if rendering to hardware. // Passing NULL to retro_video_refresh_t is still a frame dupe as normal. #define RETRO_HW_FRAME_BUFFER_VALID ((void*)-1) diff --git a/retroarch.c b/retroarch.c index e9f224a3a5..5e28a3033d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1424,6 +1424,12 @@ void rarch_init_rewind(void) if (!g_settings.rewind_enable || g_extern.state_manager) return; + if (g_extern.system.audio_callback) + { + RARCH_ERR("Implementation uses threaded audio. Cannot use rewind.\n"); + return; + } + g_extern.state_size = pretro_serialize_size(); if (!g_extern.state_size) { @@ -2903,6 +2909,7 @@ int rarch_main_init(int argc, char *argv[]) #endif } + init_libretro_cbs(); init_system_av_info(); init_drivers(); @@ -2915,7 +2922,6 @@ int rarch_main_init(int argc, char *argv[]) #endif rarch_init_rewind(); - init_libretro_cbs(); init_controllers(); #ifdef HAVE_FFMPEG @@ -2978,6 +2984,26 @@ static inline bool check_enter_rgui(void) } } +static inline void update_frame_time(void) +{ + if (!g_extern.system.frame_time_callback) + return; + + rarch_time_t time = rarch_get_time_usec(); + rarch_time_t delta = 0; + + if (!g_extern.system.frame_time_last || g_extern.is_paused || driver.nonblock_state || g_extern.recording) + { + rarch_time_t reference_delta = (rarch_time_t)roundf(1000000LL / g_extern.system.av_info.timing.fps); + delta = reference_delta; + } + else + delta = time - g_extern.system.frame_time_last; + + g_extern.system.frame_time_last = time; + g_extern.system.frame_time_callback(delta); +} + bool rarch_main_iterate(void) { #ifdef HAVE_DYLIB @@ -3020,6 +3046,7 @@ bool rarch_main_iterate(void) bsv_movie_set_frame_start(g_extern.bsv.movie); #endif + update_frame_time(); pretro_run(); #ifdef HAVE_BSV_MOVIE From 6a82db13d553139f185f460a4254feacc7924bf4 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 14 Jul 2013 13:43:01 +0200 Subject: [PATCH 134/252] Fixups for frame time callback. --- audio/thread_wrapper.c | 1 + dynamic.c | 4 +++- general.h | 6 +++--- libretro.h | 5 +++-- retroarch.c | 16 ++++++++-------- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/audio/thread_wrapper.c b/audio/thread_wrapper.c index f3f173b7b9..b7d5fa2a8f 100644 --- a/audio/thread_wrapper.c +++ b/audio/thread_wrapper.c @@ -81,6 +81,7 @@ static void audio_thread_free(void *data) { audio_thread_t *thr = (audio_thread_t*)data; slock_lock(thr->lock); + thr->stopped = false; thr->alive = false; scond_signal(thr->cond); slock_unlock(thr->lock); diff --git a/dynamic.c b/dynamic.c index 7e50ab976e..d49ac9d862 100644 --- a/dynamic.c +++ b/dynamic.c @@ -737,12 +737,14 @@ static bool environment_cb(unsigned cmd, void *data) #endif case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK: + { RARCH_LOG("Environ SET_FRAME_TIME_CALLBACK.\n"); if (g_extern.netplay_enable) // retro_run() will be called in very strange and mysterious ways, have to disable it. return false; const struct retro_frame_time_callback *info = (const struct retro_frame_time_callback*)data; - g_extern.system.frame_time_callback = info->callback; + g_extern.system.frame_time = *info; break; + } default: RARCH_LOG("Environ UNSUPPORTED (#%u).\n", cmd); diff --git a/general.h b/general.h index 55dab63154..976cd0bd28 100644 --- a/general.h +++ b/general.h @@ -388,12 +388,12 @@ struct global retro_keyboard_event_t key_event; retro_audio_callback_t audio_callback; - retro_usec_t frame_time_last; - retro_frame_time_callback_t frame_time_callback; - struct retro_disk_control_callback disk_control; struct retro_hw_render_callback hw_render_callback; + struct retro_frame_time_callback frame_time; + retro_usec_t frame_time_last; + core_option_manager_t *core_options; } system; diff --git a/libretro.h b/libretro.h index f2d7d1568b..0af84e6548 100755 --- a/libretro.h +++ b/libretro.h @@ -508,7 +508,7 @@ enum retro_mod // const struct retro_frame_time_callback * -- // Lets the core know how much time has passed since last invocation of retro_run(). // The frontend can tamper with the timing to fake fast-forward, slow-motion, frame stepping, etc. - // In this case the delta time will use the FPS value reported in get_av_info(). + // In this case the delta time will use the reference value in frame_time_callback.. // Notifies libretro that audio data should be written. @@ -521,12 +521,13 @@ struct retro_audio_callback // Notifies a libretro core of time spent since last invocation of retro_run() in microseconds. // It will be called right before retro_run() every frame. // The frontend can tamper with timing to support cases like fast-forward, slow-motion and framestepping. -// In those scenarios the FPS value in av_info will be used to fake the frame time. +// In those scenarios the reference frame time value will be used. typedef int64_t retro_usec_t; typedef void (*retro_frame_time_callback_t)(retro_usec_t usec); struct retro_frame_time_callback { retro_frame_time_callback_t callback; + retro_usec_t reference; // Represents the time of one frame. It is computed as 1000000 / fps, but the implementation will resolve the rounding to ensure that framestepping, etc is exact. }; // Pass this to retro_video_refresh_t if rendering to hardware. diff --git a/retroarch.c b/retroarch.c index 5e28a3033d..51c7a45806 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2975,6 +2975,7 @@ static inline bool check_enter_rgui(void) { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); old_rmenu_toggle = true; + g_extern.system.frame_time_last = 0; return true; } else @@ -2986,22 +2987,21 @@ static inline bool check_enter_rgui(void) static inline void update_frame_time(void) { - if (!g_extern.system.frame_time_callback) + if (!g_extern.system.frame_time.callback) return; rarch_time_t time = rarch_get_time_usec(); rarch_time_t delta = 0; + + bool is_locked_fps = g_extern.is_paused || driver.nonblock_state || g_extern.recording; - if (!g_extern.system.frame_time_last || g_extern.is_paused || driver.nonblock_state || g_extern.recording) - { - rarch_time_t reference_delta = (rarch_time_t)roundf(1000000LL / g_extern.system.av_info.timing.fps); - delta = reference_delta; - } + if (!g_extern.system.frame_time_last || is_locked_fps) + delta = g_extern.system.frame_time.reference; else delta = time - g_extern.system.frame_time_last; - g_extern.system.frame_time_last = time; - g_extern.system.frame_time_callback(delta); + g_extern.system.frame_time_last = is_locked_fps ? 0 : time; + g_extern.system.frame_time.callback(delta); } bool rarch_main_iterate(void) From 8b655f491a449fac47c2e11952f56a0b8298b7d0 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 14 Jul 2013 13:53:05 +0200 Subject: [PATCH 135/252] Add slow motion check to frame time. --- retroarch.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/retroarch.c b/retroarch.c index 51c7a45806..33e524352d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3000,6 +3000,9 @@ static inline void update_frame_time(void) else delta = time - g_extern.system.frame_time_last; + if (!is_locked_fps && g_extern.is_slowmotion) + delta /= g_settings.slowmotion_ratio; + g_extern.system.frame_time_last = is_locked_fps ? 0 : time; g_extern.system.frame_time.callback(delta); } From e2bcd5df98c17aa9e0f54a3f8e4c6b99b0b41639 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Jul 2013 13:44:54 +0200 Subject: [PATCH 136/252] (Playbook) ALSA driver broken for now - fall back to OpenAL for now --- blackberry-qnx/playbook/.cproject | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blackberry-qnx/playbook/.cproject b/blackberry-qnx/playbook/.cproject index 866c71af27..9ee9fa5faf 100644 --- a/blackberry-qnx/playbook/.cproject +++ b/blackberry-qnx/playbook/.cproject @@ -168,7 +168,7 @@ - + From bb0993b6eb9277594133e113287b4a937a2a5d09 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 15 Jul 2013 20:36:18 +0200 Subject: [PATCH 137/252] Fix Android build. --- audio/thread_wrapper.c | 2 +- dynamic.c | 14 +++++++++++++- retroarch.c | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/audio/thread_wrapper.c b/audio/thread_wrapper.c index b7d5fa2a8f..387bb0ea0f 100644 --- a/audio/thread_wrapper.c +++ b/audio/thread_wrapper.c @@ -110,7 +110,7 @@ static bool audio_thread_start(void *data) static void audio_thread_set_nonblock_state(void *data, bool state) { - audio_thread_t *thr = (audio_thread_t*)data; + (void)data; (void)state; } diff --git a/dynamic.c b/dynamic.c index d49ac9d862..401b1f4e46 100644 --- a/dynamic.c +++ b/dynamic.c @@ -729,8 +729,16 @@ static bool environment_cb(unsigned cmd, void *data) RARCH_LOG("Environ SET_AUDIO_CALLBACK.\n"); const struct retro_audio_callback *info = (const struct retro_audio_callback*)data; - if (g_extern.recording || g_extern.netplay_enable) // A/V sync is a must. +#ifdef HAVE_FFMPEG + if (g_extern.recording) // A/V sync is a must. return false; +#endif + +#ifdef HAVE_NETPLAY + if (g_extern.netplay_enable) + return false; +#endif + g_extern.system.audio_callback = info->callback; break; } @@ -739,8 +747,12 @@ static bool environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK: { RARCH_LOG("Environ SET_FRAME_TIME_CALLBACK.\n"); + +#ifdef HAVE_NETPLAY if (g_extern.netplay_enable) // retro_run() will be called in very strange and mysterious ways, have to disable it. return false; +#endif + const struct retro_frame_time_callback *info = (const struct retro_frame_time_callback*)data; g_extern.system.frame_time = *info; break; diff --git a/retroarch.c b/retroarch.c index 33e524352d..941722b032 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2993,7 +2993,10 @@ static inline void update_frame_time(void) rarch_time_t time = rarch_get_time_usec(); rarch_time_t delta = 0; - bool is_locked_fps = g_extern.is_paused || driver.nonblock_state || g_extern.recording; + bool is_locked_fps = g_extern.is_paused || driver.nonblock_state; +#ifdef HAVE_FFMPEG + is_locked_fps |= g_extern.recording; +#endif if (!g_extern.system.frame_time_last || is_locked_fps) delta = g_extern.system.frame_time.reference; From a543b5da74f5a494d1e7081e88fcc1a26f046887 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 15 Jul 2013 21:35:47 +0200 Subject: [PATCH 138/252] Fix threaded audio race conditions. --- audio/opensl.c | 9 ++++++++- audio/thread_wrapper.c | 2 +- driver.c | 6 +++--- retroarch.c | 4 ++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/audio/opensl.c b/audio/opensl.c index 5989df427b..0795933beb 100644 --- a/audio/opensl.c +++ b/audio/opensl.c @@ -63,6 +63,7 @@ static void opensl_callback(SLAndroidSimpleBufferQueueItf bq, void *ctx) sl_t *sl = (sl_t*)ctx; __sync_fetch_and_sub(&sl->buffered_blocks, 1); scond_signal(sl->cond); + slock_unlock(sl->lock); } #define GOTO_IF_FAIL(x) do { \ @@ -261,6 +262,12 @@ static size_t sl_buffer_size(void *data) return BUFFER_SIZE * sl->buf_count; } +static bool sl_use_float(void *data) +{ + (void)data; + return false; +} + const audio_driver_t audio_opensl = { sl_init, sl_write, @@ -268,7 +275,7 @@ const audio_driver_t audio_opensl = { sl_start, sl_set_nonblock_state, sl_free, - NULL, + sl_use_float, "opensl", sl_write_avail, sl_buffer_size, diff --git a/audio/thread_wrapper.c b/audio/thread_wrapper.c index 387bb0ea0f..0c762aa15f 100644 --- a/audio/thread_wrapper.c +++ b/audio/thread_wrapper.c @@ -117,7 +117,7 @@ static void audio_thread_set_nonblock_state(void *data, bool state) static bool audio_thread_use_float(void *data) { audio_thread_t *thr = (audio_thread_t*)data; - return thr->driver->use_float(thr->driver_data); + return thr->driver->use_float && thr->driver->use_float(thr->driver_data); } static ssize_t audio_thread_write(void *data, const void *buf, size_t size) diff --git a/driver.c b/driver.c index 0ee6dac1ae..99a96a218d 100644 --- a/driver.c +++ b/driver.c @@ -692,6 +692,9 @@ static void compute_monitor_fps_statistics(void) void uninit_audio(void) { + if (driver.audio_data && driver.audio) + driver.audio->free(driver.audio_data); + free(g_extern.audio_data.conv_outsamples); g_extern.audio_data.conv_outsamples = NULL; g_extern.audio_data.data_ptr = 0; @@ -705,9 +708,6 @@ void uninit_audio(void) return; } - if (driver.audio_data && driver.audio) - driver.audio->free(driver.audio_data); - rarch_resampler_freep(&g_extern.audio_data.resampler, &g_extern.audio_data.resampler_data); free(g_extern.audio_data.data); diff --git a/retroarch.c b/retroarch.c index 941722b032..147da9aeb5 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2956,9 +2956,9 @@ int rarch_main_init(int argc, char *argv[]) return 0; error: + uninit_drivers(); pretro_unload_game(); pretro_deinit(); - uninit_drivers(); uninit_libretro_sym(); g_extern.main_is_init = false; @@ -3116,9 +3116,9 @@ void rarch_main_deinit(void) if (!g_extern.libretro_dummy && !g_extern.libretro_no_rom) save_auto_state(); + uninit_drivers(); pretro_unload_game(); pretro_deinit(); - uninit_drivers(); uninit_libretro_sym(); if (g_extern.rom_file_temporary) From 21a1ae72d5ed0cbad7911bca0fd9e467ffa78fc0 Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Tue, 16 Jul 2013 16:22:25 +0200 Subject: [PATCH 139/252] Remove unused variables. --- frontend/menu/menu_common.c | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index a543b4adef..a52ebef80c 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -773,7 +773,6 @@ static uint64_t rgui_input(void) bool menu_iterate(void) { - rarch_time_t time, delta, target_msec, sleep_msec; static bool initial_held = true; static bool first_held = false; uint64_t input_state = 0; From 4bf3d47be11514e48119a8843d6f89b0e11e9358 Mon Sep 17 00:00:00 2001 From: Themaister Date: Tue, 16 Jul 2013 22:14:18 +0200 Subject: [PATCH 140/252] Use GCC atomics to avoid locking in callback. --- audio/opensl.c | 1 - 1 file changed, 1 deletion(-) diff --git a/audio/opensl.c b/audio/opensl.c index 0795933beb..5339bbb3b6 100644 --- a/audio/opensl.c +++ b/audio/opensl.c @@ -63,7 +63,6 @@ static void opensl_callback(SLAndroidSimpleBufferQueueItf bq, void *ctx) sl_t *sl = (sl_t*)ctx; __sync_fetch_and_sub(&sl->buffered_blocks, 1); scond_signal(sl->cond); - slock_unlock(sl->lock); } #define GOTO_IF_FAIL(x) do { \ From 301a4aaebfe55c8c840fb2c1c93d074ee6122b09 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 21 Jul 2013 22:35:13 +0200 Subject: [PATCH 141/252] Add GLES3 header includes. --- gfx/glsym/rglgen.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/glsym/rglgen.h b/gfx/glsym/rglgen.h index 6bb6ca35a9..a3cd5da844 100644 --- a/gfx/glsym/rglgen.h +++ b/gfx/glsym/rglgen.h @@ -23,6 +23,9 @@ #elif defined(HAVE_OPENGL_MODERN) #include #include +#elif defined(HAVE_OPENGLES3) +#include +#include // There are no GLES3 extensions yet. #elif defined(HAVE_OPENGLES2) #include #include From 31195846e5d2695922586ac7c99e15824297730c Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Thu, 25 Jul 2013 16:33:06 +0200 Subject: [PATCH 142/252] Fixup Windows build. --- Makefile.win | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.win b/Makefile.win index 0314720d97..1dc94a6520 100644 --- a/Makefile.win +++ b/Makefile.win @@ -54,6 +54,7 @@ HAVE_DINPUT = 1 HAVE_XAUDIO = 1 HAVE_DSOUND = 1 HAVE_OPENGL = 1 +HAVE_FBO = 1 HAVE_DYLIB = 1 HAVE_D3D9 = 1 HAVE_NETPLAY = 1 @@ -69,7 +70,6 @@ ifeq ($(SLIM),) HAVE_FREETYPE = 1 HAVE_ZLIB = 1 HAVE_RSOUND = 1 - HAVE_FBO = 1 HAVE_CG = 1 HAVE_PYTHON = 1 HAVE_FFMPEG = 1 @@ -109,7 +109,7 @@ ifeq ($(HAVE_SDL), 1) endif ifeq ($(HAVE_THREADS), 1) - OBJ += autosave.o thread.o gfx/thread_wrapper.o + OBJ += autosave.o thread.o gfx/thread_wrapper.o audio/thread_wrapper.o DEFINES += -DHAVE_THREADS endif From 6f4f1e30798da58027d3daabdfcee0e59fc850f1 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 27 Jul 2013 15:00:22 +0200 Subject: [PATCH 143/252] Fixup warnings. --- frontend/frontend.c | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/frontend.c b/frontend/frontend.c index 3cd7a1bc44..af01382f68 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -23,6 +23,7 @@ frontend_ctx_driver_t *frontend_ctx; #if defined(HAVE_RGUI) || defined(HAVE_RMENU) || defined(HAVE_RMENU_XUI) #define HAVE_MENU +#include "frontend/menu/menu_common.h" #else #undef HAVE_MENU #endif From e33460ca8ab10639a8c56a0635f53e3bfb29f0a6 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 27 Jul 2013 15:04:15 +0200 Subject: [PATCH 144/252] Update Win32 build versions to 0.9.9.4. --- Makefile.win | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.win b/Makefile.win index 1dc94a6520..3003c672b1 100644 --- a/Makefile.win +++ b/Makefile.win @@ -301,10 +301,10 @@ clean: rm -f tools/*.o dist_x86: all - zip -r retroarch-win32-0.9.9.3.zip $(TARGET) $(JTARGET) retroarch.cfg + zip -r retroarch-win32-0.9.9.4.zip $(TARGET) $(JTARGET) retroarch.cfg dist_x86_64: all - zip -r retroarch-win64-0.9.9.3.zip $(TARGET) $(JTARGET) retroarch.cfg + zip -r retroarch-win64-0.9.9.4.zip $(TARGET) $(JTARGET) retroarch.cfg libs_x86: wget http://themaister.net/retroarch-dl/RetroArch-win32-libs.zip From 47c4428d8eb26cf1eafd4f7fe63bd1638c2e4a44 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 3 Aug 2013 11:43:30 +0200 Subject: [PATCH 145/252] Add GL sync support to GLES2. --- Makefile | 2 +- gfx/gl.c | 11 +++++++++++ gfx/glsym/glgen.py | 2 +- gfx/glsym/glsym_es2.c | 20 ++++++++++++++++++++ gfx/glsym/glsym_es2.h | 30 ++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index acf4054dbf..eb3b29f076 100644 --- a/Makefile +++ b/Makefile @@ -221,12 +221,12 @@ ifeq ($(HAVE_OPENGL), 1) endif endif + DEFINES += -DHAVE_GL_SYNC ifeq ($(HAVE_GLES), 1) LIBS += -lGLESv2 DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2 OBJ += gfx/glsym/glsym_es2.o else - DEFINES += -DHAVE_GL_SYNC OBJ += gfx/glsym/glsym_gl.o ifeq ($(OSX), 1) LIBS += -framework OpenGL diff --git a/gfx/gl.c b/gfx/gl.c index efa4f39a58..6bfd31a45e 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -142,9 +142,20 @@ static bool check_eglimage_proc(void) #endif #ifdef HAVE_GL_SYNC +#ifdef HAVE_OPENGLES2 +#define glFenceSync glFenceSyncAPPLE +#define glDeleteSync glDeleteSyncAPPLE +#define glClientWaitSync glClientWaitSyncAPPLE +#define GL_SYNC_GPU_COMMANDS_COMPLETE GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE +#define GL_SYNC_FLUSH_COMMANDS_BIT GL_SYNC_FLUSH_COMMANDS_BIT_APPLE +#endif static bool check_sync_proc(gl_t *gl) { +#ifdef HAVE_OPENGLES + if (!gl_query_extension(gl, "APPLE_sync")) +#else if (!gl_query_extension(gl, "ARB_sync")) +#endif return false; return glFenceSync && glDeleteSync && glClientWaitSync; diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index 0d07fbbf92..a749fe5851 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -25,7 +25,7 @@ import sys import os import re -banned_ext = [ 'AMD', 'APPLE', 'EXT', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] +banned_ext = [ 'AMD', 'EXT', '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: diff --git a/gfx/glsym/glsym_es2.c b/gfx/glsym/glsym_es2.c index 26f2a44e72..19132195af 100644 --- a/gfx/glsym/glsym_es2.c +++ b/gfx/glsym/glsym_es2.c @@ -30,6 +30,16 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ObjectPtrLabel), SYM(GetObjectPtrLabel), SYM(GetPointerv), + SYM(CopyTextureLevelsAPPLE), + SYM(RenderbufferStorageMultisampleAPPLE), + SYM(ResolveMultisampleFramebufferAPPLE), + SYM(FenceSyncAPPLE), + SYM(IsSyncAPPLE), + SYM(DeleteSyncAPPLE), + SYM(ClientWaitSyncAPPLE), + SYM(WaitSyncAPPLE), + SYM(GetInteger64vAPPLE), + SYM(GetSyncivAPPLE), { NULL, NULL }, }; @@ -61,4 +71,14 @@ RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; +RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE; +RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE; +RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE; +RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE; +RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE; +RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE; +RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE; +RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE; +RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE; +RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE; diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h index 55efec49f6..45e8c69890 100644 --- a/gfx/glsym/glsym_es2.h +++ b/gfx/glsym/glsym_es2.h @@ -49,6 +49,16 @@ typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuin typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params); +typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +typedef void (GL_APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +typedef GLsync (GL_APIENTRYP RGLSYMGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP RGLSYMGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP RGLSYMGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP RGLSYMGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP RGLSYMGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP RGLSYMGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP RGLSYMGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); #define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES #define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES @@ -78,6 +88,16 @@ typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params #define glObjectPtrLabel __rglgen_glObjectPtrLabel #define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel #define glGetPointerv __rglgen_glGetPointerv +#define glCopyTextureLevelsAPPLE __rglgen_glCopyTextureLevelsAPPLE +#define glRenderbufferStorageMultisampleAPPLE __rglgen_glRenderbufferStorageMultisampleAPPLE +#define glResolveMultisampleFramebufferAPPLE __rglgen_glResolveMultisampleFramebufferAPPLE +#define glFenceSyncAPPLE __rglgen_glFenceSyncAPPLE +#define glIsSyncAPPLE __rglgen_glIsSyncAPPLE +#define glDeleteSyncAPPLE __rglgen_glDeleteSyncAPPLE +#define glClientWaitSyncAPPLE __rglgen_glClientWaitSyncAPPLE +#define glWaitSyncAPPLE __rglgen_glWaitSyncAPPLE +#define glGetInteger64vAPPLE __rglgen_glGetInteger64vAPPLE +#define glGetSyncivAPPLE __rglgen_glGetSyncivAPPLE extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; @@ -107,6 +127,16 @@ extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; +extern RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE; +extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE; +extern RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE; +extern RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE; +extern RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE; +extern RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE; +extern RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE; +extern RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE; +extern RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE; +extern RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; From 70de03644063a6e524e57fd88ce41062faa49419 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 3 Aug 2013 15:27:17 +0200 Subject: [PATCH 146/252] Revert "Add GL sync support to GLES2." This reverts commit c1bbb6bf89aae12848f0e2b2a5953b499bd5da4b. --- Makefile | 2 +- gfx/gl.c | 11 ----------- gfx/glsym/glgen.py | 2 +- gfx/glsym/glsym_es2.c | 20 -------------------- gfx/glsym/glsym_es2.h | 30 ------------------------------ 5 files changed, 2 insertions(+), 63 deletions(-) diff --git a/Makefile b/Makefile index eb3b29f076..acf4054dbf 100644 --- a/Makefile +++ b/Makefile @@ -221,12 +221,12 @@ ifeq ($(HAVE_OPENGL), 1) endif endif - DEFINES += -DHAVE_GL_SYNC ifeq ($(HAVE_GLES), 1) LIBS += -lGLESv2 DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2 OBJ += gfx/glsym/glsym_es2.o else + DEFINES += -DHAVE_GL_SYNC OBJ += gfx/glsym/glsym_gl.o ifeq ($(OSX), 1) LIBS += -framework OpenGL diff --git a/gfx/gl.c b/gfx/gl.c index 6bfd31a45e..efa4f39a58 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -142,20 +142,9 @@ static bool check_eglimage_proc(void) #endif #ifdef HAVE_GL_SYNC -#ifdef HAVE_OPENGLES2 -#define glFenceSync glFenceSyncAPPLE -#define glDeleteSync glDeleteSyncAPPLE -#define glClientWaitSync glClientWaitSyncAPPLE -#define GL_SYNC_GPU_COMMANDS_COMPLETE GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE -#define GL_SYNC_FLUSH_COMMANDS_BIT GL_SYNC_FLUSH_COMMANDS_BIT_APPLE -#endif static bool check_sync_proc(gl_t *gl) { -#ifdef HAVE_OPENGLES - if (!gl_query_extension(gl, "APPLE_sync")) -#else if (!gl_query_extension(gl, "ARB_sync")) -#endif return false; return glFenceSync && glDeleteSync && glClientWaitSync; diff --git a/gfx/glsym/glgen.py b/gfx/glsym/glgen.py index a749fe5851..0d07fbbf92 100755 --- a/gfx/glsym/glgen.py +++ b/gfx/glsym/glgen.py @@ -25,7 +25,7 @@ import sys import os import re -banned_ext = [ 'AMD', 'EXT', 'NV', 'NVX', 'ATI', '3DLABS', 'SUN', 'SGI', 'SGIX', 'SGIS', 'INTEL', '3DFX', 'IBM', 'MESA', 'GREMEDY', 'OML', 'PGI', 'I3D', 'INGL', 'MTX', 'QCOM', 'IMG', 'ANGLE', 'SUNX', 'INGR' ] +banned_ext = [ 'AMD', 'APPLE', 'EXT', '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: diff --git a/gfx/glsym/glsym_es2.c b/gfx/glsym/glsym_es2.c index 19132195af..26f2a44e72 100644 --- a/gfx/glsym/glsym_es2.c +++ b/gfx/glsym/glsym_es2.c @@ -30,16 +30,6 @@ const struct rglgen_sym_map rglgen_symbol_map[] = { SYM(ObjectPtrLabel), SYM(GetObjectPtrLabel), SYM(GetPointerv), - SYM(CopyTextureLevelsAPPLE), - SYM(RenderbufferStorageMultisampleAPPLE), - SYM(ResolveMultisampleFramebufferAPPLE), - SYM(FenceSyncAPPLE), - SYM(IsSyncAPPLE), - SYM(DeleteSyncAPPLE), - SYM(ClientWaitSyncAPPLE), - SYM(WaitSyncAPPLE), - SYM(GetInteger64vAPPLE), - SYM(GetSyncivAPPLE), { NULL, NULL }, }; @@ -71,14 +61,4 @@ RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; -RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE; -RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE; -RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE; -RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE; -RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE; -RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE; -RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE; -RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE; -RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE; -RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE; diff --git a/gfx/glsym/glsym_es2.h b/gfx/glsym/glsym_es2.h index 45e8c69890..55efec49f6 100644 --- a/gfx/glsym/glsym_es2.h +++ b/gfx/glsym/glsym_es2.h @@ -49,16 +49,6 @@ typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTLABELPROC) (GLenum identifier, GLuin typedef void (GL_APIENTRYP RGLSYMGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); typedef void (GL_APIENTRYP RGLSYMGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); typedef void (GL_APIENTRYP RGLSYMGLGETPOINTERVPROC) (GLenum pname, void **params); -typedef void (GL_APIENTRYP RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); -typedef void (GL_APIENTRYP RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); -typedef GLsync (GL_APIENTRYP RGLSYMGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (GL_APIENTRYP RGLSYMGLISSYNCAPPLEPROC) (GLsync sync); -typedef void (GL_APIENTRYP RGLSYMGLDELETESYNCAPPLEPROC) (GLsync sync); -typedef GLenum (GL_APIENTRYP RGLSYMGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP RGLSYMGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP RGLSYMGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); -typedef void (GL_APIENTRYP RGLSYMGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); #define glEGLImageTargetTexture2DOES __rglgen_glEGLImageTargetTexture2DOES #define glEGLImageTargetRenderbufferStorageOES __rglgen_glEGLImageTargetRenderbufferStorageOES @@ -88,16 +78,6 @@ typedef void (GL_APIENTRYP RGLSYMGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pnam #define glObjectPtrLabel __rglgen_glObjectPtrLabel #define glGetObjectPtrLabel __rglgen_glGetObjectPtrLabel #define glGetPointerv __rglgen_glGetPointerv -#define glCopyTextureLevelsAPPLE __rglgen_glCopyTextureLevelsAPPLE -#define glRenderbufferStorageMultisampleAPPLE __rglgen_glRenderbufferStorageMultisampleAPPLE -#define glResolveMultisampleFramebufferAPPLE __rglgen_glResolveMultisampleFramebufferAPPLE -#define glFenceSyncAPPLE __rglgen_glFenceSyncAPPLE -#define glIsSyncAPPLE __rglgen_glIsSyncAPPLE -#define glDeleteSyncAPPLE __rglgen_glDeleteSyncAPPLE -#define glClientWaitSyncAPPLE __rglgen_glClientWaitSyncAPPLE -#define glWaitSyncAPPLE __rglgen_glWaitSyncAPPLE -#define glGetInteger64vAPPLE __rglgen_glGetInteger64vAPPLE -#define glGetSyncivAPPLE __rglgen_glGetSyncivAPPLE extern RGLSYMGLEGLIMAGETARGETTEXTURE2DOESPROC __rglgen_glEGLImageTargetTexture2DOES; extern RGLSYMGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC __rglgen_glEGLImageTargetRenderbufferStorageOES; @@ -127,16 +107,6 @@ extern RGLSYMGLGETOBJECTLABELPROC __rglgen_glGetObjectLabel; extern RGLSYMGLOBJECTPTRLABELPROC __rglgen_glObjectPtrLabel; extern RGLSYMGLGETOBJECTPTRLABELPROC __rglgen_glGetObjectPtrLabel; extern RGLSYMGLGETPOINTERVPROC __rglgen_glGetPointerv; -extern RGLSYMGLCOPYTEXTURELEVELSAPPLEPROC __rglgen_glCopyTextureLevelsAPPLE; -extern RGLSYMGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __rglgen_glRenderbufferStorageMultisampleAPPLE; -extern RGLSYMGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __rglgen_glResolveMultisampleFramebufferAPPLE; -extern RGLSYMGLFENCESYNCAPPLEPROC __rglgen_glFenceSyncAPPLE; -extern RGLSYMGLISSYNCAPPLEPROC __rglgen_glIsSyncAPPLE; -extern RGLSYMGLDELETESYNCAPPLEPROC __rglgen_glDeleteSyncAPPLE; -extern RGLSYMGLCLIENTWAITSYNCAPPLEPROC __rglgen_glClientWaitSyncAPPLE; -extern RGLSYMGLWAITSYNCAPPLEPROC __rglgen_glWaitSyncAPPLE; -extern RGLSYMGLGETINTEGER64VAPPLEPROC __rglgen_glGetInteger64vAPPLE; -extern RGLSYMGLGETSYNCIVAPPLEPROC __rglgen_glGetSyncivAPPLE; struct rglgen_sym_map { const char *sym; void *ptr; }; extern const struct rglgen_sym_map rglgen_symbol_map[]; From e8271031b676d7d69d0f1c5c5e3d22fb0a39ea65 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 4 Aug 2013 14:57:31 +0200 Subject: [PATCH 147/252] Stop/start audio driver on mute. --- driver.c | 2 +- frontend/frontend.c | 2 +- retroarch.c | 15 +++++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/driver.c b/driver.c index 99a96a218d..b9795818af 100644 --- a/driver.c +++ b/driver.c @@ -580,7 +580,7 @@ void init_audio(void) g_extern.measure_data.buffer_free_samples_count = 0; - if (g_extern.audio_active && g_extern.system.audio_callback) // Threaded driver is initially stopped. + if (g_extern.audio_active && !g_extern.audio_data.mute && g_extern.system.audio_callback) // Threaded driver is initially stopped. audio_start_func(); } diff --git a/frontend/frontend.c b/frontend/frontend.c index af01382f68..174f1a8084 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -253,7 +253,7 @@ int main(int argc, char *argv[]) driver_set_nonblock_state(driver.nonblock_state); - if (driver.audio_data && !audio_start_func()) + if (driver.audio_data && !g_extern.audio_data.mute && !audio_start_func()) { RARCH_ERR("Failed to resume audio driver. Will continue without audio.\n"); g_extern.audio_active = false; diff --git a/retroarch.c b/retroarch.c index 147da9aeb5..ec66560d50 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2223,7 +2223,7 @@ static void check_pause(void) RARCH_LOG("Unpaused.\n"); if (driver.audio_data) { - if (!audio_start_func()) + if (!g_extern.audio_data.mute && !audio_start_func()) { RARCH_ERR("Failed to resume audio driver. Will continue without audio.\n"); g_extern.audio_active = false; @@ -2235,7 +2235,7 @@ static void check_pause(void) { RARCH_LOG("Unpaused.\n"); g_extern.is_paused = false; - if (driver.audio_data && !audio_start_func()) + if (driver.audio_data && !g_extern.audio_data.mute && !audio_start_func()) { RARCH_ERR("Failed to resume audio driver. Will continue without audio.\n"); g_extern.audio_active = false; @@ -2581,6 +2581,17 @@ static void check_mute(void) msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, msg, 1, 180); + if (driver.audio_data) + { + if (g_extern.audio_data.mute) + audio_stop_func(); + else if (!audio_start_func()) + { + RARCH_ERR("Failed to unmute audio.\n"); + g_extern.audio_active = false; + } + } + RARCH_LOG("%s\n", msg); } From 9e4cee5b307a1be1664d77c5ea999d2bfd19cc35 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 7 Aug 2013 22:24:12 +0200 Subject: [PATCH 148/252] Add support for fast forward frame limiting. --- config.def.h | 3 +++ general.h | 7 +++++++ retroarch.c | 20 ++++++++++++++++++++ retroarch.cfg | 6 ++++++ settings.c | 3 +++ 5 files changed, 39 insertions(+) diff --git a/config.def.h b/config.def.h index 6dcc5238b5..a677cc2778 100644 --- a/config.def.h +++ b/config.def.h @@ -381,6 +381,9 @@ static const bool savestate_auto_load = true; // Slowmotion ratio. static const float slowmotion_ratio = 3.0; +// Maximum fast forward ratio (Negative => no limit). +static const float fastforward_ratio = -1.0; + // Enable stdin/network command interface static const bool network_cmd_enable = false; static const uint16_t network_cmd_port = 55355; diff --git a/general.h b/general.h index 976cd0bd28..ca07012988 100644 --- a/general.h +++ b/general.h @@ -264,6 +264,7 @@ struct settings unsigned rewind_granularity; float slowmotion_ratio; + float fastforward_ratio; bool pause_nonactive; unsigned autosave_interval; @@ -367,6 +368,12 @@ struct global unsigned state_slot; + struct + { + rarch_time_t minimum_frame_time; + rarch_time_t last_frame_time; + } frame_limit; + struct { struct retro_system_info info; diff --git a/retroarch.c b/retroarch.c index ec66560d50..8c1ceed1cd 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2819,6 +2819,8 @@ void rarch_init_system_info(void) static void init_system_av_info(void) { pretro_get_system_av_info(&g_extern.system.av_info); + g_extern.frame_limit.last_frame_time = rarch_get_time_usec(); + g_extern.frame_limit.minimum_frame_time = (rarch_time_t)roundf(1000000.0f / (g_extern.system.av_info.timing.fps * g_settings.fastforward_ratio)); } static void verify_api_version(void) @@ -3021,6 +3023,23 @@ static inline void update_frame_time(void) g_extern.system.frame_time.callback(delta); } +static inline void limit_frame_time(void) +{ + if (g_settings.fastforward_ratio < 0.0f) + return; + + rarch_time_t current = rarch_get_time_usec(); + rarch_time_t target = g_extern.frame_limit.last_frame_time + g_extern.frame_limit.minimum_frame_time; + rarch_time_t to_sleep_ms = (target - current) / 1000; + if (to_sleep_ms > 0) + { + rarch_sleep(to_sleep_ms); + g_extern.frame_limit.last_frame_time += g_extern.frame_limit.minimum_frame_time; // Combat jitter a bit. + } + else + g_extern.frame_limit.last_frame_time = rarch_get_time_usec(); +} + bool rarch_main_iterate(void) { #ifdef HAVE_DYLIB @@ -3065,6 +3084,7 @@ bool rarch_main_iterate(void) update_frame_time(); pretro_run(); + limit_frame_time(); #ifdef HAVE_BSV_MOVIE if (g_extern.bsv.movie) diff --git a/retroarch.cfg b/retroarch.cfg index f25c051cff..0e09db086e 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -461,6 +461,12 @@ # Slowmotion ratio. When slowmotion, game will slow down by factor. # slowmotion_ratio = 3.0 +# The maximum rate at which games will be run when using fast forward. (E.g. 5.0 for 60 fps game => 300 fps cap). +# RetroArch will go to sleep to ensure that the maximum rate will not be exceeded. +# Do not rely on this cap to be perfectly accurate. +# A negative ratio equals no FPS cap. +# fastforward_ratio = -1.0 + # Enable stdin/network command interface. # network_cmd_enable = false # network_cmd_port = 55355 diff --git a/settings.c b/settings.c index 9280e6cfce..4cfc84e2da 100644 --- a/settings.c +++ b/settings.c @@ -209,6 +209,7 @@ void config_set_defaults(void) g_settings.rewind_buffer_size = rewind_buffer_size; g_settings.rewind_granularity = rewind_granularity; g_settings.slowmotion_ratio = slowmotion_ratio; + g_settings.fastforward_ratio = fastforward_ratio; g_settings.pause_nonactive = pause_nonactive; g_settings.autosave_interval = autosave_interval; @@ -678,6 +679,8 @@ bool config_load_file(const char *path) if (g_settings.slowmotion_ratio < 1.0f) g_settings.slowmotion_ratio = 1.0f; + CONFIG_GET_FLOAT(fastforward_ratio, "fastforward_ratio"); + CONFIG_GET_BOOL(pause_nonactive, "pause_nonactive"); CONFIG_GET_INT(autosave_interval, "autosave_interval"); From 954727aa796dd94415706dc79705bcde81df4d05 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 10 Aug 2013 17:12:38 +0200 Subject: [PATCH 149/252] Fixups for cg2glsl. --- tools/cg2glsl.py | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 2772aebba1..9027c81a8c 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -70,10 +70,6 @@ def replace_global_vertex(source): ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), - ('MVPMatrix[0]', 'MVPMatrix_[0]'), - ('MVPMatrix[1]', 'MVPMatrix_[1]'), - ('MVPMatrix[2]', 'MVPMatrix_[2]'), - ('MVPMatrix[3]', 'MVPMatrix_[3]'), ('FrameCount', 'float(FrameCount)'), ('FrameDirection', 'float(FrameDirection)'), @@ -358,11 +354,9 @@ def replace_varyings(source): return ret def hack_source_vertex(source): - transpose_index = 2 ref_index = 0 for index, line in enumerate(source): if 'void main()' in line: - source.insert(index + 2, ' mat4 MVPMatrix_ = transpose_(MVPMatrix);') # transpose() is GLSL 1.20+, doesn't exist in GLSL ES 1.0 source.insert(index, '#endif') source.insert(index, 'uniform vec2 InputSize;') source.insert(index, 'uniform vec2 TextureSize;') @@ -376,17 +370,6 @@ def hack_source_vertex(source): source.insert(index, 'uniform int FrameDirection;') source.insert(index, 'uniform mat4 MVPMatrix;') - source.insert(index, """ -mat4 transpose_(mat4 matrix) -{ - mat4 ret; - for (int i = 0; i != 4; i++) - for (int j = 0; j != 4; j++) - ret[i][j] = matrix[j][i]; - - return ret; -} - """) ref_index = index break @@ -558,9 +541,11 @@ def validate_shader(source, target): return p.returncode == 0 def convert(source, dest): - vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex', source] - p = subprocess.Popen(vert_cmd, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - vertex_source, stderr_ret = p.communicate() + vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex'] + with open(source, 'r') as f: + source_data = f.read() + p = subprocess.Popen(vert_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + vertex_source, stderr_ret = p.communicate(input = ('#pragma pack_matrix(column_major)\n' + source_data).encode()) log(stderr_ret.decode()) vertex_source = vertex_source.decode() From 1a071c49924a31bca8fa8a5172b858f1cd79f15b Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 10 Aug 2013 18:57:51 +0200 Subject: [PATCH 150/252] Updates and fixes for cg2glsl. --- tools/cg2glsl.py | 119 +++++++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 40 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 9027c81a8c..f63fae647e 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -60,6 +60,8 @@ def replace_global_vertex(source): source = replace_global_in(source) replace_table = [ + ('attribute', 'COMPAT_attribute'), + ('varying', 'COMPAT_varying'), ('POSITION', 'VertexCoord'), ('TEXCOORD1', 'LUTTexCoord'), ('TEXCOORD0', 'TexCoord'), @@ -143,7 +145,7 @@ def destructify_varyings(source, direction): while (j < len(source)) and ('};' not in source[j]): j += 1 - lines = ['varying ' + string for string in source[i + 1 : j]] + lines = ['COMPAT_varying ' + string for string in source[i + 1 : j]] varyings.extend(lines) names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[i + 1 : j]] varyings_name.extend(names) @@ -173,12 +175,15 @@ def destructify_varyings(source, direction): for struct in struct_types: if struct in line: - variable = line.split(' ')[1].split(';')[0] + decomment_line = line.split('//')[0].strip() + if len(decomment_line) == 0: + continue + variable = decomment_line.split(' ')[1].split(';')[0] # Only redirect if the struct is actually used as vertex output. for vout_line in vout_lines: if variable in vout_line: - log('Found struct variable for', struct + ':', variable) + log('Found struct variable for', struct + ':', variable, 'in line:', line) variables.append(variable) break @@ -335,15 +340,11 @@ def replace_varyings(source): if 'void main()' in line: for attrib in attribs: if attrib == 'VertexCoord': - source.insert(index, 'attribute vec4 ' + attrib + ';') + source.insert(index, 'COMPAT_attribute vec4 ' + attrib + ';') else: - source.insert(index, 'attribute vec2 ' + attrib + ';') + source.insert(index, 'COMPAT_attribute vec2 ' + attrib + ';') for uniform in uniforms: - source.insert(index, '#endif') - source.insert(index, 'uniform vec2 ' + uniform + ';') - source.insert(index, '#else') - source.insert(index, 'uniform mediump vec2 ' + uniform + ';') - source.insert(index, '#ifdef GL_ES') + source.insert(index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') break for line in source: @@ -357,15 +358,9 @@ def hack_source_vertex(source): ref_index = 0 for index, line in enumerate(source): if 'void main()' in line: - source.insert(index, '#endif') - source.insert(index, 'uniform vec2 InputSize;') - source.insert(index, 'uniform vec2 TextureSize;') - source.insert(index, 'uniform vec2 OutputSize;') - source.insert(index, '#else') - source.insert(index, 'uniform mediump vec2 InputSize;') - source.insert(index, 'uniform mediump vec2 TextureSize;') - source.insert(index, 'uniform mediump vec2 OutputSize;') - source.insert(index, '#ifdef GL_ES') + source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') source.insert(index, 'uniform int FrameCount;') source.insert(index, 'uniform int FrameDirection;') source.insert(index, 'uniform mat4 MVPMatrix;') @@ -412,10 +407,12 @@ def hack_source_vertex(source): def replace_global_fragment(source): source = replace_global_in(source) replace_table = [ + ('varying', 'COMPAT_varying'), ('FrameCount', 'float(FrameCount)'), ('FrameDirection', 'float(FrameDirection)'), ('input', 'input_dummy'), ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('gl_FragColor', 'FragColor'), ] for replacement in replace_table: @@ -461,15 +458,9 @@ def hack_source_fragment(source): ref_index = 0 for index, line in enumerate(source): if 'void main()' in line: - source.insert(index, '#endif') - source.insert(index, 'uniform vec2 InputSize;') - source.insert(index, 'uniform vec2 TextureSize;') - source.insert(index, 'uniform vec2 OutputSize;') - source.insert(index, '#else') - source.insert(index, 'uniform mediump vec2 InputSize;') - source.insert(index, 'uniform mediump vec2 TextureSize;') - source.insert(index, 'uniform mediump vec2 OutputSize;') - source.insert(index, '#ifdef GL_ES') + source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') source.insert(index, 'uniform int FrameCount;') source.insert(index, 'uniform int FrameDirection;') ref_index = index @@ -510,11 +501,7 @@ def hack_source_fragment(source): for sampler in added_samplers: source.insert(ref_index, sampler) for uniform in uniforms: - source.insert(ref_index, '#endif') - source.insert(ref_index, 'uniform vec2 ' + uniform + ';') - source.insert(ref_index, '#else') - source.insert(ref_index, 'uniform mediump vec2 ' + uniform + ';') - source.insert(ref_index, '#ifdef GL_ES') + source.insert(ref_index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') if struct_texunit0: source.insert(ref_index, 'uniform sampler2D Texture;') @@ -528,24 +515,38 @@ def hack_source_fragment(source): return ret def validate_shader(source, target): - command = ['cgc', '-noentry', '-ogles'] - p = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) - stdout_ret, stderr_ret = p.communicate(source.encode()) - log('Shader:') log('===') log(source) log('===') + + command = ['cgc', '-noentry', '-ogles'] + p = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) + stdout_ret, stderr_ret = p.communicate(source.encode()) + log('CGC:', stderr_ret.decode()) return p.returncode == 0 +def preprocess_vertex(source_data): + input_data = source_data.split('\n') + ret = [] + for line in input_data: + if 'uniform float4x4' in line: + ret.append('#pragma pack_matrix(column_major)\n') + ret.append(line) + ret.append('#pragma pack_matrix(row_major)\n') + else: + ret.append(line) + return '\n'.join(ret) + def convert(source, dest): vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex'] with open(source, 'r') as f: source_data = f.read() p = subprocess.Popen(vert_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - vertex_source, stderr_ret = p.communicate(input = ('#pragma pack_matrix(column_major)\n' + source_data).encode()) + source_data = preprocess_vertex(source_data) + vertex_source, stderr_ret = p.communicate(input = source_data.encode()) log(stderr_ret.decode()) vertex_source = vertex_source.decode() @@ -586,8 +587,46 @@ def convert(source, dest): vertex_source = remove_comments(vertex_source[1:]) fragment_source = remove_comments(fragment_source[1:]) - out_vertex = '\n'.join(vertex_source) - out_fragment = '\n'.join(['#ifdef GL_ES', 'precision mediump float;', '#endif'] + fragment_source) + vert_hacks = [] + vert_hacks.append(''' +#if __VERSION__ >= 130 +#define COMPAT_varying out +#define COMPAT_attribute in +#else +#define COMPAT_varying varying +#define COMPAT_attribute attribute +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif''') + + out_vertex = '\n'.join(vert_hacks + vertex_source) + + frag_hacks = [] + frag_hacks.append(''' +#if __VERSION__ >= 130 +#define COMPAT_varying in +out vec4 FragColor; +#else +#define COMPAT_varying varying +#define FragColor gl_FragColor +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif''') + + out_fragment = '\n'.join(frag_hacks + fragment_source) if not validate_shader(out_vertex, 'glesv'): log('Vertex shader does not compile ...') From ad12cc8ab6d512e33b64ecb9b3551e6155734f72 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 10 Aug 2013 23:35:03 +0200 Subject: [PATCH 151/252] Fix some miscompilations with unused variables. --- tools/cg2glsl.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index f63fae647e..7e48bb2d7b 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -326,15 +326,17 @@ def replace_varyings(source): translated = translate_varying(orig) if translated != orig and translated not in attribs: cg_attrib = line.split(':')[2].split(' ')[1] - translations.append((cg_attrib, translated)) - attribs.append(translated) + if len(cg_attrib.strip()) > 0: + translations.append((cg_attrib, translated)) + attribs.append(translated) elif ('//var' in line) or ('#var' in line): orig = line.split(' ')[2] translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: cg_uniform = line.split(':')[2].split(' ')[1] - translations.append((cg_uniform, translated)) - uniforms.append(translated) + if len(cg_uniform.strip()) > 0: + translations.append((cg_uniform, translated)) + uniforms.append(translated) for index, line in enumerate(source): if 'void main()' in line: @@ -494,9 +496,9 @@ def hack_source_fragment(source): translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: cg_uniform = line.split(':')[2].split(' ')[1] - translations.append((cg_uniform, translated)) - uniforms.append(translated) - + if len(cg_uniform.strip()) > 0: + translations.append((cg_uniform, translated)) + uniforms.append(translated) for sampler in added_samplers: source.insert(ref_index, sampler) @@ -508,6 +510,7 @@ def hack_source_fragment(source): ret = [] for line in source: for translation in translations: + log('Translation:', translation[0], '->', translation[1]) line = line.replace(translation[0], translation[1]) ret.append(line) From ef97f05dffcd684a23d0aab21197ed8a172c3373 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 00:18:09 +0200 Subject: [PATCH 152/252] Use correct texture() in core. --- tools/cg2glsl.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 7e48bb2d7b..aa5b279a45 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -60,8 +60,9 @@ def replace_global_vertex(source): source = replace_global_in(source) replace_table = [ - ('attribute', 'COMPAT_attribute'), - ('varying', 'COMPAT_varying'), + ('attribute', 'COMPAT_ATTRIBUTE'), + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), ('POSITION', 'VertexCoord'), ('TEXCOORD1', 'LUTTexCoord'), ('TEXCOORD0', 'TexCoord'), @@ -145,7 +146,7 @@ def destructify_varyings(source, direction): while (j < len(source)) and ('};' not in source[j]): j += 1 - lines = ['COMPAT_varying ' + string for string in source[i + 1 : j]] + lines = ['COMPAT_VARYING ' + string for string in source[i + 1 : j]] varyings.extend(lines) names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[i + 1 : j]] varyings_name.extend(names) @@ -342,9 +343,9 @@ def replace_varyings(source): if 'void main()' in line: for attrib in attribs: if attrib == 'VertexCoord': - source.insert(index, 'COMPAT_attribute vec4 ' + attrib + ';') + source.insert(index, 'COMPAT_ATTRIBUTE vec4 ' + attrib + ';') else: - source.insert(index, 'COMPAT_attribute vec2 ' + attrib + ';') + source.insert(index, 'COMPAT_ATTRIBUTE vec2 ' + attrib + ';') for uniform in uniforms: source.insert(index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') break @@ -409,7 +410,8 @@ def hack_source_vertex(source): def replace_global_fragment(source): source = replace_global_in(source) replace_table = [ - ('varying', 'COMPAT_varying'), + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), ('FrameCount', 'float(FrameCount)'), ('FrameDirection', 'float(FrameDirection)'), ('input', 'input_dummy'), @@ -593,11 +595,13 @@ def convert(source, dest): vert_hacks = [] vert_hacks.append(''' #if __VERSION__ >= 130 -#define COMPAT_varying out -#define COMPAT_attribute in +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture #else -#define COMPAT_varying varying -#define COMPAT_attribute attribute +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D #endif #ifdef GL_ES @@ -611,11 +615,13 @@ def convert(source, dest): frag_hacks = [] frag_hacks.append(''' #if __VERSION__ >= 130 -#define COMPAT_varying in +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture out vec4 FragColor; #else -#define COMPAT_varying varying +#define COMPAT_VARYING varying #define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D #endif #ifdef GL_ES From 2b28050c15057ba414786f4e29e98e7ed11915fd Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 01:16:08 +0200 Subject: [PATCH 153/252] Build fixups. --- frontend/menu/menu_common.c | 2 ++ gfx/gl.c | 4 ---- gfx/gl_common.h | 1 + 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index a52ebef80c..69c66818a8 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -21,6 +21,7 @@ #include #include "menu_common.h" +#include "../../performance.h" #include "../../file.h" #ifdef HAVE_FILEBROWSER #include "utils/file_browser.h" @@ -773,6 +774,7 @@ static uint64_t rgui_input(void) bool menu_iterate(void) { + rarch_time_t time, delta, target_msec, sleep_msec; static bool initial_held = true; static bool first_held = false; uint64_t input_state = 0; diff --git a/gfx/gl.c b/gfx/gl.c index efa4f39a58..986af774c9 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1870,10 +1870,6 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); - const char *vendor = (const char*)glGetString(GL_VENDOR); - const char *renderer = (const char*)glGetString(GL_RENDERER); - RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); if (!resolve_extensions(gl)) diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 88f41253b1..0c1dfb753c 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -60,6 +60,7 @@ #define context_write_egl_image_func(frame, width, height, pitch, base_size, tex_index, img) \ gl->ctx_driver->write_egl_image(frame, width, height, pitch, base_size, tex_index,img) #endif +#endif static inline bool gl_check_error(void) { From c19bdc7c2c85920b7ef54a98c1e0eedf4a7cdf00 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 01:24:48 +0200 Subject: [PATCH 154/252] Kill some stale code. --- gfx/gl.c | 2 -- gfx/gl_common.h | 4 ---- 2 files changed, 6 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 986af774c9..69402a8c5a 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -85,8 +85,6 @@ static const GLfloat white_color[] = { 1, 1, 1, 1, }; -// Workaround broken Apple headers. -typedef const GLubyte* (*gl_get_stringi_proc)(GLenum name, GLuint index); static inline bool gl_query_extension(gl_t *gl, const char *ext) { bool ret = false; diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 0c1dfb753c..3da0b5d53c 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -37,9 +37,6 @@ #include "glsym/glsym.h" -#if defined(ANDROID) && defined(HAVE_GRIFFIN) -#include "../griffin/hook_context.h" -#else #define context_get_video_size_func(win, height) gl->ctx_driver->get_video_size(win, height) #define context_update_window_title_func() gl->ctx_driver->update_window_title() #define context_destroy_func() gl->ctx_driver->destroy() @@ -60,7 +57,6 @@ #define context_write_egl_image_func(frame, width, height, pitch, base_size, tex_index, img) \ gl->ctx_driver->write_egl_image(frame, width, height, pitch, base_size, tex_index,img) #endif -#endif static inline bool gl_check_error(void) { From 15a38dfb270d0fd559a00a750d1c8b8e6e0b0235 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 11 Aug 2013 05:38:05 +0200 Subject: [PATCH 155/252] (Android) Make beginning popup a 'welcome message' and no longer ask about choosing between threaded video and static sync - just mention static sync but that's it - enable threaded video by default. --- .../org/retroarch/browser/MainMenuActivity.java | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 05626279be..0082d3287e 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -51,9 +51,9 @@ public class MainMenuActivity extends PreferenceActivity { if (!detectDevice(false)) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Two modes of play - pick one") - .setMessage("RetroArch has two modes of play: synchronize to refreshrate, and threaded video.\n\nSynchronize to refreshrate gives the most accurate results and can produce the smoothest results. However, it is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this.\n\nChoose which of the two you want to use. (If you don't know, go for Threaded video). ") - .setPositiveButton("Threaded video", new DialogInterface.OnClickListener() { + .setTitle("Welcome to RetroArch") + .setMessage("This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted.\n\nNOTE: Advanced users who want to finetune for the best possible audio/video experience should use static synchronization and turn off threaded video. Be aware that this is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this. ") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); @@ -61,17 +61,6 @@ public class MainMenuActivity extends PreferenceActivity { edit.putBoolean("video_threaded", true); edit.commit(); } - }) - .setNegativeButton("Synchronize to refreshrate", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", false); - edit.commit(); - Intent i = new Intent(getBaseContext(), DisplayRefreshRateTest.class); - startActivity(i); - } }); alert.show(); } From 996c7e4def3ab01d2cf175517729aec7055c1442 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 11 Aug 2013 06:13:20 +0200 Subject: [PATCH 156/252] (Android Phoenix) Simplify detection messages --- .../phoenix/src/org/retroarch/browser/MainMenuActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 0082d3287e..b8db113a75 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -165,7 +165,7 @@ public class MainMenuActivity extends PreferenceActivity { { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("NVidia Shield detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.\n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -185,7 +185,7 @@ public class MainMenuActivity extends PreferenceActivity { { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Nexus 7 2013 detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu. \n\nNOTE: If you know what you are doing, it is advised to turn 'Threaded Video' off afterwards and try running games without it. In theory it will be smoother, but your mileage varies depending on your device and configuration.") + .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { From 36892231cfd0de83b7c20ac3dd900552ada82801 Mon Sep 17 00:00:00 2001 From: meancoot Date: Sun, 11 Aug 2013 00:20:15 -0400 Subject: [PATCH 157/252] (OSX) Add both relative and absolute style mouse input --- apple/OSX/hid_pad.c | 99 ++++++++++++++++++++++++----------- apple/RetroArch/RAGameView.m | 15 +++++- apple/RetroArch/apple_input.c | 14 +++++ apple/RetroArch/apple_input.h | 3 ++ 4 files changed, 100 insertions(+), 31 deletions(-) diff --git a/apple/OSX/hid_pad.c b/apple/OSX/hid_pad.c index 1010a061a0..b3bf370491 100644 --- a/apple/OSX/hid_pad.c +++ b/apple/OSX/hid_pad.c @@ -16,40 +16,66 @@ #include #include "../RetroArch/apple_input.h" +// NOTE: I pieced this together through trial and error, any corrections are welcome + static IOHIDManagerRef g_hid_manager; static void hid_input_callback(void* inContext, IOReturn inResult, void* inSender, IOHIDValueRef inIOHIDValueRef) { IOHIDElementRef element = IOHIDValueGetElement(inIOHIDValueRef); - - uint32_t slot = (uint32_t)inContext; - if (slot >= 4) - return; + IOHIDDeviceRef device = IOHIDElementGetDevice(element); uint32_t type = IOHIDElementGetType(element); uint32_t page = IOHIDElementGetUsagePage(element); uint32_t use = IOHIDElementGetUsage(element); - if (type == 2 && page == 9) + // Mouse handler + if (IOHIDDeviceConformsTo(device, kHIDPage_GenericDesktop, kHIDUsage_GD_Mouse)) { - CFIndex state = IOHIDValueGetIntegerValue(inIOHIDValueRef); - - if (state) g_current_input_data.pad_buttons[slot] |= (1 << (use - 1)); - else g_current_input_data.pad_buttons[slot] &= ~(1 << (use - 1)); - } - else if (page == 1) - { - static const uint32_t axis_use_ids[4] = { 48, 49, 50, 53 }; - for (int i = 0; i < 4; i ++) + if (type == kIOHIDElementTypeInput_Button && page == kHIDPage_Button) { - if (use == axis_use_ids[i]) + CFIndex state = IOHIDValueGetIntegerValue(inIOHIDValueRef); + + if (state) g_current_input_data.mouse_buttons |= (1 << (use - 1)); + else g_current_input_data.mouse_buttons &= ~(1 << (use - 1)); + } + else if (type == kIOHIDElementTypeInput_Misc && page == kHIDPage_GenericDesktop) + { + static const uint32_t axis_use_ids[2] = { 48, 49 }; + + for (int i = 0; i < 2; i ++) + if (use == axis_use_ids[i]) + g_current_input_data.mouse_delta[i] += IOHIDValueGetIntegerValue(inIOHIDValueRef); + } + } + // Joystick handler + else if (IOHIDDeviceConformsTo(device, kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick)) + { + uint32_t slot = (uint32_t)inContext; + if (slot >= 4) + return; + + if (type == kIOHIDElementTypeInput_Button && page == kHIDPage_Button) + { + CFIndex state = IOHIDValueGetIntegerValue(inIOHIDValueRef); + + if (state) g_current_input_data.pad_buttons[slot] |= (1 << (use - 1)); + else g_current_input_data.pad_buttons[slot] &= ~(1 << (use - 1)); + } + else if (type == kIOHIDElementTypeInput_Axis && page == kHIDPage_GenericDesktop) + { + static const uint32_t axis_use_ids[4] = { 48, 49, 50, 53 }; + for (int i = 0; i < 4; i ++) { - CFIndex min = IOHIDElementGetPhysicalMin(element); - CFIndex max = IOHIDElementGetPhysicalMax(element) - min; - CFIndex state = IOHIDValueGetIntegerValue(inIOHIDValueRef) - min; + if (use == axis_use_ids[i]) + { + CFIndex min = IOHIDElementGetPhysicalMin(element); + CFIndex max = IOHIDElementGetPhysicalMax(element) - min; + CFIndex state = IOHIDValueGetIntegerValue(inIOHIDValueRef) - min; - float val = (float)state / (float)max; - g_current_input_data.pad_axis[slot][i] = ((val * 2.0f) - 1.0f) * 32767.0f; + float val = (float)state / (float)max; + g_current_input_data.pad_axis[slot][i] = ((val * 2.0f) - 1.0f) * 32767.0f; + } } } } @@ -67,25 +93,38 @@ static void hid_device_removed(void* inContext, IOReturn inResult, void* inSende IOHIDDeviceClose(inDevice, kIOHIDOptionsTypeNone); } +static CFMutableDictionaryRef build_matching_dictionary(uint32_t page, uint32_t use) +{ + CFMutableDictionaryRef matcher = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + + CFNumberRef pagen = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); + CFDictionarySetValue(matcher, CFSTR(kIOHIDDeviceUsagePageKey), pagen); + CFRelease(pagen); + + CFNumberRef usen = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &use); + CFDictionarySetValue(matcher, CFSTR(kIOHIDDeviceUsageKey), usen); + CFRelease(usen); + + return matcher; +} + void osx_pad_init() { if (!g_hid_manager) { g_hid_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); - CFMutableDictionaryRef matcher = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - uint32_t page = kHIDPage_GenericDesktop; - uint32_t use = kHIDUsage_GD_Joystick; + CFMutableArrayRef matcher = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - CFNumberRef pagen = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); - CFDictionarySetValue(matcher, CFSTR(kIOHIDDeviceUsagePageKey), pagen); - CFRelease(pagen); + CFMutableDictionaryRef mouse = build_matching_dictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Mouse); + CFArrayAppendValue(matcher, mouse); + CFRelease(mouse); - CFNumberRef usen = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &use); - CFDictionarySetValue(matcher, CFSTR(kIOHIDDeviceUsageKey), usen); - CFRelease(usen); + CFMutableDictionaryRef joystick = build_matching_dictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick); + CFArrayAppendValue(matcher, joystick); + CFRelease(joystick); - IOHIDManagerSetDeviceMatching(g_hid_manager, matcher); + IOHIDManagerSetDeviceMatchingMultiple(g_hid_manager, matcher); CFRelease(matcher); IOHIDManagerRegisterDeviceMatchingCallback(g_hid_manager, hid_device_attached, 0); diff --git a/apple/RetroArch/RAGameView.m b/apple/RetroArch/RAGameView.m index 4f87f560f1..01b2adcc92 100644 --- a/apple/RetroArch/RAGameView.m +++ b/apple/RetroArch/RAGameView.m @@ -31,6 +31,8 @@ static UIView* g_pause_indicator_view; #elif defined(OSX) +#include "apple_input.h" + static RAGameView* g_instance; static NSOpenGLContext* g_context; @@ -87,20 +89,31 @@ static float g_screen_scale = 1.0f; return YES; } +- (BOOL)isFlipped +{ + return YES; +} + - (void)keyDown:(NSEvent*)theEvent { } - (void)mouseDown:(NSEvent*)theEvent { + g_current_input_data.touch_count = 1; + [self mouseDragged:theEvent]; } - (void)mouseUp:(NSEvent*)theEvent { + g_current_input_data.touch_count = 0; } -- (void)mouseMoved:(NSEvent *)theEvent +- (void)mouseDragged:(NSEvent*)theEvent { + NSPoint pos = [self convertPoint:[theEvent locationInWindow] fromView:nil]; + g_current_input_data.touches[0].screen_x = pos.x; + g_current_input_data.touches[0].screen_y = pos.y; } #elif defined(IOS) // < iOS Pause menu and lifecycle diff --git a/apple/RetroArch/apple_input.c b/apple/RetroArch/apple_input.c index 0f27734f22..771701176a 100644 --- a/apple/RetroArch/apple_input.c +++ b/apple/RetroArch/apple_input.c @@ -132,6 +132,9 @@ static void apple_input_poll(void *data) input_joypad_poll(g_joydriver); g_polled_input_data.pad_buttons[0] |= icade_buttons; + + g_current_input_data.mouse_delta[0] = 0; + g_current_input_data.mouse_delta[1] = 0; }); } @@ -147,6 +150,17 @@ static int16_t apple_input_state(void *data, const struct retro_keybind **binds, case RETRO_DEVICE_KEYBOARD: return apple_key_pressed(id); + + case RETRO_DEVICE_MOUSE: + { + switch (id) + { + case RETRO_DEVICE_ID_MOUSE_X: return g_polled_input_data.mouse_delta[0]; + case RETRO_DEVICE_ID_MOUSE_Y: return g_polled_input_data.mouse_delta[1]; + case RETRO_DEVICE_ID_MOUSE_LEFT: return g_polled_input_data.mouse_buttons & 1; + case RETRO_DEVICE_ID_MOUSE_RIGHT: return g_polled_input_data.mouse_buttons & 2; + } + } case RETRO_DEVICE_POINTER: case RARCH_DEVICE_POINTER_SCREEN: diff --git a/apple/RetroArch/apple_input.h b/apple/RetroArch/apple_input.h index bbecb639fd..2f606fd9c9 100644 --- a/apple/RetroArch/apple_input.h +++ b/apple/RetroArch/apple_input.h @@ -33,6 +33,9 @@ typedef struct apple_touch_data_t touches[MAX_TOUCHES]; uint32_t touch_count; + uint32_t mouse_buttons; + int16_t mouse_delta[2]; + uint32_t keys[MAX_KEYS]; uint32_t pad_buttons[MAX_PADS]; From c5e7de73911b843ff10196b03880695fa841a2ab Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 14:10:10 +0200 Subject: [PATCH 158/252] Add get_proc_address to OSX/iOS. --- apple/RetroArch/RAGameView.m | 14 ++++++++++++++ apple/RetroArch/RetroArch_Apple.h | 1 + apple/RetroArch/rarch_wrapper.h | 1 + gfx/context/apple_gl_ctx.c | 7 ++++++- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apple/RetroArch/RAGameView.m b/apple/RetroArch/RAGameView.m index 4f87f560f1..bb4915f784 100644 --- a/apple/RetroArch/RAGameView.m +++ b/apple/RetroArch/RAGameView.m @@ -273,6 +273,20 @@ void apple_get_game_view_size(unsigned *width, unsigned *height) *height = *height ? *height : 480; } +void *apple_get_proc_address(const char *symbol_name) +{ +#ifdef IOS + (void)symbol_name; // We don't need symbols above GLES2 on iOS. + return NULL; +#else + CFStringRef symbol = CFStringCreateWithCString(kCFAllocatorDefault, symbol_name, kCFStringEncodingASCII); + void *proc = CFBundleGetFunctionPointerForName(CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl")), + symbol); + CFRelease(symbol); + return proc; +#endif +} + #ifdef IOS void apple_bind_game_view_fbo(void) { diff --git a/apple/RetroArch/RetroArch_Apple.h b/apple/RetroArch/RetroArch_Apple.h index 27c9d27f0c..5302d3a4c2 100644 --- a/apple/RetroArch/RetroArch_Apple.h +++ b/apple/RetroArch/RetroArch_Apple.h @@ -18,6 +18,7 @@ #define __RARCH_APPLE_H #include +#import #import "RAModuleInfo.h" void apple_run_core(RAModuleInfo* core, const char* file); diff --git a/apple/RetroArch/rarch_wrapper.h b/apple/RetroArch/rarch_wrapper.h index 77a6521962..b92cf5eb83 100644 --- a/apple/RetroArch/rarch_wrapper.h +++ b/apple/RetroArch/rarch_wrapper.h @@ -29,6 +29,7 @@ void apple_destroy_game_view(void); void apple_flip_game_view(void); void apple_set_game_view_sync(unsigned interval); void apple_get_game_view_size(unsigned *width, unsigned *height); +void *apple_get_proc_address(const char *symbol_name); #ifdef IOS void apple_bind_game_view_fbo(void); diff --git a/gfx/context/apple_gl_ctx.c b/gfx/context/apple_gl_ctx.c index 78f48f3208..3fc50861b2 100644 --- a/gfx/context/apple_gl_ctx.c +++ b/gfx/context/apple_gl_ctx.c @@ -93,6 +93,11 @@ static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data *input_data = NULL; } +static gfx_ctx_proc_t gfx_ctx_get_proc_address(const char *symbol_name) +{ + return (gfx_ctx_proc_t)apple_get_proc_address(symbol_name); +} + // The apple_* functions are implemented in apple/RetroArch/RAGameView.m const gfx_ctx_driver_t gfx_ctx_apple = { @@ -109,7 +114,7 @@ const gfx_ctx_driver_t gfx_ctx_apple = { gfx_ctx_has_focus, apple_flip_game_view, gfx_ctx_input_driver, - NULL, + gfx_ctx_get_proc_address, NULL, "ios", }; From 7d942adaa39919c578728206a9325269b82b0d64 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 15:06:42 +0200 Subject: [PATCH 159/252] Should fix build on PS3. --- gfx/gl.c | 2 ++ gfx/glsym/glsym.h | 2 ++ griffin/griffin.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 69402a8c5a..210608197f 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1866,7 +1866,9 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo const char *renderer = (const char*)glGetString(GL_RENDERER); RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); +#ifndef RARCH_CONSOLE rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); +#endif glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/gfx/glsym/glsym.h b/gfx/glsym/glsym.h index 64838fa2fe..6202c36a97 100644 --- a/gfx/glsym/glsym.h +++ b/gfx/glsym/glsym.h @@ -3,11 +3,13 @@ #include "rglgen.h" +#ifndef RARCH_CONSOLE #ifdef HAVE_OPENGLES2 #include "glsym_es2.h" #else #include "glsym_gl.h" #endif +#endif #endif diff --git a/griffin/griffin.c b/griffin/griffin.c index 6865685aba..2ee160ebd9 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -204,6 +204,8 @@ VIDEO DRIVER #ifdef HAVE_OPENGL #include "../gfx/gl.c" + +#ifndef RARCH_CONSOLE #include "../gfx/glsym/rglgen.c" #ifdef HAVE_OPENGLES2 #include "../gfx/glsym/glsym_es2.c" @@ -212,6 +214,8 @@ VIDEO DRIVER #endif #endif +#endif + #ifdef HAVE_XVIDEO #include "../gfx/xvideo.c" #endif From b5f46120a3febeeb70a89ee44e7c853da2117dc8 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 15:10:56 +0200 Subject: [PATCH 160/252] Use HAVE_PSGL instead. --- gfx/glsym/glsym.h | 2 +- griffin/griffin.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gfx/glsym/glsym.h b/gfx/glsym/glsym.h index 6202c36a97..c2604f6041 100644 --- a/gfx/glsym/glsym.h +++ b/gfx/glsym/glsym.h @@ -3,7 +3,7 @@ #include "rglgen.h" -#ifndef RARCH_CONSOLE +#ifndef HAVE_PSGL #ifdef HAVE_OPENGLES2 #include "glsym_es2.h" #else diff --git a/griffin/griffin.c b/griffin/griffin.c index 2ee160ebd9..cbb9cc1f0e 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -205,7 +205,7 @@ VIDEO DRIVER #ifdef HAVE_OPENGL #include "../gfx/gl.c" -#ifndef RARCH_CONSOLE +#ifndef HAVE_PSGL #include "../gfx/glsym/rglgen.c" #ifdef HAVE_OPENGLES2 #include "../gfx/glsym/glsym_es2.c" From fe24d961e3add5edc171c9ac180a065ae673202e Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 15:21:23 +0200 Subject: [PATCH 161/252] Add args to ps3 environment. --- frontend/platform/platform_ps3.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 2a3e231eb4..f02302433f 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -184,8 +184,9 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat } #endif -static void get_environment_settings(int argc, char *argv[]) +static void get_environment_settings(int argc, char *argv[], void *args) { + (void)args; #ifndef IS_SALAMANDER g_extern.verbose = true; From 1389a1e37c7426e0d4020c6372fd0d85847aa03a Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 15:25:04 +0200 Subject: [PATCH 162/252] Fix compile when GLSL isn't compiled in. --- gfx/gl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 210608197f..628f743634 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -245,12 +245,14 @@ static bool gl_shader_init(void *data) return true; } +#ifdef HAVE_GLSL if (gl->core_context && RARCH_SHADER_CG) { RARCH_ERR("[GL]: Cg cannot be used with core GL context. Falling back to GLSL.\n"); backend = &gl_glsl_backend; shader_path = NULL; } +#endif gl->shader = backend; bool ret = gl->shader->init(shader_path); From ef1f5d251f6ca032ae7c60fa29e0bcb5690b17c4 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 11 Aug 2013 15:34:32 +0200 Subject: [PATCH 163/252] Don't use anti-jitter on consoles. Not compatible. --- gfx/thread_wrapper.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/thread_wrapper.c b/gfx/thread_wrapper.c index 380fefe6e5..6a7a58a61a 100644 --- a/gfx/thread_wrapper.c +++ b/gfx/thread_wrapper.c @@ -398,6 +398,8 @@ static bool thread_frame(void *data, const void *frame_, slock_lock(thr->lock); + // scond_wait_timeout cannot be implemented on consoles. +#ifndef RARCH_CONSOLE if (!thr->nonblock) { rarch_time_t target = thr->last_time + thr->target_frame_time; @@ -414,6 +416,7 @@ static bool thread_frame(void *data, const void *frame_, break; } } +#endif // Drop frame if updated flag is still set, as thread is still working on last frame. if (!thr->frame.updated) From b6370d2441de873b1a5b9e65b1c2aa4d5da769fb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 01:51:49 +0200 Subject: [PATCH 164/252] (Android Java) Set threaded video to default - Shield/Nexus 7 2013 now simply an 'OK' messagebox --- android/phoenix/res/xml/prefs.xml | 2 +- .../retroarch/browser/MainMenuActivity.java | 26 +++++++------------ .../src/org/retroarch/browser/RetroArch.java | 8 +----- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 1d7eab953f..b895af4e48 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -34,7 +34,7 @@ diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index b8db113a75..cd4a13cabd 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -13,7 +13,6 @@ import org.retroarch.R; import android.app.AlertDialog; import android.content.DialogInterface; -import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetManager; @@ -155,18 +154,15 @@ public class MainMenuActivity extends PreferenceActivity { boolean detectDevice(boolean show_dialog) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", true); - edit.commit(); + boolean retval = false; Log.i("Device MODEL", android.os.Build.MODEL); if (android.os.Build.MODEL.equals("SHIELD")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("NVidia Shield detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") - .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); @@ -176,17 +172,16 @@ public class MainMenuActivity extends PreferenceActivity { edit.putBoolean("input_autodetect_enable", true); edit.commit(); } - }) - .setNegativeButton("No", null); + }); alert.show(); - return true; + retval = true; } else if (android.os.Build.ID.equals("JSS15J")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Nexus 7 2013 detected") - .setMessage("Would you like to set up the ideal configuration options for your device?\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") - .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); @@ -194,10 +189,9 @@ public class MainMenuActivity extends PreferenceActivity { edit.putString("video_refresh_rate", Double.valueOf(59.65).toString()); edit.commit(); } - }) - .setNegativeButton("No", null); + }); alert.show(); - return true; + retval = true; } if (show_dialog) { @@ -206,7 +200,7 @@ public class MainMenuActivity extends PreferenceActivity { Toast.LENGTH_SHORT).show(); } - return false; + return retval; } @Override diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index ae80922648..c65689d8a9 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -60,7 +60,6 @@ public class RetroArch extends Activity implements private IconAdapter adapter; static private final int ACTIVITY_LOAD_ROM = 0; static private String libretro_path; - static private Double report_refreshrate; static private final String TAG = "CoreSelection"; private ConfigFile config; private ConfigFile core_config; @@ -140,7 +139,6 @@ public class RetroArch extends Activity implements String cpuInfo = readCPUInfo(); boolean cpuIsNeon = cpuInfoIsNeon(cpuInfo); - report_refreshrate = getDisplayRefreshRate(); setContentView(R.layout.line_list); @@ -272,7 +270,7 @@ public class RetroArch extends Activity implements config.setInt("input_autodetect_icade_profile_pad4", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad4", "0"))); config.setDouble("video_refresh_rate", getRefreshRate()); - config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", false)); + config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", true)); String aspect = prefs.getString("video_aspect_ratio", "auto"); if (aspect.equals("full")) { @@ -418,10 +416,6 @@ public class RetroArch extends Activity implements String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); new AlertDialog.Builder(this).setMessage(current_ime).setNeutralButton("Close", null).show(); return true; - case R.id.report_refreshrate: - String current_rate = "Screen Refresh Rate: " + Double.valueOf(report_refreshrate).toString(); - new AlertDialog.Builder(this).setMessage(current_rate).setNeutralButton("Close", null).show(); - return true; default: return false; } From f17fd23ad0f48bb56718825a16b4130a6ff88a41 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 02:08:54 +0200 Subject: [PATCH 165/252] (Android Java) Remove Report Refreshrate --- android/phoenix/res/menu/context_menu.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/android/phoenix/res/menu/context_menu.xml b/android/phoenix/res/menu/context_menu.xml index 43b5055191..c1bfefb341 100644 --- a/android/phoenix/res/menu/context_menu.xml +++ b/android/phoenix/res/menu/context_menu.xml @@ -2,5 +2,4 @@ - From b142cae10ae86cf6b424103d17cedddfed92f479 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 05:19:39 +0200 Subject: [PATCH 166/252] (Android Java) Split ModuleWrapper class off into separate .java file --- .../org/retroarch/browser/ModuleWrapper.java | 41 +++++++++++++++++++ .../src/org/retroarch/browser/RetroArch.java | 35 ---------------- 2 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/ModuleWrapper.java diff --git a/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java b/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java new file mode 100644 index 0000000000..c741c28af5 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java @@ -0,0 +1,41 @@ +package org.retroarch.browser; + +import java.io.File; +import java.io.IOException; + +import android.content.Context; +import android.graphics.drawable.Drawable; + +class ModuleWrapper implements IconAdapterItem { + public final File file; + private ConfigFile config; + + public ModuleWrapper(Context aContext, File aFile, ConfigFile config) throws IOException { + file = aFile; + this.config = config; + } + + @Override + public boolean isEnabled() { + return true; + } + + @Override + public String getText() { + String stripped = file.getName().replace(".so", ""); + if (config.keyExists(stripped)) { + return config.getString(stripped); + } else + return stripped; + } + + @Override + public int getIconResourceId() { + return 0; + } + + @Override + public Drawable getIconDrawable() { + return null; + } +} \ No newline at end of file diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index c65689d8a9..52bfb6ec1c 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -17,44 +17,9 @@ import android.util.Log; import android.view.*; import android.view.ContextMenu.ContextMenuInfo; import android.view.inputmethod.*; -import android.graphics.drawable.*; // JELLY_BEAN_MR1 = 17 -class ModuleWrapper implements IconAdapterItem { - public final File file; - private ConfigFile config; - - public ModuleWrapper(Context aContext, File aFile, ConfigFile config) throws IOException { - file = aFile; - this.config = config; - } - - @Override - public boolean isEnabled() { - return true; - } - - @Override - public String getText() { - String stripped = file.getName().replace(".so", ""); - if (config.keyExists(stripped)) { - return config.getString(stripped); - } else - return stripped; - } - - @Override - public int getIconResourceId() { - return 0; - } - - @Override - public Drawable getIconDrawable() { - return null; - } -} - public class RetroArch extends Activity implements AdapterView.OnItemClickListener { private IconAdapter adapter; From 7abe27de81254ac5ecc7b6ff9fca82bae59af12f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 05:51:33 +0200 Subject: [PATCH 167/252] (Android Java) Create separate class for ReportIME --- android/phoenix/AndroidManifest.xml | 1 + android/phoenix/res/menu/context_menu.xml | 1 - android/phoenix/res/xml/prefs.xml | 8 ++++++++ .../src/org/retroarch/browser/ReportIME.java | 15 +++++++++++++++ .../src/org/retroarch/browser/RetroArch.java | 4 ---- 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/ReportIME.java diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index f6166bedd4..54364a192e 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -24,6 +24,7 @@ + diff --git a/android/phoenix/res/menu/context_menu.xml b/android/phoenix/res/menu/context_menu.xml index c1bfefb341..aa7695fc78 100644 --- a/android/phoenix/res/menu/context_menu.xml +++ b/android/phoenix/res/menu/context_menu.xml @@ -1,5 +1,4 @@ - diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index b895af4e48..72a6719ed9 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -383,6 +383,14 @@ android:title="R3 Button" /> + + + + + diff --git a/android/phoenix/src/org/retroarch/browser/ReportIME.java b/android/phoenix/src/org/retroarch/browser/ReportIME.java new file mode 100644 index 0000000000..1a85b393ee --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/ReportIME.java @@ -0,0 +1,15 @@ +package org.retroarch.browser; + +import android.app.Activity; +import android.app.AlertDialog; +import android.os.Bundle; +import android.provider.Settings; + +public class ReportIME extends Activity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); + new AlertDialog.Builder(this).setMessage(current_ime).setNeutralButton("Close", null).show(); + } +} diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 52bfb6ec1c..a001da96af 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -377,10 +377,6 @@ public class RetroArch extends Activity implements InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showInputMethodPicker(); return true; - case R.id.report_ime: - String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); - new AlertDialog.Builder(this).setMessage(current_ime).setNeutralButton("Close", null).show(); - return true; default: return false; } From 647a423aa4bc0cba10233ed25fea6c687e27d838 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 17:43:27 +0200 Subject: [PATCH 168/252] (Android Phoenix) Split up menu classes into separate .java files --- android/phoenix/AndroidManifest.xml | 3 + .../retroarch/browser/HoneycombPopupMenu.java | 49 +++++++++ .../org/retroarch/browser/LazyPopupMenu.java | 15 +++ .../retroarch/browser/PopupMenuAbstract.java | 60 +++++++++++ .../src/org/retroarch/browser/RetroArch.java | 102 ------------------ 5 files changed, 127 insertions(+), 102 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java create mode 100644 android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java create mode 100644 android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 54364a192e..30e4c40026 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -24,6 +24,9 @@ + + + diff --git a/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java b/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java new file mode 100644 index 0000000000..ca4026a913 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java @@ -0,0 +1,49 @@ +package org.retroarch.browser; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.PopupMenu; + +@TargetApi(Build.VERSION_CODES.HONEYCOMB) +class HoneycombPopupMenu extends LazyPopupMenu { + private PopupMenu instance; + HoneycombPopupMenu.OnMenuItemClickListener listen; + + public HoneycombPopupMenu(Context context, View anchor) + { + instance = new PopupMenu(context, anchor); + } + + @Override + public void setOnMenuItemClickListener(HoneycombPopupMenu.OnMenuItemClickListener listener) + { + listen = listener; + instance.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + return listen.onMenuItemClick(item); + } + + }); + } + + @Override + public Menu getMenu() { + return instance.getMenu(); + } + + @Override + public MenuInflater getMenuInflater() { + return instance.getMenuInflater(); + } + + @Override + public void show() { + instance.show(); + } +} diff --git a/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java b/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java new file mode 100644 index 0000000000..9e72cb5622 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java @@ -0,0 +1,15 @@ +package org.retroarch.browser; + +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; + +abstract class LazyPopupMenu { + public abstract Menu getMenu(); + public abstract MenuInflater getMenuInflater(); + public abstract void setOnMenuItemClickListener(LazyPopupMenu.OnMenuItemClickListener listener); + public abstract void show(); + public interface OnMenuItemClickListener { + public abstract boolean onMenuItemClick(MenuItem item); + } +} \ No newline at end of file diff --git a/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java b/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java new file mode 100644 index 0000000000..5477a187d7 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java @@ -0,0 +1,60 @@ +package org.retroarch.browser; + +import android.content.Context; +import android.os.Build; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; + +class PopupMenuAbstract extends LazyPopupMenu +{ + private LazyPopupMenu lazy; + + public PopupMenuAbstract(Context context, View anchor) + { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + lazy = new HoneycombPopupMenu(context, anchor); + } + } + + @Override + public Menu getMenu() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + return lazy.getMenu(); + } + else + { + return null; + } + } + + @Override + public MenuInflater getMenuInflater() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + return lazy.getMenuInflater(); + } + else + { + return null; + } + } + + @Override + public void setOnMenuItemClickListener(PopupMenuAbstract.OnMenuItemClickListener listener) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + lazy.setOnMenuItemClickListener(listener); + } + } + + @Override + public void show() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + { + lazy.show(); + } + } +} diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index a001da96af..22d17b94d2 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -382,105 +382,3 @@ public class RetroArch extends Activity implements } } } - -abstract class LazyPopupMenu { - public abstract Menu getMenu(); - public abstract MenuInflater getMenuInflater(); - public abstract void setOnMenuItemClickListener(LazyPopupMenu.OnMenuItemClickListener listener); - public abstract void show(); - public interface OnMenuItemClickListener { - public abstract boolean onMenuItemClick(MenuItem item); - } -} - -@TargetApi(Build.VERSION_CODES.HONEYCOMB) -class HoneycombPopupMenu extends LazyPopupMenu { - private PopupMenu instance; - HoneycombPopupMenu.OnMenuItemClickListener listen; - - public HoneycombPopupMenu(Context context, View anchor) - { - instance = new PopupMenu(context, anchor); - } - - @Override - public void setOnMenuItemClickListener(HoneycombPopupMenu.OnMenuItemClickListener listener) - { - listen = listener; - instance.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - return listen.onMenuItemClick(item); - } - - }); - } - - @Override - public Menu getMenu() { - return instance.getMenu(); - } - - @Override - public MenuInflater getMenuInflater() { - return instance.getMenuInflater(); - } - - @Override - public void show() { - instance.show(); - } -} - -class PopupMenuAbstract extends LazyPopupMenu -{ - private LazyPopupMenu lazy; - - public PopupMenuAbstract(Context context, View anchor) - { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy = new HoneycombPopupMenu(context, anchor); - } - } - - @Override - public Menu getMenu() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - return lazy.getMenu(); - } - else - { - return null; - } - } - - @Override - public MenuInflater getMenuInflater() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - return lazy.getMenuInflater(); - } - else - { - return null; - } - } - - @Override - public void setOnMenuItemClickListener(PopupMenuAbstract.OnMenuItemClickListener listener) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy.setOnMenuItemClickListener(listener); - } - } - - @Override - public void show() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy.show(); - } - } -} From fc4a6b625049190f0e7a6cdf82bcda8cfe69a4bc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 18:48:07 +0200 Subject: [PATCH 169/252] (Android Phoenix) Rename RetroArch.java to CoreSelection.java --- android/phoenix/AndroidManifest.xml | 2 +- android/phoenix/res/xml/prefs.xml | 2 +- .../retroarch/browser/{RetroArch.java => CoreSelection.java} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename android/phoenix/src/org/retroarch/browser/{RetroArch.java => CoreSelection.java} (99%) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 30e4c40026..1b0d909718 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -15,7 +15,7 @@ android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:hasCode="true"> - + diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 72a6719ed9..4ffa8b1dcf 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -4,7 +4,7 @@ diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java similarity index 99% rename from android/phoenix/src/org/retroarch/browser/RetroArch.java rename to android/phoenix/src/org/retroarch/browser/CoreSelection.java index 22d17b94d2..70675051f3 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -20,7 +20,7 @@ import android.view.inputmethod.*; // JELLY_BEAN_MR1 = 17 -public class RetroArch extends Activity implements +public class CoreSelection extends Activity implements AdapterView.OnItemClickListener { private IconAdapter adapter; static private final int ACTIVITY_LOAD_ROM = 0; From a7b8bfc020d0cf55509cda69dcd8c5841e0eece9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 18:53:17 +0200 Subject: [PATCH 170/252] (Android Phoenix) Add Ouya autodetection rules - should disable input overlay at startup and setup input_autodetect to true --- .../retroarch/browser/MainMenuActivity.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index cd4a13cabd..4d235d3c93 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -176,6 +176,24 @@ public class MainMenuActivity extends PreferenceActivity { alert.show(); retval = true; } + else if (android.os.Build.MODEL.equals( "OUYA Console")) + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("OUYA detected") + .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("input_overlay_enable", false); + edit.putBoolean("input_autodetect_enable", true); + edit.commit(); + } + }); + alert.show(); + retval = true; + } else if (android.os.Build.ID.equals("JSS15J")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) From 3122dbf4e602024c568751251f5b88806b35eea5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 18:54:27 +0200 Subject: [PATCH 171/252] (Android Phoenix) Update string somewhat to reflect that Ouya doesn't have Google Play installed --- android/phoenix/src/org/retroarch/browser/MainMenuActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 4d235d3c93..1e8f81284f 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -180,7 +180,7 @@ public class MainMenuActivity extends PreferenceActivity { { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("OUYA detected") - .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { From 16ca310f93e036add0a8fb63e0adf181bbce818c Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 12 Aug 2013 20:13:06 +0200 Subject: [PATCH 172/252] Add high latency audio support for Android. Should fix ghetto hardware again. --- android/phoenix/res/xml/prefs.xml | 6 +++ .../org/retroarch/browser/CoreSelection.java | 1 + audio/opensl.c | 42 ++++++++++++------- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 4ffa8b1dcf..0b3142b73c 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -98,6 +98,12 @@ android:summary="Enable dynamic rate control (recommended)." android:title="Dynamic Rate Control" android:dependency="audio_enable" /> + diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 70675051f3..44f59f267e 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -219,6 +219,7 @@ public class CoreSelection extends Activity implements SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); config.setInt("audio_out_rate", getOptimalSamplingRate()); + config.setInt("audio_latency", prefs.getBoolean("audio_high_latency", false) ? 160 : 64); config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true)); config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true)); diff --git a/audio/opensl.c b/audio/opensl.c index 5339bbb3b6..068e42a7a2 100644 --- a/audio/opensl.c +++ b/audio/opensl.c @@ -33,13 +33,10 @@ #define SLPlayItf_SetPlayState(a, ...) ((*(a))->SetPlayState(a, __VA_ARGS__)) -// TODO: Are these sane? -#define BUFFER_SIZE (2 * 1024) -#define BUFFER_COUNT 16 - typedef struct sl { - uint8_t buffer[BUFFER_COUNT][BUFFER_SIZE]; + uint8_t **buffer; + uint8_t *buffer_chunk; unsigned buffer_index; unsigned buffer_ptr; volatile unsigned buffered_blocks; @@ -55,6 +52,7 @@ typedef struct sl slock_t *lock; scond_t *cond; bool nonblock; + unsigned buf_size; unsigned buf_count; } sl_t; @@ -93,6 +91,8 @@ static void sl_free(void *data) if (sl->cond) scond_free(sl->cond); + free(sl->buffer); + free(sl->buffer_chunk); free(sl); } @@ -122,11 +122,23 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency) GOTO_IF_FAIL(SLEngineItf_CreateOutputMix(sl->engine, &sl->output_mix, 0, NULL, NULL)); GOTO_IF_FAIL(SLObjectItf_Realize(sl->output_mix, SL_BOOLEAN_FALSE)); + sl->buf_size = next_pow2(32 * latency); sl->buf_count = (latency * 4 * out_rate + 500) / 1000; - sl->buf_count = (sl->buf_count + BUFFER_SIZE / 2) / BUFFER_SIZE; - sl->buf_count = min(sl->buf_count, BUFFER_COUNT); + sl->buf_count = (sl->buf_count + sl->buf_size / 2) / sl->buf_size; - RARCH_LOG("[SLES] : Setting audio latency (buffer size: [%d]) ...\n", sl->buf_count * BUFFER_SIZE); + sl->buffer = (uint8_t**)calloc(sizeof(uint8_t*), sl->buf_count); + if (!sl->buffer) + goto error; + + sl->buffer_chunk = (uint8_t*)calloc(sl->buf_count, sl->buf_size); + if (!sl->buffer_chunk) + goto error; + + for (unsigned i = 0; i < sl->buf_count; i++) + sl->buffer[i] = sl->buffer_chunk + i * sl->buf_size; + + RARCH_LOG("[SLES] : Setting audio latency: Block size = %u, Blocks = %u, Total = %u ...\n", + sl->buf_size, sl->buf_count, sl->buf_size * sl->buf_count); fmt_pcm.formatType = SL_DATAFORMAT_PCM; fmt_pcm.numChannels = 2; @@ -164,7 +176,7 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency) sl->buffered_blocks = sl->buf_count; sl->buffer_index = 0; for (unsigned i = 0; i < sl->buf_count; i++) - (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[i], BUFFER_SIZE); + (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[i], sl->buf_size); GOTO_IF_FAIL(SLObjectItf_GetInterface(sl->buffer_queue_object, SL_IID_PLAY, &sl->player)); GOTO_IF_FAIL(SLPlayItf_SetPlayState(sl->player, SL_PLAYSTATE_PLAYING)); @@ -218,7 +230,7 @@ static ssize_t sl_write(void *data, const void *buf_, size_t size) slock_unlock(sl->lock); } - size_t avail_write = min(BUFFER_SIZE - sl->buffer_ptr, size); + size_t avail_write = min(sl->buf_size - sl->buffer_ptr, size); if (avail_write) { memcpy(sl->buffer[sl->buffer_index] + sl->buffer_ptr, buf, avail_write); @@ -228,9 +240,9 @@ static ssize_t sl_write(void *data, const void *buf_, size_t size) written += avail_write; } - if (sl->buffer_ptr >= BUFFER_SIZE) + if (sl->buffer_ptr >= sl->buf_size) { - SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], BUFFER_SIZE); + SLresult res = (*sl->buffer_queue)->Enqueue(sl->buffer_queue, sl->buffer[sl->buffer_index], sl->buf_size); sl->buffer_index = (sl->buffer_index + 1) % sl->buf_count; __sync_fetch_and_add(&sl->buffered_blocks, 1); sl->buffer_ptr = 0; @@ -243,22 +255,20 @@ static ssize_t sl_write(void *data, const void *buf_, size_t size) } } - //RARCH_LOG("Blocks: %u\n", sl->buffered_blocks); - return written; } static size_t sl_write_avail(void *data) { sl_t *sl = (sl_t*)data; - size_t avail = (sl->buf_count - (int)sl->buffered_blocks - 1) * BUFFER_SIZE + (BUFFER_SIZE - (int)sl->buffer_ptr); + size_t avail = (sl->buf_count - (int)sl->buffered_blocks - 1) * sl->buf_size + (sl->buf_size - (int)sl->buffer_ptr); return avail; } static size_t sl_buffer_size(void *data) { sl_t *sl = (sl_t*)data; - return BUFFER_SIZE * sl->buf_count; + return sl->buf_size * sl->buf_count; } static bool sl_use_float(void *data) From cd1681b1fb1717374f485c5d9d78a03103ece530 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 12 Aug 2013 22:24:26 +0200 Subject: [PATCH 173/252] Clean up dpad emulation. Avoid crufty and broken dpad_state. Use g_settings.input.axis_threshold option. --- android/native/jni/input_android.c | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 3b91bd94f5..880785398c 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -27,12 +27,6 @@ #define MAX_TOUCH 16 -typedef struct -{ - float dzone_min; - float dzone_max; -} dpad_values_t; - typedef struct { int16_t lx, ly; @@ -48,7 +42,6 @@ static unsigned pads_connected; static int state_device_ids[MAX_PADS]; static uint64_t state[MAX_PADS]; static uint64_t keycode_lut[LAST_KEYCODE]; -dpad_values_t dpad_state[MAX_PADS]; analog_t analog_state[MAX_PADS]; struct input_pointer @@ -194,8 +187,8 @@ static void engine_handle_dpad_default(AInputEvent *event, int source, bool debug_enable, unsigned emulation) { uint64_t *state_cur = &state[state_id]; - float dzone_min = dpad_state[state_id].dzone_min; - float dzone_max = dpad_state[state_id].dzone_max; + float dzone_min = -g_settings.input.axis_threshold; + float dzone_max = g_settings.input.axis_threshold; float x = AMotionEvent_getX(event, motion_pointer); float y = AMotionEvent_getY(event, motion_pointer); @@ -221,8 +214,8 @@ static void engine_handle_dpad_getaxisvalue(AInputEvent *event, bool debug_enable, unsigned emulation) { uint64_t *state_cur = &state[state_id]; - float dzone_min = dpad_state[state_id].dzone_min; - float dzone_max = dpad_state[state_id].dzone_max; + float dzone_min = -g_settings.input.axis_threshold; + float dzone_max = g_settings.input.axis_threshold; float x = AMotionEvent_getAxisValue(event, AXIS_X, motion_pointer); float y = AMotionEvent_getAxisValue(event, AXIS_Y, motion_pointer); float z = AMotionEvent_getAxisValue(event, AXIS_Z, motion_pointer); @@ -320,8 +313,6 @@ static void *android_input_init(void) g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_L3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_L3); g_settings.input.binds[i][RETRO_DEVICE_ID_JOYPAD_R3].joykey = (1ULL << RETRO_DEVICE_ID_JOYPAD_R3); - dpad_state[i].dzone_min = -0.99f; - dpad_state[i].dzone_max = 0.99f; g_settings.input.dpad_emulation[i] = ANALOG_DPAD_LSTICK; } @@ -511,9 +502,6 @@ static void android_input_set_keybinds(void *data, unsigned device, g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "TTT THT Arcade", sizeof(g_settings.input.device_names[port])); - dpad_state[id].dzone_min = -2.00f; - dpad_state[id].dzone_max = 1.00f; - /* same as Rumblepad 2 - merge? */ //keycode_lut[AKEYCODE_BUTTON_7] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); @@ -652,8 +640,6 @@ static void android_input_set_keybinds(void *data, unsigned device, g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "Huijia USB SNES", sizeof(g_settings.input.device_names[port])); - dpad_state[id].dzone_min = -1.00f; - dpad_state[id].dzone_max = 1.00f; keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); @@ -668,8 +654,6 @@ static void android_input_set_keybinds(void *data, unsigned device, g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "Super Smartjoy", sizeof(g_settings.input.device_names[port])); - dpad_state[id].dzone_min = -1.00f; - dpad_state[id].dzone_max = 1.00f; keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); @@ -1076,8 +1060,6 @@ static void android_input_set_keybinds(void *data, unsigned device, g_settings.input.device[port] = device; strlcpy(g_settings.input.device_names[port], "Buffalo BGC FC801", sizeof(g_settings.input.device_names[port])); - dpad_state[id].dzone_min = -1.00f; - dpad_state[id].dzone_max = 1.00f; keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); From 5a2a89a8db2e84cce84c99c00d34d1c33623620f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 12 Aug 2013 23:32:02 +0200 Subject: [PATCH 174/252] (Android Phoenix) Separate java classfile for FileWrapper (Android) Bind menu button to RGUI for 360 pad --- android/native/jni/input_android.c | 1 + android/phoenix/AndroidManifest.xml | 1 + .../retroarch/browser/DirectoryActivity.java | 68 ----------------- .../org/retroarch/browser/FileWrapper.java | 75 +++++++++++++++++++ 4 files changed, 77 insertions(+), 68 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/FileWrapper.java diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 880785398c..a7457f7f9f 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -722,6 +722,7 @@ static void android_input_set_keybinds(void *data, unsigned device, sizeof(g_settings.input.device_names[port])); g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; + keycode_lut[AKEYCODE_BUTTON_MODE] |= ((RARCH_MENU_TOGGLE + 1) << shift); keycode_lut[AKEYCODE_BACK] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 1b0d909718..d0dc0587b0 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -29,6 +29,7 @@ + diff --git a/android/phoenix/src/org/retroarch/browser/DirectoryActivity.java b/android/phoenix/src/org/retroarch/browser/DirectoryActivity.java index 96bdfb0b36..5199054ff1 100644 --- a/android/phoenix/src/org/retroarch/browser/DirectoryActivity.java +++ b/android/phoenix/src/org/retroarch/browser/DirectoryActivity.java @@ -12,75 +12,7 @@ import android.os.*; import android.preference.PreferenceManager; import android.widget.*; import android.view.*; -import android.graphics.drawable.*; -class FileWrapper implements IconAdapterItem { - public final File file; - public final boolean parentItem; - public final boolean dirSelectItem; - - protected final boolean enabled; - - public static final int DIRSELECT = 0; - public static final int PARENT = 1; - public static final int FILE = 2; - - protected final int typeIndex; - - public FileWrapper(File aFile, int type, boolean aIsEnabled) { - file = aFile; - - parentItem = type == PARENT; - dirSelectItem = type == DIRSELECT; - typeIndex = type == FILE ? (FILE + (file.isDirectory() ? 0 : 1)) : type; - - enabled = parentItem || dirSelectItem || aIsEnabled; - } - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public String getText() { - if (dirSelectItem) - return "[[Use this directory]]"; - else if (parentItem) - return "[Parent Directory]"; - else - return file.getName(); - } - - @Override - public int getIconResourceId() { - if (!parentItem && !dirSelectItem) { - return file.isFile() ? R.drawable.ic_file : R.drawable.ic_dir; - } else { - return R.drawable.ic_dir; - } - } - - @Override - public Drawable getIconDrawable() { - return null; - } - - public int compareTo(FileWrapper aOther) { - if (aOther != null) { - // Who says ternary is hard to follow - if (isEnabled() == aOther.isEnabled()) { - return (typeIndex == aOther.typeIndex) ? file - .compareTo(aOther.file) - : ((typeIndex < aOther.typeIndex) ? -1 : 1); - } else { - return isEnabled() ? -1 : 1; - } - } - - return -1; - } -} public class DirectoryActivity extends Activity implements AdapterView.OnItemClickListener { diff --git a/android/phoenix/src/org/retroarch/browser/FileWrapper.java b/android/phoenix/src/org/retroarch/browser/FileWrapper.java new file mode 100644 index 0000000000..8af274db16 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/FileWrapper.java @@ -0,0 +1,75 @@ +package org.retroarch.browser; + +import java.io.File; + +import org.retroarch.R; + +import android.graphics.drawable.Drawable; + +class FileWrapper implements IconAdapterItem { + public final File file; + public final boolean parentItem; + public final boolean dirSelectItem; + + protected final boolean enabled; + + public static final int DIRSELECT = 0; + public static final int PARENT = 1; + public static final int FILE = 2; + + protected final int typeIndex; + + public FileWrapper(File aFile, int type, boolean aIsEnabled) { + file = aFile; + + parentItem = type == PARENT; + dirSelectItem = type == DIRSELECT; + typeIndex = type == FILE ? (FILE + (file.isDirectory() ? 0 : 1)) : type; + + enabled = parentItem || dirSelectItem || aIsEnabled; + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public String getText() { + if (dirSelectItem) + return "[[Use this directory]]"; + else if (parentItem) + return "[Parent Directory]"; + else + return file.getName(); + } + + @Override + public int getIconResourceId() { + if (!parentItem && !dirSelectItem) { + return file.isFile() ? R.drawable.ic_file : R.drawable.ic_dir; + } else { + return R.drawable.ic_dir; + } + } + + @Override + public Drawable getIconDrawable() { + return null; + } + + public int compareTo(FileWrapper aOther) { + if (aOther != null) { + // Who says ternary is hard to follow + if (isEnabled() == aOther.isEnabled()) { + return (typeIndex == aOther.typeIndex) ? file + .compareTo(aOther.file) + : ((typeIndex < aOther.typeIndex) ? -1 : 1); + } else { + return isEnabled() ? -1 : 1; + } + } + + return -1; + } +} From 255f21fb8865e928105c42e633027f06b9c56e1f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 13 Aug 2013 00:00:00 +0200 Subject: [PATCH 175/252] (Android) Autodetection - Fixes face buttons on PS3 pad --- android/native/jni/input_android.c | 37 ++++++------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index a7457f7f9f..f34b69c8ff 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -839,52 +839,29 @@ static void android_input_set_keybinds(void *data, unsigned device, keycode_lut[AKEYCODE_ESCAPE] |= ((RARCH_QUIT_KEY+1) << shift); break; case DEVICE_PLAYSTATION3_VERSION1: - g_settings.input.device[port] = device; - strlcpy(g_settings.input.device_names[port], "PlayStation3 Ver.1", - sizeof(g_settings.input.device_names[port])); - - g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; - keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); - keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); - keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); - keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); - keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); - keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); - keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); - keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); - keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); - keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); - keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); - keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_L3+1) << shift); - keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift); - keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_MENU_TOGGLE+1) << shift); - break; case DEVICE_PLAYSTATION3_VERSION2: g_settings.input.device[port] = device; - g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; - strlcpy(g_settings.input.device_names[port], "PlayStation3 Ver.2", + strlcpy(g_settings.input.device_names[port], "PlayStation3", sizeof(g_settings.input.device_names[port])); + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_MENU_TOGGLE+1) << shift); - keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); - keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_SELECT] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_START] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); - keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); - keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_L3+1) << shift); keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift); + keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_MENU_TOGGLE+1) << shift); break; case DEVICE_MOGA: g_settings.input.device[port] = device; From dc16abe72805d98b8cf2921936e2e2214e38c754 Mon Sep 17 00:00:00 2001 From: meancoot Date: Mon, 12 Aug 2013 18:02:16 -0400 Subject: [PATCH 176/252] (OSX) Fix gamepad axis inputs --- apple/OSX/hid_pad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/OSX/hid_pad.c b/apple/OSX/hid_pad.c index b3bf370491..79c453e9b3 100644 --- a/apple/OSX/hid_pad.c +++ b/apple/OSX/hid_pad.c @@ -62,7 +62,7 @@ static void hid_input_callback(void* inContext, IOReturn inResult, void* inSende if (state) g_current_input_data.pad_buttons[slot] |= (1 << (use - 1)); else g_current_input_data.pad_buttons[slot] &= ~(1 << (use - 1)); } - else if (type == kIOHIDElementTypeInput_Axis && page == kHIDPage_GenericDesktop) + else if (type == kIOHIDElementTypeInput_Misc && page == kHIDPage_GenericDesktop) { static const uint32_t axis_use_ids[4] = { 48, 49, 50, 53 }; for (int i = 0; i < 4; i ++) From 68e8fbc45fb78ffbc267da76e4b2f34fc27cb385 Mon Sep 17 00:00:00 2001 From: meancoot Date: Mon, 12 Aug 2013 19:02:34 -0400 Subject: [PATCH 177/252] (iOS) Fix icade button mapping --- apple/RetroArch/apple_input.c | 7 ++++++- apple/RetroArch/apple_input.h | 1 + apple/iOS/settings.m | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apple/RetroArch/apple_input.c b/apple/RetroArch/apple_input.c index 771701176a..07a1bdecfa 100644 --- a/apple/RetroArch/apple_input.c +++ b/apple/RetroArch/apple_input.c @@ -86,6 +86,11 @@ void apple_input_enable_icade(bool on) icade_buttons = 0; } +uint32_t apple_input_get_icade_buttons() +{ + return icade_enabled ? icade_buttons : 0; +} + void apple_input_handle_key_event(unsigned keycode, bool down) { keycode = HIDKEY(keycode); @@ -131,7 +136,7 @@ static void apple_input_poll(void *data) } input_joypad_poll(g_joydriver); - g_polled_input_data.pad_buttons[0] |= icade_buttons; + g_polled_input_data.pad_buttons[0] |= apple_input_get_icade_buttons(); g_current_input_data.mouse_delta[0] = 0; g_current_input_data.mouse_delta[1] = 0; diff --git a/apple/RetroArch/apple_input.h b/apple/RetroArch/apple_input.h index 2f606fd9c9..4a1ee13788 100644 --- a/apple/RetroArch/apple_input.h +++ b/apple/RetroArch/apple_input.h @@ -47,6 +47,7 @@ extern apple_input_data_t g_polled_input_data; //< Game thread data // Main thread only void apple_input_enable_icade(bool on); +uint32_t apple_input_get_icade_buttons(); void apple_input_handle_key_event(unsigned keycode, bool down); #endif diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index e452d636bb..65b4c025eb 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -755,7 +755,6 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { "nul", 0x00}, }; - for (int i = 0; ios_key_name_map[i].hid_id; i++) { if (g_current_input_data.keys[ios_key_name_map[i].hid_id]) @@ -767,9 +766,12 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) } // Pad Buttons - for (int i = 0; g_current_input_data.pad_buttons[_value.player] && i < sizeof(g_current_input_data.pad_buttons[_value.player]) * 8; i++) + uint32_t buttons = g_current_input_data.pad_buttons[_value.player] | + ((_value.player == 0) ? apple_input_get_icade_buttons() : 0); + + for (int i = 0; buttons && i < sizeof(buttons) * 8; i++) { - if (g_current_input_data.pad_buttons[_value.player] & (1 << i)) + if (buttons & (1 << i)) { _value.msubValues[1] = [NSString stringWithFormat:@"%d", i]; [self finish]; From 846e72ad1e438f724835645596195a8fc621774c Mon Sep 17 00:00:00 2001 From: Themaister Date: Tue, 13 Aug 2013 16:58:43 +0200 Subject: [PATCH 178/252] Allow spaces for matrix hack. --- tools/cg2glsl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index aa5b279a45..d8e20efe1e 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -537,7 +537,7 @@ def preprocess_vertex(source_data): input_data = source_data.split('\n') ret = [] for line in input_data: - if 'uniform float4x4' in line: + if ('uniform' in line) and ('float4x4' in line): ret.append('#pragma pack_matrix(column_major)\n') ret.append(line) ret.append('#pragma pack_matrix(row_major)\n') From 8286e30b6b34d20a644c7b32b96789f6ae4ba846 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 13 Aug 2013 19:27:13 +0200 Subject: [PATCH 179/252] (Android Phoenix) Some cleanups to CoreSelection.java --- .../src/org/retroarch/browser/CoreSelection.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 44f59f267e..71cc91cca3 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -26,8 +26,6 @@ public class CoreSelection extends Activity implements static private final int ACTIVITY_LOAD_ROM = 0; static private String libretro_path; static private final String TAG = "CoreSelection"; - private ConfigFile config; - private ConfigFile core_config; private final double getDisplayRefreshRate() { // Android is *very* likely to screw this up. @@ -87,14 +85,9 @@ public class CoreSelection extends Activity implements @Override public void onCreate(Bundle savedInstanceState) { + ConfigFile core_config; super.onCreate(savedInstanceState); - try { - config = new ConfigFile(new File(getDefaultConfigPath())); - } catch (IOException e) { - config = new ConfigFile(); - } - core_config = new ConfigFile(); try { core_config.append(getAssets().open("libretro_cores.cfg")); @@ -216,6 +209,13 @@ public class CoreSelection extends Activity implements } private void updateConfigFile() { + ConfigFile config; + try { + config = new ConfigFile(new File(getDefaultConfigPath())); + } catch (IOException e) { + config = new ConfigFile(); + } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); config.setInt("audio_out_rate", getOptimalSamplingRate()); From b0644e2f717e8016607f2fedeba5ed03d6925057 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 13 Aug 2013 20:26:21 +0200 Subject: [PATCH 180/252] (Android Phoenix) Close CoreSelection activity after having launched a game --- android/phoenix/src/org/retroarch/browser/CoreSelection.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 71cc91cca3..f0ee1b3802 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -317,9 +317,11 @@ public class CoreSelection extends Activity implements myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); myIntent.putExtra("IME", current_ime); startActivity(myIntent); + finish(); } break; } + } @Override From 0dde2ce7c4de6fe604a3aeaecda190a88de88210 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 03:59:11 +0200 Subject: [PATCH 181/252] Add bsnes performance module info files --- android/phoenix/assets/libretro_cores.cfg | 1 + apple/modules/bsnes_performance_libretro.info | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 apple/modules/bsnes_performance_libretro.info diff --git a/android/phoenix/assets/libretro_cores.cfg b/android/phoenix/assets/libretro_cores.cfg index 468fbf0ae3..f921f2c467 100644 --- a/android/phoenix/assets/libretro_cores.cfg +++ b/android/phoenix/assets/libretro_cores.cfg @@ -24,3 +24,4 @@ libretro_stella = "Stella (Atari 2600)" libretro_scenewalker = "SceneWalker (Objects)" libretro_modelviewer = "ModelViewer (Objects)" libretro_mame078 = "MAME 2003 [0.78] (Arcade)" +libretro_bsnes_performance = "bsnes/higan Performance (Nintendo SNES)" diff --git a/apple/modules/bsnes_performance_libretro.info b/apple/modules/bsnes_performance_libretro.info new file mode 100644 index 0000000000..2db7e92326 --- /dev/null +++ b/apple/modules/bsnes_performance_libretro.info @@ -0,0 +1,5 @@ +display_name = "SNES / Super Famicom (SNES9x Next)" +supported_extensions = "smc|sfc" +corename = "bsnes/higan Performance" +manufacturer = "Nintendo" +systemname = "Super Nintendo Entertainment System" From 6fd04e1e0e99a68a467c189fdc240b84a69af563 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 04:17:30 +0200 Subject: [PATCH 182/252] (Android Phoenix) Add TV mode - boot straight into RGUI --- android/phoenix/AndroidManifest.xml | 1 + android/phoenix/res/xml/prefs.xml | 7 ++++++- .../org/retroarch/browser/RetroTVMode.java | 19 +++++++++++++++++++ frontend/frontend_android.c | 13 ++++++++++--- 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/RetroTVMode.java diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index d0dc0587b0..4f6243d63f 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -32,6 +32,7 @@ + diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 0b3142b73c..6a2ae26e9e 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -2,7 +2,12 @@ - + + + + diff --git a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java new file mode 100644 index 0000000000..a2ee4372e3 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java @@ -0,0 +1,19 @@ +package org.retroarch.browser; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Intent; +import android.os.Bundle; +import android.provider.Settings; + +public class RetroTVMode extends Activity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Intent myIntent = new Intent(this, RetroActivity.class); + startActivity(myIntent); + finish(); + } +} + + diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index a1b26f45f2..734888ef48 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -153,9 +153,16 @@ static bool android_app_start_main(struct android_app *android_app) config_load(); menu_init(); - ret = load_menu_game(); - if (ret) - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + + if *(g_extern.fullpath) + { + ret = load_menu_game(); + if (ret) + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + } + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); + return ret; } From 0bbd9699b44cf07050bac837b98dd144581d4f75 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 04:27:44 +0200 Subject: [PATCH 183/252] (Android Phoenix) TV Mode now loads the config file --- .../org/retroarch/browser/RetroTVMode.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java index a2ee4372e3..e69445b5e9 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java +++ b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java @@ -1,16 +1,48 @@ package org.retroarch.browser; +import java.io.File; + import android.app.Activity; -import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; public class RetroTVMode extends Activity { + private String getDefaultConfigPath() { + String internal = System.getenv("INTERNAL_STORAGE"); + String external = System.getenv("EXTERNAL_STORAGE"); + + if (external != null) { + String confPath = external + File.separator + "retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } else if (internal != null) { + String confPath = internal + File.separator + "retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } else { + String confPath = "/mnt/extsd/retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } + + if (internal != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + return internal + File.separator + "retroarch.cfg"; + else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + return external + File.separator + "retroarch.cfg"; + else if ((getApplicationInfo().dataDir) != null) + return (getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; + else // emergency fallback, all else failed + return "/mnt/sd/retroarch.cfg"; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent myIntent = new Intent(this, RetroActivity.class); + String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); + myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); + myIntent.putExtra("IME", current_ime); startActivity(myIntent); finish(); } From 1e14cbafd4383901f7aa7396f504ff8e24ab65b6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 04:36:47 +0200 Subject: [PATCH 184/252] (frontend_android) Revert --- frontend/frontend_android.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 734888ef48..6d578b3691 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -154,14 +154,9 @@ static bool android_app_start_main(struct android_app *android_app) menu_init(); - if *(g_extern.fullpath) - { - ret = load_menu_game(); - if (ret) - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - } - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); + ret = load_menu_game(); + if (ret) + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); return ret; } From cb6c612b8e1d79d663b18c812b175d5781c6d469 Mon Sep 17 00:00:00 2001 From: meancoot Date: Tue, 13 Aug 2013 13:17:51 -0400 Subject: [PATCH 185/252] (iOS) Only player 1 gets default keyboard bindings --- apple/iOS/settings.m | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index 65b4c025eb..db4ffcc423 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -170,23 +170,26 @@ static RASettingData* custom_action(NSString* action, NSString* value, id data) static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { + // Only player 1 should have default key bindings + #define DEFKEY(val) (player == 1) ? val : @"nul" + return [NSArray arrayWithObjects: [NSArray arrayWithObjects:[NSString stringWithFormat:@"Player %d", player], - button_setting(config, player, @"up", @"Up", @"up"), - button_setting(config, player, @"down", @"Down", @"down"), - button_setting(config, player, @"left", @"Left", @"left"), - button_setting(config, player, @"right", @"Right", @"right"), + button_setting(config, player, @"up", @"Up", DEFKEY(@"up")), + button_setting(config, player, @"down", @"Down", DEFKEY(@"down")), + button_setting(config, player, @"left", @"Left", DEFKEY(@"left")), + button_setting(config, player, @"right", @"Right", DEFKEY(@"right")), - button_setting(config, player, @"start", @"Start", @"enter"), - button_setting(config, player, @"select", @"Select", @"rshift"), + button_setting(config, player, @"start", @"Start", DEFKEY(@"enter")), + button_setting(config, player, @"select", @"Select", DEFKEY(@"rshift")), - button_setting(config, player, @"b", @"B", @"z"), - button_setting(config, player, @"a", @"A", @"x"), - button_setting(config, player, @"x", @"X", @"s"), - button_setting(config, player, @"y", @"Y", @"a"), + button_setting(config, player, @"b", @"B", DEFKEY(@"z")), + button_setting(config, player, @"a", @"A", DEFKEY(@"x")), + button_setting(config, player, @"x", @"X", DEFKEY(@"s")), + button_setting(config, player, @"y", @"Y", DEFKEY(@"a")), - button_setting(config, player, @"l", @"L", @"q"), - button_setting(config, player, @"r", @"R", @"w"), + button_setting(config, player, @"l", @"L", DEFKEY(@"q")), + button_setting(config, player, @"r", @"R", DEFKEY(@"w")), button_setting(config, player, @"l2", @"L2", @"nul"), button_setting(config, player, @"r2", @"R2", @"nul"), button_setting(config, player, @"l3", @"L3", @"nul"), From 4d8570d546342f438afa58ab152d73f5455fde99 Mon Sep 17 00:00:00 2001 From: meancoot Date: Tue, 13 Aug 2013 13:54:24 -0400 Subject: [PATCH 186/252] (iOS) Build script fix for jailbroken devices --- apple/script/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/script/build b/apple/script/build index e65f85a422..15d48e7060 100755 --- a/apple/script/build +++ b/apple/script/build @@ -23,7 +23,7 @@ if [ -z "$NOCODESIGN" ] ; then xcrun -sdk iphoneos PackageApplication "$BUILD_PATH/RetroArch.app" -o "$BUILD_PATH/RetroArch.ipa" --sign "$CODE_SIGN_IDENTITY" --embed "$BUILD_PATH/RetroArch.app/embedded.mobileprovision" else - xcodebuild -verbose -sdk iphoneos -configuration Release + xcodebuild -verbose -sdk iphoneos -configuration Release -project $PROJECT_NAME echo "Building for Jailbroken system" fi From 8656b04492e008877ef834b8a35098f9469b20e9 Mon Sep 17 00:00:00 2001 From: meancoot Date: Tue, 13 Aug 2013 14:36:04 -0400 Subject: [PATCH 187/252] (iOS) Some refactoring in settings.m --- apple/RetroArch/main.m | 8 +- apple/iOS/settings.m | 242 ++++++++++++++++++++++++----------------- 2 files changed, 145 insertions(+), 105 deletions(-) diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index 85247654d6..b14f7190f2 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -390,10 +390,12 @@ int main(int argc, char *argv[]) _enabledOrientations |= orientationSettings[i].orientation; } - // + // Setup bluetooth mode + NSString* btmode = objc_get_value_from_config(conf, @"ios_btmode", @"keyboard"); + apple_input_enable_icade([btmode isEqualToString:@"icade"]); + btstack_set_poweron([btmode isEqualToString:@"btstack"]); + bool val; - apple_input_enable_icade(config_get_bool(conf, "ios_use_icade", &val) && val); - btstack_set_poweron(config_get_bool(conf, "ios_use_btstack", &val) && val); use_tv_mode = config_get_bool(conf, "ios_tv_mode", & val) && val; config_file_free(conf); diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index db4ffcc423..082f031ed4 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -28,34 +28,65 @@ enum SettingTypes }; @interface RASettingData : NSObject -@property enum SettingTypes type; +{ + @public + enum SettingTypes type; -@property (strong) NSString* label; -@property (strong) NSString* name; -@property (strong) NSString* value; + NSString* label; // < The label displayed in the settings menu + NSString* name; // < The key name of the value in the config file + NSString* value; // < The current state of the setting -@property (strong) NSString* path; -@property (strong) NSArray* subValues; -@property (strong) NSMutableArray* msubValues; - -@property double rangeMin; -@property double rangeMax; - -@property uint32_t player; - -@property bool haveNoneOption; - -- (id)initWithType:(enum SettingTypes)aType label:(NSString*)aLabel name:(NSString*)aName; + uint32_t player; // < The player that a ButtonSetting represents + NSString* button_bind; // < The Gamepad button binding string + NSString* axis_bind; // < The Gamepad axis binding string + + NSString* path; // < The base path for FileListSettings + NSArray* subValues; // < The available options for EnumerationSettings and FileListSettings + bool haveNoneOption; // < Determines if a 'None' option is added to an Enumeration or FileList + bool haveDescriptions; // < Determines if subValues containts friendly descriptions for each value + + double rangeMin; // < The mininum value of a range setting + double rangeMax; // < The maximum value of a range setting +} @end @implementation RASettingData - (id)initWithType:(enum SettingTypes)aType label:(NSString*)aLabel name:(NSString*)aName { - self.type = aType; - self.label = aLabel; - self.name = aName; + type = aType; + label = aLabel; + name = aName; return self; } + +- (uint32_t)enumerationCount +{ + return subValues.count / (haveDescriptions ? 2 : 1); +} + +- (NSString*)valueForEnumerationIndex:(uint32_t)index +{ + return subValues[index * (haveDescriptions ? 2 : 1)]; +} + +- (NSString*)labelForEnumerationIndex:(uint32_t)index +{ + return subValues[index * (haveDescriptions ? 2 : 1) + (haveDescriptions ? 1 : 0)]; +} + +- (NSString*)labelForEnumerationValue +{ + const uint32_t count = self.enumerationCount; + + for (int i = 0; haveDescriptions && i < count; i ++) + { + if ([value isEqualToString:subValues[i * 2]]) + return subValues[i * 2 + 1]; + } + + return value; +} + @end // Helper view definitions @@ -71,7 +102,7 @@ enum SettingTypes static RASettingData* boolean_setting(config_file_t* config, NSString* name, NSString* label, NSString* defaultValue) { RASettingData* result = [[RASettingData alloc] initWithType:BooleanSetting label:label name:name]; - result.value = objc_get_value_from_config(config, name, defaultValue); + result->value = objc_get_value_from_config(config, name, defaultValue); return result; } @@ -80,27 +111,26 @@ static RASettingData* button_setting(config_file_t* config, uint32_t player, NSS NSString* realname = player ? [NSString stringWithFormat:@"input_player%d_%@", player, name] : name; RASettingData* result = [[RASettingData alloc] initWithType:ButtonSetting label:label name:realname]; - result.msubValues = [NSMutableArray arrayWithObjects: - objc_get_value_from_config(config, realname, defaultValue), - objc_get_value_from_config(config, [realname stringByAppendingString:@"_btn"], @"nul"), - objc_get_value_from_config(config, [realname stringByAppendingString:@"_axis"], @"nul"), - nil]; - result.player = player ? player - 1 : 0; + result->player = player ? player - 1 : 0; + result->value = objc_get_value_from_config(config, realname, defaultValue); + result->button_bind = objc_get_value_from_config(config, [realname stringByAppendingString:@"_btn"], @"nul"); + result->axis_bind = objc_get_value_from_config(config, [realname stringByAppendingString:@"_axis"], @"nul"); return result; } static RASettingData* group_setting(NSString* label, NSArray* settings) { RASettingData* result = [[RASettingData alloc] initWithType:GroupSetting label:label name:nil]; - result.subValues = settings; + result->subValues = settings; return result; } -static RASettingData* enumeration_setting(config_file_t* config, NSString* name, NSString* label, NSString* defaultValue, NSArray* values) +static RASettingData* enumeration_setting(config_file_t* config, NSString* name, NSString* label, NSString* defaultValue, NSArray* values, bool haveDescriptions) { RASettingData* result = [[RASettingData alloc] initWithType:EnumerationSetting label:label name:name]; - result.value = objc_get_value_from_config(config, name, defaultValue); - result.subValues = values; + result->value = objc_get_value_from_config(config, name, defaultValue); + result->subValues = values; + result->haveDescriptions = haveDescriptions; return result; } @@ -113,19 +143,19 @@ static RASettingData* subpath_setting(config_file_t* config, NSString* name, NSS values = [values pathsMatchingExtensions:[NSArray arrayWithObject:extension]]; RASettingData* result = [[RASettingData alloc] initWithType:FileListSetting label:label name:name]; - result.value = value; - result.subValues = values; - result.path = path; - result.haveNoneOption = true; + result->value = value; + result->subValues = values; + result->path = path; + result->haveNoneOption = true; return result; } static RASettingData* range_setting(config_file_t* config, NSString* name, NSString* label, NSString* defaultValue, double minValue, double maxValue) { RASettingData* result = [[RASettingData alloc] initWithType:RangeSetting label:label name:name]; - result.value = objc_get_value_from_config(config, name, defaultValue); - result.rangeMin = minValue; - result.rangeMax = maxValue; + result->value = objc_get_value_from_config(config, name, defaultValue); + result->rangeMin = minValue; + result->rangeMax = maxValue; return result; } @@ -133,8 +163,8 @@ static RASettingData* aspect_setting(config_file_t* config, NSString* label) { // Why does this need to be so difficult? - RASettingData* result = [[RASettingData alloc] initWithType:AspectSetting label:label name:@"fram"]; - result.subValues = [NSArray arrayWithObjects:@"Fill Screen", @"Game Aspect", @"Pixel Aspect", @"4:3", @"16:9", nil]; + RASettingData* result = [[RASettingData alloc] initWithType:AspectSetting label:label name:@""]; + result->subValues = [NSArray arrayWithObjects:@"Fill Screen", @"Game Aspect", @"Pixel Aspect", @"4:3", @"16:9", nil]; bool videoForceAspect = true; bool videoAspectAuto = false; @@ -148,11 +178,11 @@ static RASettingData* aspect_setting(config_file_t* config, NSString* label) } if (!videoForceAspect) - result.value = @"Fill Screen"; + result->value = @"Fill Screen"; else if (videoAspect < 0.0) - result.value = videoAspectAuto ? @"Game Aspect" : @"Pixel Aspect"; + result->value = videoAspectAuto ? @"Game Aspect" : @"Pixel Aspect"; else - result.value = (videoAspect < 1.5) ? @"4:3" : @"16:9"; + result->value = (videoAspect < 1.5) ? @"4:3" : @"16:9"; return result; } @@ -160,7 +190,7 @@ static RASettingData* aspect_setting(config_file_t* config, NSString* label) static RASettingData* custom_action(NSString* action, NSString* value, id data) { RASettingData* result = [[RASettingData alloc] initWithType:CustomAction label:action name:nil]; - result.value = value; + result->value = value; if (data != nil) objc_setAssociatedObject(result, "USERDATA", data, OBJC_ASSOCIATION_RETAIN_NONATOMIC); @@ -254,7 +284,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) [NSArray arrayWithObjects:@"Input", subpath_setting(config, @"input_overlay", @"Input Overlay", @"", overlay_path, @"cfg"), - range_setting(config, @"input_overlay_opacity", @"Overlay Opacity", @"1.0", 0.0, 1.0), + range_setting(config, @"overlay_opacity", @"Overlay Opacity", @"1.0", 0.0, 1.0), group_setting(@"System Keys", [NSArray arrayWithObjects: // TODO: Many of these strings will be cut off on an iPhone [NSArray arrayWithObjects:@"System Keys", @@ -319,7 +349,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleCustomAction:(RASettingData*)setting { - if ([@"Core Info" isEqualToString:setting.label]) + if ([@"Core Info" isEqualToString:setting->label]) [[RetroArch_iOS get] pushViewController:[[RAModuleInfoList alloc] initWithModuleInfo:_module] animated:YES]; } @@ -330,15 +360,18 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { config_file_t* config = config_file_new([[RetroArch_iOS get].systemConfigPath UTF8String]); + NSArray* bluetoothOptions = [NSArray arrayWithObjects:@"keyboard", @"Keyboard", + @"icade", @"iCade Device", + btstack_try_load() ? @"btstack" : nil, @"WiiMote/SixAxis (BTstack)", + nil]; + NSArray* settings = [NSArray arrayWithObjects: [NSArray arrayWithObjects:@"Frontend", custom_action(@"Diagnostic Log", nil, nil), boolean_setting(config, @"ios_tv_mode", @"TV Mode", @"false"), nil], [NSArray arrayWithObjects:@"Bluetooth", - // TODO: Note that with this turned off the native bluetooth is expected to be a real keyboard - boolean_setting(config, @"ios_use_icade", @"Native BT is iCade", @"false"), - btstack_try_load() ? boolean_setting(config, @"ios_use_btstack", @"Enable BTstack", @"false") : nil, + enumeration_setting(config, @"ios_btmode", @"Mode", @"keyboard", bluetoothOptions, true), nil], [NSArray arrayWithObjects:@"Orientations", boolean_setting(config, @"ios_allow_portrait", @"Portrait", @"true"), @@ -378,11 +411,11 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleCustomAction:(RASettingData*)setting { - if ([@"Diagnostic Log" isEqualToString:setting.label]) + if ([@"Diagnostic Log" isEqualToString:setting->label]) [[RetroArch_iOS get] pushViewController:[RALogView new] animated:YES]; - else if ([@"Enable BTstack" isEqualToString:setting.label]) - btstack_set_poweron([setting.value isEqualToString:@"true"]); - else if([@"Core Configuration" isEqualToString:setting.label]) + else if ([@"Enable BTstack" isEqualToString:setting->label]) + btstack_set_poweron([setting->value isEqualToString:@"true"]); + else if([@"Core Configuration" isEqualToString:setting->label]) [RetroArch_iOS.get pushViewController:[[RASettingsList alloc] initWithModule:nil] animated:YES]; } @@ -423,35 +456,35 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { RASettingData* setting = [group objectAtIndex:j]; - switch (setting.type) + switch (setting->type) { case GroupSetting: - [self writeSettings:setting.subValues toConfig:config]; + [self writeSettings:setting->subValues toConfig:config]; break; case FileListSetting: - if ([setting.value length] > 0) - config_set_string(config, [setting.name UTF8String], [[setting.path stringByAppendingPathComponent:setting.value] UTF8String]); + if ([setting->value length] > 0) + config_set_string(config, [setting->name UTF8String], [[setting->path stringByAppendingPathComponent:setting->value] UTF8String]); else - config_set_string(config, [setting.name UTF8String], ""); + config_set_string(config, [setting->name UTF8String], ""); break; case ButtonSetting: - if (setting.msubValues[0]) - config_set_string(config, [setting.name UTF8String], [setting.msubValues[0] UTF8String]); - if (setting.msubValues[1]) - config_set_string(config, [[setting.name stringByAppendingString:@"_btn"] UTF8String], [setting.msubValues[1] UTF8String]); - if (setting.msubValues[2]) - config_set_string(config, [[setting.name stringByAppendingString:@"_axis"] UTF8String], [setting.msubValues[2] UTF8String]); + if (setting->value) + config_set_string(config, [setting->name UTF8String], [setting->value UTF8String]); + if (setting->button_bind) + config_set_string(config, [[setting->name stringByAppendingString:@"_btn"] UTF8String], [setting->button_bind UTF8String]); + if (setting->axis_bind) + config_set_string(config, [[setting->name stringByAppendingString:@"_axis"] UTF8String], [setting->axis_bind UTF8String]); break; case AspectSetting: - config_set_string(config, "video_force_aspect", [@"Fill Screen" isEqualToString:setting.value] ? "false" : "true"); - config_set_string(config, "video_aspect_ratio_auto", [@"Game Aspect" isEqualToString:setting.value] ? "true" : "false"); + config_set_string(config, "video_force_aspect", [@"Fill Screen" isEqualToString:setting->value] ? "false" : "true"); + config_set_string(config, "video_aspect_ratio_auto", [@"Game Aspect" isEqualToString:setting->value] ? "true" : "false"); config_set_string(config, "video_aspect_ratio", "-1.0"); - if([@"4:3" isEqualToString:setting.value]) + if([@"4:3" isEqualToString:setting->value]) config_set_string(config, "video_aspect_ratio", "1.33333333"); - else if([@"16:9" isEqualToString:setting.value]) + else if([@"16:9" isEqualToString:setting->value]) config_set_string(config, "video_aspect_ratio", "1.77777777"); break; @@ -459,7 +492,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) break; default: - config_set_string(config, [setting.name UTF8String], [setting.value UTF8String]); + config_set_string(config, [setting->name UTF8String], [setting->value UTF8String]); break; } } @@ -470,7 +503,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { RASettingData* setting = (RASettingData*)[self itemForIndexPath:indexPath]; - switch (setting.type) + switch (setting->type) { case EnumerationSetting: case FileListSetting: @@ -483,7 +516,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) break; case GroupSetting: - [[RetroArch_iOS get] pushViewController:[[RASettingsSubList alloc] initWithSettings:setting.subValues title:setting.label] animated:YES]; + [[RetroArch_iOS get] pushViewController:[[RASettingsSubList alloc] initWithSettings:setting->subValues title:setting->label] animated:YES]; break; default: @@ -496,7 +529,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleBooleanSwitch:(UISwitch*)swt { RASettingData* setting = objc_getAssociatedObject(swt, "SETTING"); - setting.value = (swt.on ? @"true" : @"false"); + setting->value = (swt.on ? @"true" : @"false"); [self handleCustomAction:setting]; } @@ -504,7 +537,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleSlider:(UISlider*)sld { RASettingData* setting = objc_getAssociatedObject(sld, "SETTING"); - setting.value = [NSString stringWithFormat:@"%f", sld.value]; + setting->value = [NSString stringWithFormat:@"%f", sld.value]; [self handleCustomAction:setting]; } @@ -515,7 +548,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) UITableViewCell* cell = nil; - switch (setting.type) + switch (setting->type) { case BooleanSetting: { @@ -532,10 +565,10 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; } - cell.textLabel.text = setting.label; + cell.textLabel.text = setting->label; UISwitch* swt = (UISwitch*)cell.accessoryView; - swt.on = [setting.value isEqualToString:@"true"]; + swt.on = [setting->value isEqualToString:@"true"]; objc_setAssociatedObject(swt, "SETTING", setting, OBJC_ASSOCIATION_RETAIN_NONATOMIC); return cell; @@ -557,12 +590,12 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; } - cell.textLabel.text = setting.label; + cell.textLabel.text = setting->label; UISlider* sld = (UISlider*)cell.accessoryView; - sld.minimumValue = setting.rangeMin; - sld.maximumValue = setting.rangeMax; - sld.value = [setting.value doubleValue]; + sld.minimumValue = setting->rangeMin; + sld.maximumValue = setting->rangeMax; + sld.value = [setting->value doubleValue]; objc_setAssociatedObject(sld, "SETTING", setting, OBJC_ASSOCIATION_RETAIN_NONATOMIC); return cell; @@ -579,15 +612,17 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } - cell.textLabel.text = setting.label; + cell.textLabel.text = setting->label; - if (setting.type != ButtonSetting) - cell.detailTextLabel.text = setting.value; - else + if (setting->type == ButtonSetting) cell.detailTextLabel.text = [NSString stringWithFormat:@"[KB:%@] [JS:%@] [AX:%@]", - [setting.msubValues[0] length] ? setting.msubValues[0] : @"nul", - [setting.msubValues[1] length] ? setting.msubValues[1] : @"nul", - [setting.msubValues[2] length] ? setting.msubValues[2] : @"nul"]; + [setting->value length] ? setting->value : @"nul", + [setting->button_bind length] ? setting->button_bind : @"nul", + [setting->axis_bind length] ? setting->axis_bind : @"nul"]; + else if(setting->type == EnumerationSetting) + cell.detailTextLabel.text = setting.labelForEnumerationValue; + else + cell.detailTextLabel.text = setting->value; return cell; } @@ -609,20 +644,20 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) _value = setting; _view = table; - _mainSection = _value.haveNoneOption ? 1 : 0; + _mainSection = _value->haveNoneOption ? 1 : 0; - [self setTitle: _value.label]; + [self setTitle: _value->label]; return self; } - (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView { - return _value.haveNoneOption ? 2 : 1; + return _value->haveNoneOption ? 2 : 1; } - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { - return (section == _mainSection) ? _value.subValues.count : 1; + return (section == _mainSection) ? _value.enumerationCount : 1; } - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath @@ -630,14 +665,17 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"option"]; cell = cell ? cell : [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"option"]; - cell.textLabel.text = (indexPath.section == _mainSection) ? _value.subValues[indexPath.row] : @"None"; + if (indexPath.section == _mainSection) + cell.textLabel.text = [_value labelForEnumerationIndex:indexPath.row]; + else + cell.textLabel.text = @"None"; return cell; } - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - _value.value = (indexPath.section == _mainSection) ? _value.subValues[indexPath.row] : @""; + _value->value = (indexPath.section == _mainSection) ? [_value valueForEnumerationIndex:indexPath.row] : @""; [_view reloadData]; [[RetroArch_iOS get] popViewControllerAnimated:YES]; @@ -664,7 +702,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) _me = self; _alert = [[UIAlertView alloc] initWithTitle:@"RetroArch" - message:_value.label + message:_value->label delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Clear Keyboard", @"Clear Joystick", @"Clear Axis", nil]; @@ -692,11 +730,11 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)alertView:(UIAlertView*)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex == _alert.firstOtherButtonIndex) - _value.msubValues[0] = @"nul"; + _value->value = @"nul"; else if(buttonIndex == _alert.firstOtherButtonIndex + 1) - _value.msubValues[1] = @"nul"; + _value->button_bind = @"nul"; else if(buttonIndex == _alert.firstOtherButtonIndex + 2) - _value.msubValues[2] = @"nul"; + _value->axis_bind = @"nul"; [self finish]; } @@ -762,21 +800,21 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { if (g_current_input_data.keys[ios_key_name_map[i].hid_id]) { - _value.msubValues[0] = [NSString stringWithUTF8String:ios_key_name_map[i].keyname]; + _value->value = [NSString stringWithUTF8String:ios_key_name_map[i].keyname]; [self finish]; return; } } // Pad Buttons - uint32_t buttons = g_current_input_data.pad_buttons[_value.player] | - ((_value.player == 0) ? apple_input_get_icade_buttons() : 0); + uint32_t buttons = g_current_input_data.pad_buttons[_value->player] | + ((_value->player == 0) ? apple_input_get_icade_buttons() : 0); for (int i = 0; buttons && i < sizeof(buttons) * 8; i++) { if (buttons & (1 << i)) { - _value.msubValues[1] = [NSString stringWithFormat:@"%d", i]; + _value->button_bind = [NSString stringWithFormat:@"%d", i]; [self finish]; return; } @@ -785,11 +823,11 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) // Pad Axis for (int i = 0; i < 4; i++) { - int16_t value = g_current_input_data.pad_axis[_value.player][i]; + int16_t value = g_current_input_data.pad_axis[_value->player][i]; if (abs(value) > 0x1000) { - _value.msubValues[2] = [NSString stringWithFormat:@"%s%d", (value > 0x1000) ? "+" : "-", i]; + _value->axis_bind = [NSString stringWithFormat:@"%s%d", (value > 0x1000) ? "+" : "-", i]; [self finish]; break; } From fe08806aa52b194d9cdfedeb7549c686f62e4b26 Mon Sep 17 00:00:00 2001 From: meancoot Date: Tue, 13 Aug 2013 22:42:56 -0400 Subject: [PATCH 188/252] (iOS) Use the nuclear option for life-cycle management. This should fix hangs caused by incoming calls or launching siri, but will cause more driver reinits than before --- apple/RetroArch/RAGameView.m | 20 +------------------- apple/RetroArch/RetroArch_Apple.h | 3 --- apple/RetroArch/main.m | 25 +++++++++++++++++++++---- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/apple/RetroArch/RAGameView.m b/apple/RetroArch/RAGameView.m index a9b8f174a4..daa9fd97e9 100644 --- a/apple/RetroArch/RAGameView.m +++ b/apple/RetroArch/RAGameView.m @@ -189,17 +189,6 @@ static float g_screen_scale = 1.0f; ]; } -- (void)suspend -{ - g_view.context = nil; - [EAGLContext setCurrentContext:nil]; -} - -- (void)resume -{ - g_view.context = g_context; - [EAGLContext setCurrentContext:g_context]; -} #endif @end @@ -215,7 +204,7 @@ bool apple_init_game_view() g_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; [EAGLContext setCurrentContext:g_context]; g_view.context = g_context; - + // Show pause button for a few seconds, so people know it's there g_pause_indicator_view.alpha = 1.0f; [NSObject cancelPreviousPerformRequestsWithTarget:g_instance]; @@ -232,13 +221,6 @@ bool apple_init_game_view() void apple_destroy_game_view() { dispatch_sync(dispatch_get_main_queue(), ^{ - // Clear the view, otherwise the last frame from this game will be displayed - // briefly on the next game. - [g_view bindDrawable]; - glClearColor(0, 0, 0, 1); - glClear(GL_COLOR_BUFFER_BIT); - [g_view display]; - glFinish(); #ifdef IOS diff --git a/apple/RetroArch/RetroArch_Apple.h b/apple/RetroArch/RetroArch_Apple.h index 5302d3a4c2..39096304d5 100644 --- a/apple/RetroArch/RetroArch_Apple.h +++ b/apple/RetroArch/RetroArch_Apple.h @@ -39,9 +39,6 @@ extern id apple_platform; + (RAGameView*)get; - (void)openPauseMenu; - (void)closePauseMenu; - -- (void)suspend; -- (void)resume; @end @interface RetroArch_iOS : UINavigationController diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index b14f7190f2..12e0361392 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -83,6 +83,18 @@ static void event_reload_config(void* userdata) init_drivers(); } +static pthread_mutex_t stasis_mutex = PTHREAD_MUTEX_INITIALIZER; + +static void event_stasis(void* userdata) +{ + // HACK: uninit_drivers is the nuclear option; uninit_audio would be better but will + // crash when resuming. + uninit_drivers(); + pthread_mutex_lock(&stasis_mutex); + pthread_mutex_unlock(&stasis_mutex); + init_drivers(); +} + #pragma mark EMULATION static pthread_t apple_retro_thread; static bool apple_is_paused; @@ -258,14 +270,19 @@ int main(int argc, char *argv[]) apple_display_alert(@"No libretro cores were found. You will not be able to play any games.", 0); } -- (void)applicationWillEnterForeground:(UIApplication *)application +- (void)applicationDidBecomeActive:(UIApplication *)application { - [RAGameView.get resume]; + if (apple_is_running) + pthread_mutex_unlock(&stasis_mutex); } -- (void)applicationDidEnterBackground:(UIApplication *)application +- (void)applicationWillResignActive:(UIApplication *)application { - [RAGameView.get suspend]; + if (apple_is_running) + { + pthread_mutex_lock(&stasis_mutex); + apple_frontend_post_event(event_stasis, 0); + } } // UINavigationControllerDelegate From 9e2e135d195fb830e62803f23ec4fdcd7ca5f0a1 Mon Sep 17 00:00:00 2001 From: meancoot Date: Wed, 14 Aug 2013 00:48:58 -0400 Subject: [PATCH 189/252] (Apple) Get rid of some hacks in the frontend code. --- apple/RetroArch/main.m | 44 ++++++++++++++++++++---------- apple/iOS/settings.m | 2 ++ frontend/frontend.c | 26 ++---------------- frontend/platform/platform_apple.c | 32 +--------------------- general.h | 4 --- 5 files changed, 35 insertions(+), 73 deletions(-) diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index 12e0361392..3e00e3c919 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -45,7 +45,6 @@ static bool use_tv_mode; id apple_platform; // From frontend/frontend_ios.c -extern void* rarch_main(void* args); extern void apple_frontend_post_event(void (*fn)(void*), void* userdata); @@ -101,6 +100,22 @@ static bool apple_is_paused; static bool apple_is_running; static RAModuleInfo* apple_core; +void* rarch_main_spring(void* args) +{ + char** argv = args; + + uint32_t argc = 0; + while (argv && argv[argc ++]); + + if (rarch_main(argc, argv)) + { + rarch_main_clear_state(); + dispatch_async_f(dispatch_get_main_queue(), (void*)1, apple_rarch_exited); + } + + return 0; +} + void apple_run_core(RAModuleInfo* core, const char* file) { if (!apple_is_running) @@ -110,23 +125,24 @@ void apple_run_core(RAModuleInfo* core, const char* file) apple_core = core; apple_is_running = true; - struct rarch_main_wrap* load_data = malloc(sizeof(struct rarch_main_wrap)); - memset(load_data, 0, sizeof(struct rarch_main_wrap)); - - load_data->config_path = strdup(apple_platform.retroarchConfigPath.UTF8String); - -#ifdef IOS - load_data->sram_path = strdup(RetroArch_iOS.get.systemDirectory.UTF8String); - load_data->state_path = strdup(RetroArch_iOS.get.systemDirectory.UTF8String); -#endif - + static char config_path[PATH_MAX]; + static char core_path[PATH_MAX]; + static char file_path[PATH_MAX]; + + static const char* argv[] = { "retroarch", "-c", config_path, "-L", core_path, file_path, 0 }; + + strlcpy(config_path, apple_platform.retroarchConfigPath.UTF8String, sizeof(config_path)); + if (file && core) { - load_data->libretro_path = strdup(apple_core.path.UTF8String); - load_data->rom_path = strdup(file); + argv[3] = "-L"; + strlcpy(core_path, apple_core.path.UTF8String, sizeof(core_path)); + strlcpy(file_path, file, sizeof(file_path)); } + else + argv[3] = 0; - if (pthread_create(&apple_retro_thread, 0, rarch_main, load_data)) + if (pthread_create(&apple_retro_thread, 0, rarch_main_spring, argv)) { apple_rarch_exited((void*)1); return; diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index 082f031ed4..797fe4c7ce 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -338,6 +338,8 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) if (config) { config_set_string(config, "system_directory", [[RetroArch_iOS get].systemDirectory UTF8String]); + config_set_string(config, "savefile_directory", [[RetroArch_iOS get].systemDirectory UTF8String]); + config_set_string(config, "savestate_directory", [[RetroArch_iOS get].systemDirectory UTF8String]); [self writeSettings:nil toConfig:config]; config_file_write(config, [_configPath UTF8String]); config_file_free(config); diff --git a/frontend/frontend.c b/frontend/frontend.c index 174f1a8084..914b6c0eaa 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -124,20 +124,13 @@ void rarch_get_environment_console(void) } #endif -#if defined(IOS) || defined(OSX) -void* rarch_main(void* args) -{ - int argc = 0; - char *argv = NULL; -#elif defined(HAVE_BB10) +#if defined(IOS) || defined(OSX) || defined(HAVE_BB10) int rarch_main(int argc, char *argv[]) -{ - void* args = NULL; #else int main(int argc, char *argv[]) +#endif { void* args = NULL; -#endif frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first(); if (frontend_ctx && frontend_ctx->init) @@ -151,31 +144,16 @@ int main(int argc, char *argv[]) frontend_ctx->environment_get(argc, argv, args); #if !defined(RARCH_CONSOLE) && !defined(HAVE_BB10) -#if defined(__APPLE__) - struct rarch_main_wrap* argdata = (struct rarch_main_wrap*)args; - int init_ret = rarch_main_init_wrap(argdata); - apple_free_main_wrap(argdata); - - if (init_ret) - { - rarch_main_clear_state(); - dispatch_async_f(dispatch_get_main_queue(), (void*)1, apple_rarch_exited); - return 0; - } -#else rarch_init_msg_queue(); int init_ret; if ((init_ret = rarch_main_init(argc, argv))) return init_ret; #endif -#endif #if defined(HAVE_MENU) || defined(HAVE_BB10) menu_init(); -#ifndef __APPLE__ if (frontend_ctx && frontend_ctx->process_args) frontend_ctx->process_args(argc, argv, args); -#endif #if defined(RARCH_CONSOLE) || defined(HAVE_BB10) g_extern.lifecycle_mode_state |= 1ULL << MODE_LOAD_GAME; diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index 5c413ac4d2..1f6234bd82 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -48,20 +48,6 @@ void apple_frontend_post_event(void (*fn)(void*), void* userdata) pthread_mutex_unlock(&apple_event_queue_lock); } -static void apple_free_main_wrap(struct rarch_main_wrap* wrap) -{ - if (wrap) - { - free((char*)wrap->libretro_path); - free((char*)wrap->rom_path); - free((char*)wrap->sram_path); - free((char*)wrap->state_path); - free((char*)wrap->config_path); - } - - free(wrap); -} - static void process_events(void) { pthread_mutex_lock(&apple_event_queue_lock); @@ -83,24 +69,8 @@ static void system_shutdown(bool force) dispatch_async_f(dispatch_get_main_queue(), 0, apple_rarch_exited); } -static void environment_get(int argc, char *argv[], void *args) -{ - (void)argc; - (void)argv; - (void)args; - -#ifdef IOS - char* system_directory = ios_get_rarch_system_directory(); - strlcpy(g_extern.savestate_dir, system_directory, sizeof(g_extern.savestate_dir)); - strlcpy(g_extern.savefile_dir, system_directory, sizeof(g_extern.savefile_dir)); - free(system_directory); - - config_load(); -#endif -} - const frontend_ctx_driver_t frontend_ctx_apple = { - environment_get, /* environment_get */ + NULL, /* environment_get */ NULL, /* init */ NULL, /* deinit */ NULL, /* exitspawn */ diff --git a/general.h b/general.h index ca07012988..cde28f8b35 100644 --- a/general.h +++ b/general.h @@ -676,11 +676,7 @@ bool config_save_keybinds(const char *path); void rarch_game_reset(void); void rarch_main_clear_state(void); void rarch_init_system_info(void); -#ifdef __APPLE__ -void * rarch_main(void *args); -#else int rarch_main(int argc, char *argv[]); -#endif int rarch_main_init_wrap(const struct rarch_main_wrap *args); int rarch_main_init(int argc, char *argv[]); bool rarch_main_idle_iterate(void); From e8555bc1abc40e38a9921430d475fa1a0dc02757 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 14:10:49 +0200 Subject: [PATCH 190/252] (frontend) make macro for main entry point function --- frontend/frontend.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 914b6c0eaa..4a9093d4e1 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -125,10 +125,12 @@ void rarch_get_environment_console(void) #endif #if defined(IOS) || defined(OSX) || defined(HAVE_BB10) -int rarch_main(int argc, char *argv[]) +#define main_entry rarch_main #else -int main(int argc, char *argv[]) +#define main_entry main #endif + +int main_entry(int argc, char *argv[]) { void* args = NULL; frontend_ctx = (frontend_ctx_driver_t*)frontend_ctx_init_first(); From 3b1e65ba08673abd79e84ceb46cebc9356a23be7 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 14 Aug 2013 14:00:21 +0200 Subject: [PATCH 191/252] Add GL_DEBUG ifdef which forces full GL debugging. --- Makefile | 5 ++ Makefile.win | 5 ++ gfx/context/glx_ctx.c | 61 +++++++++++++--------- gfx/gl.c | 115 ++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 156 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index acf4054dbf..f7eb516e70 100644 --- a/Makefile +++ b/Makefile @@ -337,6 +337,11 @@ ifeq ($(DEBUG), 1) OPTIMIZE_FLAG = -O0 endif +ifeq ($(GL_DEBUG), 1) + CFLAGS += -DGL_DEBUG + CXXFLAGS += -DGL_DEBUG +endif + CFLAGS += -Wall $(OPTIMIZE_FLAG) $(INCLUDE_DIRS) -g -I. ifeq ($(CXX_BUILD), 1) LD = $(CXX) diff --git a/Makefile.win b/Makefile.win index 3003c672b1..71036ccf47 100644 --- a/Makefile.win +++ b/Makefile.win @@ -237,6 +237,11 @@ else LDCXXFLAGS += -s endif +ifeq ($(GL_DEBUG), 1) + CFLAGS += -DGL_DEBUG + CXXFLAGS += -DGL_DEBUG +endif + CFLAGS += -Wall -Wno-unused-result -Wno-unused-variable -I. CXXFLAGS += -Wall -Wno-unused-result -Wno-unused-variable -I. -std=c++0x -D__STDC_CONSTANT_MACROS ifeq ($(CXX_BUILD), 1) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index a4d08652e1..cc64267351 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -42,6 +42,7 @@ static GLXFBConfig g_fbc; static unsigned g_major; static unsigned g_minor; static bool g_core; +static bool g_debug; typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXContext, Bool, const int*); @@ -229,24 +230,22 @@ static bool gfx_ctx_init(void) int major, minor; glXQueryVersion(g_dpy, &major, &minor); - if (g_major * 1000 + g_minor >= 3001) // Core context - { - g_core = true; - // GLX 1.4+ required. - if ((major * 1000 + minor) < 1004) - goto error; - glx_create_context_attribs = (glXCreateContextAttribsARBProc)glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB"); - if (!glx_create_context_attribs) - goto error; - } - else - { - g_core = false; - // GLX 1.3+ required. - if ((major * 1000 + minor) < 1003) - goto error; - } + // GLX 1.3+ minimum required. + if ((major * 1000 + minor) < 1003) + goto error; + + glx_create_context_attribs = (glXCreateContextAttribsARBProc)glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB"); + +#ifdef GL_DEBUG + g_debug = true; +#else + g_debug = g_extern.system.hw_render_callback.debug_context; +#endif + + g_core = (g_major * 1000 + g_minor) >= 3001; // Have to use ContextAttribs + if ((g_core || g_debug) && !glx_create_context_attribs) + goto error; int nelements; fbcs = glXChooseFBConfig(g_dpy, DefaultScreen(g_dpy), @@ -376,16 +375,28 @@ static bool gfx_ctx_set_video_mode( if (!g_ctx) { - if (g_core) + if (g_core || g_debug) { - const int attribs[] = { - GLX_CONTEXT_MAJOR_VERSION_ARB, (int)g_major, - GLX_CONTEXT_MINOR_VERSION_ARB, (int)g_minor, - GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, - GLX_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0, - None, - }; + int attribs[16]; + int *aptr = attribs; + if (g_core) + { + *aptr++ = GLX_CONTEXT_MAJOR_VERSION_ARB; + *aptr++ = g_major; + *aptr++ = GLX_CONTEXT_MINOR_VERSION_ARB; + *aptr++ = g_minor; + *aptr++ = GLX_CONTEXT_PROFILE_MASK_ARB; + *aptr++ = GLX_CONTEXT_CORE_PROFILE_BIT_ARB; + } + + if (g_debug) + { + *aptr++ = GLX_CONTEXT_FLAGS_ARB; + *aptr++ = GLX_CONTEXT_DEBUG_BIT_ARB; + } + + *aptr = None; g_ctx = glx_create_context_attribs(g_dpy, g_fbc, NULL, True, attribs); } else diff --git a/gfx/gl.c b/gfx/gl.c index 628f743634..3810cd4373 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -23,6 +23,7 @@ #include "../performance.h" #include "scaler/scaler.h" #include "image.h" +#include "../file.h" #include #include "../libretro.h" @@ -1661,11 +1662,33 @@ static bool resolve_extensions(gl_t *gl) } #endif -#if 0 - // Useful for debugging, but kinda obnoxious. - const char *ext = (const char*)glGetString(GL_EXTENSIONS); - if (ext) - RARCH_LOG("[GL] Supported extensions: %s\n", ext); +#ifdef GL_DEBUG + // Useful for debugging, but kinda obnoxious otherwise. + RARCH_LOG("[GL]: Supported extensions:\n"); + if (gl->core_context) + { +#ifdef GL_NUM_EXTENSIONS + GLint exts = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &exts); + for (GLint i = 0; i < exts; i++) + { + const char *ext = (const char*)glGetStringi(GL_EXTENSIONS, i); + if (ext) + RARCH_LOG("\t%s\n", ext); + } +#endif + } + else + { + const char *ext = (const char*)glGetString(GL_EXTENSIONS); + if (ext) + { + struct string_list *list = string_split(ext, " "); + for (size_t i = 0; i < list->size; i++) + RARCH_LOG("\t%s\n", list->elems[i].data); + string_list_free(list); + } + } #endif return true; @@ -1814,6 +1837,84 @@ static const gfx_ctx_driver_t *gl_get_context(void) return gfx_ctx_init_first(api, major, minor); } +#ifdef GL_DEBUG +#ifdef HAVE_OPENGLES2 +#define DEBUG_CALLBACK_TYPE GL_APIENTRY +#else +#define DEBUG_CALLBACK_TYPE APIENTRY +#endif +static void DEBUG_CALLBACK_TYPE gl_debug_cb(GLenum source, GLenum type, + GLuint id, GLenum severity, GLsizei length, + const GLchar *message, void *userParam) +{ + (void)id; + (void)length; + + gl_t *gl = (gl_t*)userParam; // Useful for debugger. + (void)gl; + + const char *src; + switch (source) + { + case GL_DEBUG_SOURCE_API: src = "API"; break; + case GL_DEBUG_SOURCE_WINDOW_SYSTEM: src = "Window system"; break; + case GL_DEBUG_SOURCE_SHADER_COMPILER: src = "Shader compiler"; break; + case GL_DEBUG_SOURCE_THIRD_PARTY: src = "3rd party"; break; + case GL_DEBUG_SOURCE_APPLICATION: src = "Application"; break; + case GL_DEBUG_SOURCE_OTHER: src = "Other"; break; + default: src = "Unknown"; break; + } + + const char *typestr; + switch (type) + { + case GL_DEBUG_TYPE_ERROR: typestr = "Error"; break; + case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: typestr = "Deprecated behavior"; break; + case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: typestr = "Undefined behavior"; break; + case GL_DEBUG_TYPE_PORTABILITY: typestr = "Portability"; break; + case GL_DEBUG_TYPE_PERFORMANCE: typestr = "Performance"; break; + case GL_DEBUG_TYPE_MARKER: typestr = "Marker"; break; + case GL_DEBUG_TYPE_PUSH_GROUP: typestr = "Push group"; break; + case GL_DEBUG_TYPE_POP_GROUP: typestr = "Pop group"; break; + case GL_DEBUG_TYPE_OTHER: typestr = "Other"; break; + default: typestr = "Unknown"; break; + } + + switch (severity) + { + case GL_DEBUG_SEVERITY_HIGH: + RARCH_ERR("[GL debug (High, %s, %s)]: %s\n", src, typestr, message); + break; + case GL_DEBUG_SEVERITY_MEDIUM: + RARCH_WARN("[GL debug (Medium, %s, %s)]: %s\n", src, typestr, message); + break; + case GL_DEBUG_SEVERITY_LOW: + RARCH_LOG("[GL debug (Low, %s, %s)]: %s\n", src, typestr, message); + break; + } +} + +static void gl_begin_debug(gl_t *gl) +{ + if (gl_query_extension(gl, "KHR_debug")) + { + glDebugMessageCallback(gl_debug_cb, gl); + glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE); + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + } +#ifndef HAVE_OPENGLES2 + else if (gl_query_extension(gl, "ARB_debug_output")) + { + glDebugMessageCallbackARB(gl_debug_cb, gl); + glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE); + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB); + } +#endif + else + RARCH_ERR("Neither GL_KHR_debug nor GL_ARB_debug_output are implemented. Cannot start GL debugging.\n"); +} +#endif + static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data) { #ifdef _WIN32 @@ -1881,6 +1982,10 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } +#ifdef GL_DEBUG + gl_begin_debug(gl); +#endif + gl->vsync = video->vsync; gl->fullscreen = video->fullscreen; From 4d8e9df03d5d94594e9a987f16ae62138fcc2d6f Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 14 Aug 2013 14:04:26 +0200 Subject: [PATCH 192/252] Add forced debug context support to WGL. --- gfx/context/wgl_ctx.c | 37 +++++++++++++++++++++++++++++-------- libretro.h | 2 +- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index b0d70cdc58..ec12ed8411 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -104,7 +104,15 @@ static void create_gl_context(HWND hwnd) return; } - if (g_major * 1000 + g_minor >= 3001) // Create core context +#ifdef GL_DEBUG + bool debug = true; +#else + bool debug = g_extern.system.hw_render_callback.debug_context; +#endif + + bool core_context = (g_major * 1000 + g_minor) >= 3001; + + if (core_context || debug) { #ifndef WGL_CONTEXT_MAJOR_VERSION_ARB #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 @@ -124,13 +132,26 @@ static void create_gl_context(HWND hwnd) #ifndef WGL_CONTEXT_DEBUG_BIT_ARB #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001 #endif - const int attribs[] = { - WGL_CONTEXT_MAJOR_VERSION_ARB, (int)g_major, - WGL_CONTEXT_MINOR_VERSION_ARB, (int)g_minor, - WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, - WGL_CONTEXT_FLAGS_ARB, g_extern.system.hw_render_callback.debug_context ? WGL_CONTEXT_DEBUG_BIT_ARB : 0, - 0, - }; + int attribs[16]; + int *aptr = attribs; + + if (core_context) + { + *aptr++ = WGL_CONTEXT_MAJOR_VERSION_ARB; + *aptr++ = g_major; + *aptr++ = WGL_CONTEXT_MINOR_VERSION_ARB; + *aptr++ = g_minor; + *aptr++ = WGL_CONTEXT_PROFILE_MASK_ARB; + *aptr++ = WGL_CONTEXT_CORE_PROFILE_BIT_ARB; + } + + if (debug) + { + *aptr++ = WGL_CONTEXT_FLAGS_ARB; + *aptr++ = WGL_CONTEXT_DEBUG_BIT_ARB; + } + + *aptr = 0; if (!pcreate_context) pcreate_context = (wglCreateContextAttribsProc)wglGetProcAddress("wglCreateContextAttribsARB"); diff --git a/libretro.h b/libretro.h index 0af84e6548..72050e93d5 100755 --- a/libretro.h +++ b/libretro.h @@ -575,7 +575,7 @@ struct retro_hw_render_callback // The reset callback might still be called in extreme situations such as if the context is lost beyond recovery. // For optimal stability, set this to false, and allow context to be reset at any time. retro_hw_context_reset_t context_destroy; // A callback to be called before the context is destroyed. Resources can be deinitialized at this step. This can be set to NULL, in which resources will just be destroyed without any notification. - bool debug_context; // Creates a debug context. Only takes effect when using GL core. + bool debug_context; // Creates a debug context. }; // Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. Called by the frontend in response to keyboard events. From 39edc5379bf63e05debc3d06c11c79b2d88d7829 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 14:52:55 +0200 Subject: [PATCH 193/252] (Android Phoenix) Cleanups - reuse instance from MainMenuActivity to get application info stuff (Android Phoenix) TV Mode now creates a default config file if one wasn't there already - makes it work from startup --- .../org/retroarch/browser/CoreSelection.java | 177 +---------------- .../retroarch/browser/MainMenuActivity.java | 180 ++++++++++++++++++ .../org/retroarch/browser/RetroTVMode.java | 34 +--- 3 files changed, 187 insertions(+), 204 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index f0ee1b3802..5040dae1b0 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -5,12 +5,9 @@ import org.retroarch.R; import java.io.*; import android.content.*; -import android.annotation.TargetApi; import android.app.*; import android.media.AudioManager; -import android.media.AudioTrack; import android.os.*; -import android.preference.PreferenceManager; import android.provider.Settings; import android.widget.*; import android.util.Log; @@ -27,39 +24,7 @@ public class CoreSelection extends Activity implements static private String libretro_path; static private final String TAG = "CoreSelection"; - private final double getDisplayRefreshRate() { - // Android is *very* likely to screw this up. - // It is rarely a good value to use, so make sure it's not - // completely wrong. Some phones return refresh rates that are completely bogus - // (like 0.3 Hz, etc), so try to be very conservative here. - final WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); - final Display display = wm.getDefaultDisplay(); - double rate = display.getRefreshRate(); - if (rate > 61.0 || rate < 58.0) - rate = 59.95; - return rate; - } - private final double getRefreshRate() { - double rate = 0; - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - String refresh_rate = prefs.getString("video_refresh_rate", ""); - if (!refresh_rate.isEmpty()) { - try { - rate = Double.parseDouble(refresh_rate); - } catch (NumberFormatException e) { - Log.e(TAG, "Cannot parse: " + refresh_rate + " as a double!"); - rate = getDisplayRefreshRate(); - } - } else { - rate = getDisplayRefreshRate(); - } - - Log.i(TAG, "Using refresh rate: " + rate + " Hz."); - return rate; - } - private String readCPUInfo() { String result = ""; @@ -109,7 +74,7 @@ public class CoreSelection extends Activity implements setTitle("Select Libretro core"); // Populate the list - final String modulePath = getApplicationInfo().nativeLibraryDir; + final String modulePath = MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir; final File[] libs = new File(modulePath).listFiles(); for (final File lib : libs) { String libName = lib.getName(); @@ -162,148 +127,12 @@ public class CoreSelection extends Activity implements myIntent = new Intent(this, ROMActivity.class); startActivityForResult(myIntent, ACTIVITY_LOAD_ROM); } - - private String getDefaultConfigPath() { - String internal = System.getenv("INTERNAL_STORAGE"); - String external = System.getenv("EXTERNAL_STORAGE"); - - if (external != null) { - String confPath = external + File.separator + "retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } else if (internal != null) { - String confPath = internal + File.separator + "retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } else { - String confPath = "/mnt/extsd/retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } - - if (internal != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) - return internal + File.separator + "retroarch.cfg"; - else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) - return external + File.separator + "retroarch.cfg"; - else if ((getApplicationInfo().dataDir) != null) - return (getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; - else // emergency fallback, all else failed - return "/mnt/sd/retroarch.cfg"; - } - - @TargetApi(17) - private int getLowLatencyOptimalSamplingRate() { - AudioManager manager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE); - return Integer.parseInt(manager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); - } - - private int getOptimalSamplingRate() { - int ret; - if (android.os.Build.VERSION.SDK_INT >= 17) - ret = getLowLatencyOptimalSamplingRate(); - else - ret = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC); - - Log.i(TAG, "Using sampling rate: " + ret + " Hz"); - return ret; - } - - private void updateConfigFile() { - ConfigFile config; - try { - config = new ConfigFile(new File(getDefaultConfigPath())); - } catch (IOException e) { - config = new ConfigFile(); - } - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); - config.setInt("audio_out_rate", getOptimalSamplingRate()); - config.setInt("audio_latency", prefs.getBoolean("audio_high_latency", false) ? 160 : 64); - config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); - config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true)); - config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true)); - config.setBoolean("savestate_auto_load", prefs.getBoolean("savestate_auto_load", true)); - config.setBoolean("savestate_auto_save", prefs.getBoolean("savestate_auto_save", false)); - config.setBoolean("rewind_enable", prefs.getBoolean("rewind_enable", false)); - config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true)); - config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true)); - config.setBoolean("input_debug_enable", prefs.getBoolean("input_debug_enable", false)); - config.setInt("input_back_behavior", Integer.valueOf(prefs.getString("input_back_behavior", "0"))); - config.setInt("input_autodetect_icade_profile_pad1", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad1", "0"))); - config.setInt("input_autodetect_icade_profile_pad2", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad2", "0"))); - config.setInt("input_autodetect_icade_profile_pad3", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad3", "0"))); - config.setInt("input_autodetect_icade_profile_pad4", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad4", "0"))); - - config.setDouble("video_refresh_rate", getRefreshRate()); - config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", true)); - - String aspect = prefs.getString("video_aspect_ratio", "auto"); - if (aspect.equals("full")) { - config.setBoolean("video_force_aspect", false); - } else if (aspect.equals("auto")) { - config.setBoolean("video_force_aspect", true); - config.setBoolean("video_force_aspect_auto", true); - config.setDouble("video_aspect_ratio", -1.0); - } else if (aspect.equals("square")) { - config.setBoolean("video_force_aspect", true); - config.setBoolean("video_force_aspect_auto", false); - config.setDouble("video_aspect_ratio", -1.0); - } else { - double aspect_ratio = Double.parseDouble(aspect); - config.setBoolean("video_force_aspect", true); - config.setDouble("video_aspect_ratio", aspect_ratio); - } - - config.setBoolean("video_scale_integer", prefs.getBoolean("video_scale_integer", false)); - - String shaderPath = prefs.getString("video_shader", ""); - config.setString("video_shader", shaderPath); - config.setBoolean("video_shader_enable", - prefs.getBoolean("video_shader_enable", false) - && new File(shaderPath).exists()); - - boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); - if (useOverlay) { - String overlayPath = prefs.getString("input_overlay", (getApplicationInfo().dataDir) + "/overlays/snes-landscape.cfg"); - config.setString("input_overlay", overlayPath); - config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); - } else { - config.setString("input_overlay", ""); - } - - config.setString("savefile_directory", prefs.getBoolean("savefile_directory_enable", false) ? - prefs.getString("savefile_directory", "") : ""); - config.setString("savestate_directory", prefs.getBoolean("savestate_directory_enable", false) ? - prefs.getString("savestate_directory", "") : ""); - config.setString("system_directory", prefs.getBoolean("system_directory_enable", false) ? - prefs.getString("system_directory", "") : ""); - - config.setBoolean("video_font_enable", prefs.getBoolean("video_font_enable", true)); - - for (int i = 1; i <= 4; i++) - { - final String btns[] = {"up", "down", "left", "right", "a", "b", "x", "y", "start", "select", "l", "r", "l2", "r2", "l3", "r3" }; - for (String b : btns) - { - String p = "input_player" + String.valueOf(i) + "_" + b + "_btn"; - config.setInt(p, prefs.getInt(p, 0)); - } - } - - String confPath = getDefaultConfigPath(); - try { - config.write(new File(confPath)); - } catch (IOException e) { - Log.e(TAG, "Failed to save config file to: " + confPath); - } - } protected void onActivityResult(int requestCode, int resultCode, Intent data) { Intent myIntent; String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); - updateConfigFile(); + MainMenuActivity.updateConfigFile(); switch (requestCode) { case ACTIVITY_LOAD_ROM: @@ -314,7 +143,7 @@ public class CoreSelection extends Activity implements myIntent = new Intent(this, RetroActivity.class); myIntent.putExtra("ROM", data.getStringExtra("PATH")); myIntent.putExtra("LIBRETRO", libretro_path); - myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); + myIntent.putExtra("CONFIGFILE", MainMenuActivity.getDefaultConfigPath()); myIntent.putExtra("IME", current_ime); startActivity(myIntent); finish(); diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 1e8f81284f..759d093c4e 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -11,24 +11,31 @@ import java.io.InputStream; import org.retroarch.R; +import android.annotation.TargetApi; import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetManager; import android.media.AudioManager; +import android.media.AudioTrack; import android.os.Bundle; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.util.Log; +import android.view.Display; +import android.view.WindowManager; import android.widget.Toast; public class MainMenuActivity extends PreferenceActivity { + private static MainMenuActivity instance = null; static private final String TAG = "MainMenu"; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + instance = this; addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); @@ -66,6 +73,179 @@ public class MainMenuActivity extends PreferenceActivity { } } + public static MainMenuActivity getInstance() { + return instance; + } + + private final double getDisplayRefreshRate() { + // Android is *very* likely to screw this up. + // It is rarely a good value to use, so make sure it's not + // completely wrong. Some phones return refresh rates that are completely bogus + // (like 0.3 Hz, etc), so try to be very conservative here. + final WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); + final Display display = wm.getDefaultDisplay(); + double rate = display.getRefreshRate(); + if (rate > 61.0 || rate < 58.0) + rate = 59.95; + return rate; + } + + public static final double getRefreshRate() { + double rate = 0; + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(MainMenuActivity.getInstance().getBaseContext()); + String refresh_rate = prefs.getString("video_refresh_rate", ""); + if (!refresh_rate.isEmpty()) { + try { + rate = Double.parseDouble(refresh_rate); + } catch (NumberFormatException e) { + Log.e(TAG, "Cannot parse: " + refresh_rate + " as a double!"); + rate = MainMenuActivity.getInstance().getDisplayRefreshRate(); + } + } else { + rate = MainMenuActivity.getInstance().getDisplayRefreshRate(); + } + + Log.i(TAG, "Using refresh rate: " + rate + " Hz."); + return rate; + } + + @TargetApi(17) + public static int getLowLatencyOptimalSamplingRate() { + AudioManager manager = (AudioManager)MainMenuActivity.getInstance().getApplicationContext().getSystemService(Context.AUDIO_SERVICE); + return Integer.parseInt(manager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); + } + + public static int getOptimalSamplingRate() { + int ret; + if (android.os.Build.VERSION.SDK_INT >= 17) + ret = getLowLatencyOptimalSamplingRate(); + else + ret = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC); + + Log.i(TAG, "Using sampling rate: " + ret + " Hz"); + return ret; + } + + public static String getDefaultConfigPath() { + String internal = System.getenv("INTERNAL_STORAGE"); + String external = System.getenv("EXTERNAL_STORAGE"); + + if (external != null) { + String confPath = external + File.separator + "retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } else if (internal != null) { + String confPath = internal + File.separator + "retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } else { + String confPath = "/mnt/extsd/retroarch.cfg"; + if (new File(confPath).exists()) + return confPath; + } + + if (internal != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + return internal + File.separator + "retroarch.cfg"; + else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + return external + File.separator + "retroarch.cfg"; + else if ((MainMenuActivity.getInstance().getApplicationInfo().dataDir) != null) + return (MainMenuActivity.getInstance().getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; + else // emergency fallback, all else failed + return "/mnt/sd/retroarch.cfg"; + } + + public static void updateConfigFile() { + ConfigFile config; + try { + config = new ConfigFile(new File(getDefaultConfigPath())); + } catch (IOException e) { + config = new ConfigFile(); + } + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainMenuActivity.getInstance().getBaseContext()); + config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); + config.setInt("audio_out_rate", MainMenuActivity.getOptimalSamplingRate()); + config.setInt("audio_latency", prefs.getBoolean("audio_high_latency", false) ? 160 : 64); + config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); + config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true)); + config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true)); + config.setBoolean("savestate_auto_load", prefs.getBoolean("savestate_auto_load", true)); + config.setBoolean("savestate_auto_save", prefs.getBoolean("savestate_auto_save", false)); + config.setBoolean("rewind_enable", prefs.getBoolean("rewind_enable", false)); + config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true)); + config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true)); + config.setBoolean("input_debug_enable", prefs.getBoolean("input_debug_enable", false)); + config.setInt("input_back_behavior", Integer.valueOf(prefs.getString("input_back_behavior", "0"))); + config.setInt("input_autodetect_icade_profile_pad1", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad1", "0"))); + config.setInt("input_autodetect_icade_profile_pad2", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad2", "0"))); + config.setInt("input_autodetect_icade_profile_pad3", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad3", "0"))); + config.setInt("input_autodetect_icade_profile_pad4", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad4", "0"))); + + config.setDouble("video_refresh_rate", MainMenuActivity.getRefreshRate()); + config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", true)); + + String aspect = prefs.getString("video_aspect_ratio", "auto"); + if (aspect.equals("full")) { + config.setBoolean("video_force_aspect", false); + } else if (aspect.equals("auto")) { + config.setBoolean("video_force_aspect", true); + config.setBoolean("video_force_aspect_auto", true); + config.setDouble("video_aspect_ratio", -1.0); + } else if (aspect.equals("square")) { + config.setBoolean("video_force_aspect", true); + config.setBoolean("video_force_aspect_auto", false); + config.setDouble("video_aspect_ratio", -1.0); + } else { + double aspect_ratio = Double.parseDouble(aspect); + config.setBoolean("video_force_aspect", true); + config.setDouble("video_aspect_ratio", aspect_ratio); + } + + config.setBoolean("video_scale_integer", prefs.getBoolean("video_scale_integer", false)); + + String shaderPath = prefs.getString("video_shader", ""); + config.setString("video_shader", shaderPath); + config.setBoolean("video_shader_enable", + prefs.getBoolean("video_shader_enable", false) + && new File(shaderPath).exists()); + + boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); + if (useOverlay) { + String overlayPath = prefs.getString("input_overlay", (MainMenuActivity.getInstance().getApplicationInfo().dataDir) + "/overlays/snes-landscape.cfg"); + config.setString("input_overlay", overlayPath); + config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); + } else { + config.setString("input_overlay", ""); + } + + config.setString("savefile_directory", prefs.getBoolean("savefile_directory_enable", false) ? + prefs.getString("savefile_directory", "") : ""); + config.setString("savestate_directory", prefs.getBoolean("savestate_directory_enable", false) ? + prefs.getString("savestate_directory", "") : ""); + config.setString("system_directory", prefs.getBoolean("system_directory_enable", false) ? + prefs.getString("system_directory", "") : ""); + + config.setBoolean("video_font_enable", prefs.getBoolean("video_font_enable", true)); + + for (int i = 1; i <= 4; i++) + { + final String btns[] = {"up", "down", "left", "right", "a", "b", "x", "y", "start", "select", "l", "r", "l2", "r2", "l3", "r3" }; + for (String b : btns) + { + String p = "input_player" + String.valueOf(i) + "_" + b + "_btn"; + config.setInt(p, prefs.getInt(p, 0)); + } + } + + String confPath = getDefaultConfigPath(); + try { + config.write(new File(confPath)); + } catch (IOException e) { + Log.e(TAG, "Failed to save config file to: " + confPath); + } + } + private byte[] loadAsset(String asset) throws IOException { String path = asset; InputStream stream = getAssets().open(path); diff --git a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java index e69445b5e9..23ffcfe30e 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java +++ b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java @@ -1,47 +1,21 @@ package org.retroarch.browser; -import java.io.File; - import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; public class RetroTVMode extends Activity { - private String getDefaultConfigPath() { - String internal = System.getenv("INTERNAL_STORAGE"); - String external = System.getenv("EXTERNAL_STORAGE"); - - if (external != null) { - String confPath = external + File.separator + "retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } else if (internal != null) { - String confPath = internal + File.separator + "retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } else { - String confPath = "/mnt/extsd/retroarch.cfg"; - if (new File(confPath).exists()) - return confPath; - } - - if (internal != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) - return internal + File.separator + "retroarch.cfg"; - else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) - return external + File.separator + "retroarch.cfg"; - else if ((getApplicationInfo().dataDir) != null) - return (getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; - else // emergency fallback, all else failed - return "/mnt/sd/retroarch.cfg"; - } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + MainMenuActivity.updateConfigFile(); + Intent myIntent = new Intent(this, RetroActivity.class); String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); - myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); + myIntent.putExtra("CONFIGFILE", MainMenuActivity.getDefaultConfigPath()); myIntent.putExtra("IME", current_ime); startActivity(myIntent); finish(); From 7236e51af06311057fdf7f2e14d196b0e213b5ca Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 14 Aug 2013 14:57:39 +0200 Subject: [PATCH 194/252] Clear out GL error on driver init for robustness. In case we used cached GL context, we'd error out if a single GL error has been generated. --- gfx/gl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 3810cd4373..9ed67c79b6 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1965,6 +1965,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo return NULL; } + glGetError(); // Clear out potential error flags incase we use cached context. + const char *vendor = (const char*)glGetString(GL_VENDOR); const char *renderer = (const char*)glGetString(GL_RENDERER); RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); From 4f70bdeab5c6805c0334bb124a8c75e7a438f9a0 Mon Sep 17 00:00:00 2001 From: meancoot Date: Wed, 14 Aug 2013 10:07:36 -0400 Subject: [PATCH 195/252] (Apple) Split platform specific code out of main.m --- apple/OSX/platform.h | 42 ++ apple/OSX/platform.m | 264 +++++++ apple/RetroArch/RetroArch_Apple.h | 76 +-- apple/RetroArch/main.m | 643 +----------------- apple/RetroArch_OSX.xcodeproj/project.pbxproj | 6 + apple/RetroArch_iOS.xcodeproj/project.pbxproj | 4 + apple/iOS/platform.h | 42 ++ apple/iOS/platform.m | 346 ++++++++++ apple/iOS/settings.m | 2 +- 9 files changed, 767 insertions(+), 658 deletions(-) create mode 100644 apple/OSX/platform.h create mode 100644 apple/OSX/platform.m create mode 100644 apple/iOS/platform.h create mode 100644 apple/iOS/platform.m diff --git a/apple/OSX/platform.h b/apple/OSX/platform.h new file mode 100644 index 0000000000..f858ade962 --- /dev/null +++ b/apple/OSX/platform.h @@ -0,0 +1,42 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2013 - Jason Fetters + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#ifndef __RARCH_OSX_PLATFORM_H +#define __RARCH_OSX_PLATFORM_H + +#import + +@interface RAGameView : NSOpenGLView + ++ (RAGameView*)get; +- (void)display; + +@end + +@interface RetroArch_OSX : NSObject +{ +@public + NSWindow IBOutlet *window; +} + ++ (RetroArch_OSX*)get; + +- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; +- (void)unloadingCore:(RAModuleInfo*)core; + +@end + +#endif diff --git a/apple/OSX/platform.m b/apple/OSX/platform.m new file mode 100644 index 0000000000..b15d053e14 --- /dev/null +++ b/apple/OSX/platform.m @@ -0,0 +1,264 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2013 - Jason Fetters + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include +#include + +#import "RetroArch_Apple.h" +#include "rarch_wrapper.h" +#include "../RetroArch/apple_input.h" + +// If USE_XATTR is defined any loaded file will get a com.RetroArch.Core extended attribute +// specifying which core was used to load. +//#define USE_XATTR + +#if defined(USE_XATTR) +#include "sys/xattr.h" +#endif + +#include "file.h" + +@interface RApplication : NSApplication +@end + +@implementation RApplication + +- (void)sendEvent:(NSEvent *)event +{ + [super sendEvent:event]; + + if (event.type == GSEVENT_TYPE_KEYDOWN || event.type == GSEVENT_TYPE_KEYUP) + apple_input_handle_key_event(event.keyCode, event.type == GSEVENT_TYPE_KEYDOWN); +} + +@end + +@implementation RetroArch_OSX +{ + NSWindow IBOutlet* _coreSelectSheet; + + bool _isTerminating; + bool _loaded; + bool _wantReload; + NSString* _file; + RAModuleInfo* _core; +} + ++ (RetroArch_OSX*)get +{ + return (RetroArch_OSX*)[[NSApplication sharedApplication] delegate]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + apple_platform = self; + _loaded = true; + + [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + + RAGameView.get.frame = [window.contentView bounds]; + [window.contentView setAutoresizesSubviews:YES]; + [window.contentView addSubview:RAGameView.get]; + [window makeFirstResponder:RAGameView.get]; + + // Create core select list + NSComboBox* cb = (NSComboBox*)[_coreSelectSheet.contentView viewWithTag:1]; + + for (RAModuleInfo* i in RAModuleInfo.getModules) + [cb addItemWithObjectValue:i]; + + if (cb.numberOfItems) + [cb selectItemAtIndex:0]; + else + apple_display_alert(@"No libretro cores were found.", @"RetroArch"); + + // Run RGUI if needed + if (!_wantReload) + apple_run_core(nil, 0); + else + [self chooseCore]; + + _wantReload = false; + + extern void osx_pad_init(); + osx_pad_init(); +} + +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication +{ + return YES; +} + +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender +{ + _isTerminating = true; + + if (apple_is_running) + apple_frontend_post_event(apple_event_basic_command, (void*)QUIT); + + return apple_is_running ? NSTerminateCancel : NSTerminateNow; +} + + +- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames +{ + if (filenames.count == 1 && filenames[0]) + { + _file = filenames[0]; + + if (!_loaded) + _wantReload = true; + else + [self chooseCore]; + + [sender replyToOpenOrPrint:NSApplicationDelegateReplySuccess]; + } + else + { + apple_display_alert(@"Cannot open multiple files", @"RetroArch"); + [sender replyToOpenOrPrint:NSApplicationDelegateReplyFailure]; + } +} + +- (void)openDocument:(id)sender +{ + NSOpenPanel* panel = [NSOpenPanel openPanel]; + [panel beginSheetModalForWindow:window completionHandler:^(NSInteger result) + { + [NSApplication.sharedApplication stopModal]; + + if (result == NSOKButton && panel.URL) + { + _file = panel.URL.path; + [self performSelector:@selector(chooseCore) withObject:nil afterDelay:.5f]; + } + }]; + [NSApplication.sharedApplication runModalForWindow:panel]; +} + +// This utility function will queue the _core and _file instance values for running. +// If the emulator thread is already running it will tell it to quit. +- (void)runCore +{ + _wantReload = apple_is_running; + + if (!apple_is_running) + apple_run_core(_core, _file.UTF8String); + else + apple_frontend_post_event(apple_event_basic_command, (void*)QUIT); +} + +- (void)chooseCore +{ +#ifdef USE_XATTR + char stored_name[PATH_MAX]; + if (getxattr(_file.UTF8String, "com.RetroArch.Core", stored_name, PATH_MAX, 0, 0) > 0) + { + for (RAModuleInfo* i in RAModuleInfo.getModules) + { + const char* core_name = i.path.lastPathComponent.UTF8String; + if (strcmp(core_name, stored_name) == 0) + { + _core = i; + [self runCore]; + return; + } + } + } +#endif + + [NSApplication.sharedApplication beginSheet:_coreSelectSheet modalForWindow:window modalDelegate:nil didEndSelector:nil contextInfo:nil]; + [NSApplication.sharedApplication runModalForWindow:_coreSelectSheet]; +} + +- (IBAction)coreWasChosen:(id)sender +{ + [NSApplication.sharedApplication stopModal]; + [NSApplication.sharedApplication endSheet:_coreSelectSheet returnCode:0]; + [_coreSelectSheet orderOut:self]; + + if (_isTerminating) + return; + + NSComboBox* cb = (NSComboBox*)[_coreSelectSheet.contentView viewWithTag:1]; + _core = (RAModuleInfo*)cb.objectValueOfSelectedItem; + + [self runCore]; +} + +#pragma mark RetroArch_Platform +- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file +{ + if (file) + { + [NSDocumentController.sharedDocumentController noteNewRecentDocumentURL:[NSURL fileURLWithPath:[NSString stringWithUTF8String:file]]]; + +#ifdef USE_XATTR + const char* core_name = core.path.lastPathComponent.UTF8String; + setxattr(file, "com.RetroArch.Core", core_name, strlen(core_name) + 1, 0, 0); +#endif + } +} + +- (void)unloadingCore:(RAModuleInfo*)core +{ + if (_isTerminating) + [NSApplication.sharedApplication terminate:nil]; + + if (_wantReload) + apple_run_core(_core, _file.UTF8String); + else if(apple_use_tv_mode) + apple_run_core(nil, 0); + else + [NSApplication.sharedApplication terminate:nil]; + + _wantReload = false; +} + +- (NSString*)retroarchConfigPath +{ + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + return [paths[0] stringByAppendingPathComponent:@"RetroArch/retroarch.cfg"]; +} + +- (NSString*)corePath +{ + return [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"Contents/Resources/modules"]; +} + +#pragma mark Menus +- (IBAction)showPreferences:(id)sender +{ + [[[NSWindowController alloc] initWithWindowNibName:@"Settings"] window]; +} + +- (IBAction)basicEvent:(id)sender +{ + if (apple_is_running) + apple_frontend_post_event(&apple_event_basic_command, (void*)((NSMenuItem*)sender).tag); +} + +- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo +{ + [NSApplication.sharedApplication stopModal]; +} + +@end + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +} + diff --git a/apple/RetroArch/RetroArch_Apple.h b/apple/RetroArch/RetroArch_Apple.h index 39096304d5..a714bb70c1 100644 --- a/apple/RetroArch/RetroArch_Apple.h +++ b/apple/RetroArch/RetroArch_Apple.h @@ -21,7 +21,8 @@ #import #import "RAModuleInfo.h" -void apple_run_core(RAModuleInfo* core, const char* file); +#define GSEVENT_TYPE_KEYDOWN 10 +#define GSEVENT_TYPE_KEYUP 11 @protocol RetroArch_Platform - (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; @@ -30,59 +31,29 @@ void apple_run_core(RAModuleInfo* core, const char* file); - (NSString*)corePath; @end +#ifdef IOS +#import "../iOS/platform.h" +#elif defined(OSX) +#import "../OSX/platform.h" +#endif + +extern bool apple_is_paused; +extern bool apple_is_running; +extern bool apple_use_tv_mode; +extern RAModuleInfo* apple_core; + extern id apple_platform; -#ifdef IOS +// main.m +enum basic_event_t { RESET = 1, LOAD_STATE = 2, SAVE_STATE = 3, QUIT = 4 }; +extern void apple_event_basic_command(void* userdata); +extern void apple_event_set_state_slot(void* userdata); +extern void apple_event_show_rgui(void* userdata); -// RAGameView.m -@interface RAGameView : UIViewController -+ (RAGameView*)get; -- (void)openPauseMenu; -- (void)closePauseMenu; -@end - -@interface RetroArch_iOS : UINavigationController - -+ (RetroArch_iOS*)get; - -- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; -- (void)unloadingCore:(RAModuleInfo*)core; -- (NSString*)retroarchConfigPath; - -- (void)refreshConfig; -- (void)refreshSystemConfig; - -@property (strong, nonatomic) NSString* documentsDirectory; // e.g. /var/mobile/Documents -@property (strong, nonatomic) NSString* systemDirectory; // e.g. /var/mobile/Documents/.RetroArch -@property (strong, nonatomic) NSString* systemConfigPath; // e.g. /var/mobile/Documents/.RetroArch/frontend.cfg - -@end - -#elif defined(OSX) - -#import - -@interface RAGameView : NSOpenGLView - -+ (RAGameView*)get; -- (void)display; - -@end - -@interface RetroArch_OSX : NSObject -{ -@public - NSWindow IBOutlet *window; -} - -+ (RetroArch_OSX*)get; - -- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; -- (void)unloadingCore:(RAModuleInfo*)core; - -@end - -#endif +extern void apple_refresh_config(); +extern void apple_enter_stasis(); +extern void apple_exit_stasis(); +extern void apple_run_core(RAModuleInfo* core, const char* file); // utility.m extern void apple_display_alert(NSString* message, NSString* title); @@ -90,4 +61,7 @@ extern void objc_clear_config_hack(); extern bool path_make_and_check_directory(const char* path, mode_t mode, int amode); extern NSString* objc_get_value_from_config(config_file_t* config, NSString* name, NSString* defaultValue); +// frontend/platform/platform_apple.c +extern void apple_frontend_post_event(void (*fn)(void*), void* userdata); + #endif diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index 3e00e3c919..7d9f392040 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -21,36 +21,14 @@ #include "apple_input.h" -// If USE_XATTR is defined any loaded file will get a com.RetroArch.Core extended attribute -// specifying which core was used to load. -//#define USE_XATTR - -#ifdef IOS -#import "views.h" -#include "../iOS/input/BTStack/btpad.h" -#include "../iOS/input/BTStack/btdynamic.h" -#include "../iOS/input/BTStack/btpad.h" -#elif defined(USE_XATTR) -#include "sys/xattr.h" -#endif - #include "file.h" -#define GSEVENT_TYPE_KEYDOWN 10 -#define GSEVENT_TYPE_KEYUP 11 - //#define HAVE_DEBUG_FILELOG static bool use_tv_mode; id apple_platform; -// From frontend/frontend_ios.c -extern void apple_frontend_post_event(void (*fn)(void*), void* userdata); - - -// These are based on the tag property of the button used to trigger the event -enum basic_event_t { RESET = 1, LOAD_STATE = 2, SAVE_STATE = 3, QUIT = 4 }; -static void event_basic_command(void* userdata) +void apple_event_basic_command(void* userdata) { switch ((enum basic_event_t)userdata) { @@ -61,12 +39,12 @@ static void event_basic_command(void* userdata) } } -static void event_set_state_slot(void* userdata) +void apple_event_set_state_slot(void* userdata) { g_extern.state_slot = (uint32_t)userdata; } -static void event_show_rgui(void* userdata) +void apple_event_show_rgui(void* userdata) { const bool in_menu = g_extern.lifecycle_mode_state & (1 << MODE_MENU); g_extern.lifecycle_mode_state &= ~(1ULL << (in_menu ? MODE_MENU : MODE_GAME)); @@ -82,7 +60,15 @@ static void event_reload_config(void* userdata) init_drivers(); } -static pthread_mutex_t stasis_mutex = PTHREAD_MUTEX_INITIALIZER; +void apple_refresh_config() +{ + if (apple_is_running) + apple_frontend_post_event(&event_reload_config, 0); + else + objc_clear_config_hack(); +} + +pthread_mutex_t stasis_mutex = PTHREAD_MUTEX_INITIALIZER; static void event_stasis(void* userdata) { @@ -94,18 +80,34 @@ static void event_stasis(void* userdata) init_drivers(); } +void apple_enter_stasis() +{ + if (apple_is_running) + { + pthread_mutex_lock(&stasis_mutex); + apple_frontend_post_event(event_stasis, 0); + } +} + +void apple_exit_stasis() +{ + if (apple_is_running) + pthread_mutex_unlock(&stasis_mutex); +} + #pragma mark EMULATION static pthread_t apple_retro_thread; -static bool apple_is_paused; -static bool apple_is_running; -static RAModuleInfo* apple_core; +bool apple_is_paused; +bool apple_is_running; +bool apple_use_tv_mode; +RAModuleInfo* apple_core; void* rarch_main_spring(void* args) { char** argv = args; uint32_t argc = 0; - while (argv && argv[argc ++]); + while (argv && argv[argc]) argc++; if (rarch_main(argc, argv)) { @@ -136,11 +138,15 @@ void apple_run_core(RAModuleInfo* core, const char* file) if (file && core) { argv[3] = "-L"; + argv[4] = core_path; strlcpy(core_path, apple_core.path.UTF8String, sizeof(core_path)); strlcpy(file_path, file, sizeof(file_path)); } else - argv[3] = 0; + { + argv[3] = "--menu"; + argv[4] = 0; + } if (pthread_create(&apple_retro_thread, 0, rarch_main_spring, argv)) { @@ -169,578 +175,3 @@ void apple_rarch_exited(void* result) if (use_tv_mode) apple_run_core(nil, 0); } - -// -// IOS -// -#pragma mark IOS -#ifdef IOS -// Input helpers: This is kept here because it needs objective-c -static void handle_touch_event(NSArray* touches) -{ - const int numTouches = [touches count]; - const float scale = [[UIScreen mainScreen] scale]; - - g_current_input_data.touch_count = 0; - - for(int i = 0; i != numTouches && g_current_input_data.touch_count < MAX_TOUCHES; i ++) - { - UITouch* touch = [touches objectAtIndex:i]; - const CGPoint coord = [touch locationInView:touch.view]; - - if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled) - { - g_current_input_data.touches[g_current_input_data.touch_count ].screen_x = coord.x * scale; - g_current_input_data.touches[g_current_input_data.touch_count ++].screen_y = coord.y * scale; - } - } -} - -@interface RApplication : UIApplication -@end - -@implementation RApplication - -- (void)sendEvent:(UIEvent *)event -{ - [super sendEvent:event]; - - if ([[event allTouches] count]) - handle_touch_event(event.allTouches.allObjects); - else if ([event respondsToSelector:@selector(_gsEvent)]) - { - // Stolen from: http://nacho4d-nacho4d.blogspot.com/2012/01/catching-keyboard-events-in-ios.html - uint8_t* eventMem = (uint8_t*)(void*)CFBridgingRetain([event performSelector:@selector(_gsEvent)]); - int eventType = eventMem ? *(int*)&eventMem[8] : 0; - - if (eventType == GSEVENT_TYPE_KEYDOWN || eventType == GSEVENT_TYPE_KEYUP) - apple_input_handle_key_event(*(uint16_t*)&eventMem[0x3C], eventType == GSEVENT_TYPE_KEYDOWN); - - CFBridgingRelease(eventMem); - } -} - -int main(int argc, char *argv[]) -{ - @autoreleasepool { -#if defined(HAVE_DEBUG_FILELOG) && (TARGET_IPHONE_SIMULATOR == 0) - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console_stdout.log"]; - freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a", stdout); - freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a", stderr); -#endif - return UIApplicationMain(argc, argv, NSStringFromClass([RApplication class]), NSStringFromClass([RetroArch_iOS class])); - } -} - -@end - -@implementation RetroArch_iOS -{ - UIWindow* _window; - - bool _isGameTop, _isRomList; - uint32_t _settingMenusInBackStack; - uint32_t _enabledOrientations; - - RAModuleInfo* _module; -} - -+ (RetroArch_iOS*)get -{ - return (RetroArch_iOS*)[[UIApplication sharedApplication] delegate]; -} - -// UIApplicationDelegate -- (void)applicationDidFinishLaunching:(UIApplication *)application -{ - apple_platform = self; - self.delegate = self; - - // Setup window - _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - _window.rootViewController = self; - [_window makeKeyAndVisible]; - - // Build system paths and test permissions - self.documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; - self.systemDirectory = [self.documentsDirectory stringByAppendingPathComponent:@".RetroArch"]; - self.systemConfigPath = [self.systemDirectory stringByAppendingPathComponent:@"frontend.cfg"]; - - if (!path_make_and_check_directory(self.documentsDirectory.UTF8String, 0755, R_OK | W_OK | X_OK)) - apple_display_alert([NSString stringWithFormat:@"Failed to create or access base directory: %@", self.documentsDirectory], 0); - else if (!path_make_and_check_directory(self.systemDirectory.UTF8String, 0755, R_OK | W_OK | X_OK)) - apple_display_alert([NSString stringWithFormat:@"Failed to create or access system directory: %@", self.systemDirectory], 0); - else - { - [self pushViewController:[RADirectoryList directoryListAtBrowseRoot] animated:YES]; - [self refreshSystemConfig]; - - if (use_tv_mode) - apple_run_core(nil, 0); - } - - // Warn if there are no cores present - if ([RAModuleInfo getModules].count == 0) - apple_display_alert(@"No libretro cores were found. You will not be able to play any games.", 0); -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - if (apple_is_running) - pthread_mutex_unlock(&stasis_mutex); -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - if (apple_is_running) - { - pthread_mutex_lock(&stasis_mutex); - apple_frontend_post_event(event_stasis, 0); - } -} - -// UINavigationControllerDelegate -- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated -{ - _isGameTop = [viewController isKindOfClass:[RAGameView class]]; - _isRomList = [viewController isKindOfClass:[RADirectoryList class]]; - - [[UIApplication sharedApplication] setStatusBarHidden:_isGameTop withAnimation:UIStatusBarAnimationNone]; - [[UIApplication sharedApplication] setIdleTimerDisabled:_isGameTop]; - - self.navigationBarHidden = _isGameTop; - [self setToolbarHidden:!_isRomList animated:YES]; - self.topViewController.navigationItem.rightBarButtonItem = [self createSettingsButton]; -} - -// UINavigationController: Never animate when pushing onto, or popping, an RAGameView -- (void)pushViewController:(UIViewController*)theView animated:(BOOL)animated -{ - if ([theView respondsToSelector:@selector(isSettingsView)] && [(id)theView isSettingsView]) - _settingMenusInBackStack ++; - - [super pushViewController:theView animated:animated && !_isGameTop]; -} - -- (UIViewController*)popViewControllerAnimated:(BOOL)animated -{ - if ([self.topViewController respondsToSelector:@selector(isSettingsView)] && [(id)self.topViewController isSettingsView]) - _settingMenusInBackStack --; - - return [super popViewControllerAnimated:animated && !_isGameTop]; -} - -// NOTE: This version only runs on iOS6 -- (NSUInteger)supportedInterfaceOrientations -{ - return _isGameTop ? _enabledOrientations - : UIInterfaceOrientationMaskAll; -} - -// NOTE: This version runs on iOS2-iOS5, but not iOS6 -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - if (_isGameTop) - switch (interfaceOrientation) - { - case UIInterfaceOrientationPortrait: - return (_enabledOrientations & UIInterfaceOrientationMaskPortrait); - case UIInterfaceOrientationPortraitUpsideDown: - return (_enabledOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); - case UIInterfaceOrientationLandscapeLeft: - return (_enabledOrientations & UIInterfaceOrientationMaskLandscapeLeft); - case UIInterfaceOrientationLandscapeRight: - return (_enabledOrientations & UIInterfaceOrientationMaskLandscapeRight); - } - - return YES; -} - - -#pragma mark RetroArch_Platform -- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file -{ - [self pushViewController:RAGameView.get animated:NO]; - [RASettingsList refreshModuleConfig:core]; - - btpad_set_inquiry_state(false); - - [self refreshSystemConfig]; -} - -- (void)unloadingCore:(RAModuleInfo*)core -{ - [self popToViewController:[RAGameView get] animated:NO]; - [self popViewControllerAnimated:NO]; - - btpad_set_inquiry_state(true); -} - -- (NSString*)retroarchConfigPath -{ - return [NSString stringWithFormat:@"%@/retroarch.cfg", self.systemDirectory]; -} - -- (NSString*)corePath -{ - return [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"modules"]; -} - -- (void)refreshConfig -{ - if (apple_is_running) - apple_frontend_post_event(&event_reload_config, 0); - else - objc_clear_config_hack(); -} - -- (void)refreshSystemConfig -{ - // Read load time settings - config_file_t* conf = config_file_new([self.systemConfigPath UTF8String]); - - if (conf) - { - // Get enabled orientations - static const struct { const char* setting; uint32_t orientation; } orientationSettings[4] = - { - { "ios_allow_portrait", UIInterfaceOrientationMaskPortrait }, - { "ios_allow_portrait_upside_down", UIInterfaceOrientationMaskPortraitUpsideDown }, - { "ios_allow_landscape_left", UIInterfaceOrientationMaskLandscapeLeft }, - { "ios_allow_landscape_right", UIInterfaceOrientationMaskLandscapeRight } - }; - - _enabledOrientations = 0; - - for (int i = 0; i < 4; i ++) - { - bool enabled = false; - bool found = config_get_bool(conf, orientationSettings[i].setting, &enabled); - - if (!found || enabled) - _enabledOrientations |= orientationSettings[i].orientation; - } - - // Setup bluetooth mode - NSString* btmode = objc_get_value_from_config(conf, @"ios_btmode", @"keyboard"); - apple_input_enable_icade([btmode isEqualToString:@"icade"]); - btstack_set_poweron([btmode isEqualToString:@"btstack"]); - - bool val; - use_tv_mode = config_get_bool(conf, "ios_tv_mode", & val) && val; - - config_file_free(conf); - } -} - -#pragma mark PAUSE MENU -- (UIBarButtonItem*)createSettingsButton -{ - if (_settingMenusInBackStack == 0) - return [[UIBarButtonItem alloc] - initWithTitle:@"Settings" - style:UIBarButtonItemStyleBordered - target:[RetroArch_iOS get] - action:@selector(showSystemSettings)]; - - else - return nil; -} - -- (IBAction)showPauseMenu:(id)sender -{ - if (apple_is_running && !apple_is_paused && _isGameTop) - { - apple_is_paused = true; - [[RAGameView get] openPauseMenu]; - - btpad_set_inquiry_state(true); - } -} - -- (IBAction)basicEvent:(id)sender -{ - if (apple_is_running) - apple_frontend_post_event(&event_basic_command, ((UIView*)sender).tag); - - [self closePauseMenu:sender]; -} - -- (IBAction)chooseState:(id)sender -{ - if (apple_is_running) - apple_frontend_post_event(event_set_state_slot, (void*)((UISegmentedControl*)sender).selectedSegmentIndex); -} - -- (IBAction)showRGUI:(id)sender -{ - if (apple_is_running) - apple_frontend_post_event(event_show_rgui, 0); - - [self closePauseMenu:sender]; -} - -- (IBAction)closePauseMenu:(id)sender -{ - [[RAGameView get] closePauseMenu]; - apple_is_paused = false; - - btpad_set_inquiry_state(false); -} - -- (IBAction)showSettings -{ - [self pushViewController:[[RASettingsList alloc] initWithModule:_module] animated:YES]; -} - -- (IBAction)showSystemSettings -{ - [self pushViewController:[RASystemSettingsList new] animated:YES]; -} - -@end - - -#endif - -// -// OSX -// -#pragma mark OSX -#ifdef OSX - -@interface RApplication : NSApplication -@end - -@implementation RApplication - -- (void)sendEvent:(NSEvent *)event -{ - [super sendEvent:event]; - - if (event.type == GSEVENT_TYPE_KEYDOWN || event.type == GSEVENT_TYPE_KEYUP) - apple_input_handle_key_event(event.keyCode, event.type == GSEVENT_TYPE_KEYDOWN); -} - -@end - -@implementation RetroArch_OSX -{ - NSWindow IBOutlet* _coreSelectSheet; - - bool _isTerminating; - bool _loaded; - bool _wantReload; - NSString* _file; - RAModuleInfo* _core; -} - -+ (RetroArch_OSX*)get -{ - return (RetroArch_OSX*)[[NSApplication sharedApplication] delegate]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification -{ - apple_platform = self; - _loaded = true; - - [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; - - RAGameView.get.frame = [window.contentView bounds]; - [window.contentView setAutoresizesSubviews:YES]; - [window.contentView addSubview:RAGameView.get]; - [window makeFirstResponder:RAGameView.get]; - - // Create core select list - NSComboBox* cb = (NSComboBox*)[_coreSelectSheet.contentView viewWithTag:1]; - - for (RAModuleInfo* i in RAModuleInfo.getModules) - [cb addItemWithObjectValue:i]; - - if (cb.numberOfItems) - [cb selectItemAtIndex:0]; - else - apple_display_alert(@"No libretro cores were found.", @"RetroArch"); - - // Run RGUI if needed - if (!_wantReload) - apple_run_core(nil, 0); - else - [self chooseCore]; - - _wantReload = false; - - extern void osx_pad_init(); - osx_pad_init(); -} - -- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication -{ - return YES; -} - -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender -{ - _isTerminating = true; - - if (apple_is_running) - apple_frontend_post_event(event_basic_command, (void*)QUIT); - - return apple_is_running ? NSTerminateCancel : NSTerminateNow; -} - - -- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames -{ - if (filenames.count == 1 && filenames[0]) - { - _file = filenames[0]; - - if (!_loaded) - _wantReload = true; - else - [self chooseCore]; - - [sender replyToOpenOrPrint:NSApplicationDelegateReplySuccess]; - } - else - { - apple_display_alert(@"Cannot open multiple files", @"RetroArch"); - [sender replyToOpenOrPrint:NSApplicationDelegateReplyFailure]; - } -} - -- (void)openDocument:(id)sender -{ - NSOpenPanel* panel = [NSOpenPanel openPanel]; - [panel beginSheetModalForWindow:window completionHandler:^(NSInteger result) - { - [NSApplication.sharedApplication stopModal]; - - if (result == NSOKButton && panel.URL) - { - _file = panel.URL.path; - [self performSelector:@selector(chooseCore) withObject:nil afterDelay:.5f]; - } - }]; - [NSApplication.sharedApplication runModalForWindow:panel]; -} - -// This utility function will queue the _core and _file instance values for running. -// If the emulator thread is already running it will tell it to quit. -- (void)runCore -{ - _wantReload = apple_is_running; - - if (!apple_is_running) - apple_run_core(_core, _file.UTF8String); - else - apple_frontend_post_event(event_basic_command, (void*)QUIT); -} - -- (void)chooseCore -{ -#ifdef USE_XATTR - char stored_name[PATH_MAX]; - if (getxattr(_file.UTF8String, "com.RetroArch.Core", stored_name, PATH_MAX, 0, 0) > 0) - { - for (RAModuleInfo* i in RAModuleInfo.getModules) - { - const char* core_name = i.path.lastPathComponent.UTF8String; - if (strcmp(core_name, stored_name) == 0) - { - _core = i; - [self runCore]; - return; - } - } - } -#endif - - [NSApplication.sharedApplication beginSheet:_coreSelectSheet modalForWindow:window modalDelegate:nil didEndSelector:nil contextInfo:nil]; - [NSApplication.sharedApplication runModalForWindow:_coreSelectSheet]; -} - -- (IBAction)coreWasChosen:(id)sender -{ - [NSApplication.sharedApplication stopModal]; - [NSApplication.sharedApplication endSheet:_coreSelectSheet returnCode:0]; - [_coreSelectSheet orderOut:self]; - - if (_isTerminating) - return; - - NSComboBox* cb = (NSComboBox*)[_coreSelectSheet.contentView viewWithTag:1]; - _core = (RAModuleInfo*)cb.objectValueOfSelectedItem; - - [self runCore]; -} - -#pragma mark RetroArch_Platform -- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file -{ - if (file) - { - [NSDocumentController.sharedDocumentController noteNewRecentDocumentURL:[NSURL fileURLWithPath:[NSString stringWithUTF8String:file]]]; - -#ifdef USE_XATTR - const char* core_name = core.path.lastPathComponent.UTF8String; - setxattr(file, "com.RetroArch.Core", core_name, strlen(core_name) + 1, 0, 0); -#endif - } -} - -- (void)unloadingCore:(RAModuleInfo*)core -{ - if (_isTerminating) - [NSApplication.sharedApplication terminate:nil]; - - if (_wantReload) - apple_run_core(_core, _file.UTF8String); - else if(use_tv_mode) - apple_run_core(nil, 0); - else - [NSApplication.sharedApplication terminate:nil]; - - _wantReload = false; -} - -- (NSString*)retroarchConfigPath -{ - NSArray* paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - return [paths[0] stringByAppendingPathComponent:@"RetroArch/retroarch.cfg"]; -} - -- (NSString*)corePath -{ - return [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"Contents/Resources/modules"]; -} - -#pragma mark Menus -- (IBAction)showPreferences:(id)sender -{ - [[[NSWindowController alloc] initWithWindowNibName:@"Settings"] window]; -} - -- (IBAction)basicEvent:(id)sender -{ - if (apple_is_running) - apple_frontend_post_event(&event_basic_command, (void*)((NSMenuItem*)sender).tag); -} - -- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo -{ - [NSApplication.sharedApplication stopModal]; -} - -@end - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **) argv); -} - -#endif diff --git a/apple/RetroArch_OSX.xcodeproj/project.pbxproj b/apple/RetroArch_OSX.xcodeproj/project.pbxproj index e4b16ceb4a..6a1101970c 100644 --- a/apple/RetroArch_OSX.xcodeproj/project.pbxproj +++ b/apple/RetroArch_OSX.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 9620F6651790004F001B3B81 /* Settings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9620F6641790004F001B3B81 /* Settings.xib */; }; 962EE0E2178B3DF6004224FF /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 962EE0E1178B3DF6004224FF /* IOKit.framework */; }; 96355CE31788E72A0010DBFA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96355CE21788E72A0010DBFA /* Cocoa.framework */; }; + 9646869817BBC14E00C5EA69 /* platform.m in Sources */ = {isa = PBXBuildFile; fileRef = 9646869617BBC14E00C5EA69 /* platform.m */; }; 967894931788ECDB00D6CA69 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9678948F1788ECDB00D6CA69 /* InfoPlist.strings */; }; 967894941788ECDB00D6CA69 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 967894911788ECDB00D6CA69 /* MainMenu.xib */; }; 967894961788ED1100D6CA69 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 967894951788ED1100D6CA69 /* main.m */; }; @@ -35,6 +36,8 @@ 96355CE51788E72A0010DBFA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 96355CE61788E72A0010DBFA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 96355CE71788E72A0010DBFA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 9646869617BBC14E00C5EA69 /* platform.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = platform.m; path = OSX/platform.m; sourceTree = SOURCE_ROOT; }; + 9646869717BBC14E00C5EA69 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = OSX/platform.h; sourceTree = SOURCE_ROOT; }; 9678948D1788ECCA00D6CA69 /* RetroArch-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "RetroArch-Info.plist"; path = "OSX/RetroArch-Info.plist"; sourceTree = SOURCE_ROOT; }; 967894901788ECDB00D6CA69 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = OSX/en.lproj/InfoPlist.strings; sourceTree = SOURCE_ROOT; }; 967894921788ECDB00D6CA69 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = OSX/en.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; }; @@ -109,6 +112,8 @@ 96355CE81788E72A0010DBFA /* RetroArch */ = { isa = PBXGroup; children = ( + 9646869617BBC14E00C5EA69 /* platform.m */, + 9646869717BBC14E00C5EA69 /* platform.h */, 9620F662178FD4D3001B3B81 /* settings.m */, 967894A01788F07D00D6CA69 /* griffin.c */, 967894971788F02600D6CA69 /* RAGameView.m */, @@ -214,6 +219,7 @@ 9678949F1788F02600D6CA69 /* utility.m in Sources */, 967894A11788F07D00D6CA69 /* griffin.c in Sources */, 9620F663178FD4D3001B3B81 /* settings.m in Sources */, + 9646869817BBC14E00C5EA69 /* platform.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/apple/RetroArch_iOS.xcodeproj/project.pbxproj b/apple/RetroArch_iOS.xcodeproj/project.pbxproj index 15081fd2eb..f94d43b805 100644 --- a/apple/RetroArch_iOS.xcodeproj/project.pbxproj +++ b/apple/RetroArch_iOS.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 96366C5516C9AC3300D64A22 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96366C5416C9AC3300D64A22 /* CoreAudio.framework */; }; 96366C5916C9ACF500D64A22 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96366C5816C9ACF500D64A22 /* AudioToolbox.framework */; }; 963F5AC816CC523B009BBD19 /* RAGameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 963F5AC516CC523B009BBD19 /* RAGameView.m */; }; + 9646869517BBBEAE00C5EA69 /* platform.m in Sources */ = {isa = PBXBuildFile; fileRef = 9646869417BBBEAE00C5EA69 /* platform.m */; }; 966B9CBD16E41E7A005B61E1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 966B9CB816E41E7A005B61E1 /* Default-568h@2x.png */; }; 966B9CBF16E41E7A005B61E1 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 966B9CB916E41E7A005B61E1 /* Default.png */; }; 966B9CC116E41E7A005B61E1 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 966B9CBA16E41E7A005B61E1 /* Default@2x.png */; }; @@ -49,6 +50,7 @@ 96366C5416C9AC3300D64A22 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 96366C5816C9ACF500D64A22 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 963F5AC516CC523B009BBD19 /* RAGameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAGameView.m; sourceTree = ""; }; + 9646869417BBBEAE00C5EA69 /* platform.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = platform.m; path = iOS/platform.m; sourceTree = SOURCE_ROOT; }; 966B9CB816E41E7A005B61E1 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 966B9CB916E41E7A005B61E1 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; 966B9CBA16E41E7A005B61E1 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; @@ -152,6 +154,7 @@ 96AFAE3316C1D4EA009DE44C /* RetroArch */ = { isa = PBXGroup; children = ( + 9646869417BBBEAE00C5EA69 /* platform.m */, 967894571788EAAE00D6CA69 /* browser.m */, 967894581788EAAE00D6CA69 /* RALogView.m */, 967894591788EAAE00D6CA69 /* settings.m */, @@ -305,6 +308,7 @@ 9678945B1788EAAE00D6CA69 /* browser.m in Sources */, 9678945C1788EAAE00D6CA69 /* RALogView.m in Sources */, 9678945D1788EAAE00D6CA69 /* settings.m in Sources */, + 9646869517BBBEAE00C5EA69 /* platform.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/apple/iOS/platform.h b/apple/iOS/platform.h new file mode 100644 index 0000000000..42c168884f --- /dev/null +++ b/apple/iOS/platform.h @@ -0,0 +1,42 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2013 - Jason Fetters + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#ifndef __RARCH_IOS_PLATFORM_H +#define __RARCH_IOS_PLATFORM_H + +@interface RAGameView : UIViewController ++ (RAGameView*)get; +- (void)openPauseMenu; +- (void)closePauseMenu; +@end + +@interface RetroArch_iOS : UINavigationController + ++ (RetroArch_iOS*)get; + +- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; +- (void)unloadingCore:(RAModuleInfo*)core; +- (NSString*)retroarchConfigPath; + +- (void)refreshSystemConfig; + +@property (strong, nonatomic) NSString* documentsDirectory; // e.g. /var/mobile/Documents +@property (strong, nonatomic) NSString* systemDirectory; // e.g. /var/mobile/Documents/.RetroArch +@property (strong, nonatomic) NSString* systemConfigPath; // e.g. /var/mobile/Documents/.RetroArch/frontend.cfg + +@end + +#endif \ No newline at end of file diff --git a/apple/iOS/platform.m b/apple/iOS/platform.m new file mode 100644 index 0000000000..74b6d5f16c --- /dev/null +++ b/apple/iOS/platform.m @@ -0,0 +1,346 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2013 - Jason Fetters + * + * RetroArch 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 Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch 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 RetroArch. + * If not, see . + */ + +#include +#include + +#import "RetroArch_Apple.h" +#include "rarch_wrapper.h" + +#include "../RetroArch/apple_input.h" + +#import "views.h" +#include "input/BTStack/btpad.h" +#include "input/BTStack/btdynamic.h" +#include "input/BTStack/btpad.h" + +#include "file.h" + +//#define HAVE_DEBUG_FILELOG + +// Input helpers: This is kept here because it needs objective-c +static void handle_touch_event(NSArray* touches) +{ + const int numTouches = [touches count]; + const float scale = [[UIScreen mainScreen] scale]; + + g_current_input_data.touch_count = 0; + + for(int i = 0; i != numTouches && g_current_input_data.touch_count < MAX_TOUCHES; i ++) + { + UITouch* touch = [touches objectAtIndex:i]; + const CGPoint coord = [touch locationInView:touch.view]; + + if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled) + { + g_current_input_data.touches[g_current_input_data.touch_count ].screen_x = coord.x * scale; + g_current_input_data.touches[g_current_input_data.touch_count ++].screen_y = coord.y * scale; + } + } +} + +@interface RApplication : UIApplication +@end + +@implementation RApplication + +- (void)sendEvent:(UIEvent *)event +{ + [super sendEvent:event]; + + if ([[event allTouches] count]) + handle_touch_event(event.allTouches.allObjects); + else if ([event respondsToSelector:@selector(_gsEvent)]) + { + // Stolen from: http://nacho4d-nacho4d.blogspot.com/2012/01/catching-keyboard-events-in-ios.html + uint8_t* eventMem = (uint8_t*)(void*)CFBridgingRetain([event performSelector:@selector(_gsEvent)]); + int eventType = eventMem ? *(int*)&eventMem[8] : 0; + + if (eventType == GSEVENT_TYPE_KEYDOWN || eventType == GSEVENT_TYPE_KEYUP) + apple_input_handle_key_event(*(uint16_t*)&eventMem[0x3C], eventType == GSEVENT_TYPE_KEYDOWN); + + CFBridgingRelease(eventMem); + } +} + +@end + +@implementation RetroArch_iOS +{ + UIWindow* _window; + + bool _isGameTop, _isRomList; + uint32_t _settingMenusInBackStack; + uint32_t _enabledOrientations; + + RAModuleInfo* _module; +} + ++ (RetroArch_iOS*)get +{ + return (RetroArch_iOS*)[[UIApplication sharedApplication] delegate]; +} + +#pragma mark LIFECYCLE (UIApplicationDelegate) +- (void)applicationDidFinishLaunching:(UIApplication *)application +{ + apple_platform = self; + self.delegate = self; + + // Setup window + _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + _window.rootViewController = self; + [_window makeKeyAndVisible]; + + // Build system paths and test permissions + self.documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; + self.systemDirectory = [self.documentsDirectory stringByAppendingPathComponent:@".RetroArch"]; + self.systemConfigPath = [self.systemDirectory stringByAppendingPathComponent:@"frontend.cfg"]; + + if (!path_make_and_check_directory(self.documentsDirectory.UTF8String, 0755, R_OK | W_OK | X_OK)) + apple_display_alert([NSString stringWithFormat:@"Failed to create or access base directory: %@", self.documentsDirectory], 0); + else if (!path_make_and_check_directory(self.systemDirectory.UTF8String, 0755, R_OK | W_OK | X_OK)) + apple_display_alert([NSString stringWithFormat:@"Failed to create or access system directory: %@", self.systemDirectory], 0); + else + { + [self pushViewController:[RADirectoryList directoryListAtBrowseRoot] animated:YES]; + [self refreshSystemConfig]; + + if (apple_use_tv_mode) + apple_run_core(nil, 0); + } + + // Warn if there are no cores present + if ([RAModuleInfo getModules].count == 0) + apple_display_alert(@"No libretro cores were found. You will not be able to play any games.", 0); +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + apple_enter_stasis(); +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + apple_exit_stasis(); +} + +// UINavigationControllerDelegate +- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated +{ + _isGameTop = [viewController isKindOfClass:[RAGameView class]]; + _isRomList = [viewController isKindOfClass:[RADirectoryList class]]; + + [[UIApplication sharedApplication] setStatusBarHidden:_isGameTop withAnimation:UIStatusBarAnimationNone]; + [[UIApplication sharedApplication] setIdleTimerDisabled:_isGameTop]; + + self.navigationBarHidden = _isGameTop; + [self setToolbarHidden:!_isRomList animated:YES]; + self.topViewController.navigationItem.rightBarButtonItem = [self createSettingsButton]; +} + +// UINavigationController: Never animate when pushing onto, or popping, an RAGameView +- (void)pushViewController:(UIViewController*)theView animated:(BOOL)animated +{ + if ([theView respondsToSelector:@selector(isSettingsView)] && [(id)theView isSettingsView]) + _settingMenusInBackStack ++; + + [super pushViewController:theView animated:animated && !_isGameTop]; +} + +- (UIViewController*)popViewControllerAnimated:(BOOL)animated +{ + if ([self.topViewController respondsToSelector:@selector(isSettingsView)] && [(id)self.topViewController isSettingsView]) + _settingMenusInBackStack --; + + return [super popViewControllerAnimated:animated && !_isGameTop]; +} + +// NOTE: This version only runs on iOS6 +- (NSUInteger)supportedInterfaceOrientations +{ + return _isGameTop ? _enabledOrientations + : UIInterfaceOrientationMaskAll; +} + +// NOTE: This version runs on iOS2-iOS5, but not iOS6 +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + if (_isGameTop) + switch (interfaceOrientation) + { + case UIInterfaceOrientationPortrait: + return (_enabledOrientations & UIInterfaceOrientationMaskPortrait); + case UIInterfaceOrientationPortraitUpsideDown: + return (_enabledOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); + case UIInterfaceOrientationLandscapeLeft: + return (_enabledOrientations & UIInterfaceOrientationMaskLandscapeLeft); + case UIInterfaceOrientationLandscapeRight: + return (_enabledOrientations & UIInterfaceOrientationMaskLandscapeRight); + } + + return YES; +} + + +#pragma mark RetroArch_Platform +- (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file +{ + [self pushViewController:RAGameView.get animated:NO]; + [RASettingsList refreshModuleConfig:core]; + + btpad_set_inquiry_state(false); + + [self refreshSystemConfig]; +} + +- (void)unloadingCore:(RAModuleInfo*)core +{ + [self popToViewController:[RAGameView get] animated:NO]; + [self popViewControllerAnimated:NO]; + + btpad_set_inquiry_state(true); +} + +- (NSString*)retroarchConfigPath +{ + return [NSString stringWithFormat:@"%@/retroarch.cfg", self.systemDirectory]; +} + +- (NSString*)corePath +{ + return [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"modules"]; +} + +#pragma mark FRONTEND CONFIG +- (void)refreshSystemConfig +{ + // Read load time settings + config_file_t* conf = config_file_new([self.systemConfigPath UTF8String]); + + if (conf) + { + // Get enabled orientations + static const struct { const char* setting; uint32_t orientation; } orientationSettings[4] = + { + { "ios_allow_portrait", UIInterfaceOrientationMaskPortrait }, + { "ios_allow_portrait_upside_down", UIInterfaceOrientationMaskPortraitUpsideDown }, + { "ios_allow_landscape_left", UIInterfaceOrientationMaskLandscapeLeft }, + { "ios_allow_landscape_right", UIInterfaceOrientationMaskLandscapeRight } + }; + + _enabledOrientations = 0; + + for (int i = 0; i < 4; i ++) + { + bool enabled = false; + bool found = config_get_bool(conf, orientationSettings[i].setting, &enabled); + + if (!found || enabled) + _enabledOrientations |= orientationSettings[i].orientation; + } + + // Setup bluetooth mode + NSString* btmode = objc_get_value_from_config(conf, @"ios_btmode", @"keyboard"); + apple_input_enable_icade([btmode isEqualToString:@"icade"]); + btstack_set_poweron([btmode isEqualToString:@"btstack"]); + + bool val; + apple_use_tv_mode = config_get_bool(conf, "ios_tv_mode", & val) && val; + + config_file_free(conf); + } +} + +#pragma mark PAUSE MENU +- (UIBarButtonItem*)createSettingsButton +{ + if (_settingMenusInBackStack == 0) + return [[UIBarButtonItem alloc] + initWithTitle:@"Settings" + style:UIBarButtonItemStyleBordered + target:[RetroArch_iOS get] + action:@selector(showSystemSettings)]; + + else + return nil; +} + +- (IBAction)showPauseMenu:(id)sender +{ + if (apple_is_running && !apple_is_paused && _isGameTop) + { + apple_is_paused = true; + [[RAGameView get] openPauseMenu]; + + btpad_set_inquiry_state(true); + } +} + +- (IBAction)basicEvent:(id)sender +{ + if (apple_is_running) + apple_frontend_post_event(&apple_event_basic_command, ((UIView*)sender).tag); + + [self closePauseMenu:sender]; +} + +- (IBAction)chooseState:(id)sender +{ + if (apple_is_running) + apple_frontend_post_event(apple_event_set_state_slot, (void*)((UISegmentedControl*)sender).selectedSegmentIndex); +} + +- (IBAction)showRGUI:(id)sender +{ + if (apple_is_running) + apple_frontend_post_event(apple_event_show_rgui, 0); + + [self closePauseMenu:sender]; +} + +- (IBAction)closePauseMenu:(id)sender +{ + [[RAGameView get] closePauseMenu]; + apple_is_paused = false; + + btpad_set_inquiry_state(false); +} + +- (IBAction)showSettings +{ + [self pushViewController:[[RASettingsList alloc] initWithModule:_module] animated:YES]; +} + +- (IBAction)showSystemSettings +{ + [self pushViewController:[RASystemSettingsList new] animated:YES]; +} + +@end + +int main(int argc, char *argv[]) +{ + @autoreleasepool { +#if defined(HAVE_DEBUG_FILELOG) && (TARGET_IPHONE_SIMULATOR == 0) + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console_stdout.log"]; + freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a", stdout); + freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a", stderr); +#endif + return UIApplicationMain(argc, argv, NSStringFromClass([RApplication class]), NSStringFromClass([RetroArch_iOS class])); + } +} diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index 797fe4c7ce..b386204a4c 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -345,7 +345,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) config_file_free(config); } - [[RetroArch_iOS get] refreshConfig]; + apple_refresh_config(); } } From 7d6b4cdd268793155e6b412cab4e6c83187e337f Mon Sep 17 00:00:00 2001 From: meancoot Date: Wed, 14 Aug 2013 12:50:31 -0400 Subject: [PATCH 196/252] (iOS) Bring back per-core configurations --- apple/OSX/platform.m | 2 +- apple/RetroArch/RAModuleInfo.h | 8 ++++ apple/RetroArch/RAModuleInfo.m | 34 +++++++++++++ apple/RetroArch/RetroArch_Apple.h | 3 +- apple/RetroArch/main.m | 2 +- apple/iOS/platform.m | 6 +-- apple/iOS/settings.m | 80 +++++++++++++++++++++++++++---- 7 files changed, 119 insertions(+), 16 deletions(-) diff --git a/apple/OSX/platform.m b/apple/OSX/platform.m index b15d053e14..09580ca852 100644 --- a/apple/OSX/platform.m +++ b/apple/OSX/platform.m @@ -230,7 +230,7 @@ - (NSString*)retroarchConfigPath { NSArray* paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - return [paths[0] stringByAppendingPathComponent:@"RetroArch/retroarch.cfg"]; + return [paths[0] stringByAppendingPathComponent:@"RetroArch"]; } - (NSString*)corePath diff --git a/apple/RetroArch/RAModuleInfo.h b/apple/RetroArch/RAModuleInfo.h index 5370b97f6a..063143a5cb 100644 --- a/apple/RetroArch/RAModuleInfo.h +++ b/apple/RetroArch/RAModuleInfo.h @@ -27,10 +27,18 @@ @property core_info_t* info; @property config_file_t* data; @property (strong) NSString* description; +@property (strong) NSString* customConfigPath; + (NSArray*)getModules; - (bool)supportsFileAtPath:(NSString*)path; ++ (NSString*)globalConfigPath; + +- (void)createCustomConfig; +- (void)deleteCustomConfig; +- (bool)hasCustomConfig; +- (NSString*)configPath; + @end #endif diff --git a/apple/RetroArch/RAModuleInfo.m b/apple/RetroArch/RAModuleInfo.m index f4ffe70784..bd148684bb 100644 --- a/apple/RetroArch/RAModuleInfo.m +++ b/apple/RetroArch/RAModuleInfo.m @@ -44,6 +44,9 @@ static core_info_list_t* coreList; newInfo.data = core->data; newInfo.description = [NSString stringWithUTF8String:core->display_name]; + NSString* baseName = newInfo.path.lastPathComponent.stringByDeletingPathExtension; + newInfo.customConfigPath = [NSString stringWithFormat:@"%@/%@.cfg", apple_platform.retroarchConfigPath, baseName]; + [moduleList addObject:newInfo]; } @@ -70,6 +73,37 @@ static core_info_list_t* coreList; return does_core_support_file(self.info, path.UTF8String); } ++ (NSString*)globalConfigPath +{ + static NSString* path; + if (!path) + path = [NSString stringWithFormat:@"%@/retroarch.cfg", apple_platform.retroarchConfigPath]; + + return path; +} + +- (void)createCustomConfig +{ + if (!self.hasCustomConfig) + [NSFileManager.defaultManager copyItemAtPath:RAModuleInfo.globalConfigPath toPath:self.customConfigPath error:nil]; +} + +- (void)deleteCustomConfig +{ + if (self.hasCustomConfig) + [NSFileManager.defaultManager removeItemAtPath:self.customConfigPath error:nil]; +} + +- (bool)hasCustomConfig +{ + return path_file_exists(self.customConfigPath.UTF8String); +} + +- (NSString*)configPath +{ + return self.hasCustomConfig ? self.customConfigPath : RAModuleInfo.globalConfigPath; +} + @end #ifdef IOS diff --git a/apple/RetroArch/RetroArch_Apple.h b/apple/RetroArch/RetroArch_Apple.h index a714bb70c1..90dccbb0da 100644 --- a/apple/RetroArch/RetroArch_Apple.h +++ b/apple/RetroArch/RetroArch_Apple.h @@ -27,7 +27,8 @@ @protocol RetroArch_Platform - (void)loadingCore:(RAModuleInfo*)core withFile:(const char*)file; - (void)unloadingCore:(RAModuleInfo*)core; -- (NSString*)retroarchConfigPath; + +- (NSString*)retroarchConfigPath; // < This returns the directory that contains retroarch.cfg and other custom configs - (NSString*)corePath; @end diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index 7d9f392040..3680400c9d 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -133,7 +133,7 @@ void apple_run_core(RAModuleInfo* core, const char* file) static const char* argv[] = { "retroarch", "-c", config_path, "-L", core_path, file_path, 0 }; - strlcpy(config_path, apple_platform.retroarchConfigPath.UTF8String, sizeof(config_path)); + strlcpy(config_path, apple_core.configPath.UTF8String, sizeof(config_path)); if (file && core) { diff --git a/apple/iOS/platform.m b/apple/iOS/platform.m index 74b6d5f16c..1642e00189 100644 --- a/apple/iOS/platform.m +++ b/apple/iOS/platform.m @@ -84,8 +84,6 @@ static void handle_touch_event(NSArray* touches) bool _isGameTop, _isRomList; uint32_t _settingMenusInBackStack; uint32_t _enabledOrientations; - - RAModuleInfo* _module; } + (RetroArch_iOS*)get @@ -216,7 +214,7 @@ static void handle_touch_event(NSArray* touches) - (NSString*)retroarchConfigPath { - return [NSString stringWithFormat:@"%@/retroarch.cfg", self.systemDirectory]; + return self.systemDirectory; } - (NSString*)corePath @@ -321,7 +319,7 @@ static void handle_touch_event(NSArray* touches) - (IBAction)showSettings { - [self pushViewController:[[RASettingsList alloc] initWithModule:_module] animated:YES]; + [self pushViewController:[[RASettingsList alloc] initWithModule:apple_core] animated:YES]; } - (IBAction)showSystemSettings diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index b386204a4c..af5a4cbc06 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -47,6 +47,8 @@ enum SettingTypes double rangeMin; // < The mininum value of a range setting double rangeMax; // < The maximum value of a range setting + + void (^reload)(RASettingData* action, id userdata); } @end @@ -187,10 +189,11 @@ static RASettingData* aspect_setting(config_file_t* config, NSString* label) return result; } -static RASettingData* custom_action(NSString* action, NSString* value, id data) +static RASettingData* custom_action(NSString* action, NSString* value, id data, void (^reload_func)(RASettingData* action, id userdata)) { RASettingData* result = [[RASettingData alloc] initWithType:CustomAction label:action name:nil]; result->value = value; + result->reload = reload_func; if (data != nil) objc_setAssociatedObject(result, "USERDATA", data, OBJC_ASSOCIATION_RETAIN_NONATOMIC); @@ -252,7 +255,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (id)initWithModule:(RAModuleInfo*)module { _module = module; - _configPath = RetroArch_iOS.get.retroarchConfigPath; + _configPath = _module ? _module.configPath : RAModuleInfo.globalConfigPath; config_file_t* config = config_file_new([_configPath UTF8String]); @@ -261,7 +264,8 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) NSArray* settings = [NSArray arrayWithObjects: [NSArray arrayWithObjects:@"Core", - custom_action(@"Core Info", nil, nil), + custom_action(@"Core Info", nil, nil, 0), + _module.hasCustomConfig ? custom_action(@"Delete Custom Config", nil, nil, 0) : nil, nil], [NSArray arrayWithObjects:@"Video", @@ -353,6 +357,12 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { if ([@"Core Info" isEqualToString:setting->label]) [[RetroArch_iOS get] pushViewController:[[RAModuleInfoList alloc] initWithModuleInfo:_module] animated:YES]; + else if([@"Delete Custom Config" isEqualToString:setting->label]) + { + [_module deleteCustomConfig]; + _cancelSave = true; + [self.navigationController popViewControllerAnimated:YES]; + } } @end @@ -361,6 +371,20 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (id)init { config_file_t* config = config_file_new([[RetroArch_iOS get].systemConfigPath UTF8String]); + + NSMutableArray* modules = [NSMutableArray array]; + [modules addObject:@"Cores"]; + [modules addObject:custom_action(@"Global Core Config", nil, nil, 0)]; + + NSArray* moduleList = [RAModuleInfo getModules]; + for (RAModuleInfo* i in moduleList) + { + [modules addObject:custom_action(i.description, nil, i, ^(RASettingData* action, RAModuleInfo* userdata) + { + action->value = userdata.hasCustomConfig ? @"[Custom]" : @"[Global]"; + })]; + } + NSArray* bluetoothOptions = [NSArray arrayWithObjects:@"keyboard", @"Keyboard", @"icade", @"iCade Device", @@ -369,7 +393,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) NSArray* settings = [NSArray arrayWithObjects: [NSArray arrayWithObjects:@"Frontend", - custom_action(@"Diagnostic Log", nil, nil), + custom_action(@"Diagnostic Log", nil, nil, 0), boolean_setting(config, @"ios_tv_mode", @"TV Mode", @"false"), nil], [NSArray arrayWithObjects:@"Bluetooth", @@ -381,9 +405,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) boolean_setting(config, @"ios_allow_landscape_left", @"Landscape Left", @"true"), boolean_setting(config, @"ios_allow_landscape_right", @"Landscape Right", @"true"), nil], - [NSArray arrayWithObjects:@"Cores", - custom_action(@"Core Configuration", nil, nil), - nil], + modules, nil ]; @@ -417,8 +439,45 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) [[RetroArch_iOS get] pushViewController:[RALogView new] animated:YES]; else if ([@"Enable BTstack" isEqualToString:setting->label]) btstack_set_poweron([setting->value isEqualToString:@"true"]); - else if([@"Core Configuration" isEqualToString:setting->label]) + else if([@"Global Core Config" isEqualToString:setting->label]) [RetroArch_iOS.get pushViewController:[[RASettingsList alloc] initWithModule:nil] animated:YES]; + else + { + RAModuleInfo* data = (RAModuleInfo*)objc_getAssociatedObject(setting, "USERDATA"); + if (data) + { + if (!data.hasCustomConfig) + { + UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"RetroArch" + message:@"No custom configuration for this core exists, " + "would you like to create one?" + delegate:self + cancelButtonTitle:@"No" + otherButtonTitles:@"Yes", nil]; + objc_setAssociatedObject(alert, "MODULE", data, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [alert show]; + } + else + [RetroArch_iOS.get pushViewController:[[RASettingsList alloc] initWithModule:data] animated:YES]; + } + } +} + +- (void)alertView:(UIAlertView*)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex +{ + RAModuleInfo* data = (RAModuleInfo*)objc_getAssociatedObject(alertView, "MODULE"); + + if (data) + { + if (buttonIndex == alertView.firstOtherButtonIndex) + { + [data createCustomConfig]; + [self.tableView reloadData]; + } + + [RetroArch_iOS.get pushViewController:[[RASettingsList alloc] initWithModule:data] animated:YES]; + } + } @end @@ -613,7 +672,10 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"default"]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } - + + if (setting->reload) + setting->reload(setting, objc_getAssociatedObject(setting, "USERDATA")); + cell.textLabel.text = setting->label; if (setting->type == ButtonSetting) From 1eb78a94814a2ee91393e867eec00259d045ddfd Mon Sep 17 00:00:00 2001 From: meancoot Date: Wed, 14 Aug 2013 13:48:57 -0400 Subject: [PATCH 197/252] (Apple) Fix issue when loading RGUI with the dummy core --- apple/RetroArch/main.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index 3680400c9d..cb425a37b3 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -132,8 +132,11 @@ void apple_run_core(RAModuleInfo* core, const char* file) static char file_path[PATH_MAX]; static const char* argv[] = { "retroarch", "-c", config_path, "-L", core_path, file_path, 0 }; - - strlcpy(config_path, apple_core.configPath.UTF8String, sizeof(config_path)); + + if (apple_core) + strlcpy(config_path, apple_core.configPath.UTF8String, sizeof(config_path)); + else + strlcpy(config_path, RAModuleInfo.globalConfigPath.UTF8String, sizeof(config_path)); if (file && core) { From b0799be6ba58a0d2be97c9c44938322965f20ad1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 14 Aug 2013 22:17:21 +0200 Subject: [PATCH 198/252] (Android Phoenix) Set default libretro path (for TV Mode) --- .../org/retroarch/browser/CoreSelection.java | 28 ++----------------- .../retroarch/browser/MainMenuActivity.java | 27 ++++++++++++------ 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 5040dae1b0..4853aa177b 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -23,30 +23,6 @@ public class CoreSelection extends Activity implements static private final int ACTIVITY_LOAD_ROM = 0; static private String libretro_path; static private final String TAG = "CoreSelection"; - - - private String readCPUInfo() { - String result = ""; - - try { - BufferedReader br = new BufferedReader(new InputStreamReader( - new FileInputStream("/proc/cpuinfo"))); - - String line; - while ((line = br.readLine()) != null) - result += line + "\n"; - br.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } - return result; - } - - private boolean cpuInfoIsNeon(String info) { - return info.contains("neon"); - } - - @Override public void onCreate(Bundle savedInstanceState) { @@ -60,8 +36,8 @@ public class CoreSelection extends Activity implements Log.e(TAG, "Failed to load libretro_cores.cfg from assets."); } - String cpuInfo = readCPUInfo(); - boolean cpuIsNeon = cpuInfoIsNeon(cpuInfo); + String cpuInfo = MainMenuActivity.readCPUInfo(); + boolean cpuIsNeon = cpuInfo.contains("neon"); setContentView(R.layout.line_list); diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 759d093c4e..395bd33bfd 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -1,13 +1,6 @@ package org.retroarch.browser; -import java.io.BufferedOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import org.retroarch.R; @@ -110,6 +103,23 @@ public class MainMenuActivity extends PreferenceActivity { return rate; } + public static String readCPUInfo() { + String result = ""; + + try { + BufferedReader br = new BufferedReader(new InputStreamReader( + new FileInputStream("/proc/cpuinfo"))); + + String line; + while ((line = br.readLine()) != null) + result += line + "\n"; + br.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + return result; + } + @TargetApi(17) public static int getLowLatencyOptimalSamplingRate() { AudioManager manager = (AudioManager)MainMenuActivity.getInstance().getApplicationContext().getSystemService(Context.AUDIO_SERVICE); @@ -164,6 +174,7 @@ public class MainMenuActivity extends PreferenceActivity { } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainMenuActivity.getInstance().getBaseContext()); + config.setString("libretro_path", MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir); config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); config.setInt("audio_out_rate", MainMenuActivity.getOptimalSamplingRate()); config.setInt("audio_latency", prefs.getBoolean("audio_high_latency", false) ? 160 : 64); From 2b614c952e37500b6fe415b8fdf04ef63909e2bc Mon Sep 17 00:00:00 2001 From: meancoot Date: Wed, 14 Aug 2013 17:38:32 -0400 Subject: [PATCH 199/252] (iOS) Put the file icon back; the file lists look odd with just a directory icon --- apple/iOS/browser.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/iOS/browser.m b/apple/iOS/browser.m index 5f70ed1d9a..62b2808745 100644 --- a/apple/iOS/browser.m +++ b/apple/iOS/browser.m @@ -155,7 +155,7 @@ cell.imageView.image = [UIImage imageNamed:@"ic_dir"]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } else { - cell.imageView.image = nil; + cell.imageView.image = [UIImage imageNamed:@"ic_file"]; cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; } From 6de6a793ab90de60af5aa06efdb89bdf6d1b81ee Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 00:12:35 +0200 Subject: [PATCH 200/252] (Android Phoenix) Include popup about asset extraction Bump up to version 0.9.9.5 --- .../src/org/retroarch/browser/MainMenuActivity.java | 12 ++++++++++-- general.h | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 395bd33bfd..008c609073 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -49,9 +49,9 @@ public class MainMenuActivity extends PreferenceActivity { if (!detectDevice(false)) { - AlertDialog.Builder alert = new AlertDialog.Builder(this) + AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Welcome to RetroArch") - .setMessage("This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted.\n\nNOTE: Advanced users who want to finetune for the best possible audio/video experience should use static synchronization and turn off threaded video. Be aware that this is hard to configure right and might result in unpleasant audio crackles when it has been configured wrong.\n\nThreaded video should work fine on most devices, but applies some adaptive video jittering to achieve this. ") + .setMessage("This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted...") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -63,6 +63,14 @@ public class MainMenuActivity extends PreferenceActivity { }); alert.show(); } + else + { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("Welcome to RetroArch") + .setMessage("This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted...") + .setPositiveButton("OK", null); + alert.show(); + } } } diff --git a/general.h b/general.h index cde28f8b35..0d662853be 100644 --- a/general.h +++ b/general.h @@ -41,9 +41,9 @@ #ifndef PACKAGE_VERSION #ifdef __QNX__ /* FIXME - avoid too many decimal points in number error */ -#define PACKAGE_VERSION "0994" +#define PACKAGE_VERSION "0995" #else -#define PACKAGE_VERSION "0.9.9.4" +#define PACKAGE_VERSION "0.9.9.5" #endif #endif From fc564c2bd6278ed97bcff46d694551dcb82f478b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 00:57:13 +0200 Subject: [PATCH 201/252] Add 0.9.9.5 changelog --- android/phoenix/res/layout/faq_whats_new.xml | 38 ++++++++++++++++++ dist-scripts/retroarch-CHANGELOG.txt | 41 ++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/android/phoenix/res/layout/faq_whats_new.xml b/android/phoenix/res/layout/faq_whats_new.xml index 6465cc312d..3dec74f5c8 100644 --- a/android/phoenix/res/layout/faq_whats_new.xml +++ b/android/phoenix/res/layout/faq_whats_new.xml @@ -10,6 +10,44 @@ android:layout_height="wrap_content" android:layout_margin="40px" android:text=" + r19 (August 15, 2013)\n\n + * [Android] Input autodetection fixes -\n + - DualShock3 pad controls fixed\n + * [Android] It should now be possible to map D-pad to analog on several gamepads, such as:\n + - Xbox 360\n + - PlayStation3\n + - Shield\n + * [Android] Threaded video is now the default due to positive user feedback. Purists and accuracy\n + people can still go for static syncing for best results - although for PCSX ReARMed threaded\n + video is essential. With the combination of threaded video and dynamic audio rate control,\n + most of the audio pops and sync issues should be a thing of the past now. Yay.\n + * [Android] UI has been reorganized and made less shitty (yes, we know). Still a long way to go.\n + The entire menu should be gamepad-controllable now at least - handy for Shield/Ouya.\n + * [Android] Shaders that were broken on Nexus 7/4/10 etc. should now work.\n + * [Android] Added some additional autodetection rules:\n + - Ouya: Input overlays are disabled by default\n + * [Android] Added high-latency audio option for crappy/old Android devices that can't handle\n + the lower-latency audio that is the default since 0.9.9.4. This should give you the same\n + performance as 0.9.9.3 (r17). Turn this on if you get bad sound/performance (and it's not your\n + device simply being slow). This might also apply for some of the newer devices - perhaps \n + OpenSL driver has not been updated/optimized there.\n +* [Android] Added a TV mode. This will launch you straight into RGUI mode. This mode +is identical to what you get from the Wii and PC ports of RetroArch at startup. First +you select a core, then you select a game to go with it. +* [SNES9x] Fixes by Alcaro to libretro port +* [SNES9x Next] Fixes savestates from not being able to be loaded. + * (LIBRETRO) Added bsnes/higan performance core [v0.92] (Android).\n + - bsnes/higan performance core will run all non-coprocessor games at fullspeed on an\n + nVidia Shield.\n + - Co-processor games (SuperFX/SA-1/DSP/Cx4/SA1) will run between ~40fps and 55-57fps\n + on an nVidia Shield - depending on the specific co-processor. Note - you will need\n + BIOS files for these games - see byuu boards for information on them.\n + * [Mednafen NGP] Fixes input issues in a number of games, such as:\n + - Card Fighters games\n + - Etc.\n + * [Picodrive] Updates/32X compatibility/accuracy improvements\n + * [NEStopia] Updated to 1.46 WIP - added ability to load NstDatabase.xml, fixes Vs. System games\n + and Startropics 1/2\n r18 (August 7, 2013)\n\n * [Android] ANR issues fixed - Google bug (as ever).\n * [Android] Input autodetection expanded -\n diff --git a/dist-scripts/retroarch-CHANGELOG.txt b/dist-scripts/retroarch-CHANGELOG.txt index 4dcf4951d9..621982471f 100644 --- a/dist-scripts/retroarch-CHANGELOG.txt +++ b/dist-scripts/retroarch-CHANGELOG.txt @@ -1,3 +1,44 @@ +------------------------------------------------------------------------------ +v0.9.9.5 +------------------------------------------------------------------------------ +* [Android] Input autodetection fixes - + - DualShock3 pad controls fixed +* [Android] It should now be possible to map D-pad to analog on several gamepads, such as: + - Xbox 360 + - PlayStation3 + - Shield +* [Android] Threaded video is now the default due to positive user feedback. Purists and accuracy +people can still go for static syncing for best results - although for PCSX ReARMed threaded +video is essential. With the combination of threaded video and dynamic audio rate control, +most of the audio pops and sync issues should be a thing of the past now. Yay. +* [Android] UI has been reorganized and made less shitty (yes, we know). Still a long +way to go there. The entire menu should be gamepad-controllable now at least. +* [Android] Shaders that were broken on Nexus 7/4/10 etc. should now work +* [Android] Added some additional autodetection rules: + - Ouya: Input overlays are disabled by default +* [Android] Added high-latency audio option for crappy/old Android devices that +can't handle the lower-latency audio that is the default since 0.9.9.4. This should +give you the same performance as 0.9.9.3 (r17). Turn this on if you get bad sound/performance +(and it's not your device simply being slow). This might also apply for some of the newer +devices - perhaps OpenSL driver has not been updated/optimized there. +* [Android] Added a TV mode. This will launch you straight into RGUI mode. This mode +is identical to what you get from the Wii and PC ports of RetroArch at startup. First +you select a core, then you select a game to go with it. +* [SNES9x] Fixes by Alcaro to libretro port +* [SNES9x Next] Fixes savestates from not being able to be loaded. +* (LIBRETRO) Added bsnes/higan performance core [v0.92] (Android). + - bsnes/higan performance core will run all non-coprocessor games at fullspeed on an + nVidia Shield. + - Co-processor games (SuperFX/SA-1/DSP/Cx4/SA1) will run between ~40fps and 55-57fps + on an nVidia Shield - depending on the specific co-processor. Note - you will need + BIOS files for these games - see byuu boards for information on them. +* [Mednafen NGP] Fixes input issues in a number of games, such as: + - Card Fighters games + - Etc. +* [Picodrive] Updates/32X compatibility/accuracy improvements +* [NEStopia] Updated to 1.46 WIP - added ability to load NstDatabase.xml, fixes Vs. System games +and Startropics 1/2 + ------------------------------------------------------------------------------ v0.9.9.3 ------------------------------------------------------------------------------ From 1da7c129789462e20f9f3a11b3b81695e0821da6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 11:34:28 +0200 Subject: [PATCH 202/252] (0.9.9.5) Add iOS changelog --- dist-scripts/retroarch-CHANGELOG.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dist-scripts/retroarch-CHANGELOG.txt b/dist-scripts/retroarch-CHANGELOG.txt index 621982471f..8234786c06 100644 --- a/dist-scripts/retroarch-CHANGELOG.txt +++ b/dist-scripts/retroarch-CHANGELOG.txt @@ -38,6 +38,12 @@ you select a core, then you select a game to go with it. * [Picodrive] Updates/32X compatibility/accuracy improvements * [NEStopia] Updated to 1.46 WIP - added ability to load NstDatabase.xml, fixes Vs. System games and Startropics 1/2 +* [iOS] Only player 1 gets default keyboard bindings +* [iOS] Fixes PS3 gamepad bindings in RGUI +* [iOS] Fixes iCade button mappings +* [iOS] UI additions - Refresh / New Folder / Move options. +* [iOS] Some lifecycle management fixes - should deal better now with phone calls +received and then returning back to RA, etc. ------------------------------------------------------------------------------ v0.9.9.3 From 9dc946900ec51e210c77588f8292cbf04549fa50 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 12:33:19 +0200 Subject: [PATCH 203/252] (Module info files) Update module info files for naming consistency's sake --- apple/modules/desmume_libretro.info | 2 +- apple/modules/genesis_plus_gx_libretro.info | 2 +- apple/modules/instancingviewer_libretro.info | 2 +- apple/modules/mednafen_ngp_libretro.info | 2 +- apple/modules/mednafen_pce_fast_libretro.info | 2 +- apple/modules/mednafen_vb_libretro.info | 2 +- apple/modules/mednafen_wswan_libretro.info | 4 ++-- apple/modules/modelviewer_libretro.info | 2 +- apple/modules/picodrive_libretro.info | 2 +- apple/modules/prboom_libretro.info | 2 +- apple/modules/scenewalker_libretro.info | 2 +- apple/modules/stella_libretro.info | 2 +- apple/modules/tyrquake_libretro.info | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apple/modules/desmume_libretro.info b/apple/modules/desmume_libretro.info index 9fc1326c95..7f7dcf1381 100644 --- a/apple/modules/desmume_libretro.info +++ b/apple/modules/desmume_libretro.info @@ -1,4 +1,4 @@ -display_name = "Nintendo DS" +display_name = "Nintendo DS (DeSmuME)" supported_extensions = "nds" corename = "DeSmuME" manufacturer = "Nintendo" diff --git a/apple/modules/genesis_plus_gx_libretro.info b/apple/modules/genesis_plus_gx_libretro.info index 17d4f786c8..4f71a60403 100644 --- a/apple/modules/genesis_plus_gx_libretro.info +++ b/apple/modules/genesis_plus_gx_libretro.info @@ -1,4 +1,4 @@ -display_name = "Sega (MS/GG/MD/CD)" +display_name = "Sega MS/GG/MD/CD (Genesis Plus GX)" supported_extensions = "md|smd|gen|sms|gg|sg|bin|cue|ios" corename = "Genesis Plus GX" manufacturer = "Sega" diff --git a/apple/modules/instancingviewer_libretro.info b/apple/modules/instancingviewer_libretro.info index 5f2a20f83b..4650def429 100644 --- a/apple/modules/instancingviewer_libretro.info +++ b/apple/modules/instancingviewer_libretro.info @@ -1,4 +1,4 @@ -display_name = "InstancingViewer" +display_name = "PNG Images (InstancingViewer)" recommended_extensions = "png" corename = "InstancingViewer" manufacturer = "Various" diff --git a/apple/modules/mednafen_ngp_libretro.info b/apple/modules/mednafen_ngp_libretro.info index 9213f37e69..40e35e45e0 100644 --- a/apple/modules/mednafen_ngp_libretro.info +++ b/apple/modules/mednafen_ngp_libretro.info @@ -1,4 +1,4 @@ -display_name = "Neo Geo Pocket (Color)" +display_name = "Neo Geo Pocket/Color (Mednafen Neopop)" supported_extensions = "ngp|ngc" corename = "Mednafen Neopop" manufacturer = "SNK" diff --git a/apple/modules/mednafen_pce_fast_libretro.info b/apple/modules/mednafen_pce_fast_libretro.info index a1b27d5ba4..9fb9b8f7a6 100644 --- a/apple/modules/mednafen_pce_fast_libretro.info +++ b/apple/modules/mednafen_pce_fast_libretro.info @@ -1,4 +1,4 @@ -display_name = "PC Engine/TurboGrafx-16" +display_name = "PC Engine/TurboGrafx-16 (Mednafen PCE Fast)" supported_extensions = "pce|sgx|cue" corename = "Mednafen PCE Fast" manufacturer = "NEC" diff --git a/apple/modules/mednafen_vb_libretro.info b/apple/modules/mednafen_vb_libretro.info index 3df42a5e14..bb7d8bd298 100644 --- a/apple/modules/mednafen_vb_libretro.info +++ b/apple/modules/mednafen_vb_libretro.info @@ -1,4 +1,4 @@ -display_name = "Virtual Boy" +display_name = "Virtual Boy (Mednafen VB)" supported_extensions = "vb|vboy|bin" corename = "Mednafen VB" manufacturer = "Nintendo" diff --git a/apple/modules/mednafen_wswan_libretro.info b/apple/modules/mednafen_wswan_libretro.info index ec1f5b9344..320e9cd941 100644 --- a/apple/modules/mednafen_wswan_libretro.info +++ b/apple/modules/mednafen_wswan_libretro.info @@ -1,6 +1,6 @@ -display_name = "WonderSwan (Color)" +display_name = "WonderSwan/Color (Mednafen Cygne)" supported_extensions = "ws|wsc" corename = "Mednafen WonderSwan" manufacturer = "Bandai" -systemname = "WonderSwan (Color)" +systemname = "WonderSwan/Color" diff --git a/apple/modules/modelviewer_libretro.info b/apple/modules/modelviewer_libretro.info index f6bba3967b..87fdf0fdf3 100644 --- a/apple/modules/modelviewer_libretro.info +++ b/apple/modules/modelviewer_libretro.info @@ -1,4 +1,4 @@ -display_name = "Modelviewer" +display_name = "3D Models (Modelviewer)" recommended_extensions = "obj" corename = "Modelviewer" manufacturer = "Various" diff --git a/apple/modules/picodrive_libretro.info b/apple/modules/picodrive_libretro.info index eeea21589b..0784a12369 100644 --- a/apple/modules/picodrive_libretro.info +++ b/apple/modules/picodrive_libretro.info @@ -1,4 +1,4 @@ -display_name = "Sega (MS/GG/MD/CD/32X)" +display_name = "Sega MS/GG/MD/CD/32X (Picodrive)" supported_extensions = "md|smd|gen|sms|gg|sg|bin|cue|ios|32x" corename = "Picodrive" manufacturer = "Sega" diff --git a/apple/modules/prboom_libretro.info b/apple/modules/prboom_libretro.info index c1a416515a..f21bb605b3 100644 --- a/apple/modules/prboom_libretro.info +++ b/apple/modules/prboom_libretro.info @@ -1,3 +1,3 @@ -display_name = "PrBoom (DOOM)" +display_name = "Doom (PrBoom)" supported_extensions = "wad|iwad" corename = "prboom" diff --git a/apple/modules/scenewalker_libretro.info b/apple/modules/scenewalker_libretro.info index 3cc5318f43..6edf3d7af3 100644 --- a/apple/modules/scenewalker_libretro.info +++ b/apple/modules/scenewalker_libretro.info @@ -1,4 +1,4 @@ -display_name = "SceneWalker" +display_name = "3D Models (SceneWalker)" recommended_extensions = "obj" corename = "SceneWalker" manufacturer = "Various" diff --git a/apple/modules/stella_libretro.info b/apple/modules/stella_libretro.info index a45de89830..0abb91f63a 100644 --- a/apple/modules/stella_libretro.info +++ b/apple/modules/stella_libretro.info @@ -1,4 +1,4 @@ -display_name = "Atari 2600" +display_name = "Atari 2600 (Stella)" supported_extensions = "a26|bin" corename = "Stella" manufacturer = "Atari" diff --git a/apple/modules/tyrquake_libretro.info b/apple/modules/tyrquake_libretro.info index a12b75da38..a1ca2f94e9 100644 --- a/apple/modules/tyrquake_libretro.info +++ b/apple/modules/tyrquake_libretro.info @@ -1,3 +1,3 @@ -display_name = "TyrQuake" +display_name = "Quake 1 (TyrQuake)" supported_extensions = "pak" corename = "prboom" From 0a082795361cca39df690dcfef81f543376bff0b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 12:35:01 +0200 Subject: [PATCH 204/252] (Module info) Fix nxengine info file name --- apple/modules/nxengine_libretro.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/modules/nxengine_libretro.info b/apple/modules/nxengine_libretro.info index 81ac6073fd..8ec2d1b466 100644 --- a/apple/modules/nxengine_libretro.info +++ b/apple/modules/nxengine_libretro.info @@ -1,3 +1,3 @@ -display_name = "NXEngine (Cave Story)" +display_name = "Cave Story (NXEngine)" supported_extensions = "exe" corename = "NXEngine" From 7ac8636842eb9d3da56e63f406acbfcfa3cc3437 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Aug 2013 12:40:51 +0200 Subject: [PATCH 205/252] (Module info) Update gambatte info file --- apple/modules/gambatte_libretro.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/modules/gambatte_libretro.info b/apple/modules/gambatte_libretro.info index 123ac1c9cf..810695f3b1 100644 --- a/apple/modules/gambatte_libretro.info +++ b/apple/modules/gambatte_libretro.info @@ -1,4 +1,4 @@ -display_name = "Game Boy / Game Boy Color" +display_name = "Game Boy / Game Boy Color (Gambatte)" supported_extensions = "gb|gbc|dmg" corename = "gambatte" manufacturer = "Nintendo" From 0d291e809ae268e97a2c37fa55e9688a119b4063 Mon Sep 17 00:00:00 2001 From: meancoot Date: Thu, 15 Aug 2013 09:50:22 -0400 Subject: [PATCH 206/252] (iOS) Fix major hanging bug --- apple/RetroArch/main.m | 3 +-- apple/iOS/platform.m | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apple/RetroArch/main.m b/apple/RetroArch/main.m index cb425a37b3..4ba48c1933 100644 --- a/apple/RetroArch/main.m +++ b/apple/RetroArch/main.m @@ -24,7 +24,6 @@ #include "file.h" //#define HAVE_DEBUG_FILELOG -static bool use_tv_mode; id apple_platform; @@ -175,6 +174,6 @@ void apple_rarch_exited(void* result) [apple_platform unloadingCore:used_core]; } - if (use_tv_mode) + if (apple_use_tv_mode) apple_run_core(nil, 0); } diff --git a/apple/iOS/platform.m b/apple/iOS/platform.m index 1642e00189..c70e167fe0 100644 --- a/apple/iOS/platform.m +++ b/apple/iOS/platform.m @@ -127,12 +127,12 @@ static void handle_touch_event(NSArray* touches) - (void)applicationDidBecomeActive:(UIApplication *)application { - apple_enter_stasis(); + apple_exit_stasis(); } - (void)applicationWillResignActive:(UIApplication *)application { - apple_exit_stasis(); + apple_enter_stasis(); } // UINavigationControllerDelegate From 26df85f02073322899d5da9278d23c1007877d19 Mon Sep 17 00:00:00 2001 From: meancoot Date: Thu, 15 Aug 2013 12:47:13 -0400 Subject: [PATCH 207/252] (iOS) Some settings menu polish: The bluetooth mode is updated immediately, previously you had to hit the back button on the frontend settings before it would be applied. The custom config state label in the frontend settings menu is updated properly. --- apple/iOS/platform.h | 3 +++ apple/iOS/platform.m | 9 +++++--- apple/iOS/settings.m | 55 ++++++++++++++++++++++++++++++++++++-------- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/apple/iOS/platform.h b/apple/iOS/platform.h index 42c168884f..d7a55f4668 100644 --- a/apple/iOS/platform.h +++ b/apple/iOS/platform.h @@ -39,4 +39,7 @@ @end +// modes are: keyboard, icade and btstack +void ios_set_bluetooth_mode(NSString* mode); + #endif \ No newline at end of file diff --git a/apple/iOS/platform.m b/apple/iOS/platform.m index c70e167fe0..cfe1d8b391 100644 --- a/apple/iOS/platform.m +++ b/apple/iOS/platform.m @@ -29,6 +29,11 @@ #include "file.h" //#define HAVE_DEBUG_FILELOG +void ios_set_bluetooth_mode(NSString* mode) +{ + apple_input_enable_icade([mode isEqualToString:@"icade"]); + btstack_set_poweron([mode isEqualToString:@"btstack"]); +} // Input helpers: This is kept here because it needs objective-c static void handle_touch_event(NSArray* touches) @@ -251,9 +256,7 @@ static void handle_touch_event(NSArray* touches) } // Setup bluetooth mode - NSString* btmode = objc_get_value_from_config(conf, @"ios_btmode", @"keyboard"); - apple_input_enable_icade([btmode isEqualToString:@"icade"]); - btstack_set_poweron([btmode isEqualToString:@"btstack"]); + ios_set_bluetooth_mode(objc_get_value_from_config(conf, @"ios_btmode", @"keyboard")); bool val; apple_use_tv_mode = config_get_bool(conf, "ios_tv_mode", & val) && val; diff --git a/apple/iOS/settings.m b/apple/iOS/settings.m index af5a4cbc06..54c860eaeb 100644 --- a/apple/iOS/settings.m +++ b/apple/iOS/settings.m @@ -48,8 +48,12 @@ enum SettingTypes double rangeMin; // < The mininum value of a range setting double rangeMax; // < The maximum value of a range setting - void (^reload)(RASettingData* action, id userdata); + void (*changed)(RASettingData* action); + void (*reload)(RASettingData* action, id userdata); } + +- (void)setValue:(NSString*)aValue; + @end @implementation RASettingData @@ -61,6 +65,14 @@ enum SettingTypes return self; } +- (void)setValue:(NSString*)aValue; +{ + value = aValue; + + if (changed) + changed(self); +} + - (uint32_t)enumerationCount { return subValues.count / (haveDescriptions ? 2 : 1); @@ -189,7 +201,7 @@ static RASettingData* aspect_setting(config_file_t* config, NSString* label) return result; } -static RASettingData* custom_action(NSString* action, NSString* value, id data, void (^reload_func)(RASettingData* action, id userdata)) +static RASettingData* custom_action(NSString* action, NSString* value, id data, void (*reload_func)(RASettingData* action, id userdata)) { RASettingData* result = [[RASettingData alloc] initWithType:CustomAction label:action name:nil]; result->value = value; @@ -201,6 +213,14 @@ static RASettingData* custom_action(NSString* action, NSString* value, id data, return result; } +// This adds a change notify function to a setting and returns it; done this way so it can be used in NSArray +// init lists. +static RASettingData* change_notify(RASettingData* setting, void (*change_func)(RASettingData* setting)) +{ + setting->changed = change_func; + return setting; +} + static NSArray* build_input_port_group(config_file_t* config, uint32_t player) { // Only player 1 should have default key bindings @@ -367,6 +387,18 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) @end +#pragma mark System Settings + +static void reload_core_config_state(RASettingData* action, RAModuleInfo* userdata) +{ + [action setValue:userdata.hasCustomConfig ? @"[Custom]" : @"[Global]"]; +} + +static void bluetooth_option_changed(RASettingData* setting) +{ + ios_set_bluetooth_mode(setting->value); +} + @implementation RASystemSettingsList - (id)init { @@ -379,10 +411,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) NSArray* moduleList = [RAModuleInfo getModules]; for (RAModuleInfo* i in moduleList) { - [modules addObject:custom_action(i.description, nil, i, ^(RASettingData* action, RAModuleInfo* userdata) - { - action->value = userdata.hasCustomConfig ? @"[Custom]" : @"[Global]"; - })]; + [modules addObject:custom_action(i.description, nil, i, reload_core_config_state)]; } @@ -397,7 +426,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) boolean_setting(config, @"ios_tv_mode", @"TV Mode", @"false"), nil], [NSArray arrayWithObjects:@"Bluetooth", - enumeration_setting(config, @"ios_btmode", @"Mode", @"keyboard", bluetoothOptions, true), + change_notify(enumeration_setting(config, @"ios_btmode", @"Mode", @"keyboard", bluetoothOptions, true), bluetooth_option_changed), nil], [NSArray arrayWithObjects:@"Orientations", boolean_setting(config, @"ios_allow_portrait", @"Portrait", @"true"), @@ -416,6 +445,12 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) return self; } +- (void)viewDidAppear:(BOOL)animated +{ + [self.tableView reloadData]; + [super viewDidAppear:animated]; +} + - (void)dealloc { config_file_t* config = config_file_new([[RetroArch_iOS get].systemConfigPath UTF8String]); @@ -590,7 +625,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleBooleanSwitch:(UISwitch*)swt { RASettingData* setting = objc_getAssociatedObject(swt, "SETTING"); - setting->value = (swt.on ? @"true" : @"false"); + [setting setValue:swt.on ? @"true" : @"false"]; [self handleCustomAction:setting]; } @@ -598,7 +633,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)handleSlider:(UISlider*)sld { RASettingData* setting = objc_getAssociatedObject(sld, "SETTING"); - setting->value = [NSString stringWithFormat:@"%f", sld.value]; + [setting setValue:[NSString stringWithFormat:@"%f", sld.value]]; [self handleCustomAction:setting]; } @@ -739,7 +774,7 @@ static NSArray* build_input_port_group(config_file_t* config, uint32_t player) - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - _value->value = (indexPath.section == _mainSection) ? [_value valueForEnumerationIndex:indexPath.row] : @""; + [_value setValue: (indexPath.section == _mainSection) ? [_value valueForEnumerationIndex:indexPath.row] : @""]; [_view reloadData]; [[RetroArch_iOS get] popViewControllerAnimated:YES]; From 551fd27204f8e19d2d09e0b574041a9b65b2b82e Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 16 Aug 2013 00:30:54 +0200 Subject: [PATCH 208/252] Add support for wrapping modes. Not terribly useful atm due to POT, but at least it's there. Has some use mostly with LUTs ... NPOT + REPEAT requires extension on GLES2 at least. --- gfx/gl.c | 35 +++++++++++++++-------------- gfx/gl_common.h | 23 ++++++++++++++++++- gfx/shader_cg.c | 24 +++++++++++--------- gfx/shader_common.h | 1 + gfx/shader_glsl.c | 9 ++++++++ gfx/shader_parse.c | 54 +++++++++++++++++++++++++++++++++++++++++++++ gfx/shader_parse.h | 13 ++++++++++- 7 files changed, 130 insertions(+), 29 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 9ed67c79b6..3518c5e3a6 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -347,6 +347,7 @@ void gl_shader_set_coords(void *data, const struct gl_coords *coords, const math #define gl_shader_num(gl) ((gl->shader) ? gl->shader->num_shaders() : 0) #define gl_shader_filter_type(gl, index, smooth) ((gl->shader) ? gl->shader->filter_type(index, smooth) : false) +#define gl_shader_wrap_type(gl, index) ((gl->shader) ? gl->shader->wrap_type(index) : RARCH_WRAP_BORDER) #ifdef IOS // There is no default frame buffer on IOS. @@ -465,16 +466,18 @@ static void gl_create_fbo_textures(void *data) { glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); - GLuint filter_type = base_filt; bool smooth = false; if (gl_shader_filter_type(gl, i + 2, &smooth)) filter_type = smooth ? GL_LINEAR : GL_NEAREST; + enum gfx_wrap_type wrap = gl_shader_wrap_type(gl, i + 2); + GLenum wrap_enum = gl_wrap_type_to_enum(wrap); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter_type); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); bool fp_fbo = gl->fbo_scale[i].valid && gl->fbo_scale[i].fp_fbo; @@ -1156,8 +1159,8 @@ static void gl_init_textures(void *data, const video_info_t *video) { glBindTexture(GL_TEXTURE_2D, gl->texture[i]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->wrap_mode); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->wrap_mode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl->tex_filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl->tex_filter); @@ -1643,13 +1646,6 @@ static bool resolve_extensions(gl_t *gl) RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n"); #endif -#ifdef NO_GL_CLAMP_TO_BORDER - // NOTE: This will be a serious problem for some shaders. - gl->border_type = GL_CLAMP_TO_EDGE; -#else - gl->border_type = GL_CLAMP_TO_BORDER; -#endif - driver.gfx_use_rgba = false; #ifdef HAVE_OPENGLES2 if (gl_query_extension(gl, "BGRA8888")) @@ -2055,6 +2051,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->tex_filter = force_smooth ? GL_LINEAR : GL_NEAREST; else gl->tex_filter = video->smooth ? GL_LINEAR : GL_NEAREST; + gl->wrap_mode = gl_wrap_type_to_enum(gl_shader_wrap_type(gl, 1)); gl_set_texture_fmts(gl, video->rgb32); @@ -2155,18 +2152,22 @@ static void gl_update_tex_filter_frame(gl_t *gl) bool smooth = false; if (!gl_shader_filter_type(gl, 1, &smooth)) smooth = g_settings.video.smooth; + GLenum wrap_mode = gl_wrap_type_to_enum(gl_shader_wrap_type(gl, 1)); gl->video_info.smooth = smooth; GLuint new_filt = smooth ? GL_LINEAR : GL_NEAREST; - if (new_filt == gl->tex_filter) + if (new_filt == gl->tex_filter && wrap_mode == gl->wrap_mode) return; gl->tex_filter = new_filt; + gl->wrap_mode = wrap_mode; for (unsigned i = 0; i < gl->textures; i++) { if (gl->texture[i]) { glBindTexture(GL_TEXTURE_2D, gl->texture[i]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->wrap_mode); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->wrap_mode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl->tex_filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl->tex_filter); } @@ -2394,8 +2395,8 @@ static bool gl_overlay_load(void *data, const uint32_t *image, unsigned width, u glGenTextures(1, &gl->tex_overlay); glBindTexture(GL_TEXTURE_2D, gl->tex_overlay); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -2567,8 +2568,8 @@ static void gl_set_texture_frame(void *data, { glGenTextures(1, &gl->rgui_texture); glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 3da0b5d53c..5e97a0a540 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -199,7 +199,7 @@ typedef struct gl GLenum internal_fmt; GLenum texture_type; // RGB565 or ARGB GLenum texture_fmt; - GLenum border_type; + GLenum wrap_mode; unsigned base_size; // 2 or 4 // Fonts @@ -314,5 +314,26 @@ void gl_shader_set_coords(void *data, const struct gl_coords *coords, const math void gl_init_fbo(void *data, unsigned width, unsigned height); void gl_deinit_fbo(void *data); +static inline GLenum gl_wrap_type_to_enum(enum gfx_wrap_type type) +{ + switch (type) + { +#ifndef HAVE_OPENGLES + case RARCH_WRAP_BORDER: + return GL_CLAMP_TO_BORDER; +#else + case RARCH_WRAP_BORDER: +#endif + case RARCH_WRAP_EDGE: + return GL_CLAMP_TO_EDGE; + case RARCH_WRAP_REPEAT: + return GL_REPEAT; + case RARCH_WRAP_MIRRORED_REPEAT: + return GL_MIRRORED_REPEAT; + default: + return 0; + } +} + #endif diff --git a/gfx/shader_cg.c b/gfx/shader_cg.c index a634d99253..7f00885b20 100644 --- a/gfx/shader_cg.c +++ b/gfx/shader_cg.c @@ -493,18 +493,12 @@ static bool load_plain(const char *path) #define print_buf(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__) -#ifdef HAVE_OPENGLES2 -#define BORDER_FUNC GL_CLAMP_TO_EDGE -#else -#define BORDER_FUNC GL_CLAMP_TO_BORDER -#endif - -static void load_texture_data(GLuint obj, const struct texture_image *img, bool smooth) +static void load_texture_data(GLuint obj, const struct texture_image *img, bool smooth, GLenum wrap) { glBindTexture(GL_TEXTURE_2D, obj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, BORDER_FUNC); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, BORDER_FUNC); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, smooth ? GL_LINEAR : GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, smooth ? GL_LINEAR : GL_NEAREST); @@ -538,7 +532,8 @@ static bool load_textures(void) } load_texture_data(lut_textures[i], &img, - cg_shader->lut[i].filter != RARCH_FILTER_NEAREST); + cg_shader->lut[i].filter != RARCH_FILTER_NEAREST, + gl_wrap_type_to_enum(cg_shader->lut[i].wrap)); } glBindTexture(GL_TEXTURE_2D, 0); @@ -903,6 +898,14 @@ static bool gl_cg_filter_type(unsigned index, bool *smooth) return false; } +static enum gfx_wrap_type gl_cg_wrap_type(unsigned index) +{ + if (cg_active && index) + return cg_shader->pass[index - 1].wrap; + else + return RARCH_WRAP_BORDER; +} + static void gl_cg_shader_scale(unsigned index, struct gfx_fbo_scale *scale) { if (cg_active && index) @@ -942,6 +945,7 @@ const gl_shader_backend_t gl_cg_backend = { gl_cg_use, gl_cg_num, gl_cg_filter_type, + gl_cg_wrap_type, gl_cg_shader_scale, gl_cg_set_coords, gl_cg_set_mvp, diff --git a/gfx/shader_common.h b/gfx/shader_common.h index 2b72da2bed..dae07b2608 100644 --- a/gfx/shader_common.h +++ b/gfx/shader_common.h @@ -47,6 +47,7 @@ struct gl_shader_backend void (*use)(unsigned index); unsigned (*num_shaders)(void); bool (*filter_type)(unsigned index, bool *smooth); + enum gfx_wrap_type (*wrap_type)(unsigned index); void (*shader_scale)(unsigned index, struct gfx_fbo_scale *scale); bool (*set_coords)(const struct gl_coords *coords); bool (*set_mvp)(const math_matrix *mat); diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index a15d2ef0e5..06c25ca322 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -1180,6 +1180,14 @@ static bool gl_glsl_filter_type(unsigned index, bool *smooth) return false; } +static enum gfx_wrap_type gl_glsl_wrap_type(unsigned index) +{ + if (glsl_enable && index) + return glsl_shader->pass[index - 1].wrap; + else + return RARCH_WRAP_BORDER; +} + static void gl_glsl_shader_scale(unsigned index, struct gfx_fbo_scale *scale) { if (glsl_enable && index) @@ -1221,6 +1229,7 @@ const gl_shader_backend_t gl_glsl_backend = { gl_glsl_use, gl_glsl_num, gl_glsl_filter_type, + gl_glsl_wrap_type, gl_glsl_shader_scale, gl_glsl_set_coords, gl_glsl_set_mvp, diff --git a/gfx/shader_parse.c b/gfx/shader_parse.c index 4ac92499ea..b92d68b8a7 100644 --- a/gfx/shader_parse.c +++ b/gfx/shader_parse.c @@ -30,6 +30,41 @@ #define print_buf(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__) +static const char *wrap_mode_to_str(enum gfx_wrap_type type) +{ + switch (type) + { + case RARCH_WRAP_BORDER: + return "clamp_to_border"; + case RARCH_WRAP_EDGE: + return "clamp_to_edge"; + case RARCH_WRAP_REPEAT: + return "repeat"; + case RARCH_WRAP_MIRRORED_REPEAT: + return "mirrored_repeat"; + default: + return "???"; + } +} + +static enum gfx_wrap_type wrap_str_to_mode(const char *wrap_mode) +{ + if (strcmp(wrap_mode, "clamp_to_border") == 0) + return RARCH_WRAP_BORDER; + else if (strcmp(wrap_mode, "clamp_to_edge") == 0) + return RARCH_WRAP_EDGE; + else if (strcmp(wrap_mode, "repeat") == 0) + return RARCH_WRAP_REPEAT; + else if (strcmp(wrap_mode, "mirrored_repeat") == 0) + return RARCH_WRAP_MIRRORED_REPEAT; + else + { + RARCH_WARN("Invalid wrapping type %s. Valid ones are: clamp_to_border (default), clamp_to_edge, repeat and mirrored_repeat. Falling back to default.\n", + wrap_mode); + return RARCH_WRAP_DEFAULT; + } +} + // CGP static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass, unsigned i) { @@ -52,6 +87,13 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass, else pass->filter = RARCH_FILTER_UNSPEC; + // Wrapping mode + char wrap_name_buf[64]; + print_buf(wrap_name_buf, "wrap_mode%u", i); + char wrap_mode[64]; + if (config_get_array(conf, wrap_name_buf, wrap_mode, sizeof(wrap_mode))) + pass->wrap = wrap_str_to_mode(wrap_mode); + // Frame count mod char frame_count_mod[64] = {0}; char frame_count_mod_buf[64]; @@ -207,6 +249,12 @@ static bool shader_parse_textures(config_file_t *conf, struct gfx_shader *shader shader->lut[shader->luts].filter = smooth ? RARCH_FILTER_LINEAR : RARCH_FILTER_NEAREST; else shader->lut[shader->luts].filter = RARCH_FILTER_UNSPEC; + + char id_wrap[64]; + print_buf(id_wrap, "%s_wrap_mode", id); + char wrap_mode[64]; + if (config_get_array(conf, id_wrap, wrap_mode, sizeof(wrap_mode))) + shader->lut[shader->luts].wrap = wrap_str_to_mode(wrap_mode); } return true; @@ -998,6 +1046,9 @@ void gfx_shader_write_conf_cgp(config_file_t *conf, const struct gfx_shader *sha config_set_bool(conf, key, pass->filter == RARCH_FILTER_LINEAR); } + print_buf(key, "wrap_mode%u", i); + config_set_string(conf, key, wrap_mode_to_str(pass->wrap)); + if (pass->frame_count_mod) { print_buf(key, "frame_count_mod%u", i); @@ -1031,6 +1082,9 @@ void gfx_shader_write_conf_cgp(config_file_t *conf, const struct gfx_shader *sha print_buf(key, "%s_linear", shader->lut[i].id); config_set_bool(conf, key, shader->lut[i].filter != RARCH_FILTER_LINEAR); } + + print_buf(key, "%s_wrap_mode", shader->lut[i].id); + config_set_string(conf, key, wrap_mode_to_str(shader->lut[i].wrap)); } } diff --git a/gfx/shader_parse.h b/gfx/shader_parse.h index dcbda69b20..0822dc7c41 100644 --- a/gfx/shader_parse.h +++ b/gfx/shader_parse.h @@ -40,7 +40,16 @@ enum gfx_filter_type { RARCH_FILTER_UNSPEC = 0, RARCH_FILTER_LINEAR, - RARCH_FILTER_NEAREST, + RARCH_FILTER_NEAREST +}; + +enum gfx_wrap_type +{ + RARCH_WRAP_BORDER = 0, // Kinda deprecated, but keep as default. Will be translated to EDGE in GLES. + RARCH_WRAP_DEFAULT = RARCH_WRAP_BORDER, + RARCH_WRAP_EDGE, + RARCH_WRAP_REPEAT, + RARCH_WRAP_MIRRORED_REPEAT }; struct gfx_fbo_scale @@ -69,6 +78,7 @@ struct gfx_shader_pass struct gfx_fbo_scale fbo; enum gfx_filter_type filter; + enum gfx_wrap_type wrap; unsigned frame_count_mod; }; @@ -77,6 +87,7 @@ struct gfx_shader_lut char id[64]; char path[PATH_MAX]; enum gfx_filter_type filter; + enum gfx_wrap_type wrap; }; // This is pretty big, shouldn't be put on the stack. From 963f206456747537dbbf0aed32bd7151d79672be Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 16 Aug 2013 03:57:09 +0200 Subject: [PATCH 209/252] Bump to version 0.9.9.6 --- android/phoenix/AndroidManifest.xml | 4 ++-- android/phoenix/res/layout/faq_whats_new.xml | 5 +++++ android/phoenix/res/xml/prefs.xml | 2 +- dist-scripts/retroarch-CHANGELOG.txt | 8 ++++++++ general.h | 4 ++-- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 4f6243d63f..60c19f7578 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="21" + android:versionName="0.9.9.6" > + android:title="RetroArch 0.9.9.6 - Main Menu" > Date: Fri, 16 Aug 2013 10:18:58 +0200 Subject: [PATCH 210/252] Log GL version as well. --- gfx/gl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 3518c5e3a6..768e79631c 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1967,6 +1967,9 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo const char *renderer = (const char*)glGetString(GL_RENDERER); RARCH_LOG("[GL]: Vendor: %s, Renderer: %s.\n", vendor, renderer); + const char *version = (const char*)glGetString(GL_VERSION); + RARCH_LOG("[GL]: Version: %s.\n", version); + #ifndef RARCH_CONSOLE rglgen_resolve_symbols(gl->ctx_driver->get_proc_address); #endif From 758dc7e196c99442caef2f9cd74906324776b544 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 16 Aug 2013 12:16:19 +0200 Subject: [PATCH 211/252] Add Load Game (History) to Android frontend. Also cleanup core selection list a bit to be more readable. --- android/phoenix/AndroidManifest.xml | 1 + android/phoenix/assets/libretro_cores.cfg | 108 +++-- android/phoenix/res/layout/line_list_item.xml | 30 +- android/phoenix/res/xml/prefs.xml | 5 + .../org/retroarch/browser/CoreSelection.java | 65 +-- .../org/retroarch/browser/FileWrapper.java | 5 + .../retroarch/browser/HistorySelection.java | 83 ++++ .../org/retroarch/browser/HistoryWrapper.java | 63 +++ .../org/retroarch/browser/IconAdapter.java | 15 +- .../retroarch/browser/MainMenuActivity.java | 446 +++++++++++------- .../org/retroarch/browser/ModuleWrapper.java | 9 + 11 files changed, 581 insertions(+), 249 deletions(-) create mode 100644 android/phoenix/src/org/retroarch/browser/HistorySelection.java create mode 100644 android/phoenix/src/org/retroarch/browser/HistoryWrapper.java diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 60c19f7578..c8cbc8ecf4 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -16,6 +16,7 @@ android:label="@string/app_name" android:hasCode="true"> + diff --git a/android/phoenix/assets/libretro_cores.cfg b/android/phoenix/assets/libretro_cores.cfg index f921f2c467..9255e899f4 100644 --- a/android/phoenix/assets/libretro_cores.cfg +++ b/android/phoenix/assets/libretro_cores.cfg @@ -1,27 +1,81 @@ -libretro_mednafen_pce_fast = "Mednafen PCE-fast (PC Engine/PC Engine CD)" -libretro_mednafen_wswan = "Mednafen WSwan (Wonderswan)" -libretro_fceumm = "FCEUmm (Nintendo NES)" -libretro_mednafen_vb = "Mednafen VB (Virtual Boy)" -libretro_fba = "Final Burn Alpha (Arcade)" -libretro_mednafen_ngp = "Mednafen NGP (Neo-Geo Pocket)" -libretro_mednafen_psx = "Mednafen PSX (PlayStation1)" -libretro_gambatte = "Gambatte (GameBoy/GameBoy Color)" -libretro_genesis_plus_gx = "Genesis Plus GX (Sega Genesis/Sega CD/Master System)" -libretro_picodrive = "Picodrive (Sega Genesis/Sega CD/Master System/32X)" -libretro_vba_next = "VBA Next (GameBoy Advance)" -libretro_prboom = "PrBoom (DOOM)" -libretro_snes9x = "SNES9x (Nintendo SNES)" -libretro_snes9x_next = "SNES9x Next (Nintendo SNES)" -libretro_nestopia = "Nestopia (Nintendo NES)" -libretro_pcsx_rearmed-neon = "PCSX-reARMed (PlayStation1) [NEON]" -libretro_pcsx_rearmed = "PCSX-reARMed (PlayStation1)" -libretro_nxengine = "NXEngine (Cave Story/Doukutsu Monogatari)" -libretro_quicknes = "QuickNES (Nintendo NES)" -libretro_tyrquake = "TyrQuake (Quake 1)" -libretro_instancingviewer = "InstancingViewer (Images)" -libretro_desmume = "Desmume (Nintendo DS)" -libretro_stella = "Stella (Atari 2600)" -libretro_scenewalker = "SceneWalker (Objects)" -libretro_modelviewer = "ModelViewer (Objects)" -libretro_mame078 = "MAME 2003 [0.78] (Arcade)" -libretro_bsnes_performance = "bsnes/higan Performance (Nintendo SNES)" +libretro_mednafen_pce_fast = "Mednafen PCE-fast" +libretro_mednafen_pce_fast_system = "PC Engine/PC Engine CD" + +libretro_mednafen_wswan = "Mednafen WSwan" +libretro_mednafen_wswan_system = "Wonderswan" + +libretro_fceumm = "FCEUmm" +libretro_fceumm_system = "Nintendo NES" + +libretro_mednafen_vb = "Mednafen VB" +libretro_mednafen_vb_system = "Virtual Boy" + +libretro_fba = "Final Burn Alpha" +libretro_fba_system = "Arcade" + +libretro_mednafen_ngp = "Mednafen NGP" +libretro_mednafen_ngp_system = "Neo-Geo Pocket" + +libretro_mednafen_psx = "Mednafen PSX" +libretro_mednafen_psx_system = "PlayStation1" + +libretro_gambatte = "Gambatte" +libretro_gambatte_system = "GameBoy/GameBoy Color" + +libretro_genesis_plus_gx = "Genesis Plus GX" +libretro_genesis_plus_gx_system = "Sega Genesis/Sega CD/Master System" + +libretro_picodrive = "Picodrive" +libretro_picodrive_system = "Sega Genesis/Sega CD/Master System/32X" + +libretro_vba_next = "VBA Next" +libretro_vba_next_system = "GameBoy Advance" + +libretro_prboom = "PrBoom" +libretro_prboom_system = "DOOM" + +libretro_snes9x = "SNES9x" +libretro_snes9x_system = "Nintendo SNES" + +libretro_snes9x_next = "SNES9x Next" +libretro_snes9x_next_system = "Nintendo SNES" + +libretro_nestopia = "Nestopia" +libretro_nestopia_system = "Nintendo NES" + +libretro_pcsx_rearmed-neon = "PCSX-reARMed [NEON]" +libretro_pcsx_rearmed-neon_system = "PlayStation1" + +libretro_pcsx_rearmed = "PCSX-reARMed" +libretro_pcsx_rearmed_system = "PlayStation1" + +libretro_nxengine = "NXEngine" +libretro_nxengine_system = "Cave Story/Doukutsu Monogatari" + +libretro_quicknes = "QuickNES" +libretro_quicknes_system = "Nintendo NES" + +libretro_tyrquake = "TyrQuake" +libretro_tyrquake_system = "Quake 1" + +libretro_instancingviewer = "InstancingViewer" +libretro_instancingviewer_system = "Images" + +libretro_desmume = "Desmume" +libretro_desmume_system = "Nintendo DS" + +libretro_stella = "Stella" +libretro_stella_system = "Atari 2600" + +libretro_scenewalker = "SceneWalker" +libretro_scenewalker_system = "Objects" + +libretro_modelviewer = "ModelViewer" +libretro_modelviewer_system = "Objects" + +libretro_mame078 = "MAME 2003 [0.78]" +libretro_mame078_system = "Arcade" + +libretro_bsnes_performance = "bsnes/higan Performance" +libretro_bsnes_performance_system = "Nintendo SNES" + diff --git a/android/phoenix/res/layout/line_list_item.xml b/android/phoenix/res/layout/line_list_item.xml index 46ebf2dec1..6c9d14e3d3 100644 --- a/android/phoenix/res/layout/line_list_item.xml +++ b/android/phoenix/res/layout/line_list_item.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" - android:layout_height="48dp"> + android:layout_height="wrap_content"> - - + android:layout_gravity="center_vertical" + android:orientation="vertical" > + + + + + diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 83b58c25b0..40f7d2c65f 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -12,6 +12,11 @@ android:targetClass="org.retroarch.browser.CoreSelection" android:targetPackage="org.retroarch" /> + + + = Build.VERSION_CODES.HONEYCOMB) - { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { PopupMenuAbstract menu = new PopupMenuAbstract(this, v); MenuInflater inflater = menu.getMenuInflater(); inflater.inflate(R.menu.context_menu, menu.getMenu()); - menu.setOnMenuItemClickListener(new PopupMenuAbstract.OnMenuItemClickListener() - { + menu.setOnMenuItemClickListener(new PopupMenuAbstract.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return onContextItemSelected(item); } - + }); menu.show(); - } - else - { + } else { this.openContextMenu(findViewById(android.R.id.content)); } } - + @Override public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.context_menu, menu); + ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.context_menu, menu); } - + @Override public boolean onOptionsItemSelected(MenuItem aItem) { switch (aItem.getItemId()) { @@ -177,7 +178,7 @@ public class CoreSelection extends Activity implements return super.onOptionsItemSelected(aItem); } } - + @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/android/phoenix/src/org/retroarch/browser/FileWrapper.java b/android/phoenix/src/org/retroarch/browser/FileWrapper.java index 8af274db16..afbd0fbd54 100644 --- a/android/phoenix/src/org/retroarch/browser/FileWrapper.java +++ b/android/phoenix/src/org/retroarch/browser/FileWrapper.java @@ -43,6 +43,11 @@ class FileWrapper implements IconAdapterItem { else return file.getName(); } + + @Override + public String getSubText() { + return null; + } @Override public int getIconResourceId() { diff --git a/android/phoenix/src/org/retroarch/browser/HistorySelection.java b/android/phoenix/src/org/retroarch/browser/HistorySelection.java new file mode 100644 index 0000000000..8426570f6d --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/HistorySelection.java @@ -0,0 +1,83 @@ +package org.retroarch.browser; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +import org.retroarch.R; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.provider.Settings; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView; +import android.widget.Toast; + +public class HistorySelection extends Activity implements + AdapterView.OnItemClickListener { + + private IconAdapter adapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.line_list); + + // Setup the list + adapter = new IconAdapter(this, R.layout.line_list_item); + ListView list = (ListView) findViewById(R.id.list); + list.setAdapter(adapter); + list.setOnItemClickListener(this); + + setTitle("Recently played games"); + + File history = new File(getApplicationInfo().dataDir, "retroarch-history.txt"); + + try { + BufferedReader br = new BufferedReader(new InputStreamReader( + new FileInputStream(history))); + + for (;;) { + String game = br.readLine(); + String core = br.readLine(); + String name = br.readLine(); + if (game == null || core == null || name == null) + break; + + adapter.add(new HistoryWrapper(game, core, name)); + } + br.close(); + } catch (IOException ex) { + } + } + + @Override + public void onItemClick(AdapterView aListView, View aView, + int aPosition, long aID) { + final HistoryWrapper item = adapter.getItem(aPosition); + final String gamePath = item.getGamePath(); + final String corePath = item.getCorePath(); + + Intent myIntent; + String current_ime = Settings.Secure.getString(getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD); + + MainMenuActivity.updateConfigFile(); + MainMenuActivity.waitAssetThread(); + + Toast.makeText(this, "Loading: [" + gamePath + "] ...", + Toast.LENGTH_SHORT).show(); + myIntent = new Intent(this, RetroActivity.class); + myIntent.putExtra("ROM", gamePath); + myIntent.putExtra("LIBRETRO", corePath); + myIntent.putExtra("CONFIGFILE", MainMenuActivity.getDefaultConfigPath()); + myIntent.putExtra("IME", current_ime); + startActivity(myIntent); + finish(); + } +} diff --git a/android/phoenix/src/org/retroarch/browser/HistoryWrapper.java b/android/phoenix/src/org/retroarch/browser/HistoryWrapper.java new file mode 100644 index 0000000000..ae57f1c149 --- /dev/null +++ b/android/phoenix/src/org/retroarch/browser/HistoryWrapper.java @@ -0,0 +1,63 @@ +package org.retroarch.browser; + +import java.io.File; + +import android.graphics.drawable.Drawable; + +public class HistoryWrapper implements IconAdapterItem { + + private String gamePath; + private String gamePathShort; + private String corePath; + private String coreName; + + public HistoryWrapper(String gamePath, String corePath, String coreName) { + this.gamePath = gamePath; + this.corePath = corePath; + this.coreName = coreName; + + File file = new File(gamePath); + gamePathShort = file.getName(); + try { + gamePathShort = gamePathShort.substring(0, gamePathShort.lastIndexOf('.')); + } catch (Exception e) { + } + } + + public String getGamePath() { + return gamePath; + } + + public String getCorePath() { + return corePath; + } + + public String getCoreName() { + return coreName; + } + + @Override + public boolean isEnabled() { + return true; + } + + @Override + public String getText() { + return gamePathShort; + } + + @Override + public String getSubText() { + return coreName; + } + + @Override + public int getIconResourceId() { + return 0; + } + + @Override + public Drawable getIconDrawable() { + return null; + } +} diff --git a/android/phoenix/src/org/retroarch/browser/IconAdapter.java b/android/phoenix/src/org/retroarch/browser/IconAdapter.java index 72314daf0f..5d1a2c9f64 100644 --- a/android/phoenix/src/org/retroarch/browser/IconAdapter.java +++ b/android/phoenix/src/org/retroarch/browser/IconAdapter.java @@ -10,11 +10,9 @@ import android.widget.*; interface IconAdapterItem { public abstract boolean isEnabled(); - public abstract String getText(); - + public abstract String getSubText(); public abstract int getIconResourceId(); - public abstract Drawable getIconDrawable(); } @@ -23,7 +21,6 @@ class IconAdapter extends ArrayAdapter { public IconAdapter(Activity aContext, int aLayout) { super(aContext, aLayout); - layout = aLayout; } @@ -45,6 +42,16 @@ class IconAdapter extends ArrayAdapter { textView.setText(item.getText()); textView.setEnabled(enabled); } + + textView = (TextView) aConvertView.findViewById(R.id.sub_name); + if (null != textView) { + String subText = item.getSubText(); + if (null != subText) { + textView.setVisibility(View.VISIBLE); + textView.setEnabled(item.isEnabled()); + textView.setText(subText); + } + } ImageView imageView = (ImageView) aConvertView.findViewById(R.id.icon); if (null != imageView) { diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 008c609073..df1104d48f 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -24,6 +24,19 @@ import android.widget.Toast; public class MainMenuActivity extends PreferenceActivity { private static MainMenuActivity instance = null; static private final String TAG = "MainMenu"; + static private Thread assetThread = null; + + public static void waitAssetThread() { + if (assetThread != null) { + try { + assetThread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + assetThread = null; + } + } + @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { @@ -32,56 +45,62 @@ public class MainMenuActivity extends PreferenceActivity { addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); - + // Extracting assets appears to take considerable amount of time, so // move extraction to a thread. - Thread assetThread = new Thread(new Runnable() { + assetThread = new Thread(new Runnable() { public void run() { extractAssets(); } }); assetThread.start(); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - + + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { - prefs.edit().putBoolean("first_time_refreshrate_calculate", true).commit(); - - if (!detectDevice(false)) - { + prefs.edit().putBoolean("first_time_refreshrate_calculate", true) + .commit(); + + if (!detectDevice(false)) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Welcome to RetroArch") - .setMessage("This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted...") - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("video_threaded", true); - edit.commit(); - } - }); - alert.show(); - } - else - { + .setTitle("Welcome to RetroArch") + .setMessage( + "This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted...") + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putBoolean("video_threaded", true); + edit.commit(); + } + }); + alert.show(); + } else { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Welcome to RetroArch") - .setMessage("This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted...") - .setPositiveButton("OK", null); - alert.show(); + .setTitle("Welcome to RetroArch") + .setMessage( + "This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted...") + .setPositiveButton("OK", null); + alert.show(); } } } - + public static MainMenuActivity getInstance() { - return instance; - } - + return instance; + } + private final double getDisplayRefreshRate() { // Android is *very* likely to screw this up. // It is rarely a good value to use, so make sure it's not - // completely wrong. Some phones return refresh rates that are completely bogus + // completely wrong. Some phones return refresh rates that are + // completely bogus // (like 0.3 Hz, etc), so try to be very conservative here. final WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); final Display display = wm.getDefaultDisplay(); @@ -94,7 +113,8 @@ public class MainMenuActivity extends PreferenceActivity { public static final double getRefreshRate() { double rate = 0; SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(MainMenuActivity.getInstance().getBaseContext()); + .getDefaultSharedPreferences(MainMenuActivity.getInstance() + .getBaseContext()); String refresh_rate = prefs.getString("video_refresh_rate", ""); if (!refresh_rate.isEmpty()) { try { @@ -106,11 +126,11 @@ public class MainMenuActivity extends PreferenceActivity { } else { rate = MainMenuActivity.getInstance().getDisplayRefreshRate(); } - + Log.i(TAG, "Using refresh rate: " + rate + " Hz."); return rate; } - + public static String readCPUInfo() { String result = ""; @@ -127,28 +147,32 @@ public class MainMenuActivity extends PreferenceActivity { } return result; } - + @TargetApi(17) public static int getLowLatencyOptimalSamplingRate() { - AudioManager manager = (AudioManager)MainMenuActivity.getInstance().getApplicationContext().getSystemService(Context.AUDIO_SERVICE); - return Integer.parseInt(manager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); + AudioManager manager = (AudioManager) MainMenuActivity.getInstance() + .getApplicationContext() + .getSystemService(Context.AUDIO_SERVICE); + return Integer.parseInt(manager + .getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); } - + public static int getOptimalSamplingRate() { int ret; if (android.os.Build.VERSION.SDK_INT >= 17) ret = getLowLatencyOptimalSamplingRate(); else - ret = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC); - + ret = AudioTrack + .getNativeOutputSampleRate(AudioManager.STREAM_MUSIC); + Log.i(TAG, "Using sampling rate: " + ret + " Hz"); return ret; } - + public static String getDefaultConfigPath() { String internal = System.getenv("INTERNAL_STORAGE"); String external = System.getenv("EXTERNAL_STORAGE"); - + if (external != null) { String confPath = external + File.separator + "retroarch.cfg"; if (new File(confPath).exists()) @@ -162,17 +186,23 @@ public class MainMenuActivity extends PreferenceActivity { if (new File(confPath).exists()) return confPath; } - - if (internal != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + + if (internal != null + && new File(internal + File.separator + "retroarch.cfg") + .canWrite()) return internal + File.separator + "retroarch.cfg"; - else if (external != null && new File(internal + File.separator + "retroarch.cfg").canWrite()) + else if (external != null + && new File(internal + File.separator + "retroarch.cfg") + .canWrite()) return external + File.separator + "retroarch.cfg"; else if ((MainMenuActivity.getInstance().getApplicationInfo().dataDir) != null) - return (MainMenuActivity.getInstance().getApplicationInfo().dataDir) + File.separator + "retroarch.cfg"; - else // emergency fallback, all else failed + return (MainMenuActivity.getInstance().getApplicationInfo().dataDir) + + File.separator + "retroarch.cfg"; + else + // emergency fallback, all else failed return "/mnt/sd/retroarch.cfg"; } - + public static void updateConfigFile() { ConfigFile config; try { @@ -180,30 +210,55 @@ public class MainMenuActivity extends PreferenceActivity { } catch (IOException e) { config = new ConfigFile(); } - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainMenuActivity.getInstance().getBaseContext()); - config.setString("libretro_path", MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir); - config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); - config.setInt("audio_out_rate", MainMenuActivity.getOptimalSamplingRate()); - config.setInt("audio_latency", prefs.getBoolean("audio_high_latency", false) ? 160 : 64); - config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); - config.setBoolean("video_smooth", prefs.getBoolean("video_smooth", true)); - config.setBoolean("video_allow_rotate", prefs.getBoolean("video_allow_rotate", true)); - config.setBoolean("savestate_auto_load", prefs.getBoolean("savestate_auto_load", true)); - config.setBoolean("savestate_auto_save", prefs.getBoolean("savestate_auto_save", false)); - config.setBoolean("rewind_enable", prefs.getBoolean("rewind_enable", false)); + + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(MainMenuActivity.getInstance() + .getBaseContext()); + config.setString("libretro_path", MainMenuActivity.getInstance() + .getApplicationInfo().nativeLibraryDir); + config.setBoolean("audio_rate_control", + prefs.getBoolean("audio_rate_control", true)); + config.setInt("audio_out_rate", + MainMenuActivity.getOptimalSamplingRate()); + config.setInt("audio_latency", + prefs.getBoolean("audio_high_latency", false) ? 160 : 64); + config.setBoolean("audio_enable", + prefs.getBoolean("audio_enable", true)); + config.setBoolean("video_smooth", + prefs.getBoolean("video_smooth", true)); + config.setBoolean("video_allow_rotate", + prefs.getBoolean("video_allow_rotate", true)); + config.setBoolean("savestate_auto_load", + prefs.getBoolean("savestate_auto_load", true)); + config.setBoolean("savestate_auto_save", + prefs.getBoolean("savestate_auto_save", false)); + config.setBoolean("rewind_enable", + prefs.getBoolean("rewind_enable", false)); config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true)); - config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true)); - config.setBoolean("input_debug_enable", prefs.getBoolean("input_debug_enable", false)); - config.setInt("input_back_behavior", Integer.valueOf(prefs.getString("input_back_behavior", "0"))); - config.setInt("input_autodetect_icade_profile_pad1", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad1", "0"))); - config.setInt("input_autodetect_icade_profile_pad2", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad2", "0"))); - config.setInt("input_autodetect_icade_profile_pad3", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad3", "0"))); - config.setInt("input_autodetect_icade_profile_pad4", Integer.valueOf(prefs.getString("input_autodetect_icade_profile_pad4", "0"))); - - config.setDouble("video_refresh_rate", MainMenuActivity.getRefreshRate()); - config.setBoolean("video_threaded", prefs.getBoolean("video_threaded", true)); - + config.setBoolean("input_autodetect_enable", + prefs.getBoolean("input_autodetect_enable", true)); + config.setBoolean("input_debug_enable", + prefs.getBoolean("input_debug_enable", false)); + config.setInt("input_back_behavior", + Integer.valueOf(prefs.getString("input_back_behavior", "0"))); + config.setInt("input_autodetect_icade_profile_pad1", Integer + .valueOf(prefs.getString("input_autodetect_icade_profile_pad1", + "0"))); + config.setInt("input_autodetect_icade_profile_pad2", Integer + .valueOf(prefs.getString("input_autodetect_icade_profile_pad2", + "0"))); + config.setInt("input_autodetect_icade_profile_pad3", Integer + .valueOf(prefs.getString("input_autodetect_icade_profile_pad3", + "0"))); + config.setInt("input_autodetect_icade_profile_pad4", Integer + .valueOf(prefs.getString("input_autodetect_icade_profile_pad4", + "0"))); + + config.setDouble("video_refresh_rate", + MainMenuActivity.getRefreshRate()); + config.setBoolean("video_threaded", + prefs.getBoolean("video_threaded", true)); + String aspect = prefs.getString("video_aspect_ratio", "auto"); if (aspect.equals("full")) { config.setBoolean("video_force_aspect", false); @@ -220,9 +275,10 @@ public class MainMenuActivity extends PreferenceActivity { config.setBoolean("video_force_aspect", true); config.setDouble("video_aspect_ratio", aspect_ratio); } - - config.setBoolean("video_scale_integer", prefs.getBoolean("video_scale_integer", false)); - + + config.setBoolean("video_scale_integer", + prefs.getBoolean("video_scale_integer", false)); + String shaderPath = prefs.getString("video_shader", ""); config.setString("video_shader", shaderPath); config.setBoolean("video_shader_enable", @@ -231,28 +287,42 @@ public class MainMenuActivity extends PreferenceActivity { boolean useOverlay = prefs.getBoolean("input_overlay_enable", true); if (useOverlay) { - String overlayPath = prefs.getString("input_overlay", (MainMenuActivity.getInstance().getApplicationInfo().dataDir) + "/overlays/snes-landscape.cfg"); + String overlayPath = prefs + .getString("input_overlay", (MainMenuActivity.getInstance() + .getApplicationInfo().dataDir) + + "/overlays/snes-landscape.cfg"); config.setString("input_overlay", overlayPath); - config.setDouble("input_overlay_opacity", prefs.getFloat("input_overlay_opacity", 1.0f)); + config.setDouble("input_overlay_opacity", + prefs.getFloat("input_overlay_opacity", 1.0f)); } else { config.setString("input_overlay", ""); } + + config.setString( + "savefile_directory", + prefs.getBoolean("savefile_directory_enable", false) ? prefs + .getString("savefile_directory", "") : ""); + config.setString( + "savestate_directory", + prefs.getBoolean("savestate_directory_enable", false) ? prefs + .getString("savestate_directory", "") : ""); + config.setString( + "system_directory", + prefs.getBoolean("system_directory_enable", false) ? prefs + .getString("system_directory", "") : ""); + + config.setBoolean("video_font_enable", + prefs.getBoolean("video_font_enable", true)); - config.setString("savefile_directory", prefs.getBoolean("savefile_directory_enable", false) ? - prefs.getString("savefile_directory", "") : ""); - config.setString("savestate_directory", prefs.getBoolean("savestate_directory_enable", false) ? - prefs.getString("savestate_directory", "") : ""); - config.setString("system_directory", prefs.getBoolean("system_directory_enable", false) ? - prefs.getString("system_directory", "") : ""); - - config.setBoolean("video_font_enable", prefs.getBoolean("video_font_enable", true)); - - for (int i = 1; i <= 4; i++) - { - final String btns[] = {"up", "down", "left", "right", "a", "b", "x", "y", "start", "select", "l", "r", "l2", "r2", "l3", "r3" }; - for (String b : btns) - { - String p = "input_player" + String.valueOf(i) + "_" + b + "_btn"; + config.setString("game_history_path", MainMenuActivity.getInstance().getApplicationInfo().dataDir + "/retroarch-history.txt"); + + for (int i = 1; i <= 4; i++) { + final String btns[] = { "up", "down", "left", "right", "a", "b", + "x", "y", "start", "select", "l", "r", "l2", "r2", "l3", + "r3" }; + for (String b : btns) { + String p = "input_player" + String.valueOf(i) + "_" + b + + "_btn"; config.setInt(p, prefs.getInt(p, 0)); } } @@ -264,7 +334,7 @@ public class MainMenuActivity extends PreferenceActivity { Log.e(TAG, "Failed to save config file to: " + confPath); } } - + private byte[] loadAsset(String asset) throws IOException { String path = asset; InputStream stream = getAssets().open(path); @@ -273,22 +343,24 @@ public class MainMenuActivity extends PreferenceActivity { stream.read(buf, 0, len); return buf; } - - private void extractAssets(AssetManager manager, String dataDir, String relativePath, int level) throws IOException { + + private void extractAssets(AssetManager manager, String dataDir, + String relativePath, int level) throws IOException { final String[] paths = manager.list(relativePath); if (paths != null && paths.length > 0) { // Directory - //Log.d(TAG, "Extracting assets directory: " + relativePath); + // Log.d(TAG, "Extracting assets directory: " + relativePath); for (final String path : paths) - extractAssets(manager, dataDir, relativePath + (level > 0 ? File.separator : "") + path, level + 1); + extractAssets(manager, dataDir, relativePath + + (level > 0 ? File.separator : "") + path, level + 1); } else { // File, extract. - //Log.d(TAG, "Extracting assets file: " + relativePath); - + // Log.d(TAG, "Extracting assets file: " + relativePath); + String parentPath = new File(relativePath).getParent(); if (parentPath != null) { File parentFile = new File(dataDir, parentPath); parentFile.mkdirs(); // Doesn't throw. } - + byte[] asset = loadAsset(relativePath); BufferedOutputStream writer = new BufferedOutputStream( new FileOutputStream(new File(dataDir, relativePath))); @@ -298,128 +370,146 @@ public class MainMenuActivity extends PreferenceActivity { writer.close(); } } - + private void extractAssets() { int version = 0; try { version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; - } catch(NameNotFoundException e) { + } catch (NameNotFoundException e) { // weird exception, shouldn't happen } - + try { AssetManager assets = getAssets(); String dataDir = getApplicationInfo().dataDir; File cacheVersion = new File(dataDir, ".cacheversion"); - if (cacheVersion != null && cacheVersion.isFile() && cacheVersion.canRead() && cacheVersion.canWrite()) - { - DataInputStream cacheStream = new DataInputStream(new FileInputStream(cacheVersion)); + if (cacheVersion != null && cacheVersion.isFile() + && cacheVersion.canRead() && cacheVersion.canWrite()) { + DataInputStream cacheStream = new DataInputStream( + new FileInputStream(cacheVersion)); int currentCacheVersion = 0; try { currentCacheVersion = cacheStream.readInt(); - } catch (IOException e) {} - cacheStream.close(); - - if (currentCacheVersion == version) - { + } catch (IOException e) { + } + cacheStream.close(); + + if (currentCacheVersion == version) { Log.i("ASSETS", "Assets already extracted, skipping..."); return; } } - - //extractAssets(assets, cacheDir, "", 0); + + // extractAssets(assets, cacheDir, "", 0); Log.i("ASSETS", "Extracting shader assets now ..."); try { extractAssets(assets, dataDir, "shaders_glsl", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract shaders ..."); } - + Log.i("ASSETS", "Extracting overlay assets now ..."); try { extractAssets(assets, dataDir, "overlays", 1); } catch (IOException e) { Log.i("ASSETS", "Failed to extract overlays ..."); } - - DataOutputStream outputCacheVersion = new DataOutputStream(new FileOutputStream(cacheVersion, false)); + + DataOutputStream outputCacheVersion = new DataOutputStream( + new FileOutputStream(cacheVersion, false)); outputCacheVersion.writeInt(version); outputCacheVersion.close(); } catch (IOException e) { - Log.e(TAG, "Failed to extract assets to cache."); + Log.e(TAG, "Failed to extract assets to cache."); } } - - boolean detectDevice(boolean show_dialog) - { + + boolean detectDevice(boolean show_dialog) { boolean retval = false; - + Log.i("Device MODEL", android.os.Build.MODEL); - if (android.os.Build.MODEL.equals("SHIELD")) - { + if (android.os.Build.MODEL.equals("SHIELD")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("NVidia Shield detected") - .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putString("video_refresh_rate", Double.valueOf(60.00d).toString()); - edit.putBoolean("input_overlay_enable", false); - edit.putBoolean("input_autodetect_enable", true); - edit.commit(); - } - }); + .setTitle("NVidia Shield detected") + .setMessage( + "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putString("video_refresh_rate", Double + .valueOf(60.00d).toString()); + edit.putBoolean("input_overlay_enable", + false); + edit.putBoolean("input_autodetect_enable", + true); + edit.commit(); + } + }); + alert.show(); + retval = true; + } else if (android.os.Build.MODEL.equals("OUYA Console")) { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("OUYA detected") + .setMessage( + "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putBoolean("input_overlay_enable", + false); + edit.putBoolean("input_autodetect_enable", + true); + edit.commit(); + } + }); + alert.show(); + retval = true; + } else if (android.os.Build.ID.equals("JSS15J")) { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("Nexus 7 2013 detected") + .setMessage( + "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putString("video_refresh_rate", Double + .valueOf(59.65).toString()); + edit.commit(); + } + }); alert.show(); retval = true; } - else if (android.os.Build.MODEL.equals( "OUYA Console")) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("OUYA detected") - .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putBoolean("input_overlay_enable", false); - edit.putBoolean("input_autodetect_enable", true); - edit.commit(); - } - }); - alert.show(); - retval = true; - } - else if (android.os.Build.ID.equals("JSS15J")) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Nexus 7 2013 detected") - .setMessage("The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs.edit(); - edit.putString("video_refresh_rate", Double.valueOf(59.65).toString()); - edit.commit(); - } - }); - alert.show(); - retval = true; - } - + if (show_dialog) { - Toast.makeText(this, - "Device either not detected in list or doesn't have any optimal settings in our database.", - Toast.LENGTH_SHORT).show(); + Toast.makeText( + this, + "Device either not detected in list or doesn't have any optimal settings in our database.", + Toast.LENGTH_SHORT).show(); } - + return retval; } - + @Override protected void onStart() { super.onStart(); diff --git a/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java b/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java index c741c28af5..f029edb0cc 100644 --- a/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java +++ b/android/phoenix/src/org/retroarch/browser/ModuleWrapper.java @@ -28,6 +28,15 @@ class ModuleWrapper implements IconAdapterItem { } else return stripped; } + + @Override + public String getSubText() { + String stripped = file.getName().replace(".so", "") + "_system"; + if (config.keyExists(stripped)) { + return config.getString(stripped); + } else + return null; + } @Override public int getIconResourceId() { From 2dcc133cabbe3a693ccbad7b27c4c8d5588a3ff4 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 16 Aug 2013 12:25:34 +0200 Subject: [PATCH 212/252] Wait for asset thread when selecting overlay and/or shader. --- android/phoenix/src/org/retroarch/browser/OverlayActivity.java | 1 + android/phoenix/src/org/retroarch/browser/ShaderActivity.java | 1 + 2 files changed, 2 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java index 38981f6b87..b92b190a14 100644 --- a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java +++ b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java @@ -7,6 +7,7 @@ import android.os.Bundle; public class OverlayActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { + MainMenuActivity.waitAssetThread(); File overlayDir = new File(getBaseContext().getApplicationInfo().dataDir, "overlays"); if (overlayDir.exists()) super.setStartDirectory(overlayDir.getAbsolutePath()); diff --git a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java index 3fb705de94..707363b19e 100644 --- a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java +++ b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java @@ -7,6 +7,7 @@ import android.os.Bundle; public class ShaderActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { + MainMenuActivity.waitAssetThread(); File shaderDir = new File(getBaseContext().getApplicationInfo().dataDir, "shaders_glsl"); if (shaderDir.exists()) super.setStartDirectory(shaderDir.getAbsolutePath()); From dd2d8009ca539440ce5172345c7e341e0104d480 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 16 Aug 2013 14:46:36 +0200 Subject: [PATCH 213/252] Add ProgressBar for asset extraction. --- android/phoenix/res/layout/assets.xml | 22 +++++ android/phoenix/res/values/strings.xml | 1 + .../org/retroarch/browser/CoreSelection.java | 1 - .../retroarch/browser/HistorySelection.java | 1 - .../retroarch/browser/MainMenuActivity.java | 99 ++++++++++++------- .../retroarch/browser/OverlayActivity.java | 1 - .../org/retroarch/browser/ShaderActivity.java | 1 - 7 files changed, 86 insertions(+), 40 deletions(-) create mode 100644 android/phoenix/res/layout/assets.xml diff --git a/android/phoenix/res/layout/assets.xml b/android/phoenix/res/layout/assets.xml new file mode 100644 index 0000000000..afb702997c --- /dev/null +++ b/android/phoenix/res/layout/assets.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/android/phoenix/res/values/strings.xml b/android/phoenix/res/values/strings.xml index e37ebf04c3..530ed1c704 100644 --- a/android/phoenix/res/values/strings.xml +++ b/android/phoenix/res/values/strings.xml @@ -9,5 +9,6 @@ Report Refresh Rate Detect Optimal device settings + Extracting assets, please wait ... diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 224ee799c9..72f5e67beb 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -113,7 +113,6 @@ public class CoreSelection extends Activity implements Settings.Secure.DEFAULT_INPUT_METHOD); MainMenuActivity.updateConfigFile(); - MainMenuActivity.waitAssetThread(); switch (requestCode) { case ACTIVITY_LOAD_ROM: diff --git a/android/phoenix/src/org/retroarch/browser/HistorySelection.java b/android/phoenix/src/org/retroarch/browser/HistorySelection.java index 8426570f6d..5e416469dd 100644 --- a/android/phoenix/src/org/retroarch/browser/HistorySelection.java +++ b/android/phoenix/src/org/retroarch/browser/HistorySelection.java @@ -68,7 +68,6 @@ public class HistorySelection extends Activity implements Settings.Secure.DEFAULT_INPUT_METHOD); MainMenuActivity.updateConfigFile(); - MainMenuActivity.waitAssetThread(); Toast.makeText(this, "Loading: [" + gamePath + "] ...", Toast.LENGTH_SHORT).show(); diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index df1104d48f..037cee4b1b 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -6,6 +6,7 @@ import org.retroarch.R; import android.annotation.TargetApi; import android.app.AlertDialog; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; @@ -14,6 +15,7 @@ import android.content.res.AssetManager; import android.media.AudioManager; import android.media.AudioTrack; import android.os.Bundle; +import android.os.Handler; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.util.Log; @@ -24,18 +26,6 @@ import android.widget.Toast; public class MainMenuActivity extends PreferenceActivity { private static MainMenuActivity instance = null; static private final String TAG = "MainMenu"; - static private Thread assetThread = null; - - public static void waitAssetThread() { - if (assetThread != null) { - try { - assetThread.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - assetThread = null; - } - } @SuppressWarnings("deprecation") @Override @@ -46,18 +36,11 @@ public class MainMenuActivity extends PreferenceActivity { PreferenceManager.setDefaultValues(this, R.xml.prefs, false); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); - // Extracting assets appears to take considerable amount of time, so - // move extraction to a thread. - assetThread = new Thread(new Runnable() { - public void run() { - extractAssets(); - } - }); - assetThread.start(); - SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); + extractAssets(); + if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { prefs.edit().putBoolean("first_time_refreshrate_calculate", true) .commit(); @@ -66,7 +49,7 @@ public class MainMenuActivity extends PreferenceActivity { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Welcome to RetroArch") .setMessage( - "This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted...") + "This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted ...") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override @@ -85,7 +68,7 @@ public class MainMenuActivity extends PreferenceActivity { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Welcome to RetroArch") .setMessage( - "This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted...") + "This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted ...") .setPositiveButton("OK", null); alert.show(); } @@ -370,17 +353,21 @@ public class MainMenuActivity extends PreferenceActivity { writer.close(); } } - - private void extractAssets() { + + private int getVersionCode() { int version = 0; try { version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; } catch (NameNotFoundException e) { - // weird exception, shouldn't happen } - + + return version; + } + + private boolean areAssetsExtracted() { + int version = getVersionCode(); + try { - AssetManager assets = getAssets(); String dataDir = getApplicationInfo().dataDir; File cacheVersion = new File(dataDir, ".cacheversion"); if (cacheVersion != null && cacheVersion.isFile() @@ -397,9 +384,22 @@ public class MainMenuActivity extends PreferenceActivity { if (currentCacheVersion == version) { Log.i("ASSETS", "Assets already extracted, skipping..."); - return; + return true; } } + } catch (IOException e) { + Log.e(TAG, "Failed to extract assets to cache."); + return false; + } + + return false; + } + + private void extractAssetsThread() { + try { + AssetManager assets = getAssets(); + String dataDir = getApplicationInfo().dataDir; + File cacheVersion = new File(dataDir, ".cacheversion"); // extractAssets(assets, cacheDir, "", 0); Log.i("ASSETS", "Extracting shader assets now ..."); @@ -418,22 +418,51 @@ public class MainMenuActivity extends PreferenceActivity { DataOutputStream outputCacheVersion = new DataOutputStream( new FileOutputStream(cacheVersion, false)); - outputCacheVersion.writeInt(version); + outputCacheVersion.writeInt(getVersionCode()); outputCacheVersion.close(); } catch (IOException e) { Log.e(TAG, "Failed to extract assets to cache."); } } + private void extractAssets() { + if (areAssetsExtracted()) + return; + + final Dialog dialog = new Dialog(this); + final Handler handler = new Handler(); + dialog.setContentView(R.layout.assets); + dialog.setCancelable(false); + + // Java is fun :) + Thread assetsThread = new Thread(new Runnable() { + public void run() { + extractAssetsThread(); + handler.post(new Runnable() { + public void run() { + dialog.dismiss(); + } + }); + } + }); + assetsThread.start(); + + dialog.show(); + } + boolean detectDevice(boolean show_dialog) { boolean retval = false; + + boolean mentionPlayStore = !android.os.Build.MODEL.equals("OUYA Console"); + final String message = "The ideal configuration options for your device will now be preconfigured.\n\nNOTE: For optimal performance, turn off Google Account sync, " + + (mentionPlayStore ? "Google Play Store auto-updates, " : "") + + "GPS and Wi-Fi in your Android settings menu."; Log.i("Device MODEL", android.os.Build.MODEL); if (android.os.Build.MODEL.equals("SHIELD")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("NVidia Shield detected") - .setMessage( - "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setMessage(message) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override @@ -457,8 +486,7 @@ public class MainMenuActivity extends PreferenceActivity { } else if (android.os.Build.MODEL.equals("OUYA Console")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("OUYA detected") - .setMessage( - "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, GPS and Wifi in your Android settings menu.") + .setMessage(message) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override @@ -480,8 +508,7 @@ public class MainMenuActivity extends PreferenceActivity { } else if (android.os.Build.ID.equals("JSS15J")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Nexus 7 2013 detected") - .setMessage( - "The ideal configuration options for your device will now be preconfigured.\nNOTE: For optimal performance, turn off Google Account sync, Google Play Store auto-updates, GPS and Wifi in your Android settings menu.") + .setMessage(message) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override diff --git a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java index b92b190a14..38981f6b87 100644 --- a/android/phoenix/src/org/retroarch/browser/OverlayActivity.java +++ b/android/phoenix/src/org/retroarch/browser/OverlayActivity.java @@ -7,7 +7,6 @@ import android.os.Bundle; public class OverlayActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - MainMenuActivity.waitAssetThread(); File overlayDir = new File(getBaseContext().getApplicationInfo().dataDir, "overlays"); if (overlayDir.exists()) super.setStartDirectory(overlayDir.getAbsolutePath()); diff --git a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java index 707363b19e..3fb705de94 100644 --- a/android/phoenix/src/org/retroarch/browser/ShaderActivity.java +++ b/android/phoenix/src/org/retroarch/browser/ShaderActivity.java @@ -7,7 +7,6 @@ import android.os.Bundle; public class ShaderActivity extends DirectoryActivity { @Override public void onCreate(Bundle savedInstanceState) { - MainMenuActivity.waitAssetThread(); File shaderDir = new File(getBaseContext().getApplicationInfo().dataDir, "shaders_glsl"); if (shaderDir.exists()) super.setStartDirectory(shaderDir.getAbsolutePath()); From c539b82a70afb2460a3bd17eaffe3d2d79fcfef7 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 16 Aug 2013 15:46:37 +0200 Subject: [PATCH 214/252] Display dialog title. --- android/phoenix/src/org/retroarch/browser/MainMenuActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 037cee4b1b..e668b40757 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -433,6 +433,7 @@ public class MainMenuActivity extends PreferenceActivity { final Handler handler = new Handler(); dialog.setContentView(R.layout.assets); dialog.setCancelable(false); + dialog.setTitle("Asset extraction"); // Java is fun :) Thread assetsThread = new Thread(new Runnable() { From 849c14d8a202d194c3e223d0823efabb93441755 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 16 Aug 2013 17:07:09 +0200 Subject: [PATCH 215/252] (Android) Bumped up to r22 --- android/phoenix/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index c8cbc8ecf4..f934fc894c 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,6 +1,6 @@ From 7d25e64fb446af37ccc50693e5662d8d48b655e5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 16 Aug 2013 17:08:53 +0200 Subject: [PATCH 216/252] (Android) Update CHANGELOG for version 0.9.9.6 --- dist-scripts/retroarch-CHANGELOG.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dist-scripts/retroarch-CHANGELOG.txt b/dist-scripts/retroarch-CHANGELOG.txt index 8263a4e4c0..1d15c41024 100644 --- a/dist-scripts/retroarch-CHANGELOG.txt +++ b/dist-scripts/retroarch-CHANGELOG.txt @@ -5,6 +5,9 @@ v0.9.9.6 battle screens etc. * [VBA Next] Add a core option to change the control button layout from (left to right) B to A to (left to right) A to B. +* [Android] Added Load Game History to Android Java UI +* [Android] Will show a progressbar dialog during asset extraction so that the +user knows what is happening. ------------------------------------------------------------------------------ v0.9.9.5 From a4dfd35ab72b6f6e2f94331fe12ec17b2728fe29 Mon Sep 17 00:00:00 2001 From: meancoot Date: Thu, 15 Aug 2013 19:28:51 -0400 Subject: [PATCH 217/252] (Apple) Improvements: Add core gl context support on OSX Add support for multiple game pads on OSX Remove block on analog input for Player 2-4's game pads --- apple/OSX/hid_pad.c | 12 ++++++- apple/OSX/platform.h | 2 +- apple/RetroArch/RAGameView.m | 60 +++++++++++++++++++++++++--------- apple/RetroArch/apple_joypad.c | 2 +- gfx/context/apple_gl_ctx.c | 2 +- gfx/gl.c | 4 +-- 6 files changed, 61 insertions(+), 21 deletions(-) diff --git a/apple/OSX/hid_pad.c b/apple/OSX/hid_pad.c index 79c453e9b3..33bb819b9e 100644 --- a/apple/OSX/hid_pad.c +++ b/apple/OSX/hid_pad.c @@ -19,6 +19,7 @@ // NOTE: I pieced this together through trial and error, any corrections are welcome static IOHIDManagerRef g_hid_manager; +static uint32_t g_num_pads; static void hid_input_callback(void* inContext, IOReturn inResult, void* inSender, IOHIDValueRef inIOHIDValueRef) { @@ -83,9 +84,18 @@ static void hid_input_callback(void* inContext, IOReturn inResult, void* inSende static void hid_device_attached(void* inContext, IOReturn inResult, void* inSender, IOHIDDeviceRef inDevice) { + void* context = 0; + + if (IOHIDDeviceConformsTo(inDevice, kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick)) + { + if (g_num_pads > 4) + return; + context = (void*)(g_num_pads++); + } + IOHIDDeviceOpen(inDevice, kIOHIDOptionsTypeNone); IOHIDDeviceScheduleWithRunLoop(inDevice, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); - IOHIDDeviceRegisterInputValueCallback(inDevice, hid_input_callback, 0); + IOHIDDeviceRegisterInputValueCallback(inDevice, hid_input_callback, context); } static void hid_device_removed(void* inContext, IOReturn inResult, void* inSender, IOHIDDeviceRef inDevice) diff --git a/apple/OSX/platform.h b/apple/OSX/platform.h index f858ade962..b35cf774af 100644 --- a/apple/OSX/platform.h +++ b/apple/OSX/platform.h @@ -19,7 +19,7 @@ #import -@interface RAGameView : NSOpenGLView +@interface RAGameView : NSView + (RAGameView*)get; - (void)display; diff --git a/apple/RetroArch/RAGameView.m b/apple/RetroArch/RAGameView.m index daa9fd97e9..4b9c592f33 100644 --- a/apple/RetroArch/RAGameView.m +++ b/apple/RetroArch/RAGameView.m @@ -35,6 +35,7 @@ static UIView* g_pause_indicator_view; static RAGameView* g_instance; static NSOpenGLContext* g_context; +static NSOpenGLPixelFormat* g_format; #define g_view g_instance // < RAGameView is a container on iOS; on OSX these are both the same object @@ -57,25 +58,22 @@ static float g_screen_scale = 1.0f; - (id)init { - static const NSOpenGLPixelFormatAttribute attributes [] = { - NSOpenGLPFAWindow, - NSOpenGLPFADoubleBuffer, // double buffered - NSOpenGLPFADepthSize, (NSOpenGLPixelFormatAttribute)16, // 16 bit depth buffer - (NSOpenGLPixelFormatAttribute)nil - }; - - self = [super initWithFrame:CGRectMake(0, 0, 100, 100) pixelFormat:[[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]]; - self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; - - g_context = self.openGLContext; - [g_context makeCurrentContext]; - + self = [super init]; + self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; return self; } +- (void)setFrame:(NSRect)frameRect +{ + [super setFrame:frameRect]; + + if (g_view && g_context) + [g_context update]; +} + - (void)display { - [self.openGLContext flushBuffer]; + [g_context flushBuffer]; } - (void)bindDrawable @@ -237,6 +235,38 @@ void apple_destroy_game_view() #endif } +bool apple_create_gl_context(uint32_t version) +{ +#ifdef OSX + [NSOpenGLContext clearCurrentContext]; + + dispatch_sync(dispatch_get_main_queue(), ^{ + [NSOpenGLContext clearCurrentContext]; + [g_context clearDrawable]; + g_context = nil; + g_format = nil; + + NSOpenGLPixelFormatAttribute attributes [] = { + NSOpenGLPFADoubleBuffer, // double buffered + NSOpenGLPFADepthSize, (NSOpenGLPixelFormatAttribute)16, // 16 bit depth buffer + version ? NSOpenGLPFAOpenGLProfile : 0, version, + (NSOpenGLPixelFormatAttribute)nil + }; + + g_format = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]; + g_context = [[NSOpenGLContext alloc] initWithFormat:g_format shareContext:nil]; + g_context.view = g_view; + [g_context makeCurrentContext]; + }); + + [g_context makeCurrentContext]; + +#endif + + return true; + +} + void apple_flip_game_view() { if (--g_fast_forward_skips < 0) @@ -255,7 +285,7 @@ void apple_set_game_view_sync(unsigned interval) g_fast_forward_skips = interval ? 0 : 3; #elif defined(OSX) GLint value = interval ? 1 : 0; - [g_view.openGLContext setValues:&value forParameter:NSOpenGLCPSwapInterval]; + [g_context setValues:&value forParameter:NSOpenGLCPSwapInterval]; #endif } diff --git a/apple/RetroArch/apple_joypad.c b/apple/RetroArch/apple_joypad.c index 312f245b43..76a8dc2853 100644 --- a/apple/RetroArch/apple_joypad.c +++ b/apple/RetroArch/apple_joypad.c @@ -56,7 +56,7 @@ static bool apple_joypad_button(unsigned port, uint16_t joykey) static int16_t apple_joypad_axis(unsigned port, uint32_t joyaxis) { - if (joyaxis == AXIS_NONE || port != 0) + if (joyaxis == AXIS_NONE) return 0; int16_t val = 0; diff --git a/gfx/context/apple_gl_ctx.c b/gfx/context/apple_gl_ctx.c index 3fc50861b2..d8db42630f 100644 --- a/gfx/context/apple_gl_ctx.c +++ b/gfx/context/apple_gl_ctx.c @@ -34,7 +34,7 @@ static bool gfx_ctx_bind_api(enum gfx_ctx_api api, unsigned major, unsigned mino #ifdef IOS return api == GFX_CTX_OPENGL_ES_API; #else - return api == GFX_CTX_OPENGL_API; + return apple_create_gl_context((major << 12) | (minor << 8)); #endif } diff --git a/gfx/gl.c b/gfx/gl.c index 768e79631c..7a62910a78 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -153,7 +153,7 @@ static bool check_sync_proc(gl_t *gl) #ifndef HAVE_OPENGLES static bool init_vao(gl_t *gl) { - if (!gl_query_extension(gl, "ARB_vertex_array_object")) + if (!gl->core_context && !gl_query_extension(gl, "ARB_vertex_array_object")) return false; bool present = glGenVertexArrays && glBindVertexArray && glDeleteVertexArrays; @@ -184,7 +184,7 @@ static bool init_vao(gl_t *gl) #elif !defined(HAVE_OPENGLES2) static bool check_fbo_proc(gl_t *gl) { - if (!gl_query_extension(gl, "ARB_framebuffer_object")) + if (!gl->core_context && !gl_query_extension(gl, "ARB_framebuffer_object")) return false; return glGenFramebuffers && glBindFramebuffer && glFramebufferTexture2D && From 7f480342a4f9d27dce5b210725d178ce0983c3d7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 17 Aug 2013 23:35:32 +0200 Subject: [PATCH 218/252] (Android Phoenix) Add GameMID BT autodetection --- .../retroarch/browser/MainMenuActivity.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index e668b40757..e5662fbec7 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -484,6 +484,29 @@ public class MainMenuActivity extends PreferenceActivity { }); alert.show(); retval = true; + } else if (android.os.Build.MODEL.equals("GAMEMID_BT")) { + AlertDialog.Builder alert = new AlertDialog.Builder(this) + .setTitle("GameMID detected") + .setMessage(message) + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putBoolean("input_overlay_enable", + false); + edit.putBoolean("input_autodetect_enable", + true); + edit.putBoolean("audio_high_latency", true); + edit.commit(); + } + }); + alert.show(); + retval = true; } else if (android.os.Build.MODEL.equals("OUYA Console")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("OUYA detected") From 744d2d169e544ba6540d8bfaffe5c080fcdc9a6e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 18 Aug 2013 03:04:03 +0200 Subject: [PATCH 219/252] (Android Phoenix) Take out 'welcome to Android' popup --- android/phoenix/AndroidManifest.xml | 2 +- .../src/org/retroarch/browser/MainMenuActivity.java | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index f934fc894c..0d6ebfe3a9 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index e5662fbec7..fd89186fee 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -49,7 +49,7 @@ public class MainMenuActivity extends PreferenceActivity { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("Welcome to RetroArch") .setMessage( - "This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience. Please be aware that it might take some time until all shader and overlay assets are extracted ...") + "This is your first time starting up RetroArch. RetroArch will now be preconfigured for the best possible gameplay experience.") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override @@ -64,13 +64,6 @@ public class MainMenuActivity extends PreferenceActivity { } }); alert.show(); - } else { - AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("Welcome to RetroArch") - .setMessage( - "This is your first time starting up RetroArch. Please be aware that it might take some time until all shader and overlay assets are extracted ...") - .setPositiveButton("OK", null); - alert.show(); } } } From 6018b4b9de59dcafdf0fc466418f0311d09a127d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 18 Aug 2013 07:12:23 +0200 Subject: [PATCH 220/252] (Android) Set GameMID analog mode to 'Dual analog' at startup --- android/native/jni/input_android.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index f34b69c8ff..af59fbdb3b 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -423,7 +423,7 @@ static void android_input_set_keybinds(void *data, unsigned device, break; case DEVICE_GAMEMID: g_settings.input.device[port] = device; - g_settings.input.dpad_emulation[port] = ANALOG_DPAD_NONE; + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; strlcpy(g_settings.input.device_names[port], "GameMID", sizeof(g_settings.input.device_names[port])); From 8614c349f35831b395ce393380ad30875d67f9bf Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 18 Aug 2013 14:00:18 +0200 Subject: [PATCH 221/252] Use correct overlay configs. Saves input_overlay as well on exit. --- retroarch.cfg | 6 ++++++ settings.c | 13 ++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/retroarch.cfg b/retroarch.cfg index 0e09db086e..dafd3b0847 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -210,6 +210,12 @@ # Path to input overlay # input_overlay = +# Overlay opacity +# input_overlay_opacity = 1.0 + +# Overlay scale +# input_overlay_scale = 1.0 + # Enable input auto-detection. Will attempt to autoconfigure # joypads, Plug-and-Play style. # input_autodetect_enable = true diff --git a/settings.c b/settings.c index 4cfc84e2da..4b9dd32237 100644 --- a/settings.c +++ b/settings.c @@ -664,8 +664,9 @@ bool config_load_file(const char *path) if (!strcmp(g_extern.overlay_dir, "default")) *g_extern.overlay_dir = '\0'; - CONFIG_GET_FLOAT(input.overlay_opacity, "overlay_opacity"); - CONFIG_GET_FLOAT(input.overlay_scale, "overlay_scale"); + CONFIG_GET_PATH(input.overlay, "input_overlay"); + CONFIG_GET_FLOAT(input.overlay_opacity, "input_overlay_opacity"); + CONFIG_GET_FLOAT(input.overlay_scale, "input_overlay_scale"); #endif CONFIG_GET_BOOL(rewind_enable, "rewind_enable"); @@ -702,9 +703,6 @@ bool config_load_file(const char *path) CONFIG_GET_INT(input.turbo_period, "input_turbo_period"); CONFIG_GET_INT(input.turbo_duty_cycle, "input_duty_cycle"); - CONFIG_GET_PATH(input.overlay, "input_overlay"); - CONFIG_GET_FLOAT(input.overlay_opacity, "input_overlay_opacity"); - CONFIG_GET_FLOAT(input.overlay_scale, "input_overlay_scale"); CONFIG_GET_BOOL(input.debug_enable, "input_debug_enable"); CONFIG_GET_BOOL(input.autodetect_enable, "input_autodetect_enable"); @@ -1014,8 +1012,9 @@ bool config_save_file(const char *path) else config_set_string(conf, "overlay_directory", "default"); - config_set_float(conf, "overlay_opacity", g_settings.input.overlay_opacity); - config_set_float(conf, "overlay_scale", g_settings.input.overlay_scale); + config_set_string(conf, "input_overlay", g_settings.input.overlay); + config_set_float(conf, "input_overlay_opacity", g_settings.input.overlay_opacity); + config_set_float(conf, "input_overlay_scale", g_settings.input.overlay_scale); #endif #ifdef ANDROID From f8c385a28c19290a5eafa8d0636c451ee6aa3ccb Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 18 Aug 2013 18:06:55 +0200 Subject: [PATCH 222/252] Fix cg2glsl when uniform half4x4 is used. --- tools/cg2glsl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index d8e20efe1e..7f2f341f29 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -537,7 +537,7 @@ def preprocess_vertex(source_data): input_data = source_data.split('\n') ret = [] for line in input_data: - if ('uniform' in line) and ('float4x4' in line): + if ('uniform' in line) and (('float4x4' in line) or ('half4x4' in line)): ret.append('#pragma pack_matrix(column_major)\n') ret.append(line) ret.append('#pragma pack_matrix(row_major)\n') From 8b8e33ed9220475d54dea6c12df158825484fd9b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 18 Aug 2013 18:20:03 +0200 Subject: [PATCH 223/252] (Android) Take out context menu in CoreSelection - also reduces code bloat - IME selector should go in Input Settings menu --- .../org/retroarch/browser/CoreSelection.java | 63 ------------------- .../retroarch/browser/HoneycombPopupMenu.java | 49 --------------- .../org/retroarch/browser/LazyPopupMenu.java | 15 ----- .../retroarch/browser/PopupMenuAbstract.java | 60 ------------------ 4 files changed, 187 deletions(-) delete mode 100644 android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java delete mode 100644 android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java delete mode 100644 android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java diff --git a/android/phoenix/src/org/retroarch/browser/CoreSelection.java b/android/phoenix/src/org/retroarch/browser/CoreSelection.java index 72f5e67beb..bba173ce90 100644 --- a/android/phoenix/src/org/retroarch/browser/CoreSelection.java +++ b/android/phoenix/src/org/retroarch/browser/CoreSelection.java @@ -12,8 +12,6 @@ import android.provider.Settings; import android.widget.*; import android.util.Log; import android.view.*; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.inputmethod.*; // JELLY_BEAN_MR1 = 17 @@ -90,10 +88,6 @@ public class CoreSelection extends Activity implements } this.setVolumeControlStream(AudioManager.STREAM_MUSIC); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - this.registerForContextMenu(findViewById(android.R.id.content)); - } } @Override @@ -132,61 +126,4 @@ public class CoreSelection extends Activity implements break; } } - - @Override - public boolean onCreateOptionsMenu(Menu aMenu) { - super.onCreateOptionsMenu(aMenu); - getMenuInflater().inflate(R.menu.directory_list, aMenu); - return true; - } - - public void showPopup(View v) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - PopupMenuAbstract menu = new PopupMenuAbstract(this, v); - MenuInflater inflater = menu.getMenuInflater(); - inflater.inflate(R.menu.context_menu, menu.getMenu()); - menu.setOnMenuItemClickListener(new PopupMenuAbstract.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - return onContextItemSelected(item); - } - - }); - menu.show(); - } else { - this.openContextMenu(findViewById(android.R.id.content)); - } - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.context_menu, menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem aItem) { - switch (aItem.getItemId()) { - case R.id.settings: - showPopup(findViewById(R.id.settings)); - return true; - - default: - return super.onOptionsItemSelected(aItem); - } - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.input_method_select: - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - imm.showInputMethodPicker(); - return true; - default: - return false; - } - } } diff --git a/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java b/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java deleted file mode 100644 index ca4026a913..0000000000 --- a/android/phoenix/src/org/retroarch/browser/HoneycombPopupMenu.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.retroarch.browser; - -import android.annotation.TargetApi; -import android.content.Context; -import android.os.Build; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.PopupMenu; - -@TargetApi(Build.VERSION_CODES.HONEYCOMB) -class HoneycombPopupMenu extends LazyPopupMenu { - private PopupMenu instance; - HoneycombPopupMenu.OnMenuItemClickListener listen; - - public HoneycombPopupMenu(Context context, View anchor) - { - instance = new PopupMenu(context, anchor); - } - - @Override - public void setOnMenuItemClickListener(HoneycombPopupMenu.OnMenuItemClickListener listener) - { - listen = listener; - instance.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - return listen.onMenuItemClick(item); - } - - }); - } - - @Override - public Menu getMenu() { - return instance.getMenu(); - } - - @Override - public MenuInflater getMenuInflater() { - return instance.getMenuInflater(); - } - - @Override - public void show() { - instance.show(); - } -} diff --git a/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java b/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java deleted file mode 100644 index 9e72cb5622..0000000000 --- a/android/phoenix/src/org/retroarch/browser/LazyPopupMenu.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.retroarch.browser; - -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; - -abstract class LazyPopupMenu { - public abstract Menu getMenu(); - public abstract MenuInflater getMenuInflater(); - public abstract void setOnMenuItemClickListener(LazyPopupMenu.OnMenuItemClickListener listener); - public abstract void show(); - public interface OnMenuItemClickListener { - public abstract boolean onMenuItemClick(MenuItem item); - } -} \ No newline at end of file diff --git a/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java b/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java deleted file mode 100644 index 5477a187d7..0000000000 --- a/android/phoenix/src/org/retroarch/browser/PopupMenuAbstract.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.retroarch.browser; - -import android.content.Context; -import android.os.Build; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.View; - -class PopupMenuAbstract extends LazyPopupMenu -{ - private LazyPopupMenu lazy; - - public PopupMenuAbstract(Context context, View anchor) - { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy = new HoneycombPopupMenu(context, anchor); - } - } - - @Override - public Menu getMenu() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - return lazy.getMenu(); - } - else - { - return null; - } - } - - @Override - public MenuInflater getMenuInflater() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - return lazy.getMenuInflater(); - } - else - { - return null; - } - } - - @Override - public void setOnMenuItemClickListener(PopupMenuAbstract.OnMenuItemClickListener listener) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy.setOnMenuItemClickListener(listener); - } - } - - @Override - public void show() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - { - lazy.show(); - } - } -} From 05ae971aae679a2be4f5d164e2271b871dd1ad96 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 18 Aug 2013 21:02:41 +0200 Subject: [PATCH 224/252] (Android) We now select a core first with 'Load Core', then select a game. Opens the door for per-core config files - also remembers the core from the last previous session --- android/phoenix/res/xml/prefs.xml | 9 +- .../org/retroarch/browser/CoreSelection.java | 38 +-------- .../retroarch/browser/HistorySelection.java | 4 +- .../retroarch/browser/MainMenuActivity.java | 85 ++++++++++++++++++- .../org/retroarch/browser/RetroTVMode.java | 2 +- 5 files changed, 96 insertions(+), 42 deletions(-) diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 40f7d2c65f..bec349baa9 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -1,17 +1,22 @@ + android:title="RetroArch - Main Menu" > - + + + + adapter; - static private final int ACTIVITY_LOAD_ROM = 0; - static private String libretro_path; static private final String TAG = "CoreSelection"; @Override @@ -94,36 +90,8 @@ public class CoreSelection extends Activity implements public void onItemClick(AdapterView aListView, View aView, int aPosition, long aID) { final ModuleWrapper item = adapter.getItem(aPosition); - libretro_path = item.file.getAbsolutePath(); - - Intent myIntent; - myIntent = new Intent(this, ROMActivity.class); - startActivityForResult(myIntent, ACTIVITY_LOAD_ROM); - } - - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - Intent myIntent; - String current_ime = Settings.Secure.getString(getContentResolver(), - Settings.Secure.DEFAULT_INPUT_METHOD); - - MainMenuActivity.updateConfigFile(); - - switch (requestCode) { - case ACTIVITY_LOAD_ROM: - if (data.getStringExtra("PATH") != null) { - Toast.makeText(this, - "Loading: [" + data.getStringExtra("PATH") + "]...", - Toast.LENGTH_SHORT).show(); - myIntent = new Intent(this, RetroActivity.class); - myIntent.putExtra("ROM", data.getStringExtra("PATH")); - myIntent.putExtra("LIBRETRO", libretro_path); - myIntent.putExtra("CONFIGFILE", - MainMenuActivity.getDefaultConfigPath()); - myIntent.putExtra("IME", current_ime); - startActivity(myIntent); - finish(); - } - break; - } + MainMenuActivity.getInstance().setModule(item.file.getAbsolutePath(), item.getText()); + MainMenuActivity.getInstance().updateConfigFile(); + finish(); } } diff --git a/android/phoenix/src/org/retroarch/browser/HistorySelection.java b/android/phoenix/src/org/retroarch/browser/HistorySelection.java index 5e416469dd..f35b32c26d 100644 --- a/android/phoenix/src/org/retroarch/browser/HistorySelection.java +++ b/android/phoenix/src/org/retroarch/browser/HistorySelection.java @@ -62,12 +62,14 @@ public class HistorySelection extends Activity implements final HistoryWrapper item = adapter.getItem(aPosition); final String gamePath = item.getGamePath(); final String corePath = item.getCorePath(); + + MainMenuActivity.getInstance().setModule(corePath, item.getCoreName()); Intent myIntent; String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); - MainMenuActivity.updateConfigFile(); + MainMenuActivity.getInstance().updateConfigFile(); Toast.makeText(this, "Loading: [" + gamePath + "] ...", Toast.LENGTH_SHORT).show(); diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index fd89186fee..ea995f8808 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -9,6 +9,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetManager; @@ -18,6 +19,7 @@ import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.provider.Settings; import android.util.Log; import android.view.Display; import android.view.WindowManager; @@ -25,7 +27,10 @@ import android.widget.Toast; public class MainMenuActivity extends PreferenceActivity { private static MainMenuActivity instance = null; + static private final int ACTIVITY_LOAD_ROM = 0; static private final String TAG = "MainMenu"; + static private String libretro_path; + static private String libretro_name; @SuppressWarnings("deprecation") @Override @@ -66,6 +71,21 @@ public class MainMenuActivity extends PreferenceActivity { alert.show(); } } + + if (prefs.getString("libretro_path", "").isEmpty() == false) { + libretro_path = prefs.getString("libretro_path", ""); + setCoreTitle("No core"); + + if (prefs.getString("libretro_name", "").isEmpty() == false) { + libretro_name = prefs.getString("libretro_name", "No core"); + setCoreTitle(libretro_name); + } + } + else { + libretro_path = MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir; + libretro_name = "No core"; + setCoreTitle("No core"); + } } public static MainMenuActivity getInstance() { @@ -179,7 +199,7 @@ public class MainMenuActivity extends PreferenceActivity { return "/mnt/sd/retroarch.cfg"; } - public static void updateConfigFile() { + public void updateConfigFile() { ConfigFile config; try { config = new ConfigFile(new File(getDefaultConfigPath())); @@ -190,8 +210,11 @@ public class MainMenuActivity extends PreferenceActivity { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(MainMenuActivity.getInstance() .getBaseContext()); - config.setString("libretro_path", MainMenuActivity.getInstance() - .getApplicationInfo().nativeLibraryDir); + + config.setString("libretro_path", libretro_path); + config.setString("libretro_name", libretro_name); + setCoreTitle(libretro_name); + config.setBoolean("audio_rate_control", prefs.getBoolean("audio_rate_control", true)); config.setInt("audio_out_rate", @@ -443,6 +466,25 @@ public class MainMenuActivity extends PreferenceActivity { dialog.show(); } + + public void setModule(String core_path, String core_name) { + libretro_path = core_path; + libretro_name = core_name; + File libretro_path_file = new File(core_path); + setCoreTitle((libretro_path_file.isDirectory() == true) ? "No core" : core_name); + + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putString("libretro_path", libretro_path); + edit.putString("libretro_name", libretro_name); + edit.commit(); + } + + public void setCoreTitle(String core_name) { + setTitle("RetroArch : " + core_name); + } boolean detectDevice(boolean show_dialog) { boolean retval = false; @@ -558,4 +600,41 @@ public class MainMenuActivity extends PreferenceActivity { protected void onStart() { super.onStart(); } + + @Override + public void startActivity(Intent intent) { + if (intent.getComponent().getClassName().equals("org.retroarch.browser.ROMActivity")) { + if (new File(libretro_path).isDirectory() == false) { + super.startActivityForResult(intent, ACTIVITY_LOAD_ROM); + } else { + Toast.makeText(this, + "Go to 'Load Core' and select a core first.", + Toast.LENGTH_SHORT).show(); + } + } else { + super.startActivity(intent); + } + } + + @Override + protected void onActivityResult(int reqCode, int resCode, Intent data) { + if (reqCode == ACTIVITY_LOAD_ROM) { + if (data.getStringExtra("PATH") != null) { + updateConfigFile(); + Intent myIntent; + String current_ime = Settings.Secure.getString(getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD); + Toast.makeText(this, + "Loading: [" + data.getStringExtra("PATH") + "]...", + Toast.LENGTH_SHORT).show(); + myIntent = new Intent(this, RetroActivity.class); + myIntent.putExtra("ROM", data.getStringExtra("PATH")); + myIntent.putExtra("LIBRETRO", libretro_path); + myIntent.putExtra("CONFIGFILE", + MainMenuActivity.getDefaultConfigPath()); + myIntent.putExtra("IME", current_ime); + startActivity(myIntent); + } + } + } } diff --git a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java index 23ffcfe30e..60e84b9998 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroTVMode.java +++ b/android/phoenix/src/org/retroarch/browser/RetroTVMode.java @@ -11,7 +11,7 @@ public class RetroTVMode extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - MainMenuActivity.updateConfigFile(); + MainMenuActivity.getInstance().updateConfigFile(); Intent myIntent = new Intent(this, RetroActivity.class); String current_ime = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); From 220411be67d94c6cffd165fe0e993b17edb987a2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 19 Aug 2013 01:14:01 +0200 Subject: [PATCH 225/252] (Android Phoenix) Preliminary per-core config settings - maister: things like ROM path don't currently work correctly per core when configured individually - please look at it --- android/phoenix/res/xml/prefs.xml | 4 ++ .../retroarch/browser/MainMenuActivity.java | 39 ++++++++++++++----- .../org/retroarch/browser/ROMActivity.java | 2 +- .../org/retroarch/browser/ROMDirActivity.java | 2 +- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index bec349baa9..4d696d8411 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -123,6 +123,10 @@ + Date: Mon, 19 Aug 2013 15:55:53 +0200 Subject: [PATCH 226/252] (Android) Set RetroActivity to android:exported="true" --- android/phoenix/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 0d6ebfe3a9..73af32ec05 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -42,7 +42,7 @@ - + From 9ce4684e14e699bf8ce450a9e9e15f9a711d8635 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 19 Aug 2013 22:59:54 +0200 Subject: [PATCH 227/252] Make sure ASPECT_RATIO_CUSTOM is set to something sane. --- frontend/menu/rgui.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index b95cea36e7..3edeec1b08 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -266,6 +266,10 @@ rgui_handle_t *rgui_init(void) aspectratio_lut[ASPECT_RATIO_CUSTOM].value = (float)custom->width / custom->height; } + else if (DEFAULT_ASPECT_RATIO > 0.0f) + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = DEFAULT_ASPECT_RATIO; + else + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = 4.0f / 3.0f; // Something arbitrary return rgui; } From 56674fb7f01903edc9ec72d2b1578ea08ac900f3 Mon Sep 17 00:00:00 2001 From: zevektor Date: Mon, 19 Aug 2013 23:23:39 +0200 Subject: [PATCH 228/252] Allow to load roms from external apps. --- .project | 11 + android/phoenix/AndroidManifest.xml | 4 +- .../retroarch/browser/MainMenuActivity.java | 203 ++++++++++-------- 3 files changed, 129 insertions(+), 89 deletions(-) create mode 100644 .project diff --git a/.project b/.project new file mode 100644 index 0000000000..871dee54b0 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + RetroArch_ + + + + + + + + diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index 73af32ec05..c44b3a1e1e 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ - + diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 45d1f6be74..35fe1c56b9 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -36,6 +36,13 @@ public class MainMenuActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Intent startedByIntent = getIntent(); + if (null != startedByIntent.getStringExtra("ROM") + && null != startedByIntent.getStringExtra("LIBRETRO")) { + loadRomExternal(startedByIntent.getStringExtra("ROM"), + startedByIntent.getStringExtra("LIBRETRO")); + return; + } instance = this; addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); @@ -45,7 +52,7 @@ public class MainMenuActivity extends PreferenceActivity { .getDefaultSharedPreferences(getBaseContext()); extractAssets(); - + if (!prefs.getBoolean("first_time_refreshrate_calculate", false)) { prefs.edit().putBoolean("first_time_refreshrate_calculate", true) .commit(); @@ -71,17 +78,16 @@ public class MainMenuActivity extends PreferenceActivity { alert.show(); } } - + if (prefs.getString("libretro_path", "").isEmpty() == false) { libretro_path = prefs.getString("libretro_path", ""); setCoreTitle("No core"); - + if (prefs.getString("libretro_name", "").isEmpty() == false) { libretro_name = prefs.getString("libretro_name", "No core"); setCoreTitle(libretro_name); } - } - else { + } else { libretro_path = MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir; libretro_name = "No core"; setCoreTitle("No core"); @@ -168,21 +174,24 @@ public class MainMenuActivity extends PreferenceActivity { public static String getDefaultConfigPath() { String internal = System.getenv("INTERNAL_STORAGE"); String external = System.getenv("EXTERNAL_STORAGE"); - + SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(MainMenuActivity.getInstance() .getBaseContext()); - - boolean global_config_enable = prefs.getBoolean("global_config_enable", true); - boolean config_same_as_native_lib_dir = libretro_path.equals(MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir); + + boolean global_config_enable = prefs.getBoolean("global_config_enable", + true); + boolean config_same_as_native_lib_dir = libretro_path + .equals(MainMenuActivity.getInstance().getApplicationInfo().nativeLibraryDir); String append_path; if (!global_config_enable && (config_same_as_native_lib_dir == false)) { - String sanitized_name = libretro_path.substring(libretro_path.lastIndexOf("/")+1,libretro_path.lastIndexOf(".")); + String sanitized_name = libretro_path.substring( + libretro_path.lastIndexOf("/") + 1, + libretro_path.lastIndexOf(".")); sanitized_name = sanitized_name.replace("neon", ""); - sanitized_name = sanitized_name.replace("libretro_",""); + sanitized_name = sanitized_name.replace("libretro_", ""); append_path = File.separator + sanitized_name + "retroarch.cfg"; - } - else { + } else { append_path = File.separator + "retroarch.cfg"; } @@ -200,13 +209,10 @@ public class MainMenuActivity extends PreferenceActivity { return confPath; } - if (internal != null - && new File(internal + append_path) - .canWrite()) + if (internal != null && new File(internal + append_path).canWrite()) return internal + append_path; else if (external != null - && new File(internal + append_path) - .canWrite()) + && new File(internal + append_path).canWrite()) return external + append_path; else if ((MainMenuActivity.getInstance().getApplicationInfo().dataDir) != null) return (MainMenuActivity.getInstance().getApplicationInfo().dataDir) @@ -227,11 +233,11 @@ public class MainMenuActivity extends PreferenceActivity { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(MainMenuActivity.getInstance() .getBaseContext()); - + config.setString("libretro_path", libretro_path); config.setString("libretro_name", libretro_name); setCoreTitle(libretro_name); - + config.setString("rgui_browser_directory", prefs.getString("rgui_browser_directory", "")); config.setBoolean("global_config_enable", @@ -333,8 +339,9 @@ public class MainMenuActivity extends PreferenceActivity { config.setBoolean("video_font_enable", prefs.getBoolean("video_font_enable", true)); - - config.setString("game_history_path", MainMenuActivity.getInstance().getApplicationInfo().dataDir + "/retroarch-history.txt"); + + config.setString("game_history_path", MainMenuActivity.getInstance() + .getApplicationInfo().dataDir + "/retroarch-history.txt"); for (int i = 1; i <= 4; i++) { final String btns[] = { "up", "down", "left", "right", "a", "b", @@ -390,20 +397,20 @@ public class MainMenuActivity extends PreferenceActivity { writer.close(); } } - + private int getVersionCode() { int version = 0; try { version = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; } catch (NameNotFoundException e) { } - + return version; } - + private boolean areAssetsExtracted() { int version = getVersionCode(); - + try { String dataDir = getApplicationInfo().dataDir; File cacheVersion = new File(dataDir, ".cacheversion"); @@ -428,10 +435,10 @@ public class MainMenuActivity extends PreferenceActivity { Log.e(TAG, "Failed to extract assets to cache."); return false; } - + return false; } - + private void extractAssetsThread() { try { AssetManager assets = getAssets(); @@ -465,13 +472,13 @@ public class MainMenuActivity extends PreferenceActivity { private void extractAssets() { if (areAssetsExtracted()) return; - + final Dialog dialog = new Dialog(this); final Handler handler = new Handler(); dialog.setContentView(R.layout.assets); dialog.setCancelable(false); dialog.setTitle("Asset extraction"); - + // Java is fun :) Thread assetsThread = new Thread(new Runnable() { public void run() { @@ -484,36 +491,37 @@ public class MainMenuActivity extends PreferenceActivity { } }); assetsThread.start(); - + dialog.show(); } - + public void setModule(String core_path, String core_name) { - libretro_path = core_path; - libretro_name = core_name; + libretro_path = core_path; + libretro_name = core_name; File libretro_path_file = new File(core_path); - setCoreTitle((libretro_path_file.isDirectory() == true) ? "No core" : core_name); - + setCoreTitle((libretro_path_file.isDirectory() == true) ? "No core" + : core_name); + SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs - .edit(); + SharedPreferences.Editor edit = prefs.edit(); edit.putString("libretro_path", libretro_path); edit.putString("libretro_name", libretro_name); edit.commit(); } - + public void setCoreTitle(String core_name) { setTitle("RetroArch : " + core_name); } boolean detectDevice(boolean show_dialog) { boolean retval = false; - - boolean mentionPlayStore = !android.os.Build.MODEL.equals("OUYA Console"); - final String message = "The ideal configuration options for your device will now be preconfigured.\n\nNOTE: For optimal performance, turn off Google Account sync, " + - (mentionPlayStore ? "Google Play Store auto-updates, " : "") + - "GPS and Wi-Fi in your Android settings menu."; + + boolean mentionPlayStore = !android.os.Build.MODEL + .equals("OUYA Console"); + final String message = "The ideal configuration options for your device will now be preconfigured.\n\nNOTE: For optimal performance, turn off Google Account sync, " + + (mentionPlayStore ? "Google Play Store auto-updates, " : "") + + "GPS and Wi-Fi in your Android settings menu."; Log.i("Device MODEL", android.os.Build.MODEL); if (android.os.Build.MODEL.equals("SHIELD")) { @@ -542,27 +550,27 @@ public class MainMenuActivity extends PreferenceActivity { retval = true; } else if (android.os.Build.MODEL.equals("GAMEMID_BT")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) - .setTitle("GameMID detected") - .setMessage(message) - .setPositiveButton("OK", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getBaseContext()); - SharedPreferences.Editor edit = prefs - .edit(); - edit.putBoolean("input_overlay_enable", - false); - edit.putBoolean("input_autodetect_enable", - true); - edit.putBoolean("audio_high_latency", true); - edit.commit(); - } - }); - alert.show(); - retval = true; + .setTitle("GameMID detected") + .setMessage(message) + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getBaseContext()); + SharedPreferences.Editor edit = prefs + .edit(); + edit.putBoolean("input_overlay_enable", + false); + edit.putBoolean("input_autodetect_enable", + true); + edit.putBoolean("audio_high_latency", true); + edit.commit(); + } + }); + alert.show(); + retval = true; } else if (android.os.Build.MODEL.equals("OUYA Console")) { AlertDialog.Builder alert = new AlertDialog.Builder(this) .setTitle("OUYA detected") @@ -621,30 +629,33 @@ public class MainMenuActivity extends PreferenceActivity { protected void onStart() { super.onStart(); } - - @Override - public void startActivity(Intent intent) { - if (intent.getComponent().getClassName().equals("org.retroarch.browser.ROMActivity")) { - if (new File(libretro_path).isDirectory() == false) { - super.startActivityForResult(intent, ACTIVITY_LOAD_ROM); - } else { + + @Override + public void startActivity(Intent intent) { + if (intent.getComponent().getClassName() + .equals("org.retroarch.browser.ROMActivity")) { + if (new File(libretro_path).isDirectory() == false) { + super.startActivityForResult(intent, ACTIVITY_LOAD_ROM); + } else { Toast.makeText(this, "Go to 'Load Core' and select a core first.", Toast.LENGTH_SHORT).show(); - } - } else { - super.startActivity(intent); - } - } + } + } else { + super.startActivity(intent); + } + } - @Override - protected void onActivityResult(int reqCode, int resCode, Intent data) { - if (reqCode == ACTIVITY_LOAD_ROM) { - if (data.getStringExtra("PATH") != null) { - updateConfigFile(); - Intent myIntent; - String current_ime = Settings.Secure.getString(getContentResolver(), - Settings.Secure.DEFAULT_INPUT_METHOD); + @Override + protected void onActivityResult(int reqCode, int resCode, Intent data) { + switch (reqCode) { + case ACTIVITY_LOAD_ROM: { + if (data.getStringExtra("PATH") != null) { + updateConfigFile(); + Intent myIntent; + String current_ime = Settings.Secure.getString( + getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD); Toast.makeText(this, "Loading: [" + data.getStringExtra("PATH") + "]...", Toast.LENGTH_SHORT).show(); @@ -656,6 +667,24 @@ public class MainMenuActivity extends PreferenceActivity { myIntent.putExtra("IME", current_ime); startActivity(myIntent); } - } - } + } + break; + } + } + + private void loadRomExternal(String rom, String core) { + + updateConfigFile(); + Intent myIntent = new Intent(this, RetroActivity.class); + String current_ime = Settings.Secure.getString(getContentResolver(), + Settings.Secure.DEFAULT_INPUT_METHOD); + Toast.makeText(this, "Loading: [" + rom + "]...", Toast.LENGTH_SHORT) + .show(); + myIntent.putExtra("ROM", rom); + myIntent.putExtra("LIBRETRO", core); + myIntent.putExtra("CONFIGFILE", MainMenuActivity.getDefaultConfigPath()); + myIntent.putExtra("IME", current_ime); + startActivity(myIntent); + + } } From 3409a6366646f492b98af3760da80c4d9cb9dd21 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:55:44 -0500 Subject: [PATCH 229/252] enlarge dpad for snes-landscape --- media/overlays/snes-landscape.cfg | 34 +++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/media/overlays/snes-landscape.cfg b/media/overlays/snes-landscape.cfg index cac51d5d6f..700c8741ce 100644 --- a/media/overlays/snes-landscape.cfg +++ b/media/overlays/snes-landscape.cfg @@ -8,23 +8,23 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 18 -overlay0_desc0 = "left,28,389,rect,30,30" -overlay0_desc1 = "right,117,389,rect,30,30" -overlay0_desc2 = "up,73,344,rect,30,30" -overlay0_desc3 = "down,73,434,rect,30,30" -overlay0_desc4 = "select,71,218,rect,30,30" -overlay0_desc5 = "start,71,148,rect,30,30" -overlay0_desc6 = "b,707,432,radial,30,30" -overlay0_desc7 = "a,764,386,radial,30,30" -overlay0_desc8 = "x,707,338,radial,30,30" -overlay0_desc9 = "y,653,386,radial,30,30" -overlay0_desc10 = "l,70,31,rect,70,30" -overlay0_desc11 = "r,731,31,rect,70,30" +overlay0_desc0 = "left,12,389,rect,56,46" +overlay0_desc1 = "right,134,389,rect,56,46" +overlay0_desc2 = "up,71,334,rect,46,56" +overlay0_desc3 = "down,71,444,rect,46,56" +overlay0_desc4 = "select,71,218,rect,30,30" +overlay0_desc5 = "start,71,148,rect,30,30" +overlay0_desc6 = "b,707,444,radial,50,50" +overlay0_desc7 = "a,774,386,radial,50,50" +overlay0_desc8 = "x,707,320,radial,50,50" +overlay0_desc9 = "y,636,386,radial,50,50" +overlay0_desc10 = "l,70,31,rect,70,30" +overlay0_desc11 = "r,731,31,rect,70,30" overlay0_desc12 = "overlay_next,730,171,radial,30,30" -overlay0_desc13 = "left|up,28,344,radial,20,20" -overlay0_desc14 = "left|down,28,434,radial,20,20" -overlay0_desc15 = "right|up,117,344,radial,20,20" -overlay0_desc16 = "right|down,117,434,radial,20,20" +overlay0_desc13 = "left|up,18,324,radial,28,28" +overlay0_desc14 = "left|down,18,454,radial,28,28" +overlay0_desc15 = "right|up,140,324,radial,28,28" +overlay0_desc16 = "right|down,140,454,radial,28,28" overlay0_desc17 = "menu_toggle,401,443,radial,20,20" overlay1_descs = 11 @@ -42,4 +42,4 @@ overlay1_desc10 = "overlay_next,400,452,radial,22,22" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 81b7c49fed795f8026ba18e216a2f0babe45184d Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:56:17 -0500 Subject: [PATCH 230/252] enlarge dpad hitboxes for psx-landscape --- media/overlays/psx-landscape.cfg | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/media/overlays/psx-landscape.cfg b/media/overlays/psx-landscape.cfg index 18ea569070..efd92f8471 100644 --- a/media/overlays/psx-landscape.cfg +++ b/media/overlays/psx-landscape.cfg @@ -8,25 +8,25 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 20 -overlay0_desc0 = "left,34,395,rect,25,25" -overlay0_desc1 = "right,112,395,rect,25,25" -overlay0_desc2 = "up,70,356,rect,25,25" -overlay0_desc3 = "down,70,432,rect,25,25" +overlay0_desc0 = "left,8,384,rect,50,40" +overlay0_desc1 = "right,134,384,rect,50,40" +overlay0_desc2 = "up,72,334,rect,40,50" +overlay0_desc3 = "down,72,444,rect,40,50" overlay0_desc4 = "start,434,33,rect,30,17" overlay0_desc5 = "select,369,33,rect,30,17" -overlay0_desc6 = "a,776,390,radial,25,25" -overlay0_desc7 = "b,726,438,radial,25,25" -overlay0_desc8 = "x,726,338,radial,25,25" -overlay0_desc9 = "y,677,390,radial,25,25" +overlay0_desc6 = "a,776,390,radial,30,30" +overlay0_desc7 = "b,726,438,radial,30,30" +overlay0_desc8 = "x,726,338,radial,30,30" +overlay0_desc9 = "y,677,390,radial,30,30" overlay0_desc10 = "l,71,110,rect,47,27" overlay0_desc11 = "l2,70,37,rect,47,27" overlay0_desc12 = "r,730,110,rect,47,27" overlay0_desc13 = "r2,730,37,rect,47,27" overlay0_desc14 = "overlay_next,401,437,radial,20,20" -overlay0_desc15 = "left|up,34,356,radial,20,20" -overlay0_desc16 = "left|down,34,432,radial,20,20" -overlay0_desc17 = "right|up,112,356,radial,20,20" -overlay0_desc18 = "right|down,112,432,radial,20,20" +overlay0_desc15 = "left|up,10,324,radial,28,28" +overlay0_desc16 = "left|down,10,454,radial,28,28" +overlay0_desc17 = "right|up,140,324,radial,28,28" +overlay0_desc18 = "right|down,140,454,radial,28,28" overlay0_desc19 = "menu_toggle,732,217,rect,25,20" overlay1_descs = 11 @@ -44,4 +44,4 @@ overlay1_desc10 = "overlay_next,403,453,radial,25,25" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 1e23c119e43116d4feea9d80b7e1dafb70164696 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:57:30 -0500 Subject: [PATCH 231/252] enlarge dpad hitboxes for nes-landscape --- media/overlays/nes-landscape.cfg | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/media/overlays/nes-landscape.cfg b/media/overlays/nes-landscape.cfg index 8f3d94ef33..a7111e5729 100644 --- a/media/overlays/nes-landscape.cfg +++ b/media/overlays/nes-landscape.cfg @@ -8,19 +8,19 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,33,399,rect,20,20" -overlay0_desc1 = "right,122,399,rect,20,20" -overlay0_desc2 = "up,77,355,rect,20,20" -overlay0_desc3 = "down,77,443,rect,20,20" +overlay0_desc0 = "left,12,388,rect,50,36" +overlay0_desc1 = "right,134,388,rect,50,36" +overlay0_desc2 = "up,76,334,rect,40,50" +overlay0_desc3 = "down,76,444,rect,40,50" overlay0_desc4 = "select,54,35,rect,45,20" overlay0_desc5 = "start,745,35,rect,45,20" -overlay0_desc6 = "b,685,424,radial,30,30" -overlay0_desc7 = "a,759,424,radial,30,30" +overlay0_desc6 = "b,685,424,radial,46,46" +overlay0_desc7 = "a,759,424,radial,46,46" overlay0_desc8 = "overlay_next,743,204,radial,30,30" -overlay0_desc9 = "left|up,29,350,radial,20,20" -overlay0_desc10 = "left|down,29,440,radial,20,20" -overlay0_desc11 = "right|up,121,350,radial,20,20" -overlay0_desc12 = "right|down,121,440,radial,20,20" +overlay0_desc9 = "left|up,10,328,radial,26,26" +overlay0_desc10 = "left|down,10,454,radial,26,26" +overlay0_desc11 = "right|up,140,328,radial,26,26" +overlay0_desc12 = "right|down,140,454,radial,26,26" overlay0_desc13 = "menu_toggle,76,205,radial,20,20" overlay1_descs = 11 @@ -38,4 +38,4 @@ overlay1_desc10 = "overlay_next,400,452,radial,22,22" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From c0023d6cd15cb05d3dd7f2377f62285d88eb9fc5 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:58:00 -0500 Subject: [PATCH 232/252] enlarge dpad hitboxes for genesis6-landscape --- media/overlays/genesis6-landscape.cfg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/media/overlays/genesis6-landscape.cfg b/media/overlays/genesis6-landscape.cfg index 37c09a69d4..23318ea7c5 100644 --- a/media/overlays/genesis6-landscape.cfg +++ b/media/overlays/genesis6-landscape.cfg @@ -8,10 +8,10 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 17 -overlay0_desc0 = "left,34,393,rect,25,25" -overlay0_desc1 = "right,110,393,rect,25,25" -overlay0_desc2 = "up,70,360,rect,25,25" -overlay0_desc3 = "down,70,432,rect,25,25" +overlay0_desc0 = "left,12,389,rect,50,40" +overlay0_desc1 = "right,134,389,rect,50,40" +overlay0_desc2 = "up,76,334,rect,40,50" +overlay0_desc3 = "down,76,444,rect,40,50" overlay0_desc4 = "start,730,48,rect,30,30" overlay0_desc5 = "a,764,388,rect,26,26" overlay0_desc6 = "b,697,412,radial,26,26" @@ -20,10 +20,10 @@ overlay0_desc8 = "l,608,374,rect,24,24" overlay0_desc9 = "x,670,350,radial,24,24" overlay0_desc10 = "r,736,326,radial,24,17" overlay0_desc11 = "overlay_next,728,186,radial,30,30" -overlay0_desc12 = "left|up,32,354,radial,20,20" -overlay0_desc13 = "left|down,32,432,radial,20,20" -overlay0_desc14 = "right|up,111,354,radial,20,20" -overlay0_desc15 = "right|down,111,432,radial,20,20" +overlay0_desc12 = "left|up,10,324,radial,22,22" +overlay0_desc13 = "left|down,10,454,radial,22,22" +overlay0_desc14 = "right|up,140,324,radial,22,22" +overlay0_desc15 = "right|down,140,454,radial,22,22" overlay0_desc16 = "menu_toggle,73,50,radial,20,20" overlay1_descs = 11 @@ -41,4 +41,4 @@ overlay1_desc10 = "overlay_next,400,452,radial,22,22" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From cb99d953c636ac345382b3be8029d3b88c63405d Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:59:16 -0500 Subject: [PATCH 233/252] enlarge hitboxes for genesis3-landscape --- media/overlays/genesis3-landscape.cfg | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/media/overlays/genesis3-landscape.cfg b/media/overlays/genesis3-landscape.cfg index 2c7322b46e..af01859583 100644 --- a/media/overlays/genesis3-landscape.cfg +++ b/media/overlays/genesis3-landscape.cfg @@ -8,19 +8,19 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,34,393,rect,25,25" -overlay0_desc1 = "right,110,393,rect,25,25" -overlay0_desc2 = "up,70,360,rect,25,25" -overlay0_desc3 = "down,70,432,rect,25,25" +overlay0_desc0 = "left,12,389,rect,50,40" +overlay0_desc1 = "right,134,389,rect,50,40" +overlay0_desc2 = "up,76,334,rect,40,50" +overlay0_desc3 = "down,76,444,rect,40,50" overlay0_desc4 = "start,730,48,rect,30,30" -overlay0_desc5 = "a,764,388,rect,26,26" -overlay0_desc6 = "b,697,412,radial,26,26" -overlay0_desc7 = "y,634,439,radial,26,26" +overlay0_desc5 = "a,764,388,rect,30,30" +overlay0_desc6 = "b,697,412,radial,30,30" +overlay0_desc7 = "y,634,439,radial,30,30" overlay0_desc8 = "overlay_next,728,186,radial,30,30" -overlay0_desc9 = "left|up,32,354,radial,20,20" -overlay0_desc10 = "left|down,32,432,radial,20,20" -overlay0_desc11 = "right|up,111,354,radial,20,20" -overlay0_desc12 = "right|down,111,432,radial,20,20" +overlay0_desc9 = "left|up,10,324,radial,22,22" +overlay0_desc10 = "left|down,10,454,radial,22,22" +overlay0_desc11 = "right|up,140,324,radial,22,22" +overlay0_desc12 = "right|down,140,454,radial,22,22" overlay0_desc13 = "menu_toggle,73,50,radial,20,20" overlay1_descs = 11 @@ -38,4 +38,4 @@ overlay1_desc10 = "overlay_next,400,452,radial,22,22" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 4a6d497a5c2850f36220cdbbbec0225a6fc52a75 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Tue, 20 Aug 2013 14:59:50 -0500 Subject: [PATCH 234/252] enlarge dpad hitboxes for gameboy-landscape --- media/overlays/gameboy-landscape.cfg | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/media/overlays/gameboy-landscape.cfg b/media/overlays/gameboy-landscape.cfg index e2964c61f6..bc7e838c11 100644 --- a/media/overlays/gameboy-landscape.cfg +++ b/media/overlays/gameboy-landscape.cfg @@ -8,19 +8,19 @@ overlay0_full_screen = true overlay1_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,32,393,rect,25,25" -overlay0_desc1 = "right,113,393,rect,25,25" -overlay0_desc2 = "up,73,349,rect,25,25" -overlay0_desc3 = "down,73,436,rect,25,25" +overlay0_desc0 = "left,12,389,rect,50,40" +overlay0_desc1 = "right,134,389,rect,50,40" +overlay0_desc2 = "up,76,334,rect,40,50" +overlay0_desc3 = "down,76,444,rect,40,50" overlay0_desc4 = "select,730,115,rect,30,30" overlay0_desc5 = "start,730,48,rect,30,30" -overlay0_desc6 = "b,697,418,radial,30,30" -overlay0_desc7 = "a,762,370,radial,30,30" +overlay0_desc6 = "b,690,418,radial,46,46" +overlay0_desc7 = "a,772,370,radial,46,46" overlay0_desc8 = "overlay_next,731,239,radial,30,30" -overlay0_desc9 = "left|up,28,348,radial,20,20" -overlay0_desc10 = "left|down,28,435,radial,20,20" -overlay0_desc11 = "right|up,117,348,radial,20,20" -overlay0_desc12 = "right|down,117,435,radial,20,20" +overlay0_desc9 = "left|up,10,324,radial,22,22" +overlay0_desc10 = "left|down,10,454,radial,22,22" +overlay0_desc11 = "right|up,140,324,radial,22,22" +overlay0_desc12 = "right|down,140,454,radial,22,22" overlay0_desc13 = "menu_toggle,73,49,radial,20,20" overlay1_descs = 11 @@ -38,4 +38,4 @@ overlay1_desc10 = "overlay_next,400,452,radial,22,22" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.07,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From fe84dbb12174c62d4741f6fe1d6ab4fc8d48daaf Mon Sep 17 00:00:00 2001 From: zevektor Date: Wed, 21 Aug 2013 12:46:57 +0200 Subject: [PATCH 235/252] Fixes --- android/phoenix/src/org/retroarch/browser/MainMenuActivity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 35fe1c56b9..013a9d215c 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -41,7 +41,6 @@ public class MainMenuActivity extends PreferenceActivity { && null != startedByIntent.getStringExtra("LIBRETRO")) { loadRomExternal(startedByIntent.getStringExtra("ROM"), startedByIntent.getStringExtra("LIBRETRO")); - return; } instance = this; addPreferencesFromResource(R.xml.prefs); From f854f4785513724a2ee9a9c9fca3d626dd4d1163 Mon Sep 17 00:00:00 2001 From: zevektor Date: Wed, 21 Aug 2013 12:57:40 +0200 Subject: [PATCH 236/252] Fixed bug when back button is pressed. --- .../retroarch/browser/MainMenuActivity.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 013a9d215c..7025923bd0 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -36,12 +36,6 @@ public class MainMenuActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Intent startedByIntent = getIntent(); - if (null != startedByIntent.getStringExtra("ROM") - && null != startedByIntent.getStringExtra("LIBRETRO")) { - loadRomExternal(startedByIntent.getStringExtra("ROM"), - startedByIntent.getStringExtra("LIBRETRO")); - } instance = this; addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); @@ -91,6 +85,18 @@ public class MainMenuActivity extends PreferenceActivity { libretro_name = "No core"; setCoreTitle("No core"); } + Intent startedByIntent = getIntent(); + if (null != startedByIntent.getStringExtra("ROM") + && null != startedByIntent.getStringExtra("LIBRETRO")) { + if (prefs.getInt("loadRomExternal", 0) == 0) { + loadRomExternal(startedByIntent.getStringExtra("ROM"), + startedByIntent.getStringExtra("LIBRETRO")); + prefs.edit().putInt("loadRomExternal", 1).commit(); + } else{ + prefs.edit().putInt("loadRomExternal", 0).commit(); + super.onBackPressed(); + } + } } public static MainMenuActivity getInstance() { From 6deb38c07d440aeda191a527e5eb13b8c13377c9 Mon Sep 17 00:00:00 2001 From: zevektor Date: Wed, 21 Aug 2013 14:04:43 +0200 Subject: [PATCH 237/252] Checks on load rom from external app changed. --- .../org/retroarch/browser/MainMenuActivity.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 7025923bd0..abc10d52a5 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -37,6 +37,7 @@ public class MainMenuActivity extends PreferenceActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = this; + addPreferencesFromResource(R.xml.prefs); PreferenceManager.setDefaultValues(this, R.xml.prefs, false); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); @@ -85,18 +86,18 @@ public class MainMenuActivity extends PreferenceActivity { libretro_name = "No core"; setCoreTitle("No core"); } + Intent startedByIntent = getIntent(); if (null != startedByIntent.getStringExtra("ROM") && null != startedByIntent.getStringExtra("LIBRETRO")) { - if (prefs.getInt("loadRomExternal", 0) == 0) { + if (null==savedInstanceState || !savedInstanceState.getBoolean("romexec")) loadRomExternal(startedByIntent.getStringExtra("ROM"), startedByIntent.getStringExtra("LIBRETRO")); - prefs.edit().putInt("loadRomExternal", 1).commit(); - } else{ - prefs.edit().putInt("loadRomExternal", 0).commit(); + else super.onBackPressed(); - } + // return; } + } public static MainMenuActivity getInstance() { @@ -677,6 +678,12 @@ public class MainMenuActivity extends PreferenceActivity { } } + @Override + protected void onSaveInstanceState(Bundle data) { + super.onSaveInstanceState(data); + data.putBoolean("romexec", true); + } + private void loadRomExternal(String rom, String core) { updateConfigFile(); From 8b0124ba2af2d393b5cf99e3b0527d2f522a89a8 Mon Sep 17 00:00:00 2001 From: zevektor Date: Wed, 21 Aug 2013 14:08:06 +0200 Subject: [PATCH 238/252] Load roms from external app - #3 --- .../phoenix/src/org/retroarch/browser/MainMenuActivity.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index abc10d52a5..5924298ebe 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -93,9 +93,7 @@ public class MainMenuActivity extends PreferenceActivity { if (null==savedInstanceState || !savedInstanceState.getBoolean("romexec")) loadRomExternal(startedByIntent.getStringExtra("ROM"), startedByIntent.getStringExtra("LIBRETRO")); - else - super.onBackPressed(); - // return; + else finish(); } } From 6ab81b648e9cc4bd671f7f59b40facd17be0fbdd Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 21 Aug 2013 18:57:27 +0200 Subject: [PATCH 239/252] Style nits. --- .../src/org/retroarch/browser/MainMenuActivity.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 5924298ebe..d0fa8531c8 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -90,12 +90,13 @@ public class MainMenuActivity extends PreferenceActivity { Intent startedByIntent = getIntent(); if (null != startedByIntent.getStringExtra("ROM") && null != startedByIntent.getStringExtra("LIBRETRO")) { - if (null==savedInstanceState || !savedInstanceState.getBoolean("romexec")) + if (null == savedInstanceState + || !savedInstanceState.getBoolean("romexec")) loadRomExternal(startedByIntent.getStringExtra("ROM"), startedByIntent.getStringExtra("LIBRETRO")); - else finish(); + else + finish(); } - } public static MainMenuActivity getInstance() { @@ -683,7 +684,6 @@ public class MainMenuActivity extends PreferenceActivity { } private void loadRomExternal(String rom, String core) { - updateConfigFile(); Intent myIntent = new Intent(this, RetroActivity.class); String current_ime = Settings.Secure.getString(getContentResolver(), @@ -692,9 +692,8 @@ public class MainMenuActivity extends PreferenceActivity { .show(); myIntent.putExtra("ROM", rom); myIntent.putExtra("LIBRETRO", core); - myIntent.putExtra("CONFIGFILE", MainMenuActivity.getDefaultConfigPath()); + myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); myIntent.putExtra("IME", current_ime); startActivity(myIntent); - } } From 5d413c480b925edc982059ef0712c33e1d879322 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 12:41:13 -0500 Subject: [PATCH 240/252] enlarged button/dpad hitboxes for gb-portrait --- media/overlays/gameboy-portrait.cfg | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/media/overlays/gameboy-portrait.cfg b/media/overlays/gameboy-portrait.cfg index caa4266788..6239aa4105 100644 --- a/media/overlays/gameboy-portrait.cfg +++ b/media/overlays/gameboy-portrait.cfg @@ -9,19 +9,19 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,44,702,rect,25,25" -overlay0_desc1 = "right,162,702,rect,25,25" -overlay0_desc2 = "up,102,643,rect,25,25" -overlay0_desc3 = "down,102,761,rect,25,25" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" overlay0_desc4 = "select,55,491,rect,40,40" overlay0_desc5 = "start,423,491,rect,40,40" -overlay0_desc6 = "b,317,726,radial,45,45" -overlay0_desc7 = "a,420,655,radial,45,45" +overlay0_desc6 = "b,317,726,radial,65,65" +overlay0_desc7 = "a,420,655,radial,65,65" overlay0_desc8 = "overlay_next,240,490,radial,30,30" -overlay0_desc9 = "left|up,44,643,radial,20,20" -overlay0_desc10 = "left|down,44,761,radial,20,20" -overlay0_desc11 = "right|up,162,643,radial,20,20" -overlay0_desc12 = "right|down,162,761,radial,20,20" +overlay0_desc9 = "left|up,24,634,radial,45,45" +overlay0_desc10 = "left|down,24,772,radial,45,45" +overlay0_desc11 = "right|up,160,634,radial,45,45" +overlay0_desc12 = "right|down,160,772,radial,45,45" overlay0_desc13 = "menu_toggle,240,595,rect,40,28" overlay1_descs = 11 @@ -39,4 +39,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,25,25" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 52ebe38931395959e6028f4253ec72b3c82b4e0d Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 12:50:58 -0500 Subject: [PATCH 241/252] Enlarged dpad hitboxes and vertically extended button hitboxes for gen3-portrait --- media/overlays/genesis3-portrait.cfg | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/media/overlays/genesis3-portrait.cfg b/media/overlays/genesis3-portrait.cfg index 86276708a4..36c148248e 100644 --- a/media/overlays/genesis3-portrait.cfg +++ b/media/overlays/genesis3-portrait.cfg @@ -9,19 +9,19 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,52,695,rect,25,25" -overlay0_desc1 = "right,159,695,rect,25,25" -overlay0_desc2 = "up,107,638,rect,25,25" -overlay0_desc3 = "down,107,744,rect,25,25" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" overlay0_desc4 = "start,427,507,rect,40,40" -overlay0_desc5 = "a,449,720,radial,25,25" -overlay0_desc6 = "b,374,736,radial,25,25" -overlay0_desc7 = "y,301,755,rect,25,25" +overlay0_desc5 = "a,445,715,radial,35,55" +overlay0_desc6 = "b,374,736,radial,35,55" +overlay0_desc7 = "y,301,755,rect,35,55" overlay0_desc8 = "overlay_next,107,508,radial,40,40" -overlay0_desc9 = "left|up,52,638,radial,25,25" -overlay0_desc10 = "left|down,52,744,radial,25,25" -overlay0_desc11 = "right|up,159,638,radial,25,25" -overlay0_desc12 = "right|down,159,744,radial,25,25" +overlay0_desc9 = "left|up,24,634,radial,45,45" +overlay0_desc10 = "left|down,24,772,radial,45,45" +overlay0_desc11 = "right|up,160,634,radial,45,45" +overlay0_desc12 = "right|down,160,772,radial,45,45" overlay0_desc13 = "menu_toggle,240,575,rect,40,28" overlay1_descs = 11 @@ -39,4 +39,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,30,30" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 7d55b115a1878e13fb3f0964f162d71b0af2fb25 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 12:56:02 -0500 Subject: [PATCH 242/252] enlarged dpad hitboxes; left the buttons alone, since they're close together --- media/overlays/genesis6-portrait.cfg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/media/overlays/genesis6-portrait.cfg b/media/overlays/genesis6-portrait.cfg index 8636715429..bdea9ec72d 100644 --- a/media/overlays/genesis6-portrait.cfg +++ b/media/overlays/genesis6-portrait.cfg @@ -9,10 +9,10 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 17 -overlay0_desc0 = "left,52,695,rect,25,25" -overlay0_desc1 = "right,159,695,rect,25,25" -overlay0_desc2 = "up,107,638,rect,25,25" -overlay0_desc3 = "down,107,744,rect,25,25" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" overlay0_desc4 = "start,427,507,rect,40,40" overlay0_desc5 = "a,449,720,radial,25,25" overlay0_desc6 = "b,374,736,radial,25,25" @@ -21,10 +21,10 @@ overlay0_desc8 = "l,283,684,rect,21,21" overlay0_desc9 = "x,352,666,radial,21,21" overlay0_desc10 = "r,426,648,radial,21,21" overlay0_desc11 = "overlay_next,107,508,radial,40,40" -overlay0_desc12 = "left|up,52,638,radial,25,25" -overlay0_desc13 = "left|down,52,744,radial,25,25" -overlay0_desc14 = "right|up,159,638,radial,25,25" -overlay0_desc15 = "right|down,159,744,radial,25,25" +overlay0_desc12 = "left|up,24,634,radial,45,45" +overlay0_desc13 = "left|down,24,772,radial,45,45" +overlay0_desc14 = "right|up,160,634,radial,45,45" +overlay0_desc15 = "right|down,160,772,radial,45,45" overlay0_desc16 = "menu_toggle,240,575,rect,40,28" overlay1_descs = 11 @@ -42,4 +42,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,30,30" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 1763be49acbbff4531b14fca0c7010f773a008f2 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 13:12:21 -0500 Subject: [PATCH 243/252] Enlarge dpad hitboxes for psx-portrait --- media/overlays/psx-portrait.cfg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/media/overlays/psx-portrait.cfg b/media/overlays/psx-portrait.cfg index a62183d0fa..2a5716a882 100644 --- a/media/overlays/psx-portrait.cfg +++ b/media/overlays/psx-portrait.cfg @@ -9,10 +9,10 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 20 -overlay0_desc0 = "left,41,695,rect,25,25" -overlay0_desc1 = "right,157,695,rect,25,25" -overlay0_desc2 = "up,98,637,rect,25,25" -overlay0_desc3 = "down,98,751,rect,25,25" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" overlay0_desc4 = "start,286,497,rect,35,17" overlay0_desc5 = "select,197,497,rect,35,17" overlay0_desc6 = "a,436,699,radial,35,35" @@ -24,10 +24,10 @@ overlay0_desc11 = "l2,50,479,rect,50,27" overlay0_desc12 = "r,430,537,rect,50,27" overlay0_desc13 = "r2,430,479,rect,50,27" overlay0_desc14 = "overlay_next,240,578,radial,30,30" -overlay0_desc15 = "left|up,41,637,radial,20,20" -overlay0_desc16 = "left|down,41,751,radial,20,20" -overlay0_desc17 = "right|up,157,637,radial,20,20" -overlay0_desc18 = "right|down,157,751,radial,20,20" +overlay0_desc15 = "left|up,20,638,radial,45,45" +overlay0_desc16 = "left|down,20,768,radial,45,45" +overlay0_desc17 = "right|up,160,638,radial,45,45" +overlay0_desc18 = "right|down,166,768,radial,45,45" overlay0_desc19 = "menu_toggle,240,764,rect,25,20" overlay1_descs = 11 @@ -45,4 +45,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,25,25" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 8bbffc63865e5abb2ac765c25475bbb37463990f Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 13:14:03 -0500 Subject: [PATCH 244/252] enlarge dpad hitboxes for nes-portrait --- media/overlays/nes-portrait.cfg | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/media/overlays/nes-portrait.cfg b/media/overlays/nes-portrait.cfg index cdab629f09..ff940f1194 100644 --- a/media/overlays/nes-portrait.cfg +++ b/media/overlays/nes-portrait.cfg @@ -9,19 +9,19 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 14 -overlay0_desc0 = "left,39,701,rect,30,30" -overlay0_desc1 = "right,156,701,rect,30,30" -overlay0_desc2 = "up,97,641,rect,30,30" -overlay0_desc3 = "down,97,758,rect,30,30" -overlay0_desc4 = "select,55,485,rect,45,20" -overlay0_desc5 = "start,425,485,rect,45,20" -overlay0_desc6 = "b,309,702,radial,48,48" -overlay0_desc7 = "a,424,702,radial,48,48" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" +overlay0_desc4 = "select,55,485,rect,45,20" +overlay0_desc5 = "start,425,485,rect,45,20" +overlay0_desc6 = "b,309,698,radial,48,54" +overlay0_desc7 = "a,424,698,radial,48,54" overlay0_desc8 = "overlay_next,241,492,radial,30,30" -overlay0_desc9 = "left|up,39,641,radial,30,30" -overlay0_desc10 = "left|down,39,758,radial,30,30" -overlay0_desc11 = "right|up,156,641,radial,30,30" -overlay0_desc12 = "right|down,156,758,radial,30,30" +overlay0_desc9 = "left|up,28,638,radial,45,45" +overlay0_desc10 = "left|down,28,768,radial,45,45" +overlay0_desc11 = "right|up,160,638,radial,45,45" +overlay0_desc12 = "right|down,160,768,radial,45,45" overlay0_desc13 = "menu_toggle,240,595,rect,40,28" overlay1_descs = 11 @@ -39,4 +39,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,25,25" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From ad75b5b006133bf736e6caa00b6cde39f4bbbaf6 Mon Sep 17 00:00:00 2001 From: hizzlekizzle Date: Wed, 21 Aug 2013 13:14:57 -0500 Subject: [PATCH 245/252] enlarge dpad and button hitboxes for snes-portrait --- media/overlays/snes-portrait.cfg | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/media/overlays/snes-portrait.cfg b/media/overlays/snes-portrait.cfg index 4eab5c8159..4426b49e91 100644 --- a/media/overlays/snes-portrait.cfg +++ b/media/overlays/snes-portrait.cfg @@ -9,23 +9,23 @@ overlay1_full_screen = true overlay2_full_screen = true overlay0_descs = 18 -overlay0_desc0 = "left,40,703,rect,30,30" -overlay0_desc1 = "right,156,703,rect,30,30" -overlay0_desc2 = "up,98,644,rect,30,30" -overlay0_desc3 = "down,98,761,rect,30,30" -overlay0_desc4 = "select,206,494,rect,30,30" -overlay0_desc5 = "start,285,494,rect,30,30" -overlay0_desc6 = "b,372,751,radial,35,35" -overlay0_desc7 = "a,439,692,radial,35,35" -overlay0_desc8 = "x,372,626,radial,35,35" -overlay0_desc9 = "y,308,692,radial,35,35" -overlay0_desc10 = "l,70,482,rect,70,30" -overlay0_desc11 = "r,410,482,rect,70,30" +overlay0_desc0 = "left,42,700,rect,56,46" +overlay0_desc1 = "right,148,700,rect,56,46" +overlay0_desc2 = "up,96,646,rect,46,56" +overlay0_desc3 = "down,96,758,rect,46,56" +overlay0_desc4 = "select,206,494,rect,30,30" +overlay0_desc5 = "start,285,494,rect,30,30" +overlay0_desc6 = "b,372,756,radial,90,90" +overlay0_desc7 = "a,446,686,radial,90,90" +overlay0_desc8 = "x,370,622,radial,90,90" +overlay0_desc9 = "y,296,692,radial,90,90" +overlay0_desc10 = "l,70,482,rect,70,30" +overlay0_desc11 = "r,410,482,rect,70,30" overlay0_desc12 = "overlay_next,241,587,radial,30,30" -overlay0_desc13 = "left|up,40,644,radial,30,30" -overlay0_desc14 = "left|down,40,761,radial,30,30" -overlay0_desc15 = "right|up,156,644,radial,30,30" -overlay0_desc16 = "right|down,156,761,radial,30,30" +overlay0_desc13 = "left|up,28,638,radial,45,45" +overlay0_desc14 = "left|down,28,768,radial,45,45" +overlay0_desc15 = "right|up,160,638,radial,45,45" +overlay0_desc16 = "right|down,160,768,radial,45,45" overlay0_desc17 = "menu_toggle,240,760,radial,20,20" overlay1_descs = 11 @@ -43,4 +43,4 @@ overlay1_desc10 = "overlay_next,240,683,radial,25,25" overlay2_descs = 1 overlay2_rect = "0.47,0.9,0.11,0.08" -overlay2_desc0 = "overlay_next,16,16,radial,16,16" \ No newline at end of file +overlay2_desc0 = "overlay_next,16,16,radial,16,16" From 1c4c9436045181a8b1e23a4cd571aed25636b5a0 Mon Sep 17 00:00:00 2001 From: Themaister Date: Thu, 22 Aug 2013 22:12:16 +0200 Subject: [PATCH 246/252] [Pi] Build fixes. --- gfx/context/vc_egl_ctx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gfx/context/vc_egl_ctx.c b/gfx/context/vc_egl_ctx.c index b9097751ff..1db9a28f8b 100644 --- a/gfx/context/vc_egl_ctx.c +++ b/gfx/context/vc_egl_ctx.c @@ -284,7 +284,7 @@ static void gfx_ctx_destroy(void) if (g_egl_ctx) { - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglMakeCurrent(g_egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); eglDestroyContext(g_egl_dpy, g_egl_ctx); } @@ -298,7 +298,7 @@ static void gfx_ctx_destroy(void) if (g_egl_surf) { - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglDestroySurface(g_egl_dpy, g_egl_surf); } @@ -310,7 +310,7 @@ static void gfx_ctx_destroy(void) eglBindAPI(EGL_OPENVG_API); eglMakeCurrent(g_egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglMakeCurrent(g_egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); eglTerminate(g_egl_dpy); } @@ -405,7 +405,7 @@ static bool gfx_ctx_init_egl_image_buffer(const video_info_t *video) goto fail; } - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglMakeCurrent(g_egl_dpy, g_egl_surf, g_egl_surf, g_egl_ctx); g_smooth = video->smooth; @@ -424,7 +424,7 @@ fail: g_pbuff_surf = EGL_NO_CONTEXT; } - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglMakeCurrent(g_egl_dpy, g_egl_surf, g_egl_surf, g_egl_ctx); return false; @@ -453,7 +453,7 @@ static bool gfx_ctx_write_egl_image(const void *frame, unsigned width, unsigned vgImageSubData(g_egl_vgimage[index], frame, pitch, (rgb32 ? VG_sXRGB_8888 : VG_sRGB_565), 0, 0, width, height); *image_handle = eglBuffer[index]; - gfx_ctx_bind_api(g_api); + gfx_ctx_bind_api(g_api, 0, 0); eglMakeCurrent(g_egl_dpy, g_egl_surf, g_egl_surf, g_egl_ctx); return ret; From 0fea1c9473e874ae97889e4d928c970624c58829 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 22 Aug 2013 18:14:10 -0400 Subject: [PATCH 247/252] [Android] handle certain "special" buttons on some controllers better, fixes menu button on Ouya controller --- android/native/jni/input_android.c | 21 ++++++++++++--------- android/phoenix/.classpath | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index af59fbdb3b..527a159e3d 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1592,8 +1592,9 @@ static void android_input_set_keybinds(void *data, unsigned device, static void android_input_poll(void *data) { int ident; + uint64_t lifecycle_mask = (1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_MENU_TOGGLE); uint64_t *lifecycle_state = &g_extern.lifecycle_state; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY)); + *lifecycle_state &= ~lifecycle_mask; while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, NULL, NULL, NULL)) >= 0) @@ -1752,9 +1753,6 @@ static void android_input_poll(void *data) } else if (type_event == AINPUT_EVENT_TYPE_KEY) { - if (debug_enable) - snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source); - /* Hack - we have to decrease the unpacked value by 1 * because we 'added' 1 to each entry in the LUT - * RETRO_DEVICE_ID_JOYPAD_B is 0 @@ -1764,20 +1762,25 @@ static void android_input_poll(void *data) int action = AKeyEvent_getAction(event); uint64_t *key = NULL; - if(input_state < (1ULL << RARCH_FIRST_META_KEY)) + if (debug_enable) + snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source); + + if (input_state < (1ULL << RARCH_FIRST_META_KEY)) key = &state[state_id]; - else if(input_state) + else if (input_state/* && action == AKEY_EVENT_ACTION_DOWN*/) key = &g_extern.lifecycle_state; - if(key != NULL) + if (key != NULL) { - if (action == AKEY_EVENT_ACTION_UP) + // some controllers send both the up and down events at once when the button is released for "special" buttons, like menu buttons + // work around that by only using down events for meta keys (which get cleared every poll anyway) + if (action == AKEY_EVENT_ACTION_UP && !(input_state & lifecycle_mask)) *key &= ~(input_state); else if (action == AKEY_EVENT_ACTION_DOWN) *key |= input_state; } - if((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0) + if ((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0) handled = 0; } diff --git a/android/phoenix/.classpath b/android/phoenix/.classpath index c06dfcb8e5..51769745b2 100644 --- a/android/phoenix/.classpath +++ b/android/phoenix/.classpath @@ -1,7 +1,7 @@ - + From 0cdd3de8352e7d1198d7261231518a80b1a2a04d Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 22 Aug 2013 20:24:47 -0400 Subject: [PATCH 248/252] [Android] make Ouya controller reports itself as dual analog --- android/native/jni/input_android.c | 1 + 1 file changed, 1 insertion(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 527a159e3d..a6410eaf40 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -1190,6 +1190,7 @@ static void android_input_set_keybinds(void *data, unsigned device, strlcpy(g_settings.input.device_names[port], "OUYA", sizeof(g_settings.input.device_names[port])); + g_settings.input.dpad_emulation[port] = ANALOG_DPAD_DUALANALOG; keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); From be08d003c9163b93db6f73e192b10b32ab80f3e7 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 22 Aug 2013 23:21:52 -0400 Subject: [PATCH 249/252] [GL] fix OSD messages breaking if one was too long --- gfx/fonts/gl_raster_font.c | 6 ++++++ gfx/gl_common.h | 1 + 2 files changed, 7 insertions(+) diff --git a/gfx/fonts/gl_raster_font.c b/gfx/fonts/gl_raster_font.c index 644184e20e..657ad4a96c 100644 --- a/gfx/fonts/gl_raster_font.c +++ b/gfx/fonts/gl_raster_font.c @@ -35,6 +35,7 @@ static bool gl_init_font(void *data, const char *font_path, float font_size) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl->max_font_size); } else { @@ -124,6 +125,11 @@ static void adjust_power_of_two(gl_t *gl, struct font_rect *geom) geom->pot_width = next_pow2(geom->width); geom->pot_height = next_pow2(geom->height); + if (geom->pot_width > gl->max_font_size) + geom->pot_width = gl->max_font_size; + if (geom->pot_height > gl->max_font_size) + geom->pot_height = gl->max_font_size; + if ((geom->pot_width > gl->font_tex_w) || (geom->pot_height > gl->font_tex_h)) { gl->font_tex_buf = (uint32_t*)realloc(gl->font_tex_buf, diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 5e97a0a540..1d5f308d92 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -207,6 +207,7 @@ typedef struct gl const gl_font_renderer_t *font_ctx; const font_renderer_driver_t *font_driver; GLuint font_tex; + GLint max_font_size; int font_tex_w, font_tex_h; uint32_t *font_tex_buf; char font_last_msg[256]; From 67f4f1b3ed8bd0b88ef7597791f676e8e4f1844c Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 23 Aug 2013 17:31:18 +0200 Subject: [PATCH 250/252] [WGL] Fix window size calculation. --- gfx/context/wgl_ctx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gfx/context/wgl_ctx.c b/gfx/context/wgl_ctx.c index ec12ed8411..cb925263ea 100644 --- a/gfx/context/wgl_ctx.c +++ b/gfx/context/wgl_ctx.c @@ -472,10 +472,10 @@ static bool gfx_ctx_set_video_mode( if (!fullscreen) { SetMenu(g_hwnd, LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU))); - RECT rcTemp = {0, 0, g_resize_height, 0x7FFF}; // 0x7FFF="Infinite" height + RECT rcTemp = {0, 0, width, 0x7FFF}; // 0x7FFF = "Infinite" height SendMessage(g_hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&rcTemp); // recalculate margin, taking possible menu wrap into account - g_resize_height += rcTemp.top + rect.top; // extend by new top margin and substract previous margin - SetWindowPos(g_hwnd, NULL, 0, 0, g_resize_width, g_resize_height, SWP_NOMOVE); + unsigned menu_height = rcTemp.top + rect.top; // rect.top is negative after AdjustWindowRect(). + SetWindowPos(g_hwnd, NULL, 0, 0, width, height + menu_height, SWP_NOMOVE); } if (!fullscreen || windowed_full) From d13542f12be58ec3dd4381cf25cc59c951c110e7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 24 Aug 2013 05:10:14 +0200 Subject: [PATCH 251/252] (Android) Detects buffer size properly now on Android 4.2 and up - bases requested latency on this. Old fallback applies for non-4.2 --- .../retroarch/browser/MainMenuActivity.java | 28 +++++++++++++++++-- audio/opensl.c | 2 ++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index d0fa8531c8..1c0491ec53 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -163,6 +163,18 @@ public class MainMenuActivity extends PreferenceActivity { return Integer.parseInt(manager .getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE)); } + + @TargetApi(17) + public static int getLowLatencyBufferSize() { + AudioManager manager = (AudioManager) MainMenuActivity.getInstance() + .getApplicationContext() + .getSystemService(Context.AUDIO_SERVICE); + int buffersize = Integer.parseInt(manager + .getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER)); + + Log.i(TAG, "Queried ideal buffer size: " + buffersize); + return buffersize; + } public static int getOptimalSamplingRate() { int ret; @@ -251,8 +263,20 @@ public class MainMenuActivity extends PreferenceActivity { prefs.getBoolean("audio_rate_control", true)); config.setInt("audio_out_rate", MainMenuActivity.getOptimalSamplingRate()); - config.setInt("audio_latency", - prefs.getBoolean("audio_high_latency", false) ? 160 : 64); + + int buffersize = 0; + + if (android.os.Build.VERSION.SDK_INT >= 17) { + buffersize = getLowLatencyBufferSize(); + if (config.getBoolean("audio_high_latency") == false) { + config.setInt("audio_latency", buffersize / 32); + } + } + else { + config.setInt("audio_latency", + prefs.getBoolean("audio_high_latency", false) ? 160 : 64); + } + config.setBoolean("audio_enable", prefs.getBoolean("audio_enable", true)); config.setBoolean("video_smooth", diff --git a/audio/opensl.c b/audio/opensl.c index 068e42a7a2..06362baab9 100644 --- a/audio/opensl.c +++ b/audio/opensl.c @@ -115,6 +115,8 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency) if (!sl) goto error; + RARCH_LOG("[SLES ] : Requested audio latency: %dms...", latency); + GOTO_IF_FAIL(slCreateEngine(&sl->engine_object, 0, NULL, 0, NULL, NULL)); GOTO_IF_FAIL(SLObjectItf_Realize(sl->engine_object, SL_BOOLEAN_FALSE)); GOTO_IF_FAIL(SLObjectItf_GetInterface(sl->engine_object, SL_IID_ENGINE, &sl->engine)); From 692f8892aa29ac491b433690237288b40e5aa30c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 24 Aug 2013 05:22:25 +0200 Subject: [PATCH 252/252] (Android) Add fallback for API level 17 audio buffer size path if high audio latency is enabled --- .../phoenix/src/org/retroarch/browser/MainMenuActivity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java index 1c0491ec53..1a9fe970f7 100644 --- a/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java +++ b/android/phoenix/src/org/retroarch/browser/MainMenuActivity.java @@ -270,6 +270,9 @@ public class MainMenuActivity extends PreferenceActivity { buffersize = getLowLatencyBufferSize(); if (config.getBoolean("audio_high_latency") == false) { config.setInt("audio_latency", buffersize / 32); + } else { + config.setInt("audio_latency", + prefs.getBoolean("audio_high_latency", false) ? 160 : 64); } } else {